每当我尝试构建项目时,我都会得到以下信息:

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插件,并在带有Tesla K20 GPGPU的RHEL Server 6.3中使用CUDA 5工具包。我也在使用动态并行性,我认为这是导致问题的原因。我到处搜索,发现this,我认为这证实了我的理论,但是他是从终端进行的,因此并不完全相同。使用Eclipse时,我需要做些什么来构建它?是否有我需要设置的选项?

谢谢!

最佳答案

为了使动态并行工作正常,您需要链接到cudadevrt

在nsight中,您可以这样做:

  • 转到项目菜单->属性->构建->设置->工具设置-> NVCC链接器
  • 将“-lcudadevrt”附加到“Command”的字符串(即“nvcc -lcudadevrt”)
  • 关于c++ - 未知的nvlink错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16945627/

    10-10 09:27