如何仅将标志设置nvcc编译指示应用于几行代码?

时间:2019-05-17 20:19:58

标签: cuda compiler-warnings pragma nvcc

我想应用某种标志设置的nvcc编译指示,例如关闭noreturn_function_does_return类型的警告-但仅针对我的某些功能。

现在,在this answer here on SO中,它说我应该能够写:

#pragma push
#pragma diag_suppress = noreturn_function_does_return
...
#pragma pop

这确实可以解决我的问题;除了推和弹出功能不起作用外:我收到有关这两个编译指示被忽略的警告。另外,我无法弄清楚这将如何影响其他警告标记(因为我猜它是=而不是+=

那么,有没有一种实际的推送和弹出方式?或者至少-抑制然后取消抑制某个警告?

注意:我在Devuan ASCII(〜= Debian Stretch)系统上使用CUDA 9.2.88 nvcc和gcc 6.3.0。

1 个答案:

答案 0 :(得分:1)

无需赘述,并且使用最新版本的CUDA(9.2.88、10.x和更高版本)-这应该可以解决问题:

#pragma diag_suppress = noreturn_function_does_return

... your code here ...

#pragma diag_default = noreturn_function_does_return

有关详细信息,请查看最初链接到的the answer问题,该问题已更新...