2013-10-11 1 views
0

동적 병렬 처리를 사용하는 GTX TITAN이 있습니다.CUDA Dynamic Parallelism linking

"-rdc = true"및 "-lcudadevrt"플래그를 추가하여 테스트를 수행했지만 컴파일 할 때 항상 링크 오류가 발생합니다.

이 내 메이크입니다 :

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 

가 어떻게이 문제를 해결할 수

:

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 

이 아웃은?

감사합니다.

답변

2

g ++와 연결 중입니다.

당신은 장치 코드 연결을하고 있기 때문에 must link with nvcc이고, g ++는 장치 코드에 대해 알지 못합니다.

+0

고맙습니다. 잘 작동합니다. – spialla