gpt4 book ai didi

performance - 如何解释使用 CUDA 代码在 GPU 设备中观察到的超线性加速?

转载 作者:行者123 更新时间:2023-12-02 21:26:33 25 4
gpt4 key购买 nike

我无法理解 Tesla C1060 上令人尴尬的并行计算的扩展性能。使用所有 block 和每个 block 多个线程运行它,我得到的运行时间约为 0.87 秒。

但是,如果我仅在一个 block 中运行所有迭代,每个 block 一个线程,则运行时间长达 1872 秒,这比我期望的 240x0.87s = 209 秒要长得多,而我只希望缩小到使用仅 240 个流处理器之一。

相反,通过使用所有 240 个核心,我似乎获得了超过 2000 倍的速度提升。这种超线性加速是如何可能的?在该系统的性能建模中我还应该注意哪些其他因素?

最佳答案

启动由 1 个线程组成的内核会将内核执行限制为 30 个 SM 中的 1 个。对于发出的每个扭曲指令,仅使用 1/32 的执行单元。此外,来自同一经线的指令不能在背靠背的发布槽上发布,从而使至少 1/2 的发布槽为空。额外的插槽将因指令依赖性和内存延迟而空出,从而使速度提高 2-4 倍。让我们假设一个非常悲观的 2x。粗略计算可能的 yield 是

30x increase for using all 30 SMs
32x increase for using full width of the execution units
2x increase for using issue slots and saturating memory system
= 30 * 32 * 2
= >1920x performance increase

您看到的差异是 1872/.87 = 2152x。由于空的发行槽以及每个 SM 1 个扭曲无法使内存系统饱和,这可以很容易地用 >2x 来解释。

关于performance - 如何解释使用 CUDA 代码在 GPU 设备中观察到的超线性加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com