一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种RDMA通信加速集合通信的方法及系统与流程

2021-10-27 20:28:00 来源:中国专利 TAG:通信 集合 加速 方法 系统

一种rdma通信加速集合通信的方法及系统
技术领域
1.本发明涉及通信技术领域,具体为一种rdma通信加速集合通信的方法及系统。


背景技术:

2.远程数据直接访问(remote direct memory access,rdma)技术是进行高性能网络通信的重要数据访问模式,使用rdma进行数据通信可以旁路主机操作系统,减少数据拷贝,达到高带宽、低时延的高性能网络通信效果。rdma广泛应用于商业数据中心和高性能计算机集群中,而集合通信是分布式集群通信中常用的通信模式。
3.集合通信,这种数据通信模式涉及到多个通信节点之间的数据收发,往往涉及到数据由多个计算节点汇集到一个计算节点的通信过程,如规约(reduce)、全局规约(allreduce)、收集(gather)、全局收集(allgather)等操作。在数据汇集的过程中会造成网络中数据量急剧增加,导致中间汇集节点和根节点成为通信热点和通信瓶颈,其次主机端进行数据的规约计算时则会消耗一部分主机端宝贵的计算资源。
4.因此,通过在rdma通信设备上进行集合通信的卸载,在数据经过通信设备的时候对数据进行计算,一方面可以充分旁路主机操作系统,减少主机通信以及计算的开销;另一方面可以减少数据拷贝,并且减少网络中传输的数据量,达到提高集合通信性能的效果。目前,网络设备厂商在网卡或者交换机上开辟一部分用于集合通信加速的数据缓冲区和计算单元,来进行集合通信的数据缓存和数据计算,同时提供了配套的软件和协议,如core

direct、sharp等。
5.但是,目前的rdma网络设备集合通信加速方案中,在设计架构上采用简单的缓冲区来进行数据缓存管理,以消息粒度进行数据传输完成情况的反馈,通过上层单独的中间层软件进行集合通信卸载的管理,这样的技术方案在实际应用中并不能满足实际的集合通信需求,会存在下列问题:
6.(1)当数据通信过程中通信的消息较大时,在消息层面进行数据传输情况的反馈,会导致缓冲区占用时间过长,严重影响缓冲区的使用效率;
7.(2)粗粒度的缓冲区管理,在数据流水处理上缺乏高效性,无法进行高效率的集合通信加速;
8.(3)通过中间层软件进行集合通信卸载的管理和调用,导致用户无法直接进行通信设备硬件的感知,以致无法充分利用硬件设备的卸载特性,需要硬件向用户提供集合通信卸载专用的通信原语和调用接口。
9.特别是在分布式深度学习应用和高性能应用中,存在大量的集合通信操作,如:分布式深度学习训练,需要进行大量的参数更新,对底层通信而言需要进行多次大数据量的allreduce(典型的相对复杂的集合通信之一)操作,而高性能计算中需要调用大量的消息传递接口(message passing interface,mpi)和集合通信接口,以上的集合通信会显著影响应用的整体性能,因此,现在急需一种rdma通信加速集合通信的方法及系统,以解决现有集合通信存在问题。


技术实现要素:

