1

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

kernel launch from __device__ or __global__ functions requires separate compilation modes

后来发现我必须将--relocatable-device-code标志设置为true. relocatable-device-code但是,为了true在 Nsight Eclipse 中进行设置,是否需要设置一个标志?

4

3 回答 3

1

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

项目 - 属性 - 构建 - 设置 - 工具设置 - 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 说明进行操作。这是官方的方式。

于 2016-07-08T09:08:45.413 回答
0

创建项目后,您还可以通过转到项目...属性...构建...设置来进行此更改。在这里,您将在“基本设置”对话框页面中看到与上面提到的页面类似的页面。同样,您可以在此页面上将“设备链接器模式:”从“整个程序编译”更改为“单独编译”,以便在创建项目后打开可重定位设备代码的生成。

归功于@robertcrovella。这实际上是我正在寻找的答案,所以我将其作为单独的答案。

于 2018-03-26T22:06:59.753 回答
-2

您可以使用 nvcc 选项“-dc”或“-rdc=true”,您可以将此作为示例。

nvlink、可重定位设备代码和静态设备库

于 2016-07-08T07:46:30.233 回答