GPU的最佳性能

时间:2011-02-17 00:02:06

标签: performance cuda


我被要求测量我的代码使用GPU的“有效”程度/算法实现的峰值性能的百分比。我不知道如何进行这种比较。到目前为止我基本上已经将定时器放入我的代码并测量执行。如何将其与最佳性能进行比较,找出瓶颈可能是什么? (我确实听说过视觉分析器,但无法让它工作..它一直给我“无法加载输出”错误。)

3 个答案:

答案 0 :(得分:0)

通常“有效”可能会衡量程序使用的内存和GPU周期(平均值,最小值,最大值)。然后,效率测量将是AVG(GPU周期)/最大GPU周期的时间段内的平均(mem)/总内存等。

然后我将这些指标与一些GPU基准测试套件的指标进行比较(您可以假设它在使用大多数GPU时非常有效)。或者您可以根据您选择的一些随机GPU密集型程序进行测量。那就是我怎么做的,但我从没想过要好运!

至于瓶颈和“最佳”表现。这些可能是NP-Complete问题,没有人可以帮助你。找出旧的分析器和调试器,开始逐步完成代码。

答案 1 :(得分:0)

无法帮助进行分析器和微优化,但有一个CUDA计算器http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls,它会根据这些值来估算您的CUDA代码如何使用硬件资源:

Threads Per Block
Registers Per Thread                                                             
Shared Memory Per Block (bytes)

答案 2 :(得分:0)

每张卡都有最大内存带宽和处理速度。例如,GTX 480带宽为177.4 GB / s。您需要知道卡的规格。

首先要决定的是你的代码是内存绑定还是计算绑定。如果它显然是一个或另一个,那将有助于您专注于正确的“效率”来衡量。如果您的程序受内存限制,那么您需要将带宽与卡最大带宽进行比较。

您可以通过计算读/写的内存量并除以运行时间来计算内存带宽(我使用cuda事件进行计时)。这是calculating bandwidth efficiency的一个很好的例子(查看并行缩减的白皮书)并使用它来帮助验证内核。


  1. 我不太了解确定效率,相反,你是ALU约束。你可以计算(或描述)指令的数量,但卡的最大值是多少?

  2. 我也不确定在你的内核在内存绑定和ALU绑定之间的情况下该怎么做。

  3. 任何......?