传统上,NVIDIA GPU 提供了 CUDA 线程块共享内存,其数量始终可以被 16 KiB 整除(参见此表中的示例)。但是,对于 Ampere 8.0 和 8.6 GPU,数量为 99 KiB 和 163 KiB。怎么来的?这是因为硬件问题吗?不会是错字吧?
问问题
46 次
1 回答
3
引用https://docs.nvidia.com/cuda/cuda-c-programming-guide/#shared-memory-8-x
与 Volta 架构类似,为共享内存保留的统一数据缓存的数量可在每个内核的基础上进行配置。对于 NVIDIA Ampere GPU 架构,计算能力为 8.0 的设备的统一数据缓存大小为 192 KB,计算能力为 8.6 的设备为 128 KB。对于计算能力为 8.0 的设备,共享内存容量可以设置为 0、8、16、32、64、100、132 或 164 KB,对于计算能力的设备,可以设置为 0、8、16、32、64 或 100 KB 8.6.
请注意,每个线程块的最大共享内存量小于每个 SM 可用的最大共享内存分区。未提供给线程块的 1 KB 共享内存保留给系统使用。
因此,总共有 16kb 的倍数可用内存,但它与缓存分开。
于 2022-01-14T11:36:15.280 回答