我正在使用TeslaK80 GPU。我正在尝试动态并行性。但是当我使用nvcc进行编译时,我遇到了nvlink错误。我尝试在编译时提供标志,我提供的标志是'-rdc = true','-arch sm_37'(因为teslaK80的计算能力是3.7)和'-lcudadevrt '。 我尝试过的代码在下面,而我给出的编译命令也在下面:
nvcc -arch sm_37 -rdc=true -lcudadevrt dynamic_parallelism.cu -o dynamic_parallelism
这给出了一个错误:
nvlink错误:“ / tmp / tmpxft_00000d9d_00000000-17_dynamic_parallelism.o”中对“ cudaGetParameterBufferV2”的未定义引用
nvlink错误:“ / tmp / tmpxft_00000d9d_00000000-17_dynamic_parallelism.o”中对“ cudaLaunchDeviceV2”的未定义引用
这是我使用的代码:
__global__ void childKernel()
{
printf("Hello ");
}
__global__ void parentKernel()
{
// launch child
childKernel<<<1,1>>>();
/*if (cudaSuccess != cudaGetLastError()) {
return;
}
// wait for child to complete
if (cudaSuccess != cudaDeviceSynchronize()) {
return;
} */
printf("World!\n");
}
int main()
{
// launch parent
parentKernel<<<1,1>>>();
/*if (cudaSuccess != cudaGetLastError()) {
return 1;
}
// wait for parent to complete
if (cudaSuccess != cudaDeviceSynchronize()) {
return 2;
} */
return 0;
}
注意:带注释的块只是错误检查代码,不会影响要测试的动态并行性