浅析GPU通信技术(中)-NVLink总线协议

浅析GPU通信技术(中)-NVLink总线协议1 背景 上一篇文章 浅析 GPU 通信技术 上 GPUDirectP2P 中我们提到通过 GPUDirectP2P 技术可以大大提升 GPU 服务器单机的 GPU 通信性能 但是受限于 PCIExpresss 总线协议以及拓扑结构的一些限制 无法做到更高的带宽 为了解决这个问题 NVIDIA 提出了 NVLink 总线协议 本篇文章我们就来谈谈 NVIDIA

1. 背景

  上一篇文章《浅析GPU通信技术(上)-GPUDirect P2P》中我们提到通过GPUDirect P2P技术可以大大提升GPU服务器单机的GPU通信性能,但是受限于PCI Expresss总线协议以及拓扑结构的一些限制,无法做到更高的带宽,为了解决这个问题,NVIDIA提出了NVLink总线协议。

  本篇文章我们就来谈谈NVIDIA提出的NVLink总线协议,看看它到底是何方神圣。

2. NVlink介绍

2.1 发布

  NVLink技术是在2014年3月的NVIDIA GTC 2014上发布的。对普通消费者来说,这一届的GTC似乎没有太多的亮点,也没有什么革命性的产品发布。这次GTC上,黄仁勋展示了新一代单卡双芯卡皇GeForce Titan Z,下一代GPU架构Pascal也只是初露峥嵘。在黄仁勋演讲中只用大约五六页PPT介绍的NVLink也很容易被普通消费者忽视,但是有心的专业人士确从此举看到了NVIDIA背后巨大的野心。

  首先我们简单看下NVIDIA对NVLink的介绍:NVLink能在多GPU之间和GPU与CPU之间实现非凡的连接带宽。带宽有多大?2016发布的P100是搭载NVLink的第一款产品,单个GPU具有160GB/s的带宽,相当于PCIe Gen3 * 16带宽的5倍。去年GTC 2017上发布的V100搭载的NVLink 2.0更是将GPU带宽提升到了300G/s,差不多是PCIe的10倍了。

  好了,这下明白了为什么NVIDIA的NVLink会如此的引人注意了。但是NVLink背后的布局远不只是如此。

2.2 解读

  我们来看看NVLink出现之前的现状:

  1)PCIe:

  PCIe Gen3每个通道(每个Lane)的双向带宽是2B/s,GPU一般是16个Lane的PCIe连接,所以PCIe连接的GPU通信双向带宽可以达到32GB/s,要知道PCIe总线堪称PC系统中第二快的设备间总线(排名第一的是内存总线)。但是在NVLink 300GB/s的带宽面前,只有被碾压的份儿。

  2)显存带宽:

  上一代卡皇Geforce Titan XP的GDDR5X显存带宽已经达到547.7 GB/s,搭载HBM2显存的V100的带宽甚至达到了900GB/s。显卡核心和显存之间的数据交换通道已经达到如此高的带宽,但是GPU之间以及GPU和CPU之间的数据交换确受到PCIe总线的影响,成为了瓶颈。这当然不是NVIDIA希望看到的,而NVLink的出现,则是NVIDIA想打破这个瓶颈的宣言。

  3)CPU连接:

  实际上,NVLink不但可以实现GPU之间以及GPU和CPU之间的互联,还可以实现CPU之间的互联。从这一点来看,NVLink的野心着实不小。

  我们知道,Intel的CPU间互联总线是QPI,20位宽的QPI连接带宽也只有25.6GB/s,在NVLink面前同样差距巨大。可想而知,如果全部采用NVLink总线互联,会对系统数据交换通道的带宽有多大提升。

  当然,NVIDIA自己并没有CPU,X86仍然是当今CPU的主流架构,被Intel把持方向和趋势,NVLink绝没有可能进入X86 CPU连接总线的阵营。于是便有了NVIDIA和IBM组成的OpenPower联盟。

  NVIDIA是受制于没有CPU,而IBM则恰好相反,IBM有自己的CPU,Power 处理器的性能惊艳,但IBM缺少相应的并行计算芯片,因此仅仅依靠自己的CPU,很难在目前的异构计算中发挥出优秀的性能、规模和性能功耗比优势。从这一点来看,IBM和NVIDIA互补性就非常强了,这也是IBM为什么要和NVIDIA组建OpenPower超级计算联盟的原因了。

  考虑到目前POWER生态的逐渐萎缩,要想在人工智能浪潮下趁机抢占X86的市场并不是件容易的事情,但至少给了NVIDIA全面抗衡Intel的平台。

  所以有点扯远了,NVLink目前更主要的还是大大提升了GPU间通信的带宽。

2.3 结构和拓扑

2.3.1 NVLink信号与协议

  NVLink控制器由3层组成,即物理层(PHY)、数据链路层(DL)以及交易层(TL)。下图展示了P100 NVLink 1.0的各层和链路:

