使用Nvidia Nsight生成可重定位设备代码

时间:2016-07-08 06:52:17

标签: cuda dynamic-parallelism

我正在尝试在CUDA上编译动态并行性示例,当我尝试编译它时会给出错误说明,

kernel launch from __device__ or __global__ functions requires separate compilation modes

后来发现我必须将--relocatable-device-code标志设置为true。但是,是否需要设置一个标志,以便在Nsight Eclipse中将relocatable-device-code设置为true

3 个答案:

答案 0 :(得分:1)

如果你没有使用makefile项目, 您可以从菜单开始,在以下位置更改传递给Nsight项目的nvcc的选项。

项目 - 属性 - 构建 - 设置 - 工具设置 - NVCC编译器

由于Nsight没有为您提供rdc选项,您可以直接更改' Commnad'从

nvcc

nvcc -rdc=true

或更改'命令行模式'从

${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}

${COMMAND} ${FLAGS} -rdc=true ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}

第二个更好。

您可能还想更改“所有配置'而不是调试'或者'发布'仅

修改

您应该在评论中关注@ RobertCrovella的说明。这是官方的方式。

答案 1 :(得分:0)

创建项目后,您还可以通过转到项目...属性...构建...设置来进行此更改。在这里,您将看到类似于上面提到的"基本设置"对话框页面。您可以类似地更改"设备链接器模式:"在这个页面来自"整个节目编译" to"单独编译"在项目已经创建之后,为了打开可重定位设备代码的生成。

归功于@robertcrovella。这实际上是我正在寻找的答案,所以我已经把它作为一个单独的答案。

答案 2 :(得分:-2)

你可以使用nvcc选项“-dc”或“-rdc = true”,你可以将其作为样本引用。

nvlink, relocatable device code and static device libraries