繁体   English   中英

试图了解nvprof指标,sm_efficiency和warp_execution_efficiency为零

[英]Trying to understand nvprof metrics, sm_efficiency and warp_execution_efficiency zero

我正在尝试了解nvprof指标。 我是CUDA的新手,因此尝试了解哪些指标对性能很重要。

我写了一个内核来计算矩阵之间的绝对差之和。

在Tegra X1上运行,平均时间约为47毫秒,具有1584个块和每个块1024个线程。

运行nvprof我得到以下指标:

achieved_occupancy         Achieved Occupancy         0.982284    0.982284    0.982284
warp_execution_efficiency  Warp Execution Efficiency  0.00%       0.00%       0.00%
sm_efficiency              Multiprocessor Activity    0.11%       0.11%       0.11%
branch_efficiency          Branch Efficiency          100.00%     100.00%     100.00%
ipc                        Executed IPC               3.600738    3.600738    3.600738

当其他指标非常好时, Warp Execution EfficiencyMultiprocessor Activity为何如此之低呢? 在分析内核的总体性能时,这些是正确的指标,对吗?

一个很好的答案可能涉及冗长的CUDA执行效率,优化方法和目标以及nvprof的机制的nvprof 由于您根本没有提供任何代码,因此它必须完全是抽象的和推测性的。

如果您在nvprof或CUDA优化概念上苦苦挣扎,可以尝试使用可视化探查器nvvp来更好地服务,该探查器包括许多指导性的分析,解释,帮助和专家系统。

要开始仅探讨您的问题之一, sm_efficiency是指SM具有一个或多个处于活动状态的扭曲的时间百分比。 由于您的sm_efficiency相当低,因此似乎整个SM大部分时间都处于空闲状态-它没有发出指令。 例如,如果将其与占用率进行比较,则这些几乎是正交的概念。 占用率大致是指SM上驻留了多少个经线。 如果SM具有“完整的”经纱,则占用率将很高。

关于这些是否是“适当的指标”的问题,“适当的指标”应遵循以下两条轨迹之一:

  1. 验证是否已满足基本优化目标。 对于CUDA,其中最基本的问题是具有足够的并行性并有效使用内存子系统。 例如,您选择的指标均与有效的内存使用率无关。

  2. 一种分析驱动的优化轨迹,即专注于建立性能限制因素的轨迹。 您可以搜索涉及这些想法的各种演示文稿。 如果您在Google上搜索“ gtc cuda优化”,您会发现演示文稿很好地展示了基本的CUDA优化技术,性能测量和分析驱动的优化。

将其标记为CW-其他人可能希望添加自己的想法或最佳做法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM