matlab 中的 CUDA 错误(所有支持 CUDA 的设备都很忙)

Posted

技术标签:

【中文标题】matlab 中的 CUDA 错误(所有支持 CUDA 的设备都很忙)【英文标题】:CUDA error in matlab (all CUDA-capable devices are busy) 【发布时间】:2016-12-10 16:06:37 【问题描述】:

我想在matlab 2016a(或matlab 2014)中使用CUDA7.5,例如我可以通过gpuDevice(gpu_id)在matlab中设置gpu,一开始这样总是可以的。

但是在我运行了一些与 cuda 相关的 *.m 文件后,当我再次运行 gpuDevice(gpu_id) 时,我总是得到以下错误。

CUDA 执行过程中出现意外错误。 CUDA 错误是: 所有支持 CUDA 的设备都忙或不可用

我已尝试重新启动 matlab 和我的计算机,但错误仍然存​​在。有谁知道为什么会发生这种情况?我该如何解决这个错误?

非常感谢!

另外,我在command行中运行gpuDevice时,得到如下信息

             Name: 'GeForce GTX 960'
             Index: 1
 ComputeCapability: '5.2'
    SupportsDouble: 1
     DriverVersion: 7.5000
    ToolkitVersion: 7.5000
MaxThreadsPerBlock: 1024
  MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
       MaxGridSize: [2.1475e+09 65535 65535]
         SIMDWidth: 32
       TotalMemory: 4.2950e+09
   AvailableMemory: 3.4769e+09    
 MultiprocessorCount: 8
      ClockRateKHz: 1291000
       ComputeMode: 'Default'   GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1
  CanMapHostMemory: 1
   DeviceSupported: 1
    DeviceSelected: 1

【问题讨论】:

当我在 MATLAB 中使用 CUDA mex 文件时,一旦 mex 文件“占用”了 GPU,我就不能使用任何 MATLAB GPU 函数。 MATLAB 以某种方式将 GPU 分配给 mex 文件,即使我在 CUDA 代码中发布它们也不让我使用它们。不知道为什么,但是是的,我可以使用的唯一选项是重新启动 MATLAB 即使我重新启动了我的计算机和matlab,错误仍然存​​在。好伤心! 当我有单个 GPU 并且它被操作系统用于图形时,也会发生这种情况。不知道如何解决它抱歉。 【参考方案1】:

使用 GPU 后,你应该 reset the gpu 和 reset 这将

dev = gpuDevice(gpu_id);

% Do lots of stuff
reset(dev)

或者您可以使用空 ([]) 输入来释放设备

gpuDevice([])

【讨论】:

刚才我重启了电脑和matlab,然后我输入了gpu_id = 1;gpuDevice(gpu_id);,但还是出现同样的错误。然后我输入了`dev = gpuDevice(gpu_id); % 做很多事情 reset(dev); 错误就在那里。另外,我输入了gpuDevice([]),错误也在那里。错误信息是 CUDA 执行期间发生意外错误。 CUDA 错误是:所有支持 CUDA 的设备都忙或不可用 刚才我重启了电脑和matlab,然后我输入了gpu_id = 1;gpuDevice(gpu_id);,但还是出现同样的错误。然后我输入了`dev = gpuDevice(gpu_id); reset(dev),the error is sitll there. Also, i have typed gpuDevice([])`,错误也在那里。错误信息为:CUDA执行过程中发生了意外错误。 CUDA 错误是:所有支持 CUDA 的设备都忙或不可用你知道如何解决这个问题吗?非常感谢!【参考方案2】:

我也有同样的错误。我在linux下运行matlab,删除~/.matlab后,重启matlab,就报错了。

【讨论】:

【参考方案3】:

我今天遇到了同样的问题,这很奇怪,因为我之前运行过同样的程序没有任何问题。我检查了 gpu 的使用情况,结果发现有人在 gpu0 上运行 python 并占用了所有内存。我在 matlab 中进行了 gpu 设备选择,但某些工具包可能仍使用 gpu0 作为默认值。 而python程序就完成了,问题就解决了。

【讨论】:

以上是关于matlab 中的 CUDA 错误(所有支持 CUDA 的设备都很忙)的主要内容,如果未能解决你的问题,请参考以下文章

在 Matlab 中执行 CUDA 代码

caffe运行错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function

ubuntu18.04下cuda.cu在c/c++中的三种使用方式

ubuntu18.04下cuda.cu在c/c++中的三种使用方式

ubuntu18.04下cuda.cu在c/c++中的三种使用方式

ubuntu18.04下cuda.cu在c/c++中的三种使用方式