我有一个名为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
任何人都可以帮助我吗? 提前谢谢......
答案 0 :(得分:1)
一些变化:
-fPIC
添加到第二个nvcc
命令(使用--compiler-options
,就像您对第一个nvcc
所做的那样。)cudadevrt
命令(mex
)上指定-lcudadevrt
运行时选项,就像第一次nvcc
电话一样。