Dynamic CUDA动态并行链接
我有一个GTX TITAN,我会在上面使用动态并行 我通过添加“-rdc=true”和标志“-lcudadevrt”进行了一些测试,但在编译时总是出现链接错误 这是我的生成文件:Dynamic CUDA动态并行链接,dynamic,cuda,linker,nvcc,Dynamic,Cuda,Linker,Nvcc,我有一个GTX TITAN,我会在上面使用动态并行 我通过添加“-rdc=true”和标志“-lcudadevrt”进行了一些测试,但在编译时总是出现链接错误 这是我的生成文件: DEP = main.o Optimizer.o cudaOptimizer.o CUDA_INSTALL_PATH = /usr/local/cuda INC_CUDA = -I$(CUDA_INSTALL_PATH)/in
DEP = main.o Optimizer.o cudaOptimizer.o
CUDA_INSTALL_PATH = /usr/local/cuda
INC_CUDA = -I$(CUDA_INSTALL_PATH)/include
LIB_CUDA = -L$(CUDA_INSTALL_PATH)/lib64 -lcuda -lcudart -lcublas -lcublas_device -lcudadevrt
optx: $(DEP)
g++ $(LIB_CUDA) -o optx $(DEP)
main.o:
g++ $(INC_CUDA) -c main.cpp
Optimizer.o:
g++ $(INC_CUDA) -c Optimizer.cpp
cudaOptimizer.o:
nvcc --compiler-options '-fPIC -O3' -arch sm_35 -c cudaOptimizer.cu -rdc=true
这是我的答案:
g++ -I/usr/local/cuda/include -c main.cpp
g++ -I/usr/local/cuda/include -c Optimizer.cpp
nvcc --compiler-options '-fPIC -O3' -arch sm_35 -c cudaOptimizer.cu -rdc=true
g++ -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcublas_device -lcudadevrt -o optx main.o Optimizer.o cudaOptimizer.o
cudaOptimizer.o: In function`__sti____cudaRegisterAll_48_tmpxft_00003942_00000000_6_cudaOptimizer_cpp1_ii__Z4ciaov()':tmpxft_00003942_00000000-3_cudaOptimizer.cudafe1.cpp:(.text.startup+0x1d): undefined reference to `__cudaRegisterLinkedBinary_48_tmpxft_00003942_00000000_6_cudaOptimizer_cpp1_ii__Z4ciaov'
collect2: error: ld returned 1 exit status
make: *** [optx] Error 1
我怎样才能解决这个问题
谢谢您正在链接g++
您,因为您正在进行设备代码链接,而g++不知道设备代码。非常感谢!很好