!呜呼啦呼! 2023-02-08 01:37 采纳率: 72.7%
浏览 61
已结题

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")
个文件,但我查看了是有的,其他也没有太对应的解决方式,有人遇到同样的问题嘛,感谢。

  • 写回答

4条回答 默认 最新

  • 踢足球的阿坤 2023-02-08 02:16
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月15日
  • 创建了问题 2月8日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部