cuda 5.0动态并行错误:ptxas致命。未解析的extern函数'cudaLaunchDevice

时间:2012-12-15 02:36:10

标签: cuda parallel-processing gpu-programming

我在Linux上使用带有CUDA 5的tesla k20和计算能力35.使用简单的子内核调用它会产生编译错误: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 ..我们需要添加它还是要做什么来解决它?没有子内核调用一切正常。

2 个答案:

答案 0 :(得分:11)

必须在启用可重定位设备代码的情况下显式编译,并链接设备运行时库以使用动态并行。因此,您的编译命令必须包含--relocatable-device-code true,并且链接命令(您尚未向我们展示)应包括-lcudadevrt

动态并行编程指南pdf的“TOOLKIT SUPPORT FOR DYNAMIC PARALLELISM”部分详细介绍了此过程,可用here

答案 1 :(得分:5)

也许我有点偏离主题,但我想提一下,我在Windows / Visual Studio 2010下遇到了同样的问题,并且我已经使用talonmies的最后评论解决了这个问题。

1) View -> Property Pages
2) Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true)
3) Configuration Properties -> CUDA C/C++ -> Device -> Code Generation -> compute_35,sm_35
4) Configuration Properties -> Linker -> Input -> Additional Dependencies -> cudadevrt.lib

我希望这些信息有用。