我正在尝试在CUDA上编译动态并行性示例,当我尝试编译它时会给出错误说明,
kernel launch from __device__ or __global__ functions requires separate compilation modes
后来发现我必须将--relocatable-device-code
标志设置为true
。但是,是否需要设置一个标志,以便在Nsight Eclipse中将relocatable-device-code
设置为true
?
答案 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”,你可以将其作为样本引用。