我想要一个代码来检查计算机是否使用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.count
和parallel.gpu.GPUDevice.select(idx)
。关于matlab - Matlab GPU计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24875065/