AI基础架构-NVLink 技术详解

news2024/11/16 11:37:32

f406f6afdc10de1f0d2c17d89b92e667.jpeg


AI Infra 基础知识 - NVLink 入门

  

NVLink,一种专有互连硬件,实现Nvidia GPU与CPU之间的高效、一致数据和控制传输,提升多GPU系统性能。

概述    NVLink 于 2014 年初发布,旨在作为 PCI Express 的替代解决方案,具有更高的带宽和附加功能(例如共享内存),专门设计用于与 Nvidia 自己的多 GPU 系统的 GPU ISA 兼容。在推出 NVLink 和 Pascal(例如Kepler)之前,多个 Nvidia 的 GPU 会位于共享的PCIe总线上。尽管已经可以使用 Nvidia 的统一虚拟寻址通过PCIe总线实现直接的 GPU-GPU 传输和访问,但随着数据集的大小不断增长,总线成为越来越大的系统瓶颈。通过使用PCIe 交换机,吞吐量可以进一步提高。

dc55a9c57757b5fb7d5069c96037cd76.jpeg

NVLink,一项旨在取代PCIe通道进行GPU间通信的技术,其独特之处在于,它设计用于实现带宽超过PCIe的CPU-GPU通信。尽管AMD和Intel在x86系统上实现NVLink的可能性不大,但IBM已与Nvidia联手,在其POWER微处理器上引入了NVLink支持。对于这些支持NVLink的微处理器,NVLink能够完全替代所有链路的PCIe,从而实现更高效、更快速的数据传输。这一创新技术将为高性能计算领域带来革命性的变革,让数据处理更加迅速、流畅。

069777205833afa5770f58416aafeb23.jpeg

链接

NVLink通道,被形象地称为"Brick"(或NVLink Brick)。每个NVLink都是双向接口,每个方向拥有8个差分对,合计32条线路。这些线路是直流耦合的,采用带有嵌入式时钟的85Ω差分终端。为了优化路由,NVLink支持通道反转和极性调整,这意味着两个设备间的物理通道顺序及其极性可以自由切换。

  • 535ff0294d9020bdf5f468acc2ff83f7.jpeg
NVLink 数据包的尺寸在1至18个flit之间变化。每个flit包含128位,通过单个header flit和16个payload flit的组合,可传输256字节的数据,峰值效率高达94.12%。若采用单个header flit和4个data payload flit的组合,则可传输64字节的数据,单向效率为80%。然而,在双向流量中,这些效率会略微下降,分别为88.9%和66.7%。

数据包至少由一个标头构成,并可选择加入地址扩展(AE)、字节启用(BE)数据块,以及多达16个的数据负载块。典型的事务包括请求和响应,而发布操作则无需回应。

e45c817cb6bbb7c5cdc82becfb718888.jpeg

头部 flit

Header flit,拥有128位的宽度,由25位CRC、83位事务和20位数据链路(DL)层字段构成。其中,事务字段涵盖请求类型、地址、流控制及标签标识等关键信息;而数据链路字段则包含数据包长度、应用程序编号标签以及确认标识符等内容。

    地址扩展 (AE) 数据块保留用于相当静态的位,并且通常仅传输变化的位。

纠错

Nvidia的误码率被精确设定为1/1×10 ^12,这一数字背后是其强大的错误检测技术。借助25位循环冗余校验头字段,我们能确保数据无误。接收器则负责将这些数据安全地存放在重放缓冲区中。当数据传输包按序到达并经过CRC校验确认无误后,发送端将收到确认信息。若超时未收到确认,系统将自动启动回复序列,重新传输所有后续数据包。

CRC字段由25位构建,确保数据包在最多有5个随机位出错的情况下仍可正常工作。对于差分对突发,该字段甚至能容忍多达25个连续位错误。CRC的计算基于报头和前一有效载荷,因此无需为数据有效载荷设置独立的CRC字段。值得注意的是,由于报头中包含了数据包长度信息,因此在CRC校验过程中也将其纳入考虑。

