MATLAB mex调用CUDA

我想利用MATLAB调用CUDA程序,因此使用将cu文件利用mex方式编译成mexa64文件的形式直接调用,但在执行编译文件时报错:nvcc fatal : Unknown option '-fopenmp'

编译文件内容如下:

system( 'nvcc -Xcompiler -fopenmp -O3 --use_fast_math --compile -o DD3_GPU.o  --compiler-options -fPIC  -I/usr/local/cuda-10.2/include -I/usr/local/cuda-10.2/samples/common/inc "DD3_GPU.cu" ' );
%     mex -v -largeArrayDims  COMPFLAGS="$COMPFLAGS -fopenmp" -L"\usr\local\cuda\lib64\" -lcudart  DD3_GPU_mex.cpp DD3_GPU_proj_ker.o DD3_GPU_back_ker.o
mexcuda -v -largeArrayDims  COMPFLAGS="$COMPFLAGS -fopenmp" -L"/usr/local/cuda-10.2/lib64/" -lcudart  DD3_GPU.cu
mexcuda -v DD3_GPU.cu

报错:

错误使用 mex
nvcc fatal   : Unknown option '-fopenmp'

出错 mexcuda (第 168 行)
    [varargout{1:nargout}] = mex(mexArguments{:});

出错 Compile_cu (第 3 行)
mexcuda -v -largeArrayDims  COMPFLAGS="$COMPFLAGS -fopenmp" -L"/usr/local/cuda-10.2/lib64/" -lcudart  DD3_GPU.cu

img

查阅一些资料说是因为MATLAB路径 :E:\MATLAB\toolbox\distcomp\gpu\extern\src\mex下,没有Visual Stdio没有对应版本的一https://img-mid.csdnimg.cn/release/static/image/mid/ask/77776002857612.png "#left")
个文件,但我查看了是有的,其他也没有太对应的解决方式,有人遇到同样的问题嘛,感谢。

主要产生这个报错的原因是,在xp系统上,nvcc编译器不支持openmp,解决办法是,在MATLAB编译文件里,注释掉'-fopenmp'

将MATLAB中生成的mex编译文件中的-fopenmp参数注释掉,即可解决这个问题。

并且,要想使用MATLAB调用CUDA程序,还需要确认MATLAB和CUDA的版本都是兼容的,检查MATLAB安装目录下external/cuda/文件夹,如果列表里有你安装的CUDA版本,则说明当前MATLAB与CUDA版本兼容,反之,则无法使用MATLAB调用CUDA程序。

按照这个流程重新编译试下 http://tomheaven.cn/index.php/2016/matlab_mexcuda/

破案了,是我编译的目标文件在调试的时候有BUG,但没显示,导致matlab中执行mex编译文件时报这样的错误。回答的我都有看过并尝试,下次遇到可以做参考,谢谢~