Как отключить предупреждение ptxas о неопределенном размере стека?
При компиляции кода устройства CUDA вы можете получить ошибку (с разрывом строки для удобства чтения):
ptxas warning : Stack size for entry function '_ZN7kernels11print_stuffIiEEvv'
cannot be statically determined
Это может иметь несколько причин, например, динамическое выделение памяти или использование рекурсии, но сейчас они не имеют значения. Я хочу отключить предупреждение, по крайней мере, в какой-то функции. Дело в том, что я не знаю, какой токен использовать для этого. Бесполезно искать в этом списке (следуя предложению здесь SO об отключении определенных предупреждений) - потому что это предупреждения в интерфейсе C/C++ NVCC, а не в ассемблере.
Так как можно отключить это предупреждение?
1 ответ
Важно отметить, что это предупреждение ассемблера, поэтому ни один из обычных параметров подавления предупреждений внешнего интерфейса не имеет значения.
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
вызов должен устранить предупреждение.