【问题标题】:Performance Analysis of Multiple Kernels (CUDA C)多内核性能分析(CUDA C)
【发布时间】:2019-04-10 07:59:48
【问题描述】:

我有具有多个内核的 CUDA 程序在系列上运行(在同一个流中 - 默认值)。我想对整个程序进行性能分析,特别是 GPU 部分。我正在使用 nvprof 工具使用一些指标进行分析,例如 done_occupancy、inst_per_warp、gld_efficiency 等。

但是分析器为每个内核分别提供指标值,而我想为它们计算这些值以查看程序的 GPU 总使用量。 我应该为每个指标取所有内核的(平均值或最大值或总数)吗?

【问题讨论】:

  • 我会使用加权平均值,其中加权因子是内核执行时间与所有内核执行时间的总和。
  • 感谢您的回复,我非常需要。根据我的理解,如果我有 3 个内核并且我想计算它们的总体占用率,而我分别拥有每个内核的占用率: 1- 我必须首先计算每个内核的加权因子。 2-然后将该值乘以每个值的占用率?很抱歉造成混乱,但我如何计算总体入住率?

标签: performance cuda nvprof


【解决方案1】:

一种可能的方法是使用加权平均法。

假设我们的时间轴中有 3 个不重叠的内核。假设内核 1 运行 10 毫秒,内核 2 运行 20 毫秒,内核 3 运行 30 毫秒。在我们的整个应用程序时间线中,所有 3 个内核总共占用了 60 毫秒。

我们还假设分析器报告 gld_efficiency 指标如下:

kernel     duration    gld_efficiency
     1        10ms               88%
     2        20ms               76%
     3        30ms               50%

您可以按如下方式计算加权平均值:

                                     88*10        76*20        50*30
"overall"  global load efficiency =  -----   +    -----    +   ----- = 65%
                                       60           60           60 

我相信可能还有其他有意义的方法。例如,更好的方法可能是让分析器报告每个内核的全局加载事务的总数,并基于此而不是内核持续时间进行加权:

kernel     gld_transactions    gld_efficiency
     1        1000               88%
     2        2000               76%
     3        3000               50%


                                     88*1000        76*2000        50*3000
"overall"  global load efficiency =  -------   +    -------    +   ------- = 65%
                                       6000           6000           6000 

【讨论】:

  • 谢谢你,太好了,我现在明白了。实际上,我有以下指标要衡量:Achieved_occupancy、warp_execution_efficiency、gld_efficiency、gld_transactions、gld_throughput,gst 也是如此。所以如果我使用第二种方法,我将如何为 gld_transactions 测量它?!所以我认为更好的方法是对所有指标使用第一种方法。我的决定好吗?
  • 对于gld_transactions,您必须决定要报告的内容。这里不只有一个可能的答案。例如,如果要报告应用程序消耗的全局负载事务总数,则只需将分析器报告的所有数字相加即可。但是,如果您想报告每个内核的平均全局加载事务,您应该将所有全局加载事务加在一起,并按内核调用的数量添加设备。可能它会因您想要汇总报告的每个指标而有所不同。我不会尝试为每个人拼出答案。
  • 感谢您的回答,这很有帮助。关于指标处理和良好的处理,您有什么推荐的参考吗?!
猜你喜欢
  • 2018-02-03
  • 1970-01-01
  • 2020-11-23
  • 2012-04-26
  • 1970-01-01
  • 2013-06-08
  • 2019-06-20
  • 2014-06-22
  • 2011-01-13
相关资源
最近更新 更多