如何将标志设置 nvcc pragma 仅应用于几行代码?
How do I apply a flag-setting nvcc pragma to only a few lines of code?
我想应用某个标志设置 nvcc pragma,比如关闭 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。
无需赘述,使用最新版本的 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 最初链接到的问题,已更新...
我想应用某个标志设置 nvcc pragma,比如关闭 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。
无需赘述,使用最新版本的 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 最初链接到的问题,已更新...