use*_*099 5 memory gpu global bandwidth max
前言:假设我在CUDA中使用NVIDIA GTX480卡.该卡的理论峰值全局内存带宽为177.4 GB/s:384*2*1848/8*1E9 = 177.4 GB/s
384来自内存接口宽度,2来自内存的DDR特性,1848是内存时钟频率(以MHz为单位),8来自我希望在Bytes中获得答案的事实.
可以为共享存储器计算类似的东西:每个存储体4个字节*32个存储体*每个周期0.5个存储体*1400MHz*15个SM = 1,344 GB/s
SM数量的上述因素,即15,因此,为了达到这个最大共享内存带宽,我需要让所有 15个SM读取共享内存.
我的问题:为了达到最大全局内存带宽,只从全局内存中读取一个 SM,或者所有SM是否同时尝试从全局内存中读取?更具体地说,假设我使用一个具有32个线程的块启动内核.然后,如果我在SM-0上有唯一的warp,并且我在内核中所做的所有操作都以合并的方式从全局内存中不间断地读取,那么我将达到177.4 GB/s吗?或者我应该启动至少15个块,每个块有32个线程,以便SM-0到SM-14上的15个warp同时尝试读取?
当务之急可能是运行一个基准测试来解决这个问题.我想知道为什么会发生什么,发生.