我在具有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支持”部分中详细描述了此过程。