无论我如何重新安装CUDA驱动程序和工具包,在输入gpuDevice()时,它总是显示s:
CUDADevice with properties:
Name: 'Quadro K2000M'
Index: 1
ComputeCapability: '3.0'
SupportsDouble: 1
DriverVersion: 6.5000
ToolkitVersion: 5.5000
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 2.1475e+09
FreeMemory: 2.0431e+09
MultiprocessorCount: 2
ClockRateKHz: 745000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 0
CanMapHostMemory: 1
DeviceSupported: 1
DeviceSelected: 1
我不明白。为什么工具包版本总是5.5?我可以将它升级到6.5吗?
答案 0 :(得分:7)
我不明白为什么这个问题得到了投票。当我尝试在MEX中使用CUDA时,这是我想到的第一个问题。
正如@Robert所提到的,你必须使用相同的cuda版本,但不一定是使用简单的技巧(我使用CUDA 6.0和MATLAB CUDA版本是5.0)。要使其工作,您不需要复杂的过程,也不需要mex
来编译所有.cu
文件并将xml文件(如Link)复制到要编译的目录中。在matlab命令中键入以下两行,
!nvcc -O3 -DNDEBUG -c mexGPUExample.cu -Xcompiler -fPIC -I/MATLAB_ROOT/extern/include -I/MATLAB_ROOT/toolbox/distcomp/gpu/extern/include;
mex mexGPUExample.o -L/usr/local/cuda-6.0/lib64 -L/MATLAB_ROOT/bin/glnxa64 -lcudart -lcufft -lmwgpu
即使你的ToolkitVersion不匹配,它也会神奇地工作。 (将/ MATLAB_ROOT更改为您的matlab根路径)
关于您的问题,已安装的CUDA版本与MATLAB使用的CUDA不同。
如果你去
/matlabroot/bin/maci64 (OS X)
/matlabroot/bin/glnxa64 (unix variant)
取决于你的操作系统, 你可以看到[动态链接库,共享库]
libcudart.5.5.[dylib, so]
libcublas.5.5.[dylib, so]
libcufft.5.5.[dylib, so]
这些是MATLAB使用的库。要使matlab使用系统库,请按照以下说明操作。 (仅限MAC)
总之,
install_name_tool
来更改库链接让MATLAB使用System CUDA库,默认的MATLAB CUDA库版本是5.5,如果你想使用最新的库,请阅读以下内容
/Applications/MATLAB_R2014a.app/bin/maci64
(MAC)或MATLAB_ROOT/bin/glxna64
(LINUX)查看libmwgpu.[dylib, so]
的库依赖项这是使用CUDA时加载的条目库
结果看起来像
dnab404675:maci64用户$ otool -L libmwgpu.dylib libmwgpu.dylib: @ rpath / libmwgpu.dylib(兼容版本0.0.0,当前版本0.0.0)
....一些图书馆
@ rpath / libcublas.5.5.dylib(兼容版本5.5.0,当前版本5.5.20) @ rpath / libcudart.5.5.dylib(兼容版本5.5.0,当前版本5.5.20) @ rpath / libcufft.5.5.dylib(兼容版本5.5.0,当前版本5.5.20)
......还有更多
我们的目标是修改cublas
,cudart
,cufft
到
/usr/local/cuda/lib/libcublas.dylib(兼容性版本5.5.0,当前版本5.5.20) /usr/local/cuda/lib/libcudart.dylib(兼容性版本5.5.0,当前版本5.5.20) /usr/local/cuda/lib/libcufft.dylib(兼容性版本5.5.0,当前版本5.5.20)
请注意,如果您键入gpuDevice,它仍会将其显示为工具包版本5.但它会加载新版本。那我们怎么做呢?
只需输入
即可sudo install_name_tool -change @ rpath / libcufft.5.5.dylib /usr/local/cuda/lib/libcufft.dylib libmwgpu.dylib
sudo install_name_tool -change @ rpath / libcudart.5.5.dylib /usr/local/cuda/lib/libcudart.dylib libmwgpu.dylib
sudo install_name_tool -change @ rpath / libcublas.5.5.dylib /usr/local/cuda/lib/libcublas.dylib libmwgpu.dylib
我仍然不知道如何在Linux中更改共享库路径。可能必须使用十六进制编辑器,例如HT来自Stackoverflow Answer
答案 1 :(得分:0)
您也可以在Windows下使用带有matlab的CUDA 6.5。棘手的部分是,您需要在Visual Studio下编译mex文件而不是在matlab中编译。有很多教程介绍如何在VS下编译mex所以不需要在这里重复。您只需要创建一个以.cu作为源的NVIDIA cuda项目,并按照标准程序编译mex。