具有动态并行性的MEX cuda代码 - 无法编译

时间:2014-09-14 16:25:22

标签: matlab cuda mex

我有一个名为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

任何人都可以帮助我吗? 提前谢谢......

1 个答案:

答案 0 :(得分:1)

一些变化:

  • -fPIC添加到第二个nvcc命令(使用--compiler-options,就像您对第一个nvcc所做的那样。)
  • cudadevrt命令(mex)上指定-lcudadevrt运行时选项,就像第一次nvcc电话一样。
  • 不确定。