0

编译 CUDA 设备代码时,您可能会收到错误消息(为了便于阅读而使用换行符):

ptxas warning : Stack size for entry function '_ZN7kernels11print_stuffIiEEvv' 
cannot be statically determined

这可能有几个原因,比如动态内存分配或使用递归,但现在这些都不重要。我想至少在某些功能内禁用警告。问题是,我不知道要使用哪个令牌。搜索此列表是没有用的(按照此处关于禁用特定警告的建议)-因为这些是 NVCC 的 C/C++ 前端中的警告,而不是汇编程序。

那么如何禁用此警告?

4

1 回答 1

2

需要注意的重要一点是,这是一个汇编程序警告,因此通常的前端警告抑制选项都不相关。

ptxas仅支持数量非常有限的警告控制选项。在 CUDA 9 之前,仅支持以下内容:

--suppress-double-demote-warning                    (-suppress-double-demote-warning)
        Suppress the warning that is otherwise emitted when a double precision instruction
        is encountered in PTX that is targeted for an SM version that does not have
        double precision support

--disable-warnings                                  (-w)                        
        Inhibit all warning messages.

--warn-on-double-precision-use                      (-warn-double-usage)        
        Warning if double(s) are used in an instruction.

--warn-on-local-memory-usage                        (-warn-lmem-usage)          
        Warning if local memory is used.

--warn-on-spills                                    (-warn-spills)              
        Warning if registers are spilled to local memory.

--warning-as-error                                  (-Werror)                   
        Make all warnings into errors.

在您的情况下,唯一的选择是禁止所有警告。添加-Xptxas='-w'到任何nvcc调用都应该实现这一点。

CUDA 9 和更新版本添加了另一个选项ptxas来抑制您询问的警告:

--suppress-stack-size-warning                       (-suppress-stack-size-warning)
        Suppress the warning that otherwise is printed when stack size cannot be
        determined.

在这种情况下,添加-Xptxas='-suppress-stack-size-warning'到任何nvcc调用都应该消除警告。

于 2019-12-30T15:30:12.650 回答