最近的 NVIDIA GPU 的合并宽度是多少?

What's the coalescing width in recent NVIDIA GPUs?

this paper 中,作者说当时 CUDA 在 NVIDIA GPU 上的合并宽度为 16(第 3 页,最后一段)。这篇文章很旧,我找不到新设备的信息。

最近的 NVIDIA GPU 的合并宽度是多少?

对于 32 位数量,那个时代的 cc1.x GPU 会将一个 warp 分成两个 "half-warps" (1),并为每个半 warp 发出一个全局事务。经纱仍然是 32 个线程,但半个经纱是 16 个线程,我认为这就是 16 个数字的来源。

Modern GPUs (cc2.x - cc5.x) 以全 warp 宽度发出全局事务,即 32(线程)。如果每个线程请求的数量大于 32 位,这将被分成多个 128 字节的事务,与服务 warp 所需的一样多。

所以我会说对应的数字是32,但这取决于每个线程请求的实际数据。

除了 "width".

之外,数据是否以及如何实际合并是构成 warp 事务的地址(由各个线程生成)的函数。

(1):cc1.x 设备的在线文档并不方便,但摘自 cc1.x 的 CUDA 5.0 编程指南:

F.3.2 Global Memory A global memory request for a warp is split into two memory requests, one for each halfwarp, that are issued independently. Devices of Compute Capability 1.0 and 1.1 and Devices of Compute Capability 1.2 and 1.3 describe how the memory accesses of threads within a half-warp are coalesced into one or more memory transactions depending on the compute capability of the device.