在使用nvprof或nvvp对CUDA代码进行分析时,我注意到了这种行为。它不显示计数器的实际值,而是显示溢出。
例如,我使用
nvprof --print-gpu-trace --metrics warp_execution_efficiency ./CUDA-EC我得到的结果是:
Device Kernel Warp Execution Efficiency
Tesla K20m (0) fix_errors1_warp_cop <OVERFLOW>有人能告诉我如何避免这种情况并获取实际价值吗?这种行为在我使用nvvp时也会发生。
发布于 2014-12-03 02:47:08
如果物理硬件计数器在捕获期间达到最大值,而探查器无法确定正确的值,则计数器报告溢出。NVIDIA GPU上的大多数硬件计数器是32位。在Maxwell中,SM计数器宽度增加到40位。
许多PM实验可以使物理计数器每周期增加6位(0-63)。在1 GHz时,32位计数器的最小溢出时间为68 of。实际上,当内核超过1秒时,许多更复杂的实验都会溢出。
为了避免溢出,开发人员可能不得不通过减少数据集或将内核分成多个启动来减少内核的执行时间。
NVIDIA工具团队正在研究多种软件和硬件解决方案,以消除运行时间较长的内核中的溢出问题。不幸的是,这些解决方案需要时间来实现。
https://stackoverflow.com/questions/27253434
复制相似问题