马特拉布中的CUDA错误(所有支持CUDA的设备都忙)

3
  • 我想在Matlab 2016a(或Matlab 2014)中使用CUDA7.5,例如,我可以通过gpuDevice(gpu_id)来设置Matlab中的GPU。一开始,这总是有效的。

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

    CUDA执行期间发生意外错误。CUDA错误为: 所有CUDA兼容设备都正忙或不可用

  • 我尝试重新启动Matlab和计算机,但错误仍然存在。有人知道为什么会出现这种情况吗?以及如何解决此错误?

  • 非常感谢!

  • 此外,当我在命令行中运行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。 - Ander Biguri
即使我已经重启了电脑和Matlab,错误仍然存在。太遗憾了! - lu tingting
当我只有一张GPU并且操作系统正在使用它进行图形处理时,我也会遇到这个问题。很抱歉,我不知道如何解决它。 - Ander Biguri
3个回答

1

我也遇到了跟你一样的错误。我在Linux上运行Matlab,在删除了~/.matlab后,重新启动Matlab,错误就消失了。


1

使用GPU后,您应该使用reset 重置GPU,这将会

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设备都忙或不可用 - lu tingting
刚才,我重启了电脑和Matlab,然后输入了 gpu_id = 1;gpuDevice(gpu_id);,但是仍然出现相同的错误。然后我输入了 dev = gpuDevice(gpu_id); reset(dev),错误仍然存在。此外,我还输入了 gpuDevice([]),错误仍然存在。错误信息如下:CUDA执行期间发生意外错误。CUDA错误为: 所有支持CUDA的设备都忙或不可用您知道如何解决这个问题吗?非常感谢! - lu tingting

0
今天我遇到了同样的问题,这非常奇怪,因为我之前已经运行过同样的程序而没有任何问题。我检查了GPU使用情况,结果发现有人在GPU0上运行python并占用了所有内存。我在Matlab中进行了GPU设备选择,但某些工具包可能仍会默认使用GPU0。 当Python程序完成后,问题就解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接