例如,有两个32字节的数据载荷flit和其相关的头部序列。下一个数据包会对当前的头部以及来自上一个事务的这两个数据载荷进行CRC校验。如果这是首个事务,则CRC会默认上一个事务为空事务。

以PCIe 2.0为例,其每秒可完成5GT的原始数据传输,采用8b/10b编码方式,即每10比特中只有8比特有效。换算下来,其有效带宽为4Gb/s,等效于500MByte/s。

NVLink 1.0

    NVLink 1.0 最初是在基于Pascal微架构的P100 GPGPU中引入的。除了能够从 CPU 端访问系统内存外, P100还配备了自己的HBM内存。P100 有四个 NVLink,支持高达 20 GB/s 的双向带宽,即 40 GB/s,总聚合带宽为 160 GB/s。在最基本的配置中,除了连接到 CPU 以访问系统 DRAM 的 PCIe 通道外,所有四个链路都连接在两个 GPU 之间,以实现 160 GB/s 的 GPU-GPU带宽。

1a18a0cbe3b58f3e711997d5abbe9898.jpeg

首款原生支持NVLink的CPU,IBM POWER8+,引领了一场技术革命。它通过NVLink互连技术,将CPU与速度缓慢的PCIe链路彻底告别。由于P100 GPU仅配备四个NVLink,因此我们巧妙地利用每个GPU的单个链路,实现了CPU与GPU之间的紧密连接。在典型的全配置节点中,我们可以看到两个强大的Power CPU与四个高性能的P100 GPU共同组成。这四个GPU之间完全相互连接,而第四个链路则延伸至CPU,形成了一个高效、协同的工作体系。

8197dcc3aad425ba829add30f97558e2.jpeg

在Intel CPU的环境下,由于NVLink的不兼容性(且长期无望支持),P100 GPU的配置变化可能从两个增至四个。无论何种配置,所有GPU都完全互联,每两个GPU都通过一个直连CPU的PCIe交换机连接。值得注意的是,无论配置如何,每个连接都具有40GB/s的双向带宽。此外,这些链接可以聚合,以在任何两个GPU之间提供更高的带宽,使用链接越多,带宽越高。

c848681c439d2235adfac5bd87a1ad0a.jpeg

DGX-1 配置

c522b1abafa9f0d27ced18a9c257b80c.jpeg

在2017年,NVIDIA引领科技潮流,推出了DGX-1系统,充分利用NVLink技术。这款DGX-1系统由8个Tesla P100 GPU和双插槽Xeon CPU精心打造,以混合立方体网格NVLink网络拓扑巧妙连接。两个Xeon处理器通过英特尔的QPI实现高效通信,而GPU则通过NVLink进行高速数据传输。这一创新组合,让DGX-1成为高性能计算的杰出代表。

  • ffb30ce7251865b87636d15231f53ce2.jpeg

NVLink 2.0

    NVLink 2.0 最早是在基于Volta微架构的V100 GPGPU和IBM的POWER9中推出的。Nvidia 增加了 CPU 主控支持,允许 GPU 和 CPU 在平面地址空间中访问彼此的内存(即直接加载和存储)。平面地址空间通过新的地址转换服务得到支持。此外,还为 CPU 和 GPU 添加了对原子操作的本机支持。随着平面地址空间的增加,NVLink 现在具有缓存一致性支持,允许 CPU 高效缓存 GPU 内存,显著改善延迟并提高性能。NVLink 2.0 将信令速率提高到每线 25 Gbps(25 GT/s),实现 50 GB/s 双向带宽。V100 还将片上 NVLink 的数量增加到 6 个,总聚合带宽为 300 GB/s。值得注意的是,还添加了额外的省电功能,例如在空闲期间停用通道。

NVLink 2.0 首次亮相于第二代DGX-1,但其全面的拓扑结构优化则在DGX-2中实现。Nvidia 还携手 DGX-2 推出了NVSwitch,这款拥有18个NVLink端口的交换机实力非凡。这款集成了20亿晶体管的交换机,能够实现从9个端口到其他任一端口的流量路由。每个端口提供高达50 GB/s的传输速率,使得整个交换机能够提供惊人的900 GB/s带宽。

