00:00
爸,Hello,大家好,我是从一天一更新到现在的一周一更新的,周米,今天呢,我们来到了envy link基础与结构,其实在上一节呢,我们给大家去分享了分布式训练和envy link的整体的发展,那今天我们深入的去打开一下,看看envv link的基本的原理,还有它深入的一些内容,那在今天我主要给大家分开三个内容去汇报的,那第一个就是env link的整体的发展,看一下它历代有什么不一样,接着呢我们去看看env link的内部的结构是怎么组成的,第三个就是env Li的top,我还记得其实有一次在跟外部的客户的交流的时候,有一个客户呢,就突然问到一个问题,GPU与GPU或者MPU与MPU之间的高速互联不是很简单吗?就一条网线的事情,或者一条电线。
01:00
的事情,你把那电线传更多的数据就行了吗?诶,还真没有那么简单,我们带着这个疑问呢,往下去了解一下,现在呢,我们来到了第一个内容看看,在MV link出现之前,一台主机之间呢,会有一个CPU进行一个主体的驱动,那一款CPU下面呢,为了提升我们的计算的性能,于是呢就会下面挂很多块GPU,那这些GPU呢,都是以插槽的方式,也就是PCI Switch的PC插槽插到我们的整个主板上面,那一块主板呢,就可以最多的插八块CPU,这个时候呢,我们叫做多个CPU之间呢,是通过PCI进行一个库年的,但是在MV link之前出现的时候呢,P33乘以16,整体的双线带宽呢并不高,那于是呢,我们GPU跟GPU之间的互联,当我们对网络带宽的时延要求越来越高的时候。
02:00
整个系统或者整个解决方案的互联带宽呢,就成为我们整个系统的或者整个主机的瓶颈,如果这个时候不去改变这个互联的带宽,那新的GPU的计算的性能再强,它一样会受到GPU跟CPUGPU跟GPU之间的一个网络传输的时延,从而影响了我们的计算的能力,这个时候我们计算能力再强,也没有办法充分发挥它的作用。现在呢,我们不再停留在非常high level的层面,我们简单的打开看一下GPU内部的一个内容,那首先呢,GPU内部呢,有非常多的核心SM的模块,这次SM的模块呢,实际上是通过我们的塔的编程来去驱动整个CPU下发指令给到我们的GPU,真正的执行起来,而GPU实际上呢,会把我们的线程分配给每个GPC,或者每个GP里面的SM po这里面GPU的架构里面的SM代表什么意思呢?其实我在之前给大家单独的去分享过。大家分一。
03:00
增米之前的视频就好了,而GPU里面的SM或者GPC里面的SM呢,会利用我们的HBM带宽,也就是这里面的所谓的显存,你们都会叫显存呢,它可能是devices里面的内存,利用这里面的数据呢,会给到我们的lr cash,然后再把数据呢给到GPC或者给到SM里面的寄存器进行计算,现在呢,我们把这个架构再加一款GPU,于是呢,CPU的左边有一款GPU0 CPU的右边呢有一款GPU1,我们GPU跟GPU之间呢,以前呢没有link呢,需要通过PE,也就是我们这里面呢,会单独提供一个PCIE1的IO,然后呢进行互联,而既然PIE1跟PC1进行互联呢,中间就需要经过我们的CPU进行一个数据的分发调用度,P3E带宽的速率呢,就会制约了我们GPU跟GPU互联的速率了。于是英伟达就提出了一个m link。
04:00
这里面呢,当手第一代啊,保留了PC1的IO,另外的话还提供了下面绿色的这几个框框,MV link,那GPC之间呢,也就是我们的计算的核心,或者我们的计算框里面呢,可以访问卡间的HBN带宽,通过多条的MV link,那m link它有多条链路嘛,我们等一下会去分享的,通过多条的link呢,对GPU跟GPU之间的HBM进行互联,有了两台机器的基本的原理之后呢,我们就使能了GPU之间更多的服务器进行扩年,那可以看到呢,MV link和S8,我们先不管S8是什么,MV link呢,就使得CPU呢可以挂载更多的GPU,单个GPU的驱动进程呢,就可以控制非常多的GPU进行同时去计算,另外一点就是HBN,我们的显存不受其他进程的干扰下,里面呢可以随便的去访问我们的LD,还有ST,那LD呢,就是我们的。
05:00
Code和storage的指令,整个S8呢,就作为一个调接器啊,多个GPU之间的调接器,独立的眼镜就提供了更多的发展的可能,更大的带宽,这个就是envv link的出现。在第一个小利用结束之前呢,我给大家去重新播一播envv link,因为达到一个官方的宣传,In video envv link reDeFined computational science and a wide range of hpc applications by removing the limits of PC I e this advancement enables GPS to communicate with each other at nearly seven times the speed of PC I e five faster performance。现在我们来到了第二个内容,Envv link的结构,打开envv link,看看它到底里面长什么样子,首先第一代的MV link是P100,不是V100,我们可以看到,实际上呢,第一代呢,它有四条MV link,也就四条链路,第一条呢?
06:00
K1234在这里面有四条,每一条呢大概是40GB左右每秒的一个通讯的速率,它呢是一种三公双路的信道,也就是它给双向传输,所以整个芯片呢就具备了整整160GB每秒的带宽,也是GPU跟GPU的库,可以提供非常高的带宽。另外的话,我们看看下面呢,整体有什么不一样,首先呢艾link的链接我们简单的打开看看,它一共有四条,每一条呢是40B每秒,整个系统呢是140GB,那这里面呢,也重新的说明P百4MV linkx有效的带宽利用率啊,其实去到94%,这是非常惊人的,因为40GB每秒呢是我们的标秤,但实际上呢,它不可能把40G全都用满,或者把我们的160G呢全都用满,我们实际上呢,会有一个有效的利用率比,而这里面呢,支持GPU到GPU之间的读写,还有原子的操作,这一点是非常的重要的。而且。
07:00
这个链路之间呢,可以独立的发展,所以MV link的出现呢,还是非常的革命性的,我们现在再深入的打开看看everyv link有什么不一样啊,首先单条的MV0这面有四条嘛,单条的MV里面呢,又有可以分开八条的,分到双向的,每一项呢提供20GB,那这个时候呢,回到刚才入门的时候,我给大家抛出的一个问题,也是别人问我的一个问题,这不是很简单吗?简单的提供一条电器连接,你就可以把数据传输了,为啥搞这么复杂呢?实际上数据传输比我们想象的要难很多,首先呢,你简单理解的话,你看到的一条简单的电线呢,只是我们的电器连接,但是呢,电器连接之上呢,我们的物理层或者我们的雕层呢,要提供抗扭矩加流,还有分刀逆转,即性反转,各种各样的物理的特性,另外它有了基础的物理特性之后呢,我们还要有一些基础的数据的协议,提供可靠的数据的传输呢,还有我们的网络传输的重播,在网上呢,我们需要提供。
08:00
不呀,流规量控制,还有链路聚合,所以没有我们想象中的那么简单,这里面呢,PHHY就是physic的物理层,第幺呢就是我们的data link数据的链路层,最后TL呢,就是我们的交易层,每一层呢都有自己的工作,每一层都需要完成自己独立的任务,有了这些基础的工作,我们看到的就是像NC,实际上呢,就封装了,利用了这里面的MV link底层的这些能力,我们看到的就是传输简单的数据就好了,那现在我们继续再打开看看envv link的整体连接,首先呢,Everyv的通道呢,我们称之为break,那单个every link呢,它是一个双向的链接嘛,所以每个方向都可以互传,那每个方向呢,包括八个插分队,所以这里面呢有12345678,一共呢32条线,所以呢,我们刚才看到的单一条MV link呢。
09:00
实际上呢,是提供了32条线的,这些电器连接线呢,使用了直流耦和带85欧姆的差分终端呢,这些呢都是我们的电器的特性,大家可以简单的听听就完了,为了简化路由呢,还有减少电器连接线呢,MV link呢就支持通道的反转,还有极道的反转,于是我们可以看到还有很多TS和R呢,可以可以支持我们的物理通道顺序呢和即兴可以颠倒的方式,现在呢,我们打开再看看a link里面的数据包啊,我们传输的是数据嘛,所以非常关心数据包,首先呢,单个link的数据包范围呢,从一到18个F,每个F呢有128BIT,也就是我们下面的打开每一个fit,每个fit里面呢,很有意思的就是有一个head,还有一个16位的data,那这一个呢,就是我们的head,下面这个呢,就是我们16位的data,一个fit呢,就可以实现256个bit的数据的传输,峰值的带宽利用率是94。
10:00
我们刚才也讲到了一条电路的带宽,如果大家看不懂没有关系,我们会继续深入的去打开看看我们的MV link的数据包,那刚才讲到的几个事情呢,其实还是要跟大家去澄清一下的,首先是我们的head fit,它是128个bit,也就是128个比特,其中呢,前面25个bit呢,就是我们CIC循环于中间的83BIT呢,就是我们的传输的字节,后面的20BIT呢,就是我们的数据的链路,那这里面呢,我就标明了HD,我们传输的字节,字段呢,也就是我们的header里面呢,就分开好几个内容,有类型请求、地址,还有零疗控制位,还有标识位,那这些呢,是我们的MV link的数据头包,另外的话还有我们的数据的链路,也就是我们的DL,那这里面呢,就包括我们数据包的长度啦,还有一些简单的标识服,另外的话可能还有两个内容啊,一个是ae,一个是B1,那这两个呢,都是静态的保留位,大部分时候呢,可以不用下面。
11:00
那我们再打开看看我们的link里面的内容,首先呢CRC啊,就是我们的循环冗余叫Z嘛,这里面呢,就负责将我们的数据呢保存在paper,然后对我们的数据呢进行一个校正,然后再回传发回我们的原数据地址,另外的话,它的组成呢,是25个bit,也就25个字节,最大运是于我们整个数据包呢,可以有五个随机的错位,真正数据传的是我们的data playlo,那我们数据呢,就会放在我们的电台配漏里面,前面的head或者蓝色这一块呢,大部分时间呢,是用来做校正的地址胶正了,搓胶正了,循环码胶正了,还有一些标识符,深入的看完every link简单的结构之后呢,我们现在来看看every link的top,那every link top其实是很有意思的,第一代nv link,我们以这个为例子,如果我们把两个GPU之间进行互联呢?就会提供四条GPU的链路,刚才我们也讲过了,真的是第一代只有四。
12:00
好,那如果是三个GPU的时候怎么办呢?我们就需要进行组成一个叫做SH的方式啊,GPU呢,因为只有四条m link嘛,所以它就以这种方式来进行组合,GPU跟GPU之间呢,就只有80GB的一个互联带宽,另外的话,如果我们四个GPU呢,就可能组成一个SH,这里面呢,也是12344条,GPU跟GPU之间呢,就通过这么一个组网的方式呢,就把互相连接起来,另外的话,GPU跟CP之间呢,是通过灰色的这块,就是我们的P1进行一个互联,下面呢,我们看一下整体的一个比较明确的例子,就是在link p出来的时候呢,它其实英伟达呢,是跟IBM的POWER8架构一起联合创新的,也就是我们买一台P版的机器呢,实际上里面用的CPU呢,这个IBM的P8,不过现在的IB里面的硬件呢,确实没有做到像AMD那么好的MD,后来超越了GPU,跟GPU之间呢,就可以通过MV进行互联。
13:00
而GPU跟CPU之间呢,就我们Intel尔P8里面也也可以通过MV进行互联,不过呢,四个GPU的节点呢,就形成了一种全连接,我们叫做mash的结构的方式,那实际上我们看看真正的硬件呢,就是这种方式去组合的,另外的话,我们可以看到刚才讲到的一个mash嘛,副mash其实呢,它真正的或者物理上的是这么组的,组成一个矩阵,GPU跟GPU之间互联,因为每一条GPU之间呢,它只有四条MV link和链路,所以我们呢,就会有效的把四块拼成一起,把另外四块拼成一起,这四块跟这四块又各自的连接成一块,就变成被四块所分割,这种方式呢,看上去不是说非常的直观,于是呢,我们展开展屏来去看,就变成了右边的这一个图,四个GPU之间呢,组成一个ma,另外四个GPU之间呢,又组成一个ma之间呢,在通过互联的带宽来进行一。
14:00
的链接,我在网上呢,又找到了一个更好看的图,GPU跟GPU之间进行互相链接,那这种方式呢,其实在英伟达里面呢,叫做cube mesh,下面呢,我们来看一下TESLA100的DGS的整体的渲染图,在视频结束之前呢,我等一下想给大家去播一个短的视频,也是英伟达的GGS的渲染视频里面呢,就提到了,可能我们会有100的一些GPU,我们会有一个LV link cube mesh就提供具体的互联的方式,由我们刚才讲到的互联的方式,最后再插到我们的主板上面呢,跟我们的CPU进行一个交互,或者由CPU来控制。卷的不行了,卷的不行了,记得一键三连加关注哦,所有的内容都会开源在下面这条链接里面。
15:27
拜了个拜。
我来说两句