我想要一个代码来检查计算机是否使用CUDA-Core图形卡(Nvidia)在其上运行我设计的软件(GUI)。因此,在获得“真实”之后;从中获得价值,我的软件激活了一些功能以加速流程。

谢谢。

最佳答案

您可以使用功能gpuDevice。对我来说,我得到以下输出:

ans =

CUDADevice with properties:

                  Name: 'GeForce GTX 660 Ti'
                 Index: 1
     ComputeCapability: '3.0'
        SupportsDouble: 1
         DriverVersion: 6
        ToolkitVersion: 5.5000
    MaxThreadsPerBlock: 1024
      MaxShmemPerBlock: 49152
    MaxThreadBlockSize: [1024 1024 64]
           MaxGridSize: [2.1475e+09 65535 65535]
             SIMDWidth: 32
           TotalMemory: 2.1475e+09
            FreeMemory: 1.7126e+09
   MultiprocessorCount: 7
          ClockRateKHz: 1019500
           ComputeMode: 'Default'
  GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
      CanMapHostMemory: 1
       DeviceSupported: 1
        DeviceSelected: 1

(注意:您可以通过简单的点引用来访问不同的属性,例如ans.MultiprocessorCount将给出7。)
另请参阅以下页面:

MATLAB Central article

Help #1 - GPUDevice class

Help #2 - Identify and Select a GPU Device


编辑
我刚刚在未安装CUDA驱动程序的计算机上进行了测试。我得到的是以下异常(实际上是由GPUDevice类的current()方法引发的):
...'
Error using gpuDevice (line 26)
There is a problem with the CUDA driver associated with this GPU device. See www.mathworks.com/gpudriver to find and install the latest
supported driver.

Caused by:
    The CUDA driver could not be loaded. The library name used was 'nvcuda.dll'. The error was:
    The specified module could not be found.

因此,我建议首先在gpuDevice周围加上try-catch块,并且只有在成功的情况下,才进行类似parallel.gpu.GPUDevice.isAvailable(1)的检查。
我的答案仍然无法解决某些情况,例如具有多个GPU的设置(例如非CUDA板载一个+附加CUDA卡)或没有CUDA GPU的系统,但已安装CUDA驱动程序。对于多GPU情况,您还应该使用以下方法:
parallel.gpu.GPUDevice.countparallel.gpu.GPUDevice.select(idx)

关于matlab - Matlab GPU计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24875065/

10-10 19:27