在MATLAB中使用gpuDevice()的CUDA_ERROR_INVALID_DEVICE

时间:2014-07-14 13:20:08

标签: linux matlab cuda mex

当我在MATLAB中的Parallel Computing Toolbox中使用双GPU(一个intel,一个Nvidia GT 650M,安装了nvidia驱动程序和bumblebee)运行64位archlinux时gpuDevice()

我收到以下错误:

Error using gpuDevice (line 26)
An unexpected error occurred during CUDA execution. The CUDA error was:
CUDA_ERROR_INVALID_DEVICE

我没有'得到关于错误的任何谷歌结果。可能是什么原因?

我试图通过CUDA工作获得一个mex,它崩溃了:

[NVBLAS] Cannot open default config file 'nvblas.conf'
Segmentation fault

我觉得这两件事可能有关系。

1 个答案:

答案 0 :(得分:1)

来自matlab documentation

  

D = gpuDevice或D = gpuDevice(),如果尚未选择任何设备,则选择默认的GPU设备并返回表示该设备的对象。如果已经选择了GPU设备,则返回表示该设备的对象而不清除它。

来自CUDA documentation

  

CUDA_ERROR_INVALID_DEVICE - 这表示用户提供的设备序号与有效的CUDA设备不对应。

因此我的猜测是你通过调用该函数选择错误的GPU。尝试调查该调用的返回值以查看选择了哪个GPU,或者只是用gpuDevice(1)或gpuDevice(2)替换调用,看看哪个将起作用。

对于第二个问题,它已经被问及并在NVIDIA forum上回答:

  

您需要将环境变量“NVBLAS_CONFIG_FILE”设置为指向nvblas.conf文件。有关如何创建conf文件的说明,请参阅CUDA 6 RC工具包附带的NVBLAS文档的第9页

很抱歉没有根据您的问题发表评论,请求更多信息,但我没有足够的声誉发表评论。