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

跨GPU缓冲区的分级通信系统及设备

2023-02-01 15:18:17 来源:中国专利 TAG:

跨gpu缓冲区的分级通信系统及设备
技术领域
1.本发明实施例涉及分级通信技术领域,尤其涉及一种跨gpu缓冲区的分级通信系统及设备。


背景技术:

2.现如今因gpu优异的计算能力,使用gpu去进行并行计算任务或处理大两数据的计算问题已然成为一种趋势。gpu由于其拥有数量巨大的计算核心,使得其在并行计算领域和一些处理数据量巨大的问题上具有先天优势。目前应用于gpu的broadcast常见集体通信算法需要在多节点下广播,意味着使用cudamemcpy操作将数据从根gpu的设备内存转移到主机内存上,再转移到非根gpu的内存上,这使用cudamemcpy操作,这种行为造成额外的成本。如果避免使用cudamemcpy产生浪费,但由于没有使用ipc机制,没有使用高性能的gpu内核线程辅助的复制操作,所以仍然存在大时延。因此,开发一种跨gpu缓冲区的分级通信系统及设备,可以有效克服上述相关技术中的缺陷,就成为业界亟待解决的技术问题。


技术实现要素:

3.针对现有技术存在的上述问题,本发明实施例提供了一种跨gpu缓冲区的分级通信系统及设备。
4.第一方面,本发明的实施例提供了一种跨gpu缓冲区的分级通信系统,包括:将集群分为两级结构,一级结构作为节点的服务器cpu,二级结构作为cpu下连接的gpu。
5.在上述系统实施例内容的基础上,本发明实施例中提供的跨gpu缓冲区的分级通信系统,一级结构的节点间通信采用knoimal算法实现,二级结构的节点内通信采用单向环算法实现。
6.在上述系统实施例内容的基础上,本发明实施例中提供的跨gpu缓冲区的分级通信系统,所述二级结构的节点内通信采用单向环算法实现,包括:根进程将数据分块并开始将块推送到进程逻辑链中的右邻居,除链中最后一个进程外,所有非根进程都从左邻居接收消息块并将接收的消息块转发给右邻居,链中的最后一个进程从左邻居接收消息块且不进行不转发。
7.在上述系统实施例内容的基础上,本发明实施例中提供的跨gpu缓冲区的分级通信系统,在所述链中的最后一个进程从左邻居接收消息块且不进行不转发之后,还包括:降低单向环算法的通信成本,通过实验确定最佳消息块的大小,并允许运行时通过消息大小、进程数、硬件架构选择正确大小的消息块。
8.在上述系统实施例内容的基础上,本发明实施例中提供的跨gpu缓冲区的分级通信系统,所述单向环算法的通信成本包括:
[0009][0010]
其中,t
bcast_ring
为单向环算法的通信成本,m为消息块大小,c为数据块大小,b为链路带宽,n为节点或gpu数量,ts为初始化单个传输的启动时长。
[0011]
在上述系统实施例内容的基础上,本发明实施例中提供的跨gpu缓冲区的分级通信系统,在所述并允许运行时通过消息大小、进程数、硬件架构选择正确大小的消息块之后,还包括:在小型和中型消息块中使用knoimal广播树,在大型消息块中使用集合广播算法,在面对大型消息块时选择性能表现更好的单向环算法,通过执行节点内gpu间的广播,从用于节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现广播。
[0012]
第二方面,本发明的实施例提供了一种电子设备,包括:
[0013]
至少一个处理器;以及
[0014]
与处理器通信连接的至少一个存储器,其中:
[0015]
存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种实现方式中任一种实现方式所提供的跨gpu缓冲区的分级通信系统。
[0016]
第三方面,本发明的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机实现第一方面的各种实现方式中任一种实现方式所提供的跨gpu缓冲区的分级通信系统。
[0017]
本发明实施例提供的跨gpu缓冲区的分级通信系统及设备,采用mpich的分层集合通信框架进行节点间的通信,对于节点内部的gpu通信则采用nccl实现多节点的配置,基于nccl的nccl_broadcast函数设计一个mpi中的广播算法,增强不同mpi_bcast的性能表现,通过先执行gpu间的广播,从节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现高效的通信。
附图说明
[0018]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]
图1为本发明实施例提供的跨gpu缓冲区的分级通信系统结构示意图;
[0020]
图2为本发明实施例提供的电子设备的实体结构示意图;
[0021]
图3为本发明实施例提供的单向环算法示意图;
[0022]
图4为本发明实施例提供的通信模型结构示意图;
[0023]
图5为本发明实施例提供的单节点8gpu性能测试对比图;
[0024]
图6为本发明实施例提供的双节点6gpu性能测试对比图;
[0025]
图7为本发明实施例提供的三节点14gpu性能测试对比图;
[0026]
图8为本发明实施例提供的海洋建模用时对比图。
具体实施方式
[0027]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技
术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
[0028]
采用mpich的分层集合通信框架进行节点间的通信,而对于节点内部的gpu通信则采用nccl,以此来实现多节点的配置。除此以外,本发明基于nccl的nccl_broadcast()设计一个mpi中的广播算法,它增强不同mpi_bcast的性能表现,通过先执行gpu间的广播,从用于节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现高效的通信。基于这种思想,本发明实施例提供了一种跨gpu缓冲区的分级通信系统,参见图1,该系统包括:将集群分为两级结构,一级结构作为节点的服务器cpu,二级结构作为cpu下连接的gpu。
[0029]
基于上述系统实施例的内容,作为一种可选的实施例,本发明实施例中提供的跨gpu缓冲区的分级通信系统,一级结构的节点间通信采用knoimal算法实现,二级结构的节点内通信采用单向环算法实现。
[0030]
基于上述系统实施例的内容,作为一种可选的实施例,本发明实施例中提供的跨gpu缓冲区的分级通信系统,所述二级结构的节点内通信采用单向环算法实现,包括:根进程将数据分块并开始将块推送到进程逻辑链中的右邻居,除链中最后一个进程外,所有非根进程都从左邻居接收消息块并将接收的消息块转发给右邻居,链中的最后一个进程从左邻居接收消息块且不进行不转发。
[0031]
基于上述系统实施例的内容,作为一种可选的实施例,本发明实施例中提供的跨gpu缓冲区的分级通信系统,在所述链中的最后一个进程从左邻居接收消息块且不进行不转发之后,还包括:降低单向环算法的通信成本,通过实验确定最佳消息块的大小,并允许运行时通过消息大小、进程数、硬件架构选择正确大小的消息块。
[0032]
基于上述系统实施例的内容,作为一种可选的实施例,本发明实施例中提供的跨gpu缓冲区的分级通信系统,所述单向环算法的通信成本包括:
[0033][0034]
其中,t
bcast_ring
为单向环算法的通信成本,m为消息块大小,c为数据块大小,b为链路带宽,n为节点或gpu数量,ts为初始化单个传输的启动时长。
[0035]
基于上述系统实施例的内容,作为一种可选的实施例,本发明实施例中提供的跨gpu缓冲区的分级通信系统,在所述并允许运行时通过消息大小、进程数、硬件架构选择正确大小的消息块之后,还包括:在小型和中型消息块中使用knoimal广播树,在大型消息块中使用集合广播算法,在面对大型消息块时选择性能表现更好的单向环算法,通过执行节点内gpu间的广播,从用于节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现广播。
[0036]
本发明实施例提供的跨gpu缓冲区的分级通信系统及设备,采用mpich的分层集合通信框架进行节点间的通信,对于节点内部的gpu通信则采用nccl实现多节点的配置,基于nccl的nccl_broadcast函数设计一个mpi中的广播算法,增强不同mpi_bcast的性能表现,通过先执行gpu间的广播,从节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现高效的通信。
[0037]
在另一实施例中,一个多节点计算集群可以分为两级结构,一级结构为各节点的
gpu,二级结构为单个节点下的gpu集群。对于一级结构,通常节点间的通信每个节点有一个或者多个领导节点,在不同节点间协调数据,与此同时在底层,基于共享内存的通信是在节点内通信器中进行的,这只存在于主机内存,而不涉及到gpu缓冲区的通信。
[0038]
需要说明的是集体通信操作的性能决定了mpi应用程序的整体性能,目前各种mpi应用程序都为集体通信开发实现了不同的算法,但没有哪种算法在所有情况下都是最优的。因此mpi的实现必须根据平台、涉及的进程数量、消息大小等为集体通信选择最优的算法,当前的解决方案一般情况下纯属经验性问题,我们通过分析一些常见广播算法,选择了我们设计的层级方案通信算法。表1解释了一些分析算法模型所用到的符号。
[0039]
表1
[0040]
符号解释m消息大小c数据块大小b链路带宽bpciecpu和gpu间的pcie链路带宽n节点或gpu数量ts初始化单个传输的启动时间
[0041]
对于一级结构的广播采用knomial算法,在knomial算法中,通信进程集被视为一棵逻辑树,其中树的根是广播操作的根。在每个通信步骤中,根节点将数据转发到它的一个子节点,除非数据已经发送给它。在每个步骤中,从其父节点接收到数据的非叶节点遵循相同的过程将数据转发给它们的子节点。在knomial树中,根至多有孩子最大限度地重叠交流。当k等于2时,它就变成了著名的二叉树算法。
[0042]
对于二级结构,利用nccl_broadcast的优势,由于nccl引入了类似于mpi通讯器的抽象,所以它有可能将通讯器和秩这种mpi经常使用的抽象概念进行映射。在二级结构中我们采用了单向环算法进行gpu间的消息广播,算法如图3所示。
[0043]
根进程将数据分块并开始将块推送到进程逻辑链中的右邻居,除了链中最后一个进程外,所有非根进程都从其左邻居接收消息块并将其转发给右邻居。链中的最后一个进程仅从左邻居接收块,不需要进一步转发它们。单向环算法的通信成本可如(1)式所示。
[0044]
这样的设计理论上可以降低通信成本,但是选择合适的块大小是很重要的,这会对结果产生很大影响。对于本文的设计,通过实验确定最佳块的大小,并允许运行时通过消息大小、进程数、硬件架构选择正确的块大小。通过这样的层级通信设计,结合了mpich和nccl的优势以此来实现高效的广播。通常情况下在小型中型消息的情况下使用knoimal广播树,在大型消息中使用集合广播算法,但现在我们可以在面对大型消息时选择性能表现更好的单向环算法。通过结合这两种算法,我们首先通过执行节点内gpu间的广播,然后从用于节点内nccl阶段的gpu缓冲区直接发出节点间的广播集体操作来实现高性能广播。层级通信方案的设计如图4所示,利用单向环算法进行节点内的广播以及利用knomial进行节点间的广播。除此以外我们还通过调整了一些nccl原语使得其适用性范围更广。
[0045]
osu-mirco-benchmarks是mvapich中提供的基本测试程序,测量节点间的带宽和延迟,采用该测试程序的一大原因是osu-mirco-benchmarks提供gpu版本,测量多gpu之间的通信速度。omb支持mpi、upc以及openshmem这三种通信模型,最新的版本提供对cuda和
openacc的支持,其包括点对点通信、集合通信和单边通信在内的丰富测试,对于每种通信类型还提供延迟、带宽、多线程延迟、多线程带宽多个输出。在这些测试中对通信数据大小进行设置,测试带宽由4k至256mb不。
[0046]
对于具体应用问题的性能测试选取openarray中的一个海洋建模测试程序。openarray是一个用于海洋建模和并行计算解耦的简单运算库,近些年来各式各样的异构架构带来巨大的计算能力,为气候建模提供比以往任何时候都更加复杂的计算环境,openarray通过建立隐式并行计算库,有效地将海洋模型的开发简易化,并提升海洋建模的问题的运算性能。
[0047]
图5展示在单节点8gpu架构上,mpich和hierarchy-mpi的性能对比,看到,对于小消息大小,mpich和hierarchy-mpi的性能表现几乎没有差别,这正是因为的设计采用knoimal算法带来的结果。而对于中大型消息,hierarchy-mpi如nccl一样要比mpich有着更好的性能表现,且延时随着消息大小上升不会快速增加,增速要缓于mpich。
[0048]
图6展示在两个节点上,每个节点3个进程的通信性能表现,看到对于小型消息mpich和hierarchy-mpi的性能表现相似,但对于大中型消息hierarchy-mpi表现出明显的优势,因为延时随着消息大小的增加要明显慢于mpich。
[0049]
图7展示在三个节点下14个gpu进行广播通信的性能表现,其中一个节点连接着8块gpu,两个节点连接着3块gpu,对于小型消息广播14个进程遵循上述两种情况的趋势,而对于中大型消息,mpich和hierarchy-mpi的差距被放大,并随着消息大小的增加,这一优势还在上升。预想的是随着计算规模的提升,hierarchy-mpi的表现会更加优异。
[0050]
图8展示采用mpich和hierarchy-mpi,海洋建模运算在不同集群架构上的运行时长,改变gpu的数量,对运算实验进行固定的实验次数并求其平均值,得到下图的结果。看到在gpu数量越来越多时,hierarchy-mpi的性能表现要越来越好,平均结果大约有22%的性能提升。值得一提的是该任务的计算量并不是十分大,所以在gpu数量越少时其运行时长越短是因为通信开销完全高于计算开销,所以在对比性能时只对比相同进程数情况下的性能表现,而不能在不同进程数之间进行比较,这与基准性能评估有一定的区别。
[0051]
实验结果表面结合knoimal算法和单向环算法对于集体广播通信有着显著的性能提升,对于小型消息达到与mpich相似的性能结果,对于中大型消息要优于mpich,并且这个优势随着消息大小的上升会提升。设计的初衷是面向于扩展性强的集群,所以注意到随着节点规模的上升,层级通信模型的性能表现也会提升。并且面对具体应用问题时,设计的层级通信模型相较于只使用mpich也会有约22%的性能提升。
[0052]
本发明实施例的系统是依托电子设备实现的,因此对相关的电子设备有必要做一下介绍。基于此目的,本发明的实施例提供了一种电子设备,如图2所示,该电子设备包括:至少一个处理器(processor)、通信接口(communications interface)、至少一个存储器(memory)和通信总线,其中,至少一个处理器,通信接口,至少一个存储器通过通信总线完成相互间的通信。至少一个处理器可以调用至少一个存储器中的逻辑指令,以实现系统实施例中提供的各种系统。
[0053]
此外,上述的至少一个存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可
以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的全部系统或部分系统。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0054]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0055]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)实现各个实施例或者实施例的一些部分所述的方法或系统。
[0056]
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。基于这种认识,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0057]
需要说明的是,术语"包括"、"包含"或者其任何其它变体意在涵盖非排它性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括
……
"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0058]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献