48b37b854f208f5a30dacc85f88eb24a8d605f34

  P100搭载的NVLink 1.0,每个P100有4个NVLink通道,每个拥有40GB/s的双向带宽,每个P100可以最大达到160GB/s带宽。

  V100搭载的NVLink 2.0,每个V100增加了50%的NVLink通道达到6个,信号速度提升28%使得每个通道达到50G的双向带宽,因而每个V100可以最大达到300GB/s的带宽。

2.3.2 拓扑

  下图是HGX-1/DGX-1使用的8个V100的混合立方网格拓扑结构,我们看到虽然V100有6个NVlink通道,但是实际上因为无法做到全连接,2个GPU间最多只能有2个NVLink通道100G/s的双向带宽。而GPU与CPU间通信仍然使用PCIe总线。CPU间通信使用QPI总线。这个拓扑虽然有一定局限性,但依然大幅提升了同一CPU Node和跨CPU Node的GPU间通信带宽。

0855e521174d7ecb05a0f7c0c94af23ac7bd292d

2.3.3 NVSwitch

  为了解决混合立方网格拓扑结构的问题,NVIDIA在今年GTC 2018上发布了NVSwitch。

  类似于PCIe使用PCIe Switch用于拓扑的扩展,NVIDIA使用NVSwitch实现了NVLink的全连接。NVSwitch作为首款节点交换架构,可支持单个服务器节点中 16 个全互联的 GPU,并可使全部 8 个 GPU 对分别以 300 GB/s 的惊人速度进行同时通信。这 16 个全互联的 GPU (32G显存V100)还可作为单个大型加速器,拥有 0.5 TB 统一显存空间和 2 PetaFLOPS 计算性能。

  关于NVSwitch的相关技术细节可以参考NVIDIA官方技术文档。应该说这一技术的引入,使得GPU间通信的带宽又大大上了一个台阶。

3. 性能

  NVIDIA NVLink 将采用相同配置的服务器性能提高 31%。

0c127772967a8f19bc60b644347e1e6ec8892664

  使用NVSwitch的DGX-2则能够达到2倍以上的深度学习和高性能计算的加速。

6ffa393ab01e6ac5323a98bbfb3927e0974fcb9a

原文发布时间为:2018-06-4本文作者:撷峰本文来自云栖社区合作伙伴“ IT168”,了解相关信息可以关注“ IT168”。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222178.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:23
下一篇 2026年3月17日 下午4:23


相关推荐

  • SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用「建议收藏」

    SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用「建议收藏」SSM是sping+springMVC+mybatis集成的框架。MVC即modelviewcontroller。model层=entity层。存放我们的实体类,与数据库中的属性值基本保持一致。service层。存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库…

    2022年7月12日
    28
  • docker部署web项目_docker到底怎么用

    docker部署web项目_docker到底怎么用前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

    2022年7月28日
    10
  • 访问页面升级访问_BPC页面访问缓慢无报错

    访问页面升级访问_BPC页面访问缓慢无报错概述引起BPC的页面访问缓慢的原因有很多,可能是由于网络慢、可能是由于BPC进程太忙、也可能是由于mongo数据库性能吃紧,所以对于页面访问缓慢需要根据具体情况实施解决方案注意:本文分析的页面访问缓慢,仅是慢,但不报错知识点根据前台页面表现来大致区分一下问题的归属:仅查询数据的页面访问缓慢点击链接跳转时,在当前页面停留较长时间可能是web处理不过来可能是网络慢或忙点击链接跳转时,页面白屏…

    2022年6月16日
    27
  • 依赖关系(“使用”关系)

    依赖关系(“使用”关系)依赖关系,可以理解成“USE-A”关系即使用关系。依赖关系是一种使用关系,如果A类中的某个方法使用了B类对象,那么就可以说A类依赖B类。A类方法的形式参数是B类类型。也就是说A类对象如果要使用方法

    2022年7月3日
    37
  • acwing-2325. 有向图破坏(最小割之最小权覆盖集)「建议收藏」

    acwing-2325. 有向图破坏(最小割之最小权覆盖集)「建议收藏」爱丽丝和鲍勃正在玩以下游戏。首先,爱丽丝绘制一个 N 个点 M 条边的有向图。然后,鲍勃试图毁掉它。在每一步操作中,鲍勃都可以选取一个点,并将所有射入该点的边移除或者将所有从该点射出的边移除。已知,对于第 i 个点,将所有射入该点的边移除所需的花费为 W+i,将所有从该点射出的边移除所需的花费为 W−i。鲍勃需要将图中的所有边移除,并且还要使花费尽可能少。请帮助鲍勃计算最少花费。输入格式第一行包含 N 和 M。第二行包含 N 个正整数,第 i 个为 W+i。第三行包含 N 个正整数,第.

    2022年8月11日
    5
  • Spring 下,关于动态数据源的事务问题的探讨

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:青石路 cnblogs.com/youzhibing/p/12671004.html 前情回顾 看着文章的标题…

    2021年6月24日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号