我正在使用 NVIDIA 的命令行 Visual Profiler nvprof 分析一个 tensorflow GPU 应用程序,其中一个已启动且在分析中非常活跃的内核是名为 redzone_checker? 我终其一生都无法在互联网上的任何地方找到任何有用的信息来说明这意味着什么......
任何帮助或提示将不胜感激。
我正在使用 NVIDIA 的命令行 Visual Profiler nvprof 分析一个 tensorflow GPU 应用程序,其中一个已启动且在分析中非常活跃的内核是名为 redzone_checker? 我终其一生都无法在互联网上的任何地方找到任何有用的信息来说明这意味着什么......
任何帮助或提示将不胜感激。
redzone_checker 内核在 TensorFlow (v2.3.0) 中实现https://github.com/tensorflow/tensorflow/blob/master/tensorflow/stream_executor/gpu/redzone_allocator.cc第 138 行
根据代码中的注释,redzone_checker 内核检查 input_buffer 中的每个字节是否等于 redzone_pattern。
对不起,不确定的信息,我猜这个词(redzone)来自内存保护的redzone。堆栈或全局对象周围的红色区域用于检测上溢和下溢。
我使用带有 XLA JIT 编译的 nvprof(带有 --print-gpu-trace 选项)mnist 示例(https://www.tensorflow.org/xla )进行了分析,而没有它。redzone_checker 调用仅显示为具有 XLA JIT 编译的 mnist,但在其他分析结果中没有 redzone_checker 调用。
我的结论是,TensorFlow 提供的内核修改(甚至由 XLA 编译器优化)会导致调用 redzone_checker 以保护内存。
你可以试试redzone/cuda?eed=0.575x
frame= 248 fps= 55 q=31.0 size= 256kB time=00:00:02.69 bitrate= 778.7kbits/s speed=0.592x
frame= 268 fps= 53 q=31.0 size= 256kB time=00:00:03.04 1