首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解nvprof度量、sm_efficiency和warp_execution_efficiency零

试图理解nvprof度量、sm_efficiency和warp_execution_efficiency零
EN

Stack Overflow用户
提问于 2016-10-18 23:50:21
回答 1查看 2K关注 0票数 4

我正在努力理解nvprof的度量标准。我是CUDA的新手,因此我试图了解哪些指标对性能很重要。

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

它运行在Tegra X1上,平均为47 at,每块有1584个块和1024个线程。

运行nvprof我得到以下指标:

代码语言:javascript
复制
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如此之低,而其他指标却如此之好?当分析内核的一般性能时,这些是正确的度量标准,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 01:29:00

这里的一个好答案可能包括一个关于CUDA执行效率、优化方法和目标以及nvprof机制的冗长教程。因为您根本没有提供任何代码,所以它必须是完全抽象和推测的。

如果您正在挣扎于nvprof或CUDA优化概念,您可能会更好地使用nvvp,这是一种可视化分析器,它包含了许多有指导的分析、解释、帮助和专家系统。

要开始探索您的一个问题,sm_efficiency指的是SM有一个或多个活动偏差的时间百分比。由于您的sm_efficiency相当低,所以看起来大部分时间SM(s)作为一个整体处于空闲状态-它没有发出指令。例如,如果我们将这与占用率进行比较,这些几乎是正交的概念。占用率大致指的是SM上存在多少翘曲。如果SM有一个“完全补充”的翘曲,那么占用率将很高。

关于这些是否是“适当的度量”的问题,“适当的度量”应该遵循以下两个轨迹之一:

  1. 验证基本的优化目标是否已经实现。对于CUDA来说,其中最基本的是有足够的并行性暴露和有效地使用内存子系统。例如,您选择的指标中没有一个与有效的内存使用有关。
  2. 一种分析驱动的优化轨迹,即着重于建立性能限制因素的轨迹.有各种各样的演示,涵盖这些想法,你可以搜索。如果您在google上搜索"gtc cuda优化“,您会发现演示文稿很好地展示了基本的CUDA优化技术、性能度量和分析驱动优化。

将其标记为CW -其他人可能希望补充他们的想法或最佳做法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40119862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档