MEXCuda代码具有动态并行性-无法编译



我有一个名为mexCodeCuda.cu的代码,它使用动态并行性。在matlab界面中,当我尝试执行以下命令时,我会得到以下错误:

system('nvcc --compile mexCodeCuda.cu -o mexCodeCuda.o --compiler-options -fPIC -m64 -rdc=true -gencode arch=compute_35,code=sm_35 -O3 -lineinfo -use_fast_math -lcudadevrt -I/cm/shared/apps/MATLAB/extern/include')
system('nvcc -arch=sm_35 -dlink mexCodeCuda.o -o dlink.o')
eval('mex mexCodeCuda.o dlink.o -L'CUDA_LIB_PATH '-lcudart')

它给出以下错误:

Error using mex
/usr/bin/ld: dlink.o: relocation R_X86_64_32S against `__nv_module_id' can
not be used when making a shared object; recompile with -fPIC
dlink.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

有人能帮我吗?提前感谢。。。

一些更改:

  • -fPIC添加到第二个nvcc命令中(使用--compiler-options,就像使用第一个nvcc一样)
  • mex命令(-lcudadevrt)上指定cudadevrt运行时选项,就像第一个nvcc调用一样
  • 可能需要通过LDCXXFLAGSLDFLAGS-fPIC添加到mex链接中。不确定

最新更新