多核的性能分析(CUDA C)



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

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

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

假设我们的时间线中有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 

相关内容

  • 没有找到相关文章

最新更新