【问题标题】:CUDA_ERROR_INVALID_DEVICE using gpuDevice() in MATLAB在 MATLAB 中使用 gpuDevice() 的 CUDA_ERROR_INVALID_DEVICE
【发布时间】:2014-09-04 10:13:06
【问题描述】:

当我在具有双 GPU(一个英特尔,一个 Nvidia GT 650M,安装了 nvidia 驱动程序和大黄蜂)的 64 位 archlinux 上从 MATLAB 中的并行计算工具箱运行 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

我觉得这两件事可能是相关的。

【问题讨论】:

    标签: linux matlab cuda mex


    【解决方案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 页中

    很抱歉没有在您的问题下发表评论,请求更多信息,但我还没有足够的声誉来发布 cmets。

    【讨论】:

    • 好吧,重启后,gpuDevice() 返回正常。并感谢您指向有关 NVBLAS 的文档。现在这个错误已经消失了,我只得到一个毫无头绪的Segmentation fault
    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多