00:01
Hello,大家好,我是小斌,这是我的第五个技术视频,今天给大家带来的技术分享是Dis底层的lib fabric,也就是rdma相关的,包括GPU。呃,数据传送相关的,希望大家喜欢。哈喽,大家好,我是小兵。今天给大家讲一下lib fabric。也就是我们打开的这个。Open lip fabric库。To Be talking about the important thing。OK,今天我们来讲一下这个英特尔开放结构live发的教程。包括r DBS network,还有GPU数据的传输。
01:07
呃,这里面我们也会提到一个技术大牛,也就是我们的这个潘达。熊猫博士。呃,这篇文章介绍了lip f的基本教程以及常见代码示例,包含TCP的还有lip GPU DMA等代码和示例。内容是基于英特尔专家的视频和个人理解,就欢迎大家一起来交流这个高性能存储、分布式存储网络,还有rdma等技术。这个视频链接我这里已经打开了,也就是在这个位置。我们可以看一下,So this is r me and today we are going To Be presenting a tutorial with o fili fabric we also a up tutorial last year but last year we spoke mostly about。
02:03
Different API within the fabric。也就是说他这个他们去年是做过一次分享,这次分享是23年8月25号。关键词就是这两个工程师都有,呃,其中一位资深的有17年的工作经验,中间建开发还有利发的项目。呃,M,他们是nv me的一个贝克的一些负责人,还有他们在赛铁克、惠普都有一些工作经验。这就是一个封面,然后。的议题agenda。第一个是编译通讯软件,第二个是硬件和软件带来的挑战,就是硬件和软件的复杂性带来挑战,第三个是为什么我们需要内部发布。嗯,接下来是live的架构。API的分组,So应用和far应用的区别。
03:02
这里是GPU数据传输的示例。首先第一个。编译通信软件。说这里可以参考panda熊猫博士,就是附录里面这是有介绍的。熊猫博士,我们先切了熊猫博士。简单。高性能计算的大牛。Doctor panda,熊猫博士。是。俄州立大学计算机科学与工程系的教授和大学接触。结束了。他领导了很多网络的计算研究小组。啊,这是他的一些辉煌的战绩。What about you?
04:00
兴趣主要包含高性能计算、高性能网络、IB、大数据分析、SPA、哈杜普、深度学习、云计算等。这里他发表了很多篇的。论文500多篇论文。好,这简单过一下。有兴趣的可以下来看一下。我们再切回去,熊猫博士。嗯。一个是面向。可靠面向可靠连接TCP,还有无连接的数据报的udp协议,高性能计算,还有hpc人工智能。就学校交给咱们的TCP的,一般是这样子的。这个example。里面会涉及到一些。So,绑定listening。然后这边客户端。Get,然后连接过来,然后这边receive到消息,然后这边渗透过来处理数据,然后最后消费资源。
05:06
也是软硬件,接下来就是讲那个软硬件辅导型带来的挑战。我们现在是易购的CPUGPUXPUIPU等。上千个节点的集成,不同网络类型,以太网、IV光纤等。包括熊猫博士提到的CPUGPUXPIP等等。以及我们的。X01LINK MV link GPU等,还有软件库,NCCL,英特尔的mpi等,所以咱们需要一个通用的通讯库来调节这些复杂的软件资源,这就带来的挑战,然后第八个来解决上面的问题,也就是解决上面的问题。嗯。发的好处就是统一API,让程序员更轻松,高性能和高扩展性,核心组件就是众多的网卡提供者库核心服务。测试程序。
06:01
为什么需要Li发?它主要是承上启下,调接底层复杂多样的网络so ID ma GPU、共享内存等和上层的MPICCL共享内存等应用。就上层的应用在这里,Li发在中间这一层,它调接了下面的是so rdma GPU host的共享内存,So编程与Li发编程的对比。刚才说了我们so编程左边,然后右边的话是发这接口。就是它的语音是类似的,也有什么获取信息,就是if I get for。呃,B connect,但是发挥底层支持多种网络类型。所我们看到像素社会的它,但是它底层是支持这些RD ma GPU。呃,共享内存的。支持GPU通信,这是一个GPU数据传输的呃例子。架构与四种服务架构,之前的视频里面的油条。
07:02
那主要分为四种类型的服务,一种是控制类,发现底层设备、属性能力等通信接口。主要是用来。Communication interface主要是用来建立连接初始化资源。呃。Data transfer service数据传输、发送和接收数据。com service完成服务,主要是用来报告。呃,发送或接收的一些状态,连接的状态的事件的。API分组,你个API分组。首先讲它的对象模型,Domain FAB active endpoint even q。呃,Set的这些里面对应的一些包括比如说内存注册的就是IRRI。呃,地址下面相关的open insert插入的这里一些通用的结构。
08:02
呃,接下来讲那个在线示例。就说这里有一个,就说talking she show you the code,光速练直接上才艺吧,然后我们看一下他这个第一个事例是。Tack的,这个是我们非常熟悉的大学里面。教的so的listening,然后收发实例的话,主要就是看这里有一个一站服务的一些启动。然后客户端去连接,然后这边发消息。发hello s this isle。嗨,服务器我是客服的弯,然后这边会收到。Hello s this is the client。然后它的启动服务端启动,还有那个客户端发送。在这里。然后。它的源码也在这里,这个我就不细讲了,现在可以看一下这一块比较基础。
09:04
一个麦函数进去。然后往下你发布的收发数据示例截图就是你发布的的接口。它也是类似的。这里是服务端启动。然后这边是。客户端去连,然后他消息封装在内部,然后他的参考代码可以看这个库的这个example miss.c下面。他这个主要是。开玩笑吗?Example messageum。动力。所以服务端为例的话。先进来卖函数,然后。
10:01
往下走。首先是。获取一个提示信息,Hence。忘记一个第四信息。然后这边往下设置。呃,设置端点类型,端点类型。啊,我们设置为可靠的数据包端点,所以类似于它是机的。但是他无需执行,呃。嗯,对,类似的。他这边选美食忌。嫩咖啡CD里面写杯子。这个视例中,视频中的视例是用的是TCP,但是我们也可以用RT。二脖子的一个。就提供着的。配置是不算配置。啊,这里是一个标记位。大家可以看一下,然后启动服务。交通服务里面主要是先去获取。网卡的信息,然后他只取第一个。
11:02
打开发。在初始化任何资源前,需要打开cover。紧接着打开时间队列,让一名建联收发数据产生的事件。然后打开被动中断裂。那这边为断裂绑定事件队列绑定。好,这里listening等待客户端的连接。服务端的典型的业务。现在可以看客户端其实是也是类似的。这两两者消息的对比,其实就是SOVS。
12:04
他都是完成同样的事情,都是把这个message发到这端,那我们的那个endpoint支持哪哪些类型这里可以。待会儿可以踢一下。好像就是GPU的存储实例。GPU这个城市我们过一下就行了。GPU传输的事例,我们分左边和右边。首屏的传统的是IPIPV的。Variables的接口,看我们里面有I post,然后这边是做了一些封装,它调的是if read message,所以说message。我们看到这边variables的话,其服务端是这样器,就是用主机端。在内。客户端的话也是用主机的内存,然后发一个已字节的写。然后主机对主机的这个就是内存的,通过ID内部发的内存直接访问的DN实例,在这里我们可以看到这个里面又是百多名。
13:05
你第二次什么时候播资?这边是客户端,这边是端的。他是用的主机内存完了,你直接写操作代码的相应位置就是这个这个文件。哪个是主机?可以给GPU设备发内存,直接访问。DM的一个设计师,比如说服务端使用GPU的设备就是杠MDS。这里杠MDS。然后客户端去。用主机端的内存。一个字节写类型。然后完成那个一个字节的DMA内存直接访问这里。可以看到它这里面。然后更多的发布的信息可以参考这里面的链接,就是是官网。然后。
14:00
接口,然后。对面。盖辩论指导。下面这里就是结束了。那说一下这个hot hot I就热门的互联网技术。它里面很多技术视频。可以给大家演示一下。这个我们可以看一下刚才的那个事例。Next I will explain a。On the other hand。G的实力。
15:12
我们可以看到这里面很多技术视频,就是这个hot。看了个行。这里面讲的是lepp。上次看到一个UC叉了。刚才简简单讲了一下那个里面的,可以这里以一个实际的应用场景再给大家讲一下。这里面我先讲一下端点类型,然后再结结合这个micro micro就是用这个库。来说一下这个。比如说这里我们的一个bug传输,就项目里面的一个跨传输。
16:02
他就是在初始化网络抽象的时候。他首先也是像刚才一样,他就获取那个网网络的参数,就是它是过滤那个提供者信息,然后这边设置模式。我们看它里面的主要是一个锻炼内心。EP type这里是RDMRDM是可靠但是连接更小的数据包类型,也说他通过地址向量,就客户端和服务端通过同一种算法,可以不用键连接就可以计算。计算到对端的那个地址向量,然后。等到真正发数据的时候,发现第一次发数据的时候发现没有建连接,然后就建立一个连接,第二次发数据的时候直接去获取连接即可。这样减少了很多,呃,那个负载连接上来。它这是一个网络的初始化。
17:02
用我们的bug传输。Yes。我们看一下的端点类型。In a pointer。差点油。这是他的一些借口。特点类型,我们看到在这里,比如说有那个数据报,就支持无连接可靠的数据报。
18:00
消息边界得到回复。但最大消息。大小可能受限于结构的,无法保证流量控制。你是地瓜?还有我们的message消息端联,类似于搜狗的可靠面向连接的数据传输服务。它具有维护消息边界的旅游控制。我们的live里面用的是这种。然用的是这种RDM。可靠的数据报。消息端点提供可靠的无连接的数据传输库,并且具有维护消息边界的流控制,Maker默认使用该模式。参考这个代码里面,它设置的这个端点就是PRDM。这里面有很多文档,包括它的API。提供哪些语意?我们的DMA的操作。
19:18
OK,我们以DES里面的查池为例来讲一下那个大传输,大传输底层是用的rdma,单边操作,Read或者write。比如说我们命令行执行DMG的岗位,首先是找到够浪的。执行的时查询命令。然后。客会走到客户端,客户端首先会创建一段bug。大块数据。吃创建bug。它用来承载需要存放引擎发过来的数据。比如说STL是一个,然后它的。
20:03
W地址。然后调用cut的bug quit cut bug qui底层会去对内存对bug进行注册。他的面。注册的话会往下掉,比如他按分多。然后。包括每的大小啊,这些都会设置,然后创建一个内存的描述,然后。对内存进行注册。
21:07
这边。我们看到barret。往下掉的话是会掉到那个。内存注册的。会掉到阿迪没的。注册内存的接口。IBM8。这是客户端,先注册一个一片内存连续的。内存。然后。书完了之后,将。客户端将这一段连续内存的。地址还有key信息发给,通过RPC发给服务端。发给服务端,服务端就收到那个pon请求。
22:01
然后去。找一下RDB的事物。这边从客户端把RPC解析出来。然后他可以。取出来就拿到RPC里面的,就客户端的地址,还有内存。然后服务器端开始准备。Map。就词的音色。把它给读到这个buffer结构里面。你这个结构。这个时候。这时候服务端需要。传输这个八本给客户端,它首先获取。就远端的长度。然后把本团的那个。B设置到那个SGL里面,通过bug create,也是通过bug create服务端的,然后把这个数据给。
23:05
内存端比注册好。就是下面。注册好。注册好了之后。这边会调用一个。Put的操作。也就是对应RDM的right和IB w rdm的right的操作。然后把这个。远端和本端的B都填到这个map description里面,通过一个transfer。把这个描述信息。直接。传输bug。也就是说。通过R的单边写通。把服务端的信息。从服务端的bug写到。客户端的bug,这就是RM的单边。操作。
24:00
但底层还有很多细节。其实总结来说。这个lip fabric。包括leric,还有那个。MY。它样层层封装。它和这些东西其实。还是rdma的东西。比如说可以去你发的项目里面去他客户端,他可服杂他干了哪些事情,无非也就是说。才会创建实战通道。创建连接标识客户端,然后解析地址,然后触发CM事件。它也是。触发这个事件,然后这边。创建联系表示listening。这是一个建联的基本过程,但是双端的请求的一个过程。示意图包括它。
25:03
涉及到的一些调用是这样的。浪费资源,对。所以我们再简单过一下这个word。这里面他选择的那个特点类型。
26:04
点类型就是可靠的数据包类型一批。那天5000年的时候。那将来bug传输,比如服务端。这有点C,你先去初始化,然后。Trigger在progress,然后再自行。这个已经是服务端了,服务端首先得客户端先把那个内存地址。发过来,还有key发过来,然后。客户端这边执行一个八个串输,这边是通过读我把客户端数据拉过来。刚才咱们讲的是一个写的过程,这个是R的读。其实也是类似的。这面。
27:03
回到项目里面,我们看iOS类的。上面讲的。Com应该在哪里出现的?
28:33
然后还有他其中还有一些其他的测试,可以说的,180BW测试视频里面讲到的。还有这个。贷款城市。Ma。远程内存访问测试,在服务端写一个,然后客户端通过shift端写过去。
29:01
我暖,这样吃起来。然后他会参数,比如十瓦CPU啊。类型。地址的向量的一些初始化。自行交换地址内存。在客户端。然后他把这个数据写过去,然后。差不多一杯项链。说实话。我看到它里面用那个p rma的时候。Op就是二的right,其实也是就是单边写。它里面它也可以设计一些标签,比如说粪石。Suspens。自己就把这个flag给。我上去。这个我们。看一下这个病史,其实可以讲一下。
30:01
因此的话,那就是说。设置分时的话就相当于是一个栅栏,这意味着这个工作请求会被阻止,直到先前发布的RD读取或原子的RWR完成为止。就是它相当于是存在一个保续。OK,我们看一下。你发的一些文档。它放在哪些位置?首先第一个。他的一个项目地址,然后。定语,还有归档的历史逃生程序员的手册。程序员的手册,还有一个开发指南。样子,这里面也有。
31:34
开吗?里面都涉及到一些。设计。当初为什么要设计一部发布它的设计思想简查可以,他就是通过性的回顾我面向连接的一些通性。
32:03
包括他提到的无链接的。P。它是一个高性能,避免内存拷贝。资源管理还有一步操作。时间推理。直接一眼访问。他过来不?新的设计的API。那早就买。我想提前么,我现在好。的一个占用。资源。共享S共享队列。都会接入缓存区。最佳音节分配。共享迷队列。多对列进展模型注意事项。还有它里面提到的排序。
33:05
没有消息。数据。这个。控制服务、连接服务。完的说。对的,传输服务就是刚才我说的内存注册啊,对象模型这些。被动端的。世界对联EQ。地址下面。And point。去传说。下去传说。那也太冷的消息了。远程内存访问的。
34:00
然后把美国的结构。我说。买。Fabric。所以看代码的过程中,有看不懂的有些概念,然后就可以回过头来看这些里面它的设计思想源泉。县城。今天注册。他要锻炼。嗯。找那个弹性相关的CP。的出现。内心。最大的孝心。大桥,要去排学大桥。包括它里面很多参数。
35:00
对底层进行了封装。颜值向量是非常棒的一个设计。降低了网络开销。要死。我们看一下它的那个头键。那提供的主要的一个。打开没。还没?读。
36:01
那么它主要提供的读写的语义的主要是read read v、读图段,然后read message的消息,还写向量写,然后写小写等这些结构。做了一些工作。好了,今天就是本期的。接着视频,希望大家喜欢。然后最后看一下那个,以那个做一个解释。已关灯的视频。截取一小段,我们作为一个结束。所以得多向大牛学习。比如说。熊猫博士。Will also see how。
37:06
Public example。Okay。So and。And introduce you all so this the tutorial for open fabrics interface fabric。The speakers for this tutorial are rael lus me on godi and Joey JO himmoba s。And a brief introduction。So rogerlus me is a middlewere engineering manager at Intel corporation leading Li。Fabric software product。
38:02
Action team she is seventeen plus years of industry experience in various capacities ranging from。Design development to management she has been heavily involved in the development of schemas and lockups for s and I a swordfish in thecable storage management technical working group she has Co authored multiple technical proposals and contributed to the n bm express consortium she is a key contributetor of distdpoint management。She is also a court team member of technical women at Intel network cross product。现在过一下。In the chat here。How do we write a simple program to transfer the data。好的。今天太卡了,这个。
39:01
大部分内容都在那个网格里面。OK,今天的这个视频就到此为止,希望大家喜欢。全部在锅。快去扫描。OK,谢谢,再见。
我来说两句