一种集群系统设备间数据通信方法与系统的利记博彩app
【技术领域】
[0001] 本发明设及高性能计算领域,特别是设及一种集群系统设备间数据通信方法与系 统。
【背景技术】
[0002] 当前社会数据大爆炸,信息数据越来越多,人们对信息数据处理能力的要求也越 来越高,不仅石油勘探、气象预报、航天国防、科学研究等需求高性能计算,金融、政府信息 化、教育、企业、网络游戏、人工智能等更广泛的领域对高性能计算的需求迅猛增长。
[0003] 计算速度对于高性能计算尤为重要,高性能计算朝多核、众核发展,采用异构并行 提升应用计算速度,目前CPU+GPU是非常成熟的异构协同计算模式,适合高度并行计算的 应用或算法。在大规模集群系统中,数据的并行计算是主要的并行计算的应用方式,但是由 于数据并行计算的计算设备需要彼此间相互通信,而受限于网络带宽、总线带宽等原因,对 于通信量较大,计算需要较长时间的等待数据的传输,而使得系统整体性能无法提高。因 此,当前有限的传输带宽已经无法满足系统设备的通信需求,而现有的硬件通信能力也无 法在短期内得到大幅度的提升,所W需要设计一种根据现有有限的通信能力的条件下提高 系统设备的通信效率的方法,从而避免因等待数据传输而浪费计算资源。
【发明内容】
[0004] 有鉴于此,本发明的主要目的在于提供一种集群系统设备间数据通讯方法与系 统,可W高效地进行GPU设备间的通信。 阳〇化]为实现上述目的,本发明提供了一种集群系统设备间数据通信方法,包括:
[0006] 获取每个节点内GPU的数量N,为所述每个节点内的所有GPU进行GPU编号,将GPU 的计算结果等分为N个数据块,并将每个结果数据块根据所述的GPU进行数据块编号;
[0007] 令每个GPU将自己的结果数据块根据数据块编号发送至其他各GPU;
[0008] 令每个GPU根据此时自己的结果数据块与其他GPU发送的结果数据块通过第一预 设规则更新节点内的数据;
[0009] 令每个节点内的目标GPU分别将其他节点内与所述目标GPU对应的GPU进行规约 操作,根据第二预设规则完成节点间数据更新;
[0010] 令每个GPU将对应更新完成的结果数据块散发至所在节点内的其他GPU。
[0011] 优选地,所述第一预设规则为将每个GPU内此时所有的结果数据块进行求和。
[0012] 优选地,所述第二预设规则为将每个节点内此时所有的GPU的所有结果数据块进 行求和。
[0013] 本发明还提供了一种集群系统设备间数据通信系统,包括:
[0014] 分块模块,用于获取每个节点内GPU的数量N,为所述每个节点内的所有GPU进行 GPU编号,将GPU的计算结果等分为N个数据块,并将每个结果数据块根据所述的GPU进行 数据块编号;
[0015] 节点内收集模块,用于令每个GPU将自己的结果数据块根据数据块编号发送至其 他各GPU;
[0016] 节点内计算模块,用于令每个GPU根据此时自己的结果数据块与其他GPU发送的 结果数据块通过第一预设规则更新节点内的数据;
[0017] 节点间规约模块,用于令每个节点内的目标GPU分别将其他节点内与所述目标 GPU对应的GPU进行规约操作,根据第二预设规则完成节点间数据更新;
[0018] 节点内散发模块,用于令每个GPU将对应更新完成的结果数据块散发至所在节点 内的其他GPU。
[0019] 优选地,所述第一预设规则为将每个GPU内此时所有的结果数据块进行求和。
[0020] 优选地,所述第二预设规则为将每个节点内此时所有的GPU的所有结果数据块进 行求和。
[0021] 应用本发明提供的一种集群系统设备间数据通信方法与系统,获取每个节点内 GPU的数量,为所述每个节点内的所有GPU进行编号,将GPU的计算结果进行分块,并将每个 结果数据块根据所述的GPU进行编号,每个GPU将自己的结果数据块根据数据块编号发送 至其他各GPU,每个GPU根据此时自己的结果数据块与其他GPU发送的结果数据块通过第一 预设规则更新节点内的数据,每个节点内的目标GPU分别将其他节点内与所述目标GPU对 应的GPU进行规约操作,根据第二预设规则完成节点间数据更新,每个GPU将对应更新完成 的结果数据块散发至所在节点内的其他GPU,每个GPU处理一个数据块,充分利用了系统网 络带宽,均衡了GPU负载,可W高效地实现GPU间的数据通信。
【附图说明】
[0022] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据 提供的附图获得其他的附图。
[0023]图1为本发明一种集群系统设备间数据通信方法实施例一的原理示意图;
[0024] 图2为本发明一种集群系统设备间数据通信方法实施例一的流程图;
[00巧]图3为本发明一种集群系统设备间数据通信方法实施例一的又一原理示意图; [00%] 图4为本发明一种集群系统设备间数据通信方法实施例一的又一原理示意图;
[0027]图5为本发明一种集群系统设备间数据通信方法实施例一的又一原理示意图;
[0028] 图6为本发明一种集群系统设备间数据通信系统实施例二的结构示意图。
【具体实施方式】
[0029] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0030] 本发明提供了一种集群系统设备间数据通信方法,集群节点间通过高速网络相互 连接,如图1所示,系统为CPU(中央处理器)+GPU(图形处理器)异构集群系统,集群由若 干node节点组成,节点内有若干计算设备GPU,GPU间可W同过总线直接相互通信。节点间 通过IB网络相互连接,节点间的GPU可W通过IB网络直接相互通信,IB即InfiniBand,是 一个统一的互联结构,既可W处理存储I/O、网络1/0,也能够处理进程间通信,本实施例通 信方法首先在节点内部更新计算结果,然后再在节点间更新计算结果,图2示出了本发明 集群系统设备间数据通信方法实施例一的流程图,包括:
[0031] 步骤S101 :获取每个节点内GPU的数量N,为所述每个节点内的所有GPU进行GPU 编号,将GPU的计算结果等分为N个数据块,并将每个结果数据块根据所述的GPU进行数据 块编号; 阳0巧如将GPU的计算结果命名为Wi,假设节点内有N块GPU计算设备,则将每个计算结 果Wi等分成N块,每块大小为Wi/N,每块分别命名为Wii_j,(i为GPU号,j为块号)。如 图3所示,节点内有4块GPU,则分块为,将每个Wi等分成4块:
[0033]GPU0 的 4 块AW0 分别命名为AW00_0,AW00_1,AW00_2,AW00_3,
[0034]GPUl 的 4 块AWI分别命名为AW11_0,AW11_1,AWll_2,AW11_3,
[0035]GPU2 的 4 块AW2 分别命名为AW22_0,AW22_l,AW22_2,AW22_3,
[0036]GPUS 的 4 块AW3 分别命名为AW33_0,AW33_l,AW33_2,AW33_3。
[0037] 步骤S102 :令每个GPU将自己的结果数据块根据数据块编号发送至其他各GPU;
[0038] 每个GPU将自己的结果Wi块平均发送给不同的GPU,GPU0将自己的3个GPU块 AW00_1,AW00_2,AW00_3,分别发送给GPU1,GPU2,GPU3 ;GPU1 类似,将自己的 3 个GPU 块AW11_0,AWll_2,AWll_3,分别发送给GPUO,GPU2,GPU3 ;GPU2 将自己的 3 个GPU块 AW22_0,AW22_l,AW22_3,分别发送给GPUO,GPUl,GPUS;GPU3 将自己的 3 个GPU块 AW33_0,AW33_l,AW33_2,分别发送个GPUO,GPUl,GPU2 ;发送完成后如图4所示:
[0039]GPUO中存储有每个卡的 0 号W块:W00_0、W11_0、W22_0、W33_0 ;
[0040] 6口111中存储有每个卡的1号¥块:胖00_1、胖11_1、胖22_1、胖33_1;
[0041]GPU2 中存储有每个卡的 2 号W块:W00_2、Wll_2、W22_2、W33_2 ;
[0042]GPU3 中存储有每个卡的 3 号W块:W00_3、Wll_3、W22_3、W33_3。
[00创步骤S103 :令每个GPU根据此时自己的结果数据块与其他GPU发送的结果数据块 通过第一预设规则更新节点内的数据; 阳044] 第一预设规则为将每个GPU内此时所有的结果数据块进行求和,每块GPU将自己 的结果数据块与接收到的其它GPU的结果数据块做相应的更