使用mexcuda ubuntu

时间:2019-01-08 12:47:10

标签: matlab cuda mex

我已经在ubuntu上安装了matlab,gcc和CUDA工具包,以使用mexcuda。

但是当我编译时,出现以下错误,并且在任何地方都找不到它们的引用。

Error using mex
/tmp/mex_42185702054896_15548/testmem04.o: In function `mexFunction':
tmpxft_00003e3a_00000000-5_testmem04.compute_70.cudafe1.cpp:(.text+0x152): undefined reference
to `__cudaPushCallConfiguration'
/tmp/mex_42185702054896_15548/testmem04.o: In function `__device_stub__Z9MulKernelPhPi(unsigned
char*, int*)':
tmpxft_00003e3a_00000000-5_testmem04.compute_70.cudafe1.cpp:(.text+0x35e): undefined reference
to `__cudaPopCallConfiguration'
collect2: error: ld returned 1 exit status

请注意,当我第一次安装matlab时,它不支持cuda 10(我的当前版本),当我在Windows上安装matlab并通过注释文件“ nvcc_g ++。xml”中的一行进行修复时,IVE遇到了同样的事情。 “它起作用。当我在ubuntu matlab上执行此操作时,matlab现在检测到nvcc编译器,但出现了先前的错误。

我意识到“未定义的参考错误”是链接器错误,我该怎么办?我试图链接到cuda库,但是没有用。

1 个答案:

答案 0 :(得分:1)

对于mexcuda,至关重要的是,将CUDA工具包与安装MATLAB(以及并行计算工具箱)附带的版本相匹配。这是因为Parallel Computing Toolbox附带了CUDA工具包中的一些库,并希望能够与它们链接。如果您使用的CUDA工具包版本错误,则各种情况都可能出错。

要检查CUDA工具包的适当版本,请查看ToolkitVersion输出中显示的CUDA gpuDevice版本。

(请注意,只有 toolkit 版本需要与MATLAB&PCT匹配-几乎总是可以得到最新的驱动程序)。

有关更多详细信息,请参见那边的我的答案https://uk.mathworks.com/matlabcentral/answers/432360-after-uninstalling-cuda-toolkit-still-matlab-responds-for-gpudevice,有关MATLAB Answers。