10.本发明的目的之一在于提供一种高效、易用的rdma通信加速集合通信的方法,以解决现有集合通信卸载效率低的问题。
11.本发明提供的基础方案一:一种rdma通信加速集合通信的方法,包括如下步骤:
12.s3,网络设备获取wr或网络配置包的通信元数据,判断wr或网络配置包是否为集合通信卸载通信,若是,则执行步骤s4;
13.s4,网络设备获取网络数据,在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理;其中网络设备获取的是wr,在获取网络数据前,网络设备会进行集合通信卸载的配置;
14.s6,若本次任务完成、应用下发查询请求或任务出现异常,则网络设备将wr或网络配置包对应的cqe反馈给主机或应用。
15.说明:work request(wr):工作请求;
16.completion queue element(cqe):完成队列单元。
17.基础方案一的有益效果:网络设备获取wr的通信元数据,判断wr或网络配置包是否为集合通信卸载通信,若是,网络设备则获取网络数据,在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理;其中网络设备获取的是wr,在获取网络数据前,网络设备会进行集合通信卸载的配置;因为网络设备除了要进行集合通信卸载以外,还会进行一些普通的网络通信任务,因此首先对wr或网络配置包进行判断,wr或网络配置包是集合通信卸载通信才会触发网络设备进行集合通信的处理,以避免网络设备资源的浪费。
18.在网络设备进行集合通信任务处理时采用的是细粒度的缓冲区管理机制,相较于现有技术中粗粒度的缓冲区管理,在数据流水处理上缺乏高效性,无法进行高效率的集合通信加速,本方案中的细粒度的缓冲区管理机制可以将缓冲区划分成为小于等于最大传输单元(maximum transmission unit,mtu)的多个分块的小段(segement)进行管理,可以提高流水处理能力,进而提高缓冲区的利用效率,从而更高效的加速集合通信。
19.本次任务完成、应用下发查询请求或任务出现异常,均会使网络设备将wr或网络配置包对应的cqe反馈给主机或应用,相较于现有技术中当数据通信过程中通信的消息较大时,在消息层面进行数据传输情况的反馈,会导致缓冲区占用时间过长,严重影响缓冲区的使用效率,本方案通过cqe向主机或应用返回集合通信卸载的执行情况,用户通过主机或应用可以获取网络设备进行集合通信卸载任务的执行情况,当出现多任务的复杂情况下,用户可以准确的获得已有任务的执行状态,进行更加合理的任务调度,确保整体任务的高效的进行;因此不需要通过中间层软件进行集合通信卸载的管理和调用,相较于中间软件层会导致用户无法直接进行网络设备硬件的感知,以致无法充分利用网络设备等硬件设备的卸载特性,需要硬件向用户提供集合通信卸载专用的通信原语和调用接口,本方案无需在上层单独的中间层软件进行集合通信卸载管理,集合通信卸载任务在网络设备中进行,网络设备将wr对应的cqe反馈给主机或应用,用户可以通过主机或应用直接对网络设备中进行的集合通信卸载任务进行管理,从而更方便使用。此外,本方法不仅可以在树形网络中发挥显著效果,也可以用于直连网络中加速集合通信。
20.进一步,所述s3,还包括:若否,则执行s5;
21.s5,网络设备获取网络数据,对数据进行普通的网络通信处理。
22.所述s3之前,还包括:
23.s1,应用中进行rdma通信操作,产生数据通信需求;
24.s2,应用向网络设备下发包含通信元数据的wr或网络配置包,其中通信元数据包含操作类型、门铃信息、请求队列虚拟地址和长度;
25.所述s6之后,还包括:
26.s7,检查此次通信所包含的所有通信操作是否执行完成,若执行完成,则执行s8;若执行未完成,则执行s2;
27.s8,通信任务执行结束。
28.有益效果:因为网络设备除了要进行集合通信卸载以外,还会进行一些普通的网络通信任务,对wr进行判断,wr是集合通信卸载通信才会触发网络设备进行集合通信卸载的处理,而当wr不是集合通信卸载通信时,网络设备也会获取网络数据,但是对数据进行的是普通的网络通信处理,从而使网络设备能进行集合通信卸载任务的同时,不会影响网络设备原本的网络通信功能。执行不成功,重新执行步骤120,即应用再次向网络设备下发包含通信元数据的wr,确保数据通信的完成。
29.进一步,所述s4,具体包括:
30.s401,解析集合通信卸载的配置信息:
31.s402,发起本地数据读请求或等待接收外部数据;
32.s403,获取包含网络数据的数据包,对数据包进行解析,判断数据包类型,若是集合通信卸载的最终计算结果,则执行s404;若是待计算的集合通信卸载的数据,则执行s405;
33.s404,将集合通信卸载的最终计算结果广播到本node内与此次集合通信相关的各个rank中;
34.s405,对待计算的数据进行分块计算;
35.s406,判断该node内与此次集合通信相关的所有rank的数据是否均完成计算,若计算完成,则执行s407;若计算未完成,则执行s402;
36.s407,若此次集合通信涉及的所有rank均在本node内,则直接对计算结果进行node内广播;若否,则将本node内完成集合通信计算的数据进行封装,并发往下一node与其他node的数据进行进一步的计算;
37.s408,检查集合通信卸载完成状态,若为完成或出现异常,则执行s6;若否,则执行s402。
38.说明:node:含有一个或多个计算通信实体的主机节点;
39.rank:主机节点内包含的一个或多个计算通信实体。
40.有益效果:进行集合通信卸载获取的数据包会判断数据包类型,防止过度计算,并且对node信息进行判断,若rank不全在本node中,会对数据进行封装发送到其他的node,从而保证所有rank均完成集合通信卸载。
41.进一步,所述配置信息包括:重要控制信息;所述重要控制信息包括:op字段、jid字段、mid字段、sid字段、node字段、rank字段、seg字段、数据分块长度字段、集合通信执行状态字段、地址链表字段、路由信息字段。
42.说明:op字段,用于表示集合通信中使用到的计算操作类型,包括:求和和求最值;
43.jid字段,用于任务号的标志;
44.mid字段,用于消息号的标志;
45.sid字段,用于同一消息中数据序列号的标志;
46.node字段,用于一次集合通信中涉及到的节点号的标志,集合通信涉及到的节点对应的位置为1,不涉及的节点对应的位置为0;
47.rank字段,用于一次集合通信中涉及到的rank号的标志,集合通信涉及到的本节点内rank对应的位置为1,不涉及的rank对应的位置为0;
48.seg字段,用于一次集合通信中指定的seg缓存单元号的标志;
49.数据分块长度字段,用于表明一个消息的数据按多大的数据块分割进行流水处理;
50.集合通信执行状态字段,用于表明一次集合通信中执行状态;
51.地址链表字段,用于存储网络设备上获取各个rank数据的地址链表;
52.路由信息字段,用于存储网络设备进行数据转发的路由信息。
53.opcode(op):操作类型,用于集合通信标志,以及通信中进行求和、取最值等数据计算操作类型;
54.job_id(jid):任务号,当有多个集合通信卸载任务时,分配独立的jid号;
55.message_id(mid):消息号,同一个集合通信卸载任务中多个消息的序号;
56.sequence_id(sid):序列号,大消息被拆分成多个序列处理。
57.有益效果:上述重要控制信息是支持基于ib_verbs扩展的集合通信卸载原语中提供的关键信息;用户可以通过扩展的集合通信卸载原语直接控制网络设备对消息进行集合通信的卸载,提高了用户的编程性,可以更大程度的利用网络设备的卸载特性。
58.进一步,所述分块计算为各seg i缓存单元进行缓存计算,包括:
59.s4051,开始进行缓存计算;
60.s4052,接收seg i’数据;
61.s4053,检测进行计算的seg i缓存单元是否为空,若为空,则表示接收到的seg i’数据是seg i缓存单元进行集合通信计算的第一块数据,并执行s4054;若不为空,则表示seg i缓存单元已经有部分集合通信数据进行过计算,并执行s4057;
62.s4054,获取seg i缓存单元对应的op字段、node字段和rank字段;
63.s4056,将获取的seg i对应的op字段、node字段和rank字段以及接收seg i数据,填入seg i缓存单元;
64.s4057,读取seg i缓存单元的数据,并提取op字段用于判定即将进行的计算操作类型;
65.s4058,将读取到的seg i数据与接收到seg i’数据进行op字段指定的计算操作,并更新node集合通信完成状态字段和rank集合通信完成状态字段;
66.s4059,将数据、node集合通信完成状态字段和rank集合通信完成状态字段填写到对应的seg i缓存单元;
67.s40510,检查node集合通信完成状态字段和rank集合通信完成状态字段,判断该网络设备的seg i缓存单元是否完成所有与该网络设备相关的集合通信数据计算,若完成,则执行s40511;若未完成,则执行s4052,等待与seg i相关的其他数据到达;
68.s40511,将seg i数据进行数据的封装;
69.s40512,将seg i缓存单元进行释放;
70.s40513,该网络设备关于seg i的集合通信缓存计算操作完成。
71.说明:segment(seg):缓冲区中划分成的多个独立的细粒度单元。
72.有益效果:缓冲区中划分成的多个独立的细粒度单元,每个seg i缓存单元都进缓冲计算,即集合通信卸载,从而加速集合通信,提高集合通信效率,并且在计算过程中对数据进行判断,从而进行更合理的计算过程,计算完成后即时释放seg i缓存单元,便于下次计算;可以提高缓冲区的利用率和集合通信的卸载效率,极大释放了主机端对集合通信的资源占用,提高整体通信性能。
73.本发明的目的之二在于提供一种高效、易用的rdma通信加速集合通信的系统,以解决现有集合通信卸载效率低的问题。
74.本发明提供基础方案二:一种rdma通信加速集合通信的系统,包括:执行控制模块、数据处理模块和状态更新模块;
75.执行控制模块,用于获取wr或网络配置包,并进行解析和存放、将解析出的集合通信卸载的配置信息下发到数据模块组和状态更新模块;
76.数据处理模块组,用于在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理;
77.状态更新模块,用于通过完成事件队列将完成状态信息写回到主机端。
78.基础方案二的有益效果:本系统中执行控制模块获取wr或网络配置包,并进行解析和存放、将解析出的集合通信卸载的配置信息下发到数据模块组和状态更新模块,不是集合通信卸载的配置信息不下发到数据模块组和状态更新模块,而是进行现有技术中普通的网络通信处理,本方案中不做赘述。数据处理模块组,根据执行控制模块下发的配置信息在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理,相较于现有技术中粗粒度的缓冲区管理,在数据流水处理上缺乏高效性,无法进行高效率的集合通信加速,本系统中的细粒度的缓冲区管理机制可以将缓冲区划分成为小于等于最大传输单元(maximum transmission unit,mtu)的多个分块的小段(segement)进行管理,可以提高流水处理能力,进而提高缓冲区的利用效率,从而更高效的加速集合通信。
79.状态更新模块通过完成事件队列将完成状态信息写回到主机端,相较于现有技术中当数据通信过程中通信的消息较大时,在消息层面进行数据传输情况的反馈,会导致缓冲区占用时间过长,严重影响缓冲区的使用效率,本系统通过状态更新模块向主机端返回集合通信卸载的执行情况,用户通过主机或应用可以获取网络设备进行集合通信卸载任务的执行情况,当出现多任务的复杂情况下,用户可以准确的获得已有任务的执行状态,进行更加合理的任务调度,确保整体任务的高效的进行;因此不需要通过中间层软件进行集合通信卸载的管理和调用,相较于中间软件层会导致用户无法直接进行网络设备硬件的感知,以致无法充分利用网络设备等硬件设备的卸载特性,需要硬件向用户提供集合通信卸载专用的通信原语和调用接口,本系统无需在上层单独的中间层软件进行集合通信卸载管理,集合通信卸载任务在网络设备中进行,网络设备中的状态更新模块将wr对应的cqe反馈给主机或应用,用户可以通过主机端直接对网络设备中进行的集合通信卸载任务进行管理,从而更方便使用。此外,本系统不仅可以在树形网络中发挥显著效果,也可以用于直连
网络中加速集合通信。
80.进一步,所述数据处理模块组,包括:数据缓存计算模块、数据解析封装模块和数据传输模块;
81.数据缓存计算模块,用于对集合通信涉及到的数据进行分块计算;
82.数据解析封装模块,用于对从网络端口或本地内存中获取的数据,根据执行控制模块下发的配置信息进行数据的解析和拆分,并发送给数据缓存计算模块进行处理;还用于对完成所有集合通信计算之后的数据进行封装,并发送给数据传输模块;
83.数据传输模块,用于从node本地内存读取数据,向node本地内存写入数据,向外部端口发送数据以及从外部端口接收数据;还用于每次通信传输结束后,将数据通信的完成情况发送给状态更新模块。
84.有益效果:数据处理模块组,包括:数据缓存计算模块、数据解析封装模块和数据传输模块,三个模块与执行控制模块和状态更新模块,为执行集合通信卸载的核心模块,各模块之间配合完成集合通信卸载,数据缓存计算模块、数据解析封装模块和数据传输模块保证了数据的计算和传输。
85.进一步,所述配置信息包括:重要控制信息;所述重要控制信息包括:op字段、jid字段、mid字段、sid字段、node字段、rank字段、seg字段、数据分块长度字段、集合通信执行状态字段、地址链表字段和路由信息字段。
86.说明:op字段,用于表示集合通信中使用到的计算操作类型,包括:求和、求最值和求均值,供数据缓存计算模块和数据解析封装模块使用;
87.jid字段,用于任务号的标志,供数据解析封装模块使用;
88.mid字段,用于消息号的标志,供数据解析封装模块使用;
89.sid字段,用于同一消息中数据序列号的标志,供数据解析封装模块使用;
90.node字段,用于一次集合通信中涉及到的节点号的标志,集合通信涉及到的节点对应的位置为1,不涉及的节点对应的位置为0,供数据缓存计算模块和数据解析封装模块使用;
91.rank字段,用于一次集合通信中涉及到的rank号的标志,集合通信涉及到的本节点内rank对应的位置为1,不涉及的rank对应的位置为0,供数据缓存计算模块和数据解析封装模块使用;
92.seg字段,用于一次集合通信中指定的seg缓存单元号的标志,seg的资源使用由上层驱动管理和控制,供数据缓存计算模块和数据解析封装模块使用;
93.数据分块长度字段,用于表明一个消息的数据按多大的数据块分割进行流水处理,供数据缓存计算模块和数据解析封装模块使用;
94.集合通信执行状态字段,用于表明一次集合通信中执行状态,包括完成成功和缓冲区错误,供数据传输模块和状态更新模块使用;
95.地址链表字段,用于存储网络设备上获取各个rank数据的地址链表,供数据传输模块使用;
96.路由信息字段,用于存储网络设备进行数据转发的路由信息,供数据传输模块使用。
97.有益效果:上述重要控制信息是支持基于ib_verbs扩展的集合通信卸载原语中提
供的关键信息;用户可以通过扩展的集合通信卸载原语直接控制网络设备对消息进行集合通信的卸载,提高了用户的编程性,可以更大程度的利用网络设备的卸载特性。
98.进一步,所述数据缓存计算模块,包括:计算控制子模块和缓存子模块;
99.缓存子模块,包括若干个以seg为段位的seg缓存单元;其中,seg缓存单元,用于缓存计算控制子模块中的数据,以seg为单位进行存储和计算;
100.计算控制子模块,用于从执行控制模块中获取配置信息,从缓存子模块中读取seg数据,使用模块内部的向量计算部件完成同一seg的输入数据与seg缓存单元中原始数据的计算,当执行完计算之后,进行对应seg数据位的更新以及计算后数据的存放,当该节点内关于seg j的所有rank完成集合通信的计算之后,释放seg j单元,并将完成计算的seg j传递给数据解析封装模块进行后续的封装处理。
101.有益效果:数据缓存计算模块包括缓存子模块和计算控制子模块,其中缓存子模块包括若干个seg缓存单元,以将缓冲区中划分成多个独立的细粒度单元,每个seg i缓存单元都进缓冲计算,并且使用与缓冲区分块大小相匹配的向量计算部件将集合通信中涉及到的简单计算卸载到网络设备,可以进一步释放主机端集合通信占用的计算资源。
102.进一步,每个seg中包含多个数据字段,包括:op字段、node集合通信完成状态字段、rank集合通信完成状态字段和数据负载字段;
103.所述数据缓存计算模块,用于对集合通信涉及到的数据进行分块计算,包括:各seg i缓存单元进行缓存计算,具体为:
104.s1,数据缓存计算模块开始进行缓存计算;
105.s2,接收数据解析封装模块发送的seg i’数据;
106.s4,计算控制子模块检测seg i缓存单元是否为空,若为空,则表示接收到的seg i’数据是seg i缓存单元进行集合通信计算的第一块数据,并执行s4;若不为空,则表示seg i缓存单元已经有部分集合通信数据进行过计算,并执行s6;
107.s4,计算控制子模块从执行控制模块中获取seg i缓存单元对应op字段、node字段和rank字段;
108.s5,计算控制子模块将获取的seg i对应的op字段、node字段和rank字段以及接收的由数据解析封装模块发送的seg i数据,填入seg i缓存单元;
109.s6,计算控制子模块从缓存子模块中读取seg i缓存单元的数据,并提取op字段用于判定即将进行的计算操作类型;
110.s7,计算控制子模块将从缓存单元读取到的seg i数据与接收到的由数据解析封装模块发送的seg i’数据进行op字段指定的计算操作,并更新node集合通信完成状态字段和rank集合通信完成状态字段;
111.s8,计算控制子模块将数据、node集合通信完成状态字段和rank集合通信完成状态字段填写到对应的seg i缓存单元;
112.s9,计算控制子模块检查node集合通信完成状态字段和rank集合通信完成状态字段,确定该网络设备的seg i缓存单元是否完成所有与该设备相关的集合通信数据计算,若完成,则执行s10;若未完成,则执行s2,等待与seg i相关的其他数据到达;
113.s10,计算控制子模块将seg i数据传递给数据解析封装模块,进行数据的封装;
114.s12,计算控制子模块将seg i缓存单元释放;
115.s13,该网络设备关于seg i的集合通信缓存计算操作完成。
116.说明:op字段,用于表示该seg缓存单元当前集合通信中使用到的计算操作类型,包括:求和、求最值和求均值;
117.node集合通信完成状态字段,用于表示来自其他node的待计算数据的通信完成状态;
118.rank集合通信完成状态字段,用于表示来自本node内各个rank的待计算数据的完成状态;
119.数据负载字段,用于存储消息分块之后的固定长度的数据负载,每次以该数据长度大小进行计算和通信的流水处理。
120.有益效果:缓冲区中划分成的多个独立的细粒度单元,每个seg i缓存单元都进缓冲计算,即集合通信卸载,从而加速集合通信,提高集合通信效率,并且在计算过程中各模块配合进行更合理的计算过程,计算完成后即时释放seg i缓存单元,便于下次计算;可以提高缓冲区的利用率和集合通信的卸载效率,极大释放了主机端对集合通信的资源占用,提高整体通信性能。
附图说明
121.图1为本发明一种rdma通信加速集合通信的方法实施例一的流程图;
122.图2为本发明一种rdma通信加速集合通信的方法实施例一中重要控制信息示意图;
123.图3为本发明一种rdma通信加速集合通信的方法实施例一中每个seg中包含的数据字段示意图;
124.图4为本发明一种rdma通信加速集合通信的系统实施例二的逻辑框图;
125.图5为本发明一种rdma通信加速集合通信的系统实施例二中数据缓存计算模块的逻辑框图;
126.图6为本发明一种rdma通信加速集合通信的系统实施例二中数据缓存计算模块关于seg i的集合通信卸载执行流程图;
127.图7为单个网络设备在进行allreduce集合通信卸载时进行数据包处理的流程图;
128.图8为4节点网络拓扑集合通信卸载示意图。
具体实施方式
129.下面通过具体实施方式进一步详细说明:
130.相关概念和用语说明:
131.allreduce:典型的相对复杂的集合通信之一,本文后续集合通信卸载的执行流程将以此操作为例进行介绍;
132.实施例一
133.本实施例基本如附图1所示,一种rdma通信加速集合通信的方法,包括如下步骤:
134.s1,应用中进行rdma通信操作,产生数据通信需求;
135.s2,应用向网络设备下发包含通信元数据的wr或网络配置包,其中通信元数据包含操作类型、门铃信息、请求队列虚拟地址和长度;操作类型包括:集合通信的卸载和普通
的网络通信;
136.s3,网络设备获取wr或网络配置包的通信元数据,判断wr或网络配置包是否为集合通信卸载通信,若是,则执行步骤s4;若否,则执行s5;
137.s4,网络设备获取网络数据,在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理;其中网络设备获取的是wr,在获取网络数据前,网络设备会进行集合通信卸载的配置;s4具体包括:
138.s401,解析集合通信卸载的配置信息;其中配置信息包括:重要控制信息;如图2所示,重要控制信息包括:
139.op字段,用于表示集合通信中使用到的计算操作类型,包括:求和和求最值;从wr中提取op字段;
140.jid字段,用于任务号的标志;
141.mid字段,用于消息号的标志;
142.sid字段,用于同一消息中数据序列号的标志;
143.node字段,用于一次集合通信中涉及到的节点号的标志,node字段从wr或者网络配置包中提取,集合通信涉及到的节点对应的位置为1,不涉及的节点对应的位置为0;
144.rank字段,用于一次集合通信中涉及到的rank号的标志,rank字段从wr中提取,集合通信涉及到的本节点内rank对应的位置为1,不涉及的rank对应的位置为0;
145.seg字段,用于一次集合通信中指定的seg缓存单元号的标志,seg字段从wr中提取,seg的资源使用由上层驱动管理和控制;
146.数据分块长度字段,用于表明一个消息的数据按多大的数据块分割进行流水处理;数据分块长度字段从wr或者配置包中获取;
147.集合通信执行状态字段,用于表明一次集合通信中执行状态,包括完成成功和缓冲区错误;
148.地址链表字段,用于存储网络设备上获取各个rank数据的地址链表;地址链表字段从wr中提取;
149.路由信息字段,用于存储网络设备进行数据转发的路由信息;路由信息字段从wr中或者数据解析封装模块提取。
150.s402,发起本地数据读请求或等待接收外部数据;
151.s403,获取包含网络数据的数据包,对数据包进行解析,判断数据包类型,若是集合通信卸载的最终计算结果,则执行s404;若是待计算的集合通信卸载的数据,则执行s405;
152.s404,将集合通信卸载的最终计算结果广播到本node内与此次集合通信相关的各个rank中;
153.s405,对待计算的数据进行分块计算;其中分块计算为各seg i缓存单元进行缓存计算,包括:
154.s4051,开始进行缓存计算;
155.s4052,接收seg i’数据;
156.s4053,检测进行计算的seg i缓存单元是否为空,若为空,则表示接收到的seg i’数据是seg i缓存单元进行集合通信计算的第一块数据,并执行s4054;若不为空,则表示
seg i缓存单元已经有部分集合通信数据进行过计算,并执行s4056;
157.s4054,获取seg i缓存单元对应的op字段、node字段和rank字段中;每个seg中包含多个数据字段,如图3所示,包括:
158.op字段,用于表示该seg缓存单元当前集合通信中使用到的计算操作类型,包括:求和、求最值和求均值;本op字段与重要控制信息中的op字段为同一op字段。
159.node集合通信完成状态字段,用于表示来自其他node的待计算数据的通信完成状态;
160.rank集合通信完成状态字段,用于表示来自本node内各个rank的待计算数据的完成状态;
161.数据负载字段,用于存储消息分块之后的固定长度的数据负载,每次以该数据长度大小进行计算和通信的流水处理;
162.s4055,将获取的seg i对应的op字段、node字段和rank字段以及接收seg i数据,填入seg i缓存单元;
163.s4056,读取seg i缓存单元的数据,并提取op字段用于判定即将进行的计算操作类型;
164.s4057,将读取到的seg i数据与接收到seg i’数据进行op字段指定的计算操作,并更新node集合通信完成状态字段和rank集合通信完成状态字段;
165.s4058,将数据、node集合通信完成状态字段和rank集合通信完成状态字段填写到对应的seg i缓存单元;
166.s4059,检查node集合通信完成状态字段和rank集合通信完成状态字段,判断该网络设备的seg i缓存单元是否完成所有与该网络设备相关的集合通信数据计算,若完成,则执行s40510;若未完成,则执行s4052,等待与seg i相关的其他数据到达;
167.s40510,将seg i数据进行数据的封装;
168.s40511,将seg i缓存单元进行释放;
169.s40512,该网络设备关于seg i的集合通信缓存计算操作完成。
170.s406,判断该node内与此次集合通信相关的所有rank的数据是否均完成计算,若计算完成,则执行s407;若计算未完成,则执行s402;
171.s407,若此次集合通信涉及的所有rank均在本node内,则直接对计算结果进行node内广播;若否,则将本node内完成集合通信计算的数据进行封装,并发往下一node与其他node的数据进行进一步的计算;
172.s408,检查集合通信卸载完成状态,若为完成或出现异常,则执行s6;若否,则执行s402。
173.s5,网络设备获取网络数据,对数据进行普通的网络通信处理;
174.s6,若本次任务完成、应用下发查询请求或任务出现异常,则网络设备将wr或网络配置包对应的cqe反馈给主机或应用;
175.s7,检查此次通信所包含的所有通信操作是否执行完成,若执行完成,则执行s8;若执行未完成,则执行s2;
176.s8,通信任务执行结束。
177.实施例二
178.本实施例基本如附图4所示:一种rdma通信加速集合通信的系统,包括:执行控制模块、数据处理模块和状态更新模块;其中数据处理模块组包括:数据缓存计算模块、数据解析封装模块和数据传输模块。执行控制模块、数据解析封装模块、数据缓存计算模块、数据传输模块、和状态更新模块,这五个模块为执行集合通信卸载的核心模块,完成完整的rdma通信中的集合通信卸载还需要通信设备中其他模块的支持,包括但不仅限于通信上下文管理模块、虚实地址转换模块和主机通信接口模块,此类模块均为常规的通信功能模块,在此不再赘述。
179.执行控制模块,用于获取wr或网络配置包,并进行解析和存放、将解析出的集合通信卸载的配置信息下发到数据解析封装模块、数据缓存计算模块、数据传输模块和状态更新模块;其中配置信息中包括:重要控制信息;如图2所述,重要控制信息包含的字段如下:
180.op字段,用于表示集合通信中使用到的计算操作类型,包括:求和和求最值,从wr中提取op字段,供数据缓存计算模块和数据解析封装模块使用;
181.jid字段,用于任务号的标志,供数据解析封装模块使用;
182.mid字段,用于消息号的标志,供数据解析封装模块使用;
183.sid字段,用于同一消息中数据序列号的标志,供数据解析封装模块使用;
184.node字段,用于一次集合通信中涉及到的节点号的标志,node字段从wr或者网络配置包中提取,集合通信涉及到的节点对应的位置为1,不涉及的节点对应的位置为0,供数据缓存计算模块和数据解析封装模块使用;
185.rank字段,用于一次集合通信中涉及到的rank号的标志,rank字段从wr中提取,集合通信涉及到的本节点内rank对应的位置为1,不涉及的rank对应的位置为0,供数据缓存计算模块和数据解析封装模块使用;
186.seg字段,用于一次集合通信中指定的seg缓存单元号的标志,seg字段从wr中提取,seg的资源使用由上层驱动管理和控制,供数据缓存计算模块和数据解析封装模块使用;
187.数据分块长度字段,用于表明一个消息的数据按多大的数据块分割进行流水处理,数据分块长度字段从wr或者配置包中获取,供数据缓存计算模块和数据解析封装模块使用;
188.集合通信执行状态字段,用于表明一次集合通信中执行状态,包括完成成功和缓冲区错误,供数据传输模块和状态更新模块使用;
189.地址链表字段,用于存储网络设备上获取各个rank数据的地址链表,地址链表字段从wr中提取,供数据传输模块使用;
190.路由信息字段,用于存储网络设备进行数据转发的路由信息,路由信息字段从wr中或者数据解析封装模块提取,供数据传输模块使用。
191.数据处理模块组,用于在网络设备上采用细粒度的缓冲区管理机制进行集合通信的卸载任务处理;其中数据处理模块组包括:数据缓存计算模块、数据解析封装模块和数据传输模块;
192.数据缓存计算模块,用于对集合通信涉及到的数据进行分块计算,实现对网络设备上的缓冲区进行高效管理;以allreduce操作为例,数据缓存计算模块将对来自各个node中的各个rank的数据根据不同seg选择对应的缓冲区,并且根据从执行控制模块中获取的
op字段进行规约操作。数据缓存计算模块,如图5所示,包括:计算控制子模块和缓存子模块;
193.缓存子模块,包括若干个以seg为段位的seg缓存单元;其中,seg缓存单元,用于缓存计算控制子模块中的数据,以seg为单位进行存储和计算;每个seg中包含多个数据字段,如图所示,包括:op字段、node集合通信完成状态字段、rank集合通信完成状态字段和数据负载字段;
194.op字段,用于表示该seg缓存单元当前集合通信中使用到的计算操作类型,包括:求和、求最值和求均值,新的数据通过op字段确定seg缓存单元与新数据进行的计算操作类型;
195.node集合通信完成状态字段,用于表示来自其他node的待计算数据的通信完成状态;具体为:node集合通信完成状态字段的初始状态是属于该seg缓存单元接收第一个数据时从执行控制单元中获取的,每当接收到来自其他node的待计算数据并在本网络设备完成计算时,将node集合通信完成状态字段中对应node状态标志位置调节为0,否则,则保持现有状态;当node集合通信完成状态字段中node状态标志位置均为0时,则表示该seg缓存单元有关的所有node集合通信数据计算完成,可以将数据分发到各个节点;
196.rank集合通信完成状态字段,用于表示来自本node内各个rank的待计算数据的完成状态;具体为:rank集合通信完成状态字段的初始状态是属于该seg缓存单元接收第一个数据时从执行控制单元中获取的,每当接收到来自本node内各个rank的待计算数据并在本网络设备完成计算时,将rank集合通信完成状态字段中对应rank的状态标志位置调节为0,否则,则保持现有状态;当rank集合通信完成状态字段中rank状态标志位置为0时,则表示该seg缓存单元有关的本node内的所有rank集合通信数据计算完成,可以将数据发送到下一级网络设备继续进行集合通信数据计算;
197.数据负载字段,用于存储消息分块之后的固定长度的数据负载,每次以该数据长度大小进行计算和通信的流水处理。
198.计算控制子模块,用于从执行控制模块中获取配置信息,从缓存子模块中读取seg数据,使用模块内部的向量计算部件完成同一seg的输入数据与seg缓存单元中原始数据的计算,当执行完计算之后,进行对应seg数据位的更新以及计算后数据的存放,当该节点内关于seg j的所有rank完成集合通信的计算之后,释放seg j单元,并将完成计算的seg j传递给数据解析封装模块进行后续的封装处理。
199.如图6所示,数据缓存计算模块关于seg i的集合通信卸载执行流程,具体为:
200.s1,数据缓存计算模块开始进行缓存计算;
201.s2,接收数据解析封装模块发送的seg i’数据;
202.s4,计算控制子模块检测seg i缓存单元是否为空,若为空,则表示接收到的seg i’数据是seg i缓存单元进行集合通信计算的第一块数据,并执行s4;若不为空,则表示seg i缓存单元已经有部分集合通信数据进行过计算,并执行s6;
203.s4,计算控制子模块从执行控制模块中获取seg i缓存单元对应op字段、node字段和rank字段;
204.s5,计算控制子模块将获取的seg i对应的op字段、node字段和rank字段以及接收的由数据解析封装模块发送的seg i数据,填入seg i缓存单元;
205.s6,计算控制子模块从缓存子模块中读取seg i缓存单元的数据,并提取op字段用于判定即将进行的计算操作类型;
206.s7,计算控制子模块将从缓存单元读取到的seg i数据与接收到的由数据解析封装模块发送的seg i’数据进行op字段指定的计算操作,并更新node集合通信完成状态字段和rank集合通信完成状态字段;
207.s8,计算控制子模块将数据、node集合通信完成状态字段和rank集合通信完成状态字段填写到对应的seg i缓存单元;
208.s9,计算控制子模块检查node集合通信完成状态字段和rank集合通信完成状态字段,确定该网络设备的seg i缓存单元是否完成所有与该设备相关的集合通信数据计算,若完成,则执行s10;若未完成,则执行s2,等待与seg i相关的其他数据到达;
209.s10,计算控制子模块将seg i数据传递给数据解析封装模块,进行数据的封装;
210.s12,计算控制子模块将seg i缓存单元释放;
211.s13,该网络设备关于seg i的集合通信缓存计算操作完成。
212.数据解析封装模块,用于对从网络端口或本地内存中获取的数据,根据执行控制模块下发的配置信息进行数据的解析和拆分,并发送给数据缓存计算模块进行处理;还用于对完成所有集合通信计算之后的数据进行封装,并发送给数据传输模块;与普通rdma通信相比,本方案中的数据解析封装模块解析和封装的信息增加了op字段、jid字段、mid字段、sid字段、node字段、rank字段和seg字段。普通的网络通信处理的解析与封装也可通过本模块进行。
213.数据传输模块,用于从node本地内存读取数据,向node本地内存写入数据,向外部端口发送数据以及从外部端口接收数据;还用于每次通信传输结束后,将数据通信的完成情况发送给状态更新模块。
214.状态更新模块,用于通过完成事件队列将完成状态信息写回到主机端。当数据传输模块完成一次wr之后,会将本次wr的完成状态信息发送给状态更新模块,与普通rdma通信的返回状态相比,本状态更新模块增加了关于集合通信卸载的完成状态字段,状态更新模块通过主机通信接口,如dma等方式将完成状态信息写回到主机端。
215.具体实施过程:如图7所示:单个网络设备在进行allreduce集合通信卸载时进行数据包处理的流程,其中网络设备为网卡设备:
216.步骤701,集合通信开始;
217.步骤702,应用向网卡下发集合通信卸载wr;
218.步骤703,网卡通过主机通信接口获取集合通信卸载wr,并由执行控制模块解析集合通信卸载的配置信息;
219.步骤704,数据传输模块通过主机通信接口发起本地数据读请求或者等待接收外部数据;
220.步骤705,获取包含网络信息的数据包后,数据解析封装模块对数据包进行解析,判断数据包类型,若是普通的网络通信数据,则执行步骤706;若是allreduce卸载的最终计算结果,则执行步骤707;若是待计算的allreduce集合通信数据,则执行步骤708;
221.步骤706,根据普通rdma通信数据的处理流程对数据进行封装,通过网口发出或者写入本地内存;
222.步骤707,将allreduce卸载的最终计算结果由数据传输模块,通过主机通信接口广播到本节点内与此次allreduce集合通信相关的各个rank中;
223.步骤708,由数据缓存计算模块对待计算的通信数据进行分块计算;
224.步骤709,判断该节点内与此次allreduce集合通信相关的所有rank的数据是否均完成计算,若计算完成,则执行步骤710;若计算未完成,则执行步骤704;
225.步骤710,若此次集合通信涉及的所有rank均在本节点内,则直接对计算结果进行节点内广播;若否,则将本节点内完成集合通信计算的数据进行封装,并发往下一节点与其他节点的数据进行进一步的计算;
226.步骤711,检查整个集合通信卸载完成状态,若为完成或者出现异常,则执行步骤712;若否,则进入步骤704等待数据到达、发起数据读请求。
227.步骤712,状态更新模块将通信完成状态通过主机通信接口返回到主机内存;
228.步骤713,此次allreduce集合通信完成。
229.如图8所示:以4个node网络拓扑为例,进行allreduce集合通信卸载,图8中共4个节点,每个node内有4个参与集合通信的rank。
230.假设图8中所示的交换机以及4个网卡均为支持集合通信卸载的网络设备,单向实线代表进行数据聚合计算的数据流,单向虚线代表进行聚合结果返回的数据流。图8所示的拓扑在进行allreduce集合通信时,主要经过三个阶段:首先,进行网卡集合通信卸载任务的下发和交换机集合通信卸载的配置;其次,4个网卡分别对各自节点内部各个rank的数据进行分块计算和流水处理,并将中间计算结果传递给交换机,交换机对来自4个网卡的数据包进行流式计算,获得最终的计算结果;最终,交换机将最终结果广播到各个网卡,网卡在获取数据包后,判断为卸载完成广播包,将最终数据分发到各个rank对应的地址空间,此次allreduce集合通信完成。
231.假设图8中所示的交换机不支持集合通信的卸载,而4个网卡均支持集合通信卸载,那么支持集合通信卸载的4个网卡可以通过交换机或直连网络组成如虚线箭头所示的环,通过ring算法进行集合通信。图8所示的拓扑在进行allreduce集合通信时,主要经过三个阶段:首先,进行网卡集合通信卸载任务的下发和集合通信卸载的配置;其次,4个网卡分别对各自节点内部各个rank的数据进行分块计算和流水处理,并将中间计算结果通过交换机或者直连网络传递给其他节点进行计算;最终,各个网卡上均可以获得集合通信的最终数据结果,并将最终数据分发到各个rank对应的地址空间,此次allreduce集合通信完成。
232.以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本技术给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本技术的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本技术要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