我在具有CUDA 5的Linux上使用具有计算能力35的tesla k20,并通过一个简单的子内核调用给出了编译错误:Unresolved extern function cudaLaunchDevice

我的命令行如下所示:

nvcc --compile -G -O0 -g -gencode arch=compute_35 , code=sm_35 -x cu -o fill.cu fill.o


我在lib64中看到cudadevrt.a。我们是否需要添加它或进行哪些操作来解决它?没有子内核调用,一切正常。

最佳答案

必须使用启用的可重定位设备代码进行显式编译,并链接设备运行时库,才能使用动态并行性。因此,您的编译命令必须包含--relocatable-device-code true,而链接命令(您尚未显示给我们)应该包含-lcudadevrt

《动态并行性编程指南》 pdf(可从here获得)的“动态并行性的TOOLKIT支持”部分中详细描述了此过程。

08-16 23:29