我正在尝试在 CUDA 上编译一个动态并行示例,当我尝试编译它时会给出错误提示,
kernel launch from __device__ or __global__ functions requires separate compilation modes
后来发现我必须将--relocatable-device-code标志设置为true. relocatable-device-code但是,为了true在 Nsight Eclipse 中进行设置,是否需要设置一个标志?
我正在尝试在 CUDA 上编译一个动态并行示例,当我尝试编译它时会给出错误提示,
kernel launch from __device__ or __global__ functions requires separate compilation modes
后来发现我必须将--relocatable-device-code标志设置为true. relocatable-device-code但是,为了true在 Nsight Eclipse 中进行设置,是否需要设置一个标志?
如果您不使用 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 说明进行操作。这是官方的方式。
创建项目后,您还可以通过转到项目...属性...构建...设置来进行此更改。在这里,您将在“基本设置”对话框页面中看到与上面提到的页面类似的页面。同样,您可以在此页面上将“设备链接器模式:”从“整个程序编译”更改为“单独编译”,以便在创建项目后打开可重定位设备代码的生成。
归功于@robertcrovella。这实际上是我正在寻找的答案,所以我将其作为单独的答案。
您可以使用 nvcc 选项“-dc”或“-rdc=true”,您可以将此作为示例。