未知的nvlink错误

时间:2013-06-05 16:52:29

标签: c++ c cuda linker

每当我尝试构建项目时,我都会得到这个:

make all
Building target: CudaMaster
Invoking: NVCC Linker
nvcc --relocatable-device-code=true -gencode arch=compute_35,code=sm_35 -link -o  "CudaMaster"  ./Demodulator.o ./DifferentialDecoder.o ./Downsampler.o ./FileReader.o ./Filter.o ./GPURuntimeMetric.o ./Kernels.o ./PreambleDetector.o ./SampleComparator.o ./Samples.o ./TestBench.o ./main.o   
nvlink error   : Undefined reference to 'cudaGetParameterBuffer'
nvlink error   : Undefined reference to 'cudaLaunchDevice'
nvlink error   : Undefined reference to 'cudaDeviceSynchronize'
make: *** [CudaMaster] Error 255

我真的不知道为什么。我正在使用Eclipse的Nsight插件,并在RHEL Server 6.3中使用带有Tesla K20 GPGPU的CUDA 5工具包。我也在使用动态并行,我认为这会导致问题。我四处寻找,我找到this,我觉得这证实了我的理论,但他是从终端做的,所以它并不完全一样。使用Eclipse时我需要做什么才能构建它?有没有我想要的选项需要设置或什么?

谢谢!

1 个答案:

答案 0 :(得分:4)

要使动态并行工作,您需要链接cudadevrt

在nsight你这样做:

  • 转到项目菜单 - >属性 - >构建 - >设置 - >工具设置 - > NVCC Linker

  • 将“-lcudadevrt”附加到“Command”字符串(即“nvcc -lcudadevrt”)