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

Zah*_*hid 5 parallel-processing cuda gpu-programming

我正在使用带有CUDA 5的Linux上的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
Run Code Online (Sandbox Code Playgroud)

cudadevrt.a在lib64中看到..我们需要添加它还是需要做些什么来解决它?没有子内核调用一切正常.

tal*_*ies 11

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

动态并行编程指南pdf的"TOOLKIT SUPPORT FOR DYNAMIC PARALLELISM"部分详细介绍了此过程,可在此处获得.


Jac*_*ern 6

也许我有点偏离主题,但我想提一下,我在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
Run Code Online (Sandbox Code Playgroud)

我希望这些信息有用.