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

Cuda 使用Nvidia Nsight生成可重定位设备代码,cuda,dynamic-parallelism,Cuda,Dynamic Parallelism,我试图在CUDA上编译一个动态并行示例,当我试图编译它时,会给出一个错误提示 从设备或全局函数启动内核需要单独的编译模式 后来发现我必须将--relocatable device code标志设置为true。但是,是否有要设置的标志,以便在Nsight Eclipse中将可重定位设备代码设置为true?您可以使用nvcc选项“-dc”或“-rdc=true”,您可以将其作为示例引用 如果您没有使用makefile project, 从菜单开始,您可以在以下位置更改传递给Nsight项目的nvcc

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

从设备或全局函数启动内核需要单独的编译模式

后来发现我必须将
--relocatable device code
标志设置为
true
。但是,是否有要设置的标志,以便在Nsight Eclipse中将
可重定位设备代码设置为
true

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


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

项目-属性-生成-设置-工具设置-NVCC编译器

由于Nsight不提供rdc选项供您检查,您可以直接将“Commnad”从

nvcc

或将“命令行模式”从

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

第二个更好

您可能还希望对“所有配置”而不是“调试”或“发布”进行更改

编辑
您应该按照@RobertCrovella在评论中的说明进行操作。这是官方的方式

创建项目后,您还可以通过转到project…Properties…Build…Settings来进行此更改。在这里,您将在“基本设置”对话框页面中看到与上述页面类似的页面。类似地,您可以将此页面上的“设备链接器模式:”从“整个程序编译”更改为“单独编译”,以便在创建项目后启动可重定位设备代码的生成


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

这并没有回答这个问题。OP清楚地知道生成可重定位设备代码需要哪些选项,并在问题中这样写。问题是如何从Nsight Eclipse中指定它们。这是如何回答的?为Nsight EE项目启用此功能的定义方式是在项目创建时启用此功能。选择文件…新建…CUDA C/C++项目后,将显示项目创建向导/对话框。输入项目名称并单击“下一步”。然后,您将进入“基本设置”对话框页面。在这里,您将看到一个选项“设备链接器模式”,选项将是“整个程序编译”(默认)或“单独编译”。如果选择“单独编译”,则将设置项目以生成可重新定位的设备代码。创建项目后,还可以通过转到项目…属性…生成…设置来进行此更改。在这里,您将在“基本设置”对话框页面中看到与上述页面类似的页面。类似地,您可以将此页面上的“设备链接器模式:”从“整个程序编译”更改为“单独编译”,以便在创建项目后启动可重定位设备代码的生成。@robertcrovella saidnsight提供了控制可重定位设备代码生成的选项。您可以查看我在问题下的评论以了解详细信息。@RobertCrovella您是对的。你的方法应该是正确的。我的就像一个黑客。
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}
${COMMAND} ${FLAGS} -rdc=true ${OUTPUT_FLAG} ${OUTPUT_PREFIX} ${OUTPUT} ${INPUTS}