Cuda 如何仅对几行代码应用标志设置nvcc pragma?

Cuda 如何仅对几行代码应用标志设置nvcc pragma?,cuda,compiler-warnings,pragma,nvcc,Cuda,Compiler Warnings,Pragma,Nvcc,我想应用一个特定的标志设置nvcc pragma,比如关闭类型为noreturn\u function\u does\u return,但仅适用于我的特定功能 现在,在,它说我应该能够写: #pragma推送 #pragma diag\u suppress=noreturn\u函数是否返回 ... #布拉格流行音乐 这确实解决了我的问题;除了推和弹出不起作用:我得到一个警告,这两个pragma被忽略了。此外,我也不知道这应该如何影响其他警告标志(因为我猜这是=而不是+=) 那么,有没有一个真正

我想应用一个特定的标志设置nvcc pragma,比如关闭类型为
noreturn\u function\u does\u return
,但仅适用于我的特定功能

现在,在,它说我应该能够写:

#pragma推送
#pragma diag\u suppress=noreturn\u函数是否返回
...
#布拉格流行音乐
这确实解决了我的问题;除了推和弹出不起作用:我得到一个警告,这两个pragma被忽略了。此外,我也不知道这应该如何影响其他警告标志(因为我猜这是
=
而不是
+=

那么,有没有一个真正的方法来推动和弹出?或者至少-抑制然后取消抑制某个警告


注意:我在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

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

我尝试使用您的pragmas,但没有收到任何被忽略的警告。CUDA 10.0,gcc 4.8.5。也尝试过CUDA 10.1、gcc 8.3.1,在那里似乎也能正常工作。@RobertCrovella:添加了我的编译器版本。但你所描述的很奇怪。。。