CUDA Handbook 补充 CPU和GPU硬件架构3

      上一个博客说道,不同CPU内存可以共享,但是如果同一时间共享次数或者数量太多,缓存就不够用了,则也会对性能造成影响。

       有些时候,GPU设备使用同一个PCIe总线,连接到IO设备控制器上,但是有个问题,毕竟GPU带宽是有限的,如果程序要从GPU广泛传输数据,则可能造成阻塞。如图:

                               CUDA Handbook 补充 CPU和GPU硬件架构3  图片来自CUDA handbook

    或者别的方法是使用更多的GPU分块,然后每个GPU块连接在不同的PCIe总线上,但是不同的GPU也会连接不同的GPU内存,而GPU的非本地内存复制操作可能更致命。

     关于所谓的划分不同的内存物理区域叫做“内存重叠”,我觉得是翻译有问题。在这里务必要好好解释一下,下面的资料都来自整理的英文论坛。

     memory interleaving 这里我叫内存交错技术,是给CPU用来增加程序的运行内存带宽的技术,没有交错时,连续的内存块是要从同一个内存组(memory bank,就是包含了很多行很多列的内存)中读取的,内存块通常就是一个缓存线。也就是说,如果从一个内存组中读取,则需要等缓存线传递完上一块内存再传递下一块,这样就比较慢。使用内存交错以后,连续的内存块会被放在不同的内存组,所以可以同时进行缓存读取。

     2.1节估计遇到的问题就这些了。下面开始整理2.2节会遇到的一些概念性问题。