gpt4 book ai didi

memory - 达到理论 GPU 全局内存带宽

转载 作者:行者123 更新时间:2023-12-02 09:45:39 24 4
gpt4 key购买 nike

序言:假设我在 CUDA 中使用 NVIDIA GTX480 卡。该卡的理论峰值全局内存带宽为 177.4 GB/s:384*2*1848/8 *1E9 = 177.4GB/秒

384 来自内存接口(interface)宽度,2 表示内存的 DDR 性质,1848 是内存时钟频率(以 MHz 为单位),8 来 self 想要以字节为单位得到答案的事实。

可以对共享内存进行类似的计算:每个存储体 4 个字节 * 32 个存储体 * 每个周期 0.5 个存储体 * 1400MHz * 15 个 SM = 1,344 GB/s

上面的数字是 SM 数量的因素,即 15。因此,为了达到最大共享内存带宽,我需要所有 15 个 SM 读取共享内存。

我的问题:为了达到最大全局内存带宽,仅一个 SM 从全局内存读取就足够了,还是所有 SM 都应该尝试同时从全局内存读取?更具体地说,假设我启动了一个内核,其中一个 block 有 32 个线程。然后,如果我在 SM-0 上有唯一的扭曲,并且我在内核中所做的所有操作都是以合并的方式从全局内存中不间断读取,我会达到 177.4 GB/s 吗?或者我应该启动至少 15 个 block ,每个 block 有 32 个线程,以便 SM-0 到 SM-14 上的 15 个扭曲尝试同时读取?

立即要做的事情可能是运行基准测试来解决这个问题。我想了解为什么会发生这种事。

最佳答案

据我所知,GPU 的片上网络是 TPC 和内存 Controller 的交叉开关。因此,理论上,一个 SM 可以在不同内存 Controller 之间交错内存访问,以实现完整的全局带宽。但请注意,每个交叉开关接口(interface)都有一个缓冲区,如果该缓冲区不够大,则事件 SM 中的内存指令可能会停止。此外,每个 SM 保持未完成的内存访问的能力有限。这些问题可能会限制每个 SM 可以利用的内存带宽。所以,我认为你的问题的答案需要一些microbenchmarking我猜想一个 SM 无法利用整个全局内存带宽。

关于memory - 达到理论 GPU 全局内存带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360861/

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