2

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

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 工具包。我也在使用动态并行,我认为这是导致问题的原因。我四处寻找,我发现了这个,我觉得这证实了我的理论,但他是从终端上做的,所以不完全一样。在使用 Eclipse 时,我需要做什么才能构建它?我是否缺少需要设置的选项或其他选项?

谢谢!

4

1 回答 1

4

要使动态并行性起作用,您需要链接到 cudadevrt

在你看来,你这样做:

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

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

于 2013-06-26T15:49:59.750 回答