DGX-2,Nvidia的杰作,通过六个NVSwitches将八个GPU完全互连。每个GPU都可与同一块底板上的其他七个GPU无缝对接,实现卓越的性能和效率。

e156a7aae5d5809879255abe4f95e05a.jpeg

    然后将两个底板相互连接,以将所有 16 个 GPU 完全连接在一起。

11a4ab2a5a8a5df5a2c4acfe03fae5a7.jpeg

NVLink 3.0

首次亮相的NVLink 3.0,基于Ampere微架构的A100 GPGPU中引入。它引领技术新潮,以50 Gbps的信号速率,彰显无与伦比的速度优势。


-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java零基础之多线程篇:线程同步

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Java13.0标准之重要特性及用法实例(二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

【第三版 系统集成项目管理工程师】第9章 项目管理概论

持续更新。。。。。。。。。。。。。。。 【第三版】第九章 项目管理概论 9.1 PMBOK的发展9.2 项目基本要素9.2.1项目基础 P3041.独特的产品、服务或成果-P3042.临时性工作-P3043.项目驱动变更-P3054.项目创造业务价值-P3055.项目启动背景-P306 9.2.2项目管理 P3069.2.2 项目管…

AQS的ReentrantLock源码

什么是AQS(全称AbstractQueuedSynchronizer) 代表:重入锁、独占锁/共享锁、公平锁/非公平锁 是JUC包中线程阻塞、阻塞队列、唤醒、尝试获取锁的一个框架 AbstractQueuedSynchronizer是全称,是一个模板模式,一些线程…

深入理解Java的内存管理机制

文章目录 1. 程序计数器 (Program Counter Register)2. Java虚拟机栈 (Java Virtual Machine Stack)3. 本地方法栈 (Native Method Stack)4. 堆 (Heap)a. 年轻代 (Young Generation)b. 老年代 (Old Generation) 5. 方法区 (Method Area)6. 运行时常量池 (Runtime Constant Pool…

magic-api相关应用与配置

目录 项目启动 工具:IDEA 运行项目 关于配置 项目启动 工具:IDEA 新建——》项目——》导入——》运行 运行项目 http://localhost:9999/magic/web/index.htmlhttp://localhost:9999/magic/web/index.html 关于配置 配置多数据源 在线配置多数据…

git版本控制的底层实现

目录 前言 核心概念串讲 底层存储形式探测 本地仓库的详细解析 提交与分支的深入解析 几个问题的深入探讨 前言 Git的重要性 Git是一个开源的版本控制工具,广泛用于编程开发领域。它极大地提高了研发团队的开发协作效率。对于开发者来说,Git是一个…

32-《蝴蝶兰》

蝴蝶兰 蝴蝶兰(学名:Phalaenopsis aphrodite Rchb. F.)为兰科蝴蝶兰属,原产于亚热带雨林地区,为附生性兰花。蝴蝶兰白色粗大的气根露在叶片周围,除了具有吸收空气中养分的作用外,还有生长和光合…

java之WIFI模块实现文件传输(开源)

AndroidManifest这里要获取到权限,所以要导入: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name"…

22 - grace数据处理 - 补充 - 泄露误差改正 - Slepian局部谱分析法(二) - Slepian谱分析程序包初始化

22 - grace数据处理 - 补充 - 泄露误差改正 - Slepian局部谱分析法 - Slepian谱分析程序包初始化 0 引言1 slepian程序包配置过程1.1 获取环境配置安装包1.2 执行demo测试是否配置成功2 结语0 引言 上篇提到进行slepian谱分析可以使用美国普林斯顿大学Frederik Simons教授提供的…

Google Chrome 应用商店插件离线导出导入方法(亲测有效)

Google Chrome 浏览器插件&#xff08;也称为扩展程序&#xff09;是一种可以增强浏览器功能的小型软件程序。这些插件可以让用户在浏览器中添加新的功能、定制化界面、自动化任务等。以下是一些常见的 Google Chrome 浏览器插件功能&#xff1a; 功能增强&#xff1a;插件可以…

使用 Pytorch 从头开始​​构建 Transformer

目录 一、说明 二、输入嵌入 2.1 __init__()方法目的 2.2 super() 三、PositionalEncoding 类 四、位置编码的工作原理 4.1 总体过程 4.2 数学公式 五、LayerNormalization 类 5.1 过程描述 5.2 例子 六、FeedForwardBlock 类 6.1 总体描述 6.2 数学公式 七、MultiHeadAttentio…

全球清真食品配料市场规划预测:未来六年CAGR为3.4%

随着全球穆斯林人口的增长和消费能力的提升&#xff0c;清真食品配料作为符合伊斯兰教义的食品添加剂和成分&#xff0c;正逐渐受到更多消费者的青睐。本文旨在通过深度分析清真食品配料行业的各个维度&#xff0c;揭示行业发展趋势和潜在机会。 【市场趋势的演变】 1. 市场规…

AI 生成搞笑段子

段子在我们生活中扮演着极为重要的角色&#xff0c;它不仅能够带给我们欢乐和娱乐&#xff0c;还能够促进交流和拉近人与人之间的距离。通过幽默诙谐的段子&#xff0c;我们可以轻松地化解尴尬和紧张的气氛&#xff0c;让沉闷的场合变得活泼有趣。 而段子手生成器&#xff0c;则…

Flink-DataWorks第一部分:DataWorks(第57天)

系列文章目录 1.1 什么是DataWorks 1.2 功能特性 1.2.1 数据集成&#xff1a;全领域数据汇聚 1.2.3 数据建模&#xff1a;智能数据建模 1.2.4 数据分析&#xff1a;即时快速分析 1.2.5 数据质量&#xff1a;全流程的质量监控 1.2.6 数据地图&#xff1a;统一管理&#xff0c;跟…

数据跨境流动需要注意什么?怎么实现安全合规的跨境传输?

2024年3月22日&#xff0c;《促进和规范数据跨境流动规定》&#xff08;以下简称《数据跨境规定》&#xff09;正式公布并施行。数据跨境流通涉及到隐私保护、安全性和法律合规等多个方面的重要考虑因素。 具体来说&#xff0c;需要注意以下几点&#xff1a; 1、隐私保护&…

农场游戏中的时间管理实例

一、准备工作 在Unity中创建承载日期和时间的文本 二、设置游戏的时间戳 using System.Collections; using System.Collections.Generic; using UnityEngine; //标识这个类可以被序列化 [System.Serializable] public class GameTimestamp {// 游戏时间戳的成员变量public in…

【第三版 系统集成项目管理工程师】第10章 启动过程组

持续更新。。。。。。。。。。。。。。。 【第三版】第十章 启动过程组 10.1 制定项目章程10.1.1 主要输入1.立项管理文件-P3562.协议-P35710.1.2 主要输出1.项目章程-P3572.假设日志-P358练习10.2 识别干系人10.2.1 主要输入1.项目管理计划-P3602.项目文件-P36010.2.2 主要工…

49 mysql 子查询 加 group by 产生的奇怪现象

前言 这里要提到的是一个 之前碰到的一个 很令人诧异的查询, 主要是 和 group 查询有关系 查询如下, 按照常规理解, “select id from t_user_02 where name jerry group by age ” 会返回 两条数据, 然后 整个查询 会查询出两条数据 但是 结果很令人差异, 查询出了 四条…

华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用

华为开发者大会2024&#xff08;HDC 2024&#xff09;在东莞松山湖圆满结束&#xff0c;期间华为云主办的“全域Serverless时代&#xff1a;技术创新引领&#xff0c;赋能行业实践”专题论坛&#xff0c;向广大开发者传递了Serverless领域的前沿思考和实践&#xff0c;现场座无…