我已经在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库,但是没有用。
答案 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。