吸血大魔王 发表于 2011-4-27 23:01:06

解放CPU 第三方GPU-Direct直连技术诞生

       正如大家所知很多高性能计算机中使用了Mellanox提供的Infiniband高速互联网络,Mellanox是一家致力于为数据中心提供高性能计算、存储和云计算解决方案的知名企业。Mellanox的业务成长迅速,截止2010年12月底,已经为全球数据中心交付了超过700万个互联端口——而这一数字在2009年还只是500万个。

  自从2010年底Mellanox收购了Voltaire公司之后,该公司总员工数增加到超过700人,并且拥有了从网络硬件架构到软件管理平台的一揽子解决方案。在笔者对该公司亚洲区技术总监宋庆春先生的采访中,曾详细描述了Mellanox提出的I/O云概念(点击这里查看)。而本博客将转向另一个话题——解析GPU-Direct技术为GPGPU计算带来的低延迟网络传输。

  在去年勇夺Top500排行第一的天河一号以及排行第三的曙光星云超级计算机中,均使用了GPU作为重要的辅助计算单元。而目前GPU与网络的通讯模式仍然采用了古旧的总线控制芯片并经过CPU寻址,因此Mellanox也优化了GPU的数据传输逻辑。这里简单说说新传输方式与旧方式的区别(如下图):
http://2d.zol-img.com.cn/product/63_500x2000/831/ceCw3YP6qQVmA.jpg
新传输方式与旧方式的区别  本图体现了GPU计算过程中数据是如何传递的:CPU从内存中读取需要GPU计算的原始数据,传递给北桥芯片的PCI-E控制器,北桥芯片将数据传给GPU,GPU将其存入缓存,计算的结果也存入GPU缓存(注意这一过程是不断进行的,动态的);计算结果再从GPU缓存流经GPU传回给北桥控制器,北桥传回CPU,CPU将之存入内存。
http://2e.zol-img.com.cn/product/63_500x2000/832/cenUisfbIQKIo.jpg
新传输方式与旧方式的区别  如果说以上过程足够繁琐,效率很低的话。那么来看看GPU计算好的结果是如何传输的——CPU从内存里重新读取GPU计算的结果,将需要传输的部分再存入内存中网络模块读取的指定区域——Infiniband网卡通过CPU再读取相关信息传出去。因此可以说,GPU计算时的数据传输是最大瓶颈。
  Mellanox的解决方案很简单,在不改变现有IT架构的情况下——意即原先那套计算流程不变。变化只有一点点:GPU计算结果在存储到内存之后,直接被Infiniband读取传输走,减少了再次通过CPU读取转存的步骤。从而降低了数据传输的时延——这一点点的改进使得GPU之间的时延降低30%,消除了数据在Infiniband和GPU之间的拷贝,用心良苦可以想见。
http://2f.zol-img.com.cn/product/63_500x2000/833/cejpXXZzUg3zA.jpg
GPU直连技术测试结果  从评测结果来看,使用了GPUDirect将明显优化了系统的运行速度,而且规模越大越明显。
页: [1]
查看完整版本: 解放CPU 第三方GPU-Direct直连技术诞生