【发布时间】:2016-05-21 07:54:17
【问题描述】:
在this paper 中,作者说当时 CUDA 在 NVIDIA GPU 上的合并宽度为 16(第 3 页,最后一段)。这篇论文很老了,我找不到更新设备的信息。
最近的 NVIDIA GPU 的合并宽度是多少?
【问题讨论】:
在this paper 中,作者说当时 CUDA 在 NVIDIA GPU 上的合并宽度为 16(第 3 页,最后一段)。这篇论文很老了,我找不到更新设备的信息。
最近的 NVIDIA GPU 的合并宽度是多少?
【问题讨论】:
对于 32 位数量,那个时代的 cc1.x GPU 会将一个扭曲分成两个“半扭曲”(1),并为每个半扭曲发出一个全局事务。经线仍然是 32 根线,但半根线是 16 根线,我想这就是 16 号的来源。
Modern GPUs (cc2.x - cc5.x) 以全幅宽(32 个线程)发出全局事务。如果每个线程请求的数量大于 32 位,则会将其分解为多个 128 字节的事务,数量与服务经线所需的数量一样多。
因此我会说相应的数字是 32,但这将取决于每个线程请求的实际数据。
除了“宽度”之外,数据是否以及如何实际合并取决于构成 warp 事务的地址(由各个线程生成)。
(1):cc1.x 设备的在线文档不那么方便,但摘自 CUDA 5.0 for cc1.x 的编程指南:
F.3.2 全局内存 一个warp的全局内存请求被分成两个内存请求,每个半warp一个, 是独立发行的。计算能力 1.0 和 1.1 的设备以及 计算能力设备 1.2 和 1.3 描述了线程的内存访问方式 半扭曲内被合并成一个或多个内存事务 设备的计算能力。
【讨论】: