本文介绍了cuda 5.0 动态并行性错误:ptxas 致命.未解析的外部函数 'cudaLaunchDevice的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在带有 CUDA 5 的 Linux 上使用具有计算能力 35 的 tesla k20.通过一个简单的子内核调用,它给出了一个编译错误:未解析的外部函数 cudaLaunchDevice

I am using tesla k20 with compute capability 35 on Linux with CUDA 5.With a simple child kernel call it gives a compile error : 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 .. 我们需要添加它还是需要做些什么来解决它?没有子内核调用,一切正常.

I see cudadevrt.a in lib64.. Do we need to add it or what coukd be done to resolve it? Without child kernel call everything works fine.

推荐答案

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

You must explicitly compile with relocatable device code enabled and link the device runtime library in order to use dynamic parallelism. So your compilation command must include --relocatable-device-code true and the linking command (which you haven't shown us) should include -lcudadevrt.

动态并行编程指南 pdf 的TOOLKIT SUPPORT FOR DYNAMIC PARALLELISM"部分详细描述了此过程,可用 这里.

This procedure is described in detail in the "TOOLKIT SUPPORT FOR DYNAMIC PARALLELISM" section of the Dynamic Parallelism Programming Guide pdf, available here.

这篇关于cuda 5.0 动态并行性错误:ptxas 致命.未解析的外部函数 'cudaLaunchDevice的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-18 20:54