CN117914860A - 集合通信方法及计算集群 - Google Patents

集合通信方法及计算集群 Download PDF

Info

Publication number
CN117914860A
CN117914860A CN202211245236.2A CN202211245236A CN117914860A CN 117914860 A CN117914860 A CN 117914860A CN 202211245236 A CN202211245236 A CN 202211245236A CN 117914860 A CN117914860 A CN 117914860A
Authority
CN
China
Prior art keywords
communication
communication group
address
processes
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211245236.2A
Other languages
English (en)
Inventor
祝佳
勾文进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211245236.2A priority Critical patent/CN117914860A/zh
Priority to PCT/CN2023/101329 priority patent/WO2024077999A1/zh
Publication of CN117914860A publication Critical patent/CN117914860A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供了一种集合通信方法及计算集群,涉及计算机领域,该方法应用于计算集群,计算集群的进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,该方法包括:M个通信组中的任一通信组如第一通信组中的第一进程获取第一通信组中第二进程的内存资源对应的内存地址也就是第一内存地址;第一通信组中的第一进程根据第一内存地址多次与第一通信组中的第二进程进行数据传输。本申请实施例提供的方案,可以避免在计算集群中进程组的多次进程间数据传输中反复获取传输数据所需的内存地址,从而减少计算集群的时延。

Description

集合通信方法及计算集群
技术领域
本申请实施例涉及计算机领域,尤其涉及一种集合通信方法及计算集群。
背景技术
集合通信(collective communication,COLL)又称组通信、聚合通信,是计算集群中多个计算资源上运行的多个进程均参加通信从而形成进程组,以执行计算任务的集体通信行为。上述进程组可以包括至少一个具有通信关系的通信组,每个通信组包括至少两个存在通信关系的进程。通常通信组的进程间会进行多次数据传输,以实现数据量较大的计算任务。
相关技术中,集合通信的每个进程预先分配有内存资源,通信组中的每个进程在每次数据传输前均需获取该通信组内其余进程的内存资源对应的内存地址,导致集合通信中存在大量重复的内存地址获取操作,造成集合通信的通信时延增加。
发明内容
为了解决上述技术问题,本申请提供一种集合通信方法及计算集群。在该方法中,计算集群的通信组中第一进程在与该通信组中第二进程进行多次数据传输前,获取该通信组中第二进程的内存资源对应的内存地址并记录,从而可以根据所记录的内存地址进行上述多次数据传输,避免在上述多次数据传输中反复获取传输数据所使用的内存地址,从而减少计算集群的时延。
第一方面,本申请实施例提供一种集合通信方法,应用于计算集群,计算集群包括多个计算资源,多个计算资源上运行有N个进程,N个进程形成一个用于执行计算任务的进程组,N个进程中的每个进程分配有内存资源,进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,N为大于等于2的整数;该方法包括:第一通信组中的第一进程获取第一内存地址,并记录第一内存地址;其中,第一内存地址为第一通信组中第二进程的内存资源对应的内存地址;第一通信组为M个通信组中的任一通信组;第一通信组中的第一进程根据第一内存地址多次与第一通信组中的第二进程进行数据传输。
示例性的,图6a是本申请实施例提供的一种集合通信过程的示意图。如图6a所示,第一进程可以为进程0,第二进程可以为进程1,第一内存地址可以为地址A0,数据可以为数据D0。类似的,第一进程为进程1时,第二进程为进程2。
本申请实施例中,第一通信组中的第一进程在与第一通信组中的第二进程进行多次数据传输之前,获取第一通信组中的第二进程对应的内存资源的内存地址,可以避免在多个通信步骤(如图6a的通信步骤0至通信步骤2)也就是数据传输中反复获取目标地址也就是第一内存地址,从而减少计算集群的时延。
根据第一方面,第一通信组中的第一进程根据第一内存地址多次与第一通信组中的第二进程进行数据传输,包括:第一通信组中的第一进程将数据多次写入第一内存地址对应的第一通信组中的第二进程的内存资源。
本申请实施例中,第一通信组中的第一进程可以通过将数据多次写入第一内存地址对应的第一通信组中的第二进程的内存资源,实现与该第二进程间的数据传输。
根据第一方面,第一通信组中的第一进程根据第一内存地址多次与第二进程进行数据传输,包括:第一通信组中的第一进程从第一内存地址对应的第一通信组中的第二进程的内存资源中多次读取数据。
本申请实施例中,第一通信组中的第一进程可以通过从第一内存地址对应的第一通信组中的第二进程的内存资源中多次读取数据,实现与该第二进程间的数据传输。
根据第一方面,或者以上第一方面的任意一种实现方式,第一通信组中的第一进程根据第一内存地址多次与第一通信组中的第二进程进行数据传输,包括:第一通信组中的第一进程与第一通信组中的第二进程每传输一次数据,记录所传输数据所占用的第一内存地址的地址空间;第一通信组中的第一进程在每次传输数据之前,根据所记录的第一内存地址的地址空间占用情况确定所传输数据对应的内存地址。
示例性的,第一内存地址的地址空间例如可以是地址空间AS1,第一内存地址例如可以是内存地址A11。第一通信组中的第一进程在第一次传输数据之前,可以记录地址空间AS的占用情况为未占用,则确定所传输数据对应的内存地址为内存地址A11;第一通信组中的第一进程在第二次传输数据之前,可以记录第一内存地址的地址空间占用情况为已占用第一内存地址例如内存地址A11,则确定第二次传输数据中所传输数据对应的内存地址为地址空间AS中,与内存地址A11对应的地址空间相邻的下一段地址空间的内存地址,例如内存地址A12。以此类推,第一通信组中的第一进程在第三次传输数据之前,可以记录第一内存地址的地址空间占用情况为已占用内存地址A12,则确定第三次传输数据中所传输数据对应的内存地址为地址空间AS中,与内存地址A12对应的地址空间相邻的下一段地址空间的内存地址,例如内存地址A13。
本申请实施例中,第一通信组中的第一进程可以通过第一内存地址,记录每一次数据传输对第一内存地址的地址空间占用情况,从而在每次传输数据前,根据所记录的第一内存地址的地址空间占用情况确定所传输数据对应的内存地址,也就是实现了对第一内存地址对应的内存资源的管理,从而可以根据提前获取的第一内存地址,在每次数据传输中准确确定所传输数据对应的内存地址。
根据第一方面,或者以上第一方面的任意一种实现方式,第一通信组中的第一进程的数量为一个或多个,第一通信组中的第二进程的数量为一个或多个。
本申请实施例中,第一通信组中的第一进程的数量为一个或多个,第一通信组中的第二进程的数量为一个或多个,可以适用于多种进程间通信场景,例如集合通信中的广播、归约、全局收集等等通信场景。
根据第一方面,或者以上第一方面的任意一种实现方式,第一通信组中的第一进程的数量为多个,第一通信组中的第二进程的数量为多个;第一通信组中的第一进程获取第一内存地址,包括:第一通信组中的多个第一进程中的主进程获取第一通信组中的每个第二进程对应的第一内存地址,得到地址集合;主进程发送地址集合至多个第一进程中除主进程外的其他第一进程。
示例性的,图6d是本申请实施例提供的另一种集合通信过程的示意图。如图6d所示,主进程可以为进程0,进程0可以获取进程0所属通信组中每个第二进程例如进程1至进程3对应的第一内存地址,得到地址集合;进而将地址集合中的地址发送给该通信组中除第一进程外的其他第一进程。
本申请实施例中,通过第一通信组中的多个第一进程中的主进程集中获取第一通信组中的每个第二进程对应的第一内存地址,可以在第一通信包括多个第一进程和多个第二进程的场景中,减少每个第一进程均与每个第二进程交互以获取每个第二进程对应的内存地址,从而更加便捷地实现内存地址的获取。
第二方面,本申请实施例提供一种计算集群,包括多个计算资源,多个计算资源上运行有N个进程,N个进程形成一个用于执行计算任务的进程组,N个进程中的每个进程分配有内存资源,进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,N为大于等于2的整数;第一通信组中的第一进程,用于获取第一内存地址,并记录第一内存地址;其中,第一内存地址为第一通信组中第二进程的内存资源对应的内存地址;第一通信组为M个通信组中的任一通信组;第一通信组中的第一进程,用于根据第一内存地址多次与第二进程进行数据传输。
根据第二方面,第一通信组中的第一进程,具体用于:将数据多次写入第一内存地址对应的第二进程的内存资源。
根据第二方面,或者以上第二方面的任意一种实现方式,第一通信组中的第一进程,具体用于:从第一内存地址对应的第二进程的内存资源中多次读取数据。
根据第二方面,或者以上第二方面的任意一种实现方式,第一通信组中的第一进程,具体用于:与第一通信组中的第二进程每传输一次数据,记录所传输数据所占用的第一内存地址的地址空间;在每次传输数据之前,根据所记录的第一内存地址的地址空间占用情况确定所传输数据对应的内存地址。
根据第二方面,或者以上第二方面的任意一种实现方式,第一通信组中的第一进程的数量为一个或多个,第一通信组中的第二进程的数量为一个或多个。
根据第二方面,或者以上第二方面的任意一种实现方式,第一通信组中的第一进程的数量为多个,第一通信组中的第二进程的数量为多个;第一通信组中的多个第一进程中的主进程,具体用于:获取第一通信组中的每个第二进程对应的第一内存地址,得到地址集合;发送地址集合至多个第一进程中除主进程外的其他第一进程。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请实施例提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。当计算机程序在计算集群上运行时,使得计算集群执行上述第一方面或第一方面的任意可能的实现方式中的方法。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。当该计算机程序被计算集群执行时,使得该计算集群执行上述第一方面或第一方面的任意可能的实现方式中的方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a是示例性示出的双边通信过程的示意图;
图1b是示例性示出的一种单边通信过程的示意图;
图1c是示例性示出的另一种单边通信过程的示意图;
图2a是示例性示出的另一种点对点通信过程的示意图;
图2b是示例性示出的另一种点对点通信过程的示意图;
图3a是示例性示出的一种集合通信过程的示意图;
图3b是示例性示出的一种集合通信中地址传输过程的示意图;
图3c是示例性示出的另一种集合通信过程的示意图;
图4是本申请实施例提供的一种计算集群400的结构示意图;
图5是本申请实施例提供的一种集合通信方法的流程示意图;
图6a是本申请实施例提供的一种集合通信过程的示意图;
图6b是本申请实施例提供的一种集合通信中地址传输过程的示意图;
图6c-1是示例性示出的一种点对点通信过程的示意图;
图6c-2是本申请实施例提供的一种集合通信中地址传输过程的示意图;
图6d是本申请实施例提供的另一种集合通信过程的示意图;
图7a是本申请实施例提供的一种进程与数据存储地址的对应关系的示意图;
图7b是本申请实施例提供的另一种进程与数据存储地址的对应关系的示意图;
图8是本申请实施例提供的另一种集合通信过程的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
首先,对本申请中涉及的部分术语及相关技术进行解释,以方便理解。
消息传递接口(message passing interface,MPI):是一种消息传递接口的标准,用于开发基于消息传递的并行程序,其目的是为用户提供一个实际可用的、可移植的、高效的和灵活的消息传递接口。MPI定义了通信库核心的语法和语义,用户可以根据MPI使用编程语言(如C,C++和Fortran)编写消息传递程序。其中,编程语言Fortran是FormulaTranslation的缩写,意为“公式翻译”,应用于科学、工程问题或企事业管理中能够用数学公式表达的问题,其数值计算的功能较强。
示例性的,MPI可应用于多种系统架构中,如分布式/共享内存的多核处理器,高性能网络,以及这些架构的组合。MPI也是一个并行编程函数库,其编译运行需要和具体的编程语言相结合。MPI在主流的操作系统上都得到了实现,包括Windows和Linux系统。MPI可以是进程级并行的软件中间件,MPI框架把所有的计算进程管理起来形成一个系统,然后提供丰富的进程间通信的函数。其中,进程是程序的一个运行实例,除包含程序代码外,还包含程序代码的执行环境(内存、寄存器、程序计数器等),是操作系统中独立存在的可执行的基本程序单位。MPI框架为每一个进程分配一个进程标识号(rank号),rank从0开始依次往后排。MPI程序的每一个进程到底完成哪一部分工作,是根据其进程标识号来确定的。MPI进程需要在通信域内进行通信,通信域是进程间的通信环境,包含了进程组、上下文、虚拟拓扑等。MPI在启动时,系统会建立一个全局的通信域,每个进程都在这个全局通信域内,进程间通信需要指定通信域的参数。
MPI可以支持多种不同的通信协议,例如无限带宽标准(infiniBand,IB,一个用于高性能计算的计算机网络通信标准)或传输控制协议(transmission control protocol,TCP)等。MPI对这些协议进行了封装,提供一套统一的通信接口,屏蔽底层的通信细节。
集合通信:也叫组通信,区别于点对点通信只涉及发送方和接收方两个进程,集合通信为多个进程参加通信。集合通信由哪些进程参加以及集合通信的上下文,都是由该集合通信中调用的通信域限定的。集合通信一般包括三个功能:通信、同步和计算。其中,通信功能主要完成集合内部数据的传输,同步功能实现集合内所有进程在特定的点上执行进度的一致,计算功能是对特定数据的操作。示例性的,按照参与集合通信的对端数量,集合通信可以划分为一对多、多对一、多对多三种通信类型。实现集合通信的具体通信方式有很多,比如广播MPI_Bcast,归约MPI_Reduce,散射MPI_Scatter,收集MPI_Gather,全局归约Allreduce,全局收集Allgather等MPI原语。原语是指由若干条指令组成的程序段,用于实现某个特定功能,在执行过程中不可被中断。全局通信原语由属于同一个通信组的所有进程执行。
示例性的,广播MPI_Bcast用于根进程(通信组中的当前调用进程)向该通信组的其他每个进程发送消息。归约MPI_Reduce将变量在进程中对应的所有值汇聚为一个值,并将其返回给当前调用进程,也就是在分布于不同进程中的数据间进行交互的运算,常用的运算有求和、求最大或最小值等。散射MPI_Scatter用于将不同的信息发送到其他每个进程中。收集MPI_Gather是散射操作的逆过程,这个过程中根进程从其他每个进程接收信息。举例而言,一对多的集合通信可以采用广播MPI_Bcast、散射MPI_Scatter的通信方式;多对一的集合通信可以采用收集MPI_Gather、归约MPI_Reduce的通信方式;多对多的集合通信可以采用全局归约Allreduce、全局收集Allgather的通信方式。
高性能计算(high performance computing,HPC):是指运算能力能够达到一定级别的一整套计算机系统。因为单一的处理器很难实现如此强大的计算能力,因此HPC需要多颗中央处理器(central processing unit,CPU)或多台主机(例如多台计算机设备)来共同协作实现。构建高性能计算系统的主要目的就是提高运算速度,要达到每秒万亿次级的计算速度,对系统的处理器、内存带宽、运算方式、系统的输入输出(input/output,I/O)、存储等方面的要求都十分高,这其中的每一个环节都将直接影响到系统的运算速度。HPC主要用于快速完成科学研究、工程设计、金融、工业以及社会管理等领域内具有数据密集型、计算密集型和I/O密集型的计算。典型应用包括:生物工程、新药研制、石油物探、运载器设计(航空航天、舰船、汽车)、材料工程、尖端设备制造、密码研究和各类大规模信息处理等。高性能计算的目标是:最大限度地降低完成特殊计算问题的运算时间,最大限度地提高在可指定时间内完成的问题规模,处理以前无法实现的大量复杂问题,提高性价比,扩展解决中等规模的问题和预算等。
并行计算:并行计算是建立在这样一个思想之上:大的问题可以分成一些较小的问题,而这些较小的问题是可以利用现有的资源能力同时(并行)被解决的,这些小问题的解决最终导致大问题的解决。并行计算是相对于串行计算来说的,串行计算的特点是处理器按照指令顺序依次运行计算算法。并行计算的并行分为两种,时间上的并行和空间上的并行。时间上的并行指的是计算机的中央处理器中采用的流水线技术,将每一条指令分成多个步骤未完成,而这些步骤之间在时间上可以交叠执行。空间上的并行是指用多个处理器并发的执行计算机指令,从而加快解决问题的速度。并行计算的优势在于,可以突破串行计算机计算能力的限制,提高计算速度,在更短的时间内完成计算任务,更好地发挥硬件的计算能力,节约计算成本。
点对点通信(peer to peer,P2P):点对点通信为两个进程间的通信。
按照通信双方的参与差异,点对点通信可以分为双边通信和单边通信。示例性的,图1a是示例性示出的双边通信过程的示意图。如图1a所示,双边通信中通信双方均进行操作。例如,进程0进行发送操作,进程1进行接收操作。图1b是示例性示出的一种单边通信过程的示意图。如图1b所示,单边通信中一方参与通信操作。例如,单边通信中数据的写入包括:进程0向进程1请求数据写入地址;进程0接收到进程1反馈的数据写入地址后,进行数据发送操作即将数据写入该数据写入地址。这样,无需针对进程1编写用于进行接收操作的代码(如检视所接收的数据,对接收的数据进行存储等操作),也就是说,接收端无需进行通信操作。图1c是示例性示出的另一种单边通信过程的示意图。如图1c所示,单边通信中数据的读取包括:进程0向进程1请求数据存储地址;进程0接收到进程1反馈的数据读取地址后,进行读取操作即从该数据存储地址中读取数据。这样,无需针对进程1编写用于发送操作的代码。图1a至图1c中的通信过程均存在延时。
另外,在进程间的数据通信中,内核预先为每个进程分配内存,进程对所分配的内存进行管理和使用。例如,进程0可以从所分配的内存中,为读取的数据划分存储空间,进而将该数据存储在该存储空间中。进程对于数据的存储空间划分可以根据应用需求进行,本申请实施例对此不作限制。
点对点通信具体可以采用Rendezvous协议进行。
图2a是示例性示出的另一种点对点通信过程的示意图。如图2a所示,Rendezvous协议的数据写入(Put)中,发送端先发送报文头(如询问报文也就是请求报文RTS(requestto send,请求发送)报文)给接收端,等待接收端准备好接收缓冲区。接收端准备好接收缓冲区后,发送响应报文(如CTS(Clear To Send,允许发送)报文)至发送端。CTS报文中包含接收端存储数据DR的接收缓冲区的地址。这样,发送端将数据DR写入(Put操作)接收端的接收缓冲区,并在完成写入后发送数据传输结束通知(如FIN包,FIN表示正常关闭通信连接,没有数据丢失,发送端缓冲区的所有数据包都发送完成发送FIN包)。该通信过程中,从发送数据DR开始,发送端参与通信操作,接收端不参与通信操作,也就是进行单边通信。
图2b是示例性示出的另一种点对点通信过程的示意图。如图2b所示,Rendezvous协议的数据读取(Get)中,发送端先发送报文头(如询问报文RTS(request to send,请求发送)报文)给接收端,以告知接收端数据DR的存储地址。接收端根据该地址从发送端读取(Get操作)数据DR,并在完成读取后发送数据传输结束通知(如FIN包)。该通信过程中,从读取数据DR开始,接收端参与通信操作,发送端不参与通信操作,也就是进行单边通信。
可以理解的是,上述图2a和图2b的实施例示出按照Rendezvous协议,两个进程间进行数据通讯的两种方式,包括图2a所示的写入Put方式,图2b所示的读取Get方式。具体的数据通讯方式可以根据应用需求设置,本申请实施例对此不作限制。
集合通信采用并行计算的方式实现,被广泛应用于高性能计算、神经网络模型的分布式训练等场景。按照并行计算的方式,集合通信可以包括多个通信步骤,每个通信步骤基于上述点对点通信实现。一种集合通信基于Rendezvous协议的点对点通信实现,以通过将一个完整的大包拆分为多个子包,通过多个通信步骤传输多个子包,以应对大包的传输。其中,数据(如数据DR)的数据量大于数据量阈值(如512字节)为大包。为了便于理解和方便描述,下面以Rendezvous协议中的数据读取为例对此进行具体说明。
图3a是示例性示出的一种集合通信过程的示意图。如图3a所示,基于Rendezvous协议和MPI_Allgather Ring算法的集合通信,可以应用于大包例如天气预报数据的收集。参与该天气预报的每个进程按照MPI_Allgather Ring算法,经过三个通信步骤:通信步骤0、通信步骤1和通信步骤2,获得参与该集合通信的每个进程的数据,以得到完整的天气预报数据。相应地,该集合通信的通信步骤遵循MPI_Allgather Ring算法的逻辑:参与集合通信的每个进程从该进程的左邻居处获得数据,参与集合通信的每个进程形成环状的邻居关系。例如,进程0与进程1通信,进程1与进程2通信,进程2与进程3通信,进程3与进程1通信,形成环状的邻居关系。也就是说,在MPI_Allgather Ring算法逻辑下,包括进程0至进程3的集合通信通过通信步骤0至通信步骤2实现,且MPI_Allgather Ring算法逻辑决定了每个通信步骤中具体有哪些进程参与通信。
在一种情况中,图3a的每个通信步骤中,进程间具体基于Rendezvous协议进行数据读取(Get)。例如,图3b是示例性示出的一种集合通信中地址传输过程的示意图。如图3b所示,通信步骤0至通信步骤2中,每个进程(如进程0)均通过报文头(如RTS报文)发送数据(如D0)的存储地址(如A0)至右邻居进程(如进程1),从而右邻居进程(如进程1)从该存储地址(如A0)中读取数据(如D0)。每个进程(如进程1)在完成读取时发送FIN报文至对端(如进程0)以告知数据读取完成。
在图3b的通信步骤0中,进程1从进程0读取目标数据D0,进程2从进程1读取目标数据D1,进程3从进程2读取目标数据D2,进程0从进程3读取目标数据D3。在通信步骤1中,进程1从进程0读取目标数据D3,进程2从进程1读取目标数据D0,进程3从进程2读取目标数据D1,进程0从进程3读取目标数据D3。在通信步骤2中,进程1从进程0读取目标数据D2,进程2从进程1读取目标数据D3,进程3从进程2读取目标数据D0,进程0从进程3读取目标数据D1。这样,进程0至进程3通过集合通信,收集了该天气预报的每个进程的数据,也就是收集了全局数据。在天气预报的应用程序逻辑下,每个进程可以分别应用收集的全局数据实现该进程在天气预报的应用程序中的功能。
在另一种情况中,每个通信步骤中进程间具体基于Rendezvous协议进行数据写入(Put)。此时,MPI_Allgather Ring算法逻辑可以包括:参与集合通信的每个进程从该进程的左邻居处获得数据,向右邻居发送数据。示例性的,如图2a所示,通信步骤0至通信步骤2中:作为发送端的每个进程(如进程0)均通过报文头(如RTS报文)请求接收端的接收缓冲区的地址;作为接收端的每个进程(如进程1)均通过CTS报文发送用于缓存数据(如D0)的接收缓冲区的地址(如A1)至左邻居进程(如进程0),从而左邻居进程(如进程0)将自身对应的数据(如D0)写入接收端如进程1)的接收缓冲区的地址(如A1)中。作为发送端的每个进程(如进程0)在完成写入时发送FIN报文至对端(进程1)以告知数据写入完成。本实施例实现集合通信的通信步骤与图3a类似,区别在于本实施例中每两个进程间的数据传输具体采用图2a中的写入方式,对于相同部分此处不再赘述,详见图3a实施例的描述。
另外,图3b实施例每个通信步骤中进程将读取的数据的缓冲区地址,按照一定偏移量进行偏移。以读取的情况为例,该偏移可以包括:在图3a所示集合通信场景下,通信步骤0至通信步骤3中,进程0发送数据读取地址也就是起始地址给进程1,进程1按照从进程0读取数据的顺序,对初始地址进行与该顺序对应偏移量的偏移,得到本次数据的读取地址。举例而言,通信步骤0中进程1接收进程0发送的初始地址A0,从初始地址A0读取目标数据D0;通信步骤1中进程1接收进程0发送的初始地址A0,对初始地址A0偏移第一偏移量,得到第一偏移地址,从第一偏移地址中读取目标数据D3;通信步骤2中进程1接收进程0发送的初始地址A0,对初始地址A0偏移第二偏移量,得到第二偏移地址,从第二偏移地址中读取目标数据D2。
集合通信的通信步骤可以遵循MPI的算法逻辑,例如上述图3a所示的MPI_Allgather Ring算法逻辑、MPI_Allgather的Neighbor exchange算法逻辑、MPI_Reduce算法逻辑等等,本实施例对此不作限制,可以根据应用需求适应性选择。集合通信所遵循的不同算法逻辑决定了该集合通信的通信步骤和每个通信步骤中参与通信的进程。每个通信步骤中,每两个进程间的数据传输可以按照Rendezvous协议进行。
示例性的,图3c是示例性示出的另一种集合通信过程的示意图。如图3c所示,基于MPI_Allgather的Neighbor exchange算法的集合通信,有进程0至进程5共六个进程参与,该集合通信的通信步骤遵循MPI_Allgather的Neighbor exchange算法逻辑:邻居进程间相互传输数据,按照该算法逻辑,图3c所示的集合通信可以包括通信步骤0至通信步骤2。每个通信步骤中,每个进程按照Rendezvous协议中的读取(Get)方式进行数据通讯。
仍参见图3c,在通信步骤0中,进程0发送目标数据D0的存储地址A0至进程1,进程1根据存储地址A0从进程0读取目标数据D0;进程1发送目标数据D1的存储地址A1至进程0,进程0根据存储地址A1从进程1读取目标数据D1;进程0发送FIN报文告知进程1数据读取完成。进程2发送目标数据D2的存储地址A2至进程3,进程3根据存储地址A2从进程2读取目标数据D2;进程3发送目标数据D3的存储地址A3至进程2,进程2根据存储地址A3从进程3读取目标数据D3;进程2发送FIN报文告知进程3数据读取完成。进程4发送目标数据D4的存储地址A4至进程5,进程5根据存储地址A4从进程4读取目标数据D4;进程5发送目标数据D5的存储地址A5至进程4,进程4根据存储地址A5从进程5读取目标数据D5;进程4发送FIN报文告知进程5数据读取完成。
以此类推,图3c中后续每个通信步骤按照与通信步骤0类似的方式相互传输数据,对于相同部分此处不再赘述,详见上述图3c中通信步骤0的描述。区别在于:图3c的通信步骤1和通信步骤2中更换每个进程的邻居进程,传输的存储地址和数据也适应性改变。例如,在图3c的通信步骤1中,进程2根据存储地址A2从进程1读取目标数据D1和D0,进程1根据存储地址A2从进程2读取目标数据D2和D3;进程4根据存储地址A3从进程3读取目标数据D3和D2,进程3根据存储地址A4从进程4读取目标数据D4和D5;进程0根据存储地址A5从进程5读取目标数据D5和D4,进程5根据存储地址A0从进程0读取目标数据D0和D1。
在图3c的通信步骤2中,进程1根据存储地址A0从进程0读取目标数据D4和D5,进程0根据存储地址A1从进程1读取目标数据D2和D3;进程3根据存储地址A2从进程2读取目标数据D1和D0,进程2根据存储地址A3从进程3读取目标数据D4和D5;进程5根据存储地址A4从进程4读取目标数据D3和D2;进程0根据存储地址A5从进程5读取目标数据D0和D1。
这样,图3c中经过三个通信步骤,参与集合通信的进程0至进程5分别获取该集合通信中每个进程的数据:目标数据D0至目标数据D5。另外,本实施例对各进程间的数据读取顺序不作限制。例如,在通信步骤1中,可以是进程1先根据存储地址A2从进程2读取目标数据D1和D0,接着进程2根据存储地址A1从进程1读取目标数据D2和D3。
在一种情况中,图3c实施例中两个进程间可以按照Rendezvous协议中的写入方式进行数据传输。具体的数据传输过程可以参见图2a实施例所示的过程,此处不再赘述。
可以理解的是,上述实施例中传输的具体数据取决于集合通信的应用场景。例如,集合通信应用于天气预报,传输的数据具体可以为天气预报的参数,例如历史温度数据、预测温度数据等。集合通信应用于神经网络的分布式训练中,传输的数据具体可以为该分布式训练所训练模型的模型参数等。本实施例对集合通信的应用场景,以及所传输的数据不作限制。
在图3a实施例和图3c实施例中,参与集合通信的进程基于Rendezvous协议实现集合通信的每个通信步骤中的数据传输,在每个通信步骤的每一次进程间通信中,均进行地址同步操作:读取端从存储端获取数据的存储地址。可见,不论采用哪种MPI算法逻辑实现集合通信,集合通信均存在大量重复的地址同步操作。例如,图3a中进程0在通信步骤0至通信步骤2中重复执行传输存储地址A0的地址同步操作,图3c中进程0和进程1在通信步骤0和通信步骤2中重复执行传输存储地址A0和A1的地址同步操作。大量重复的地址同步操作导致集合通信的时延增加。
因此,本申请实施例提供了一种集合通信方法,以解决上述问题。示例性地,应用本申请实施例提供的集合通信方法,在图3a或者图3c所示集合通信的场景中,第一进程(如进程1)从第二进程(如图3a的进程0、进程2和进程3;或者,图3c的进程0,和进程2至进程5)获取目标地址(如图3a的存储地址A0、A2和A3;或者,图3c的存储地址A0,和A2至A5);进而第一进程保存目标地址与第二进程间的对应关系(例如进程0对应存储地址A0)。这样,在计算集群中集合通信的通信步骤执行之前,也就是按照集合通信的通信规则进行目标数据的传输之前,实现了集合通信的地址同步操作,保证参与集合通信的第一进程保存该集合通信中第二进程对应的目标地址。进而,第一进程可以直接根据对应关系,按照集合通信的通信规则(例如MPI_Allgather的算法逻辑)与第二进程进行目标数据的传输,减少在每个通信步骤中大量重复执行地址同步操作,减少集合通信的时延。
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的通信系统进行说明。在一种可选的实施方式中,图4是本申请实施例提供的一种计算集群400的结构示意图。如图4所示,本申请实施例提供的集合通信方法可以应用于计算集群400。通信系统400可以包括多个通过局域网402进行通信的服务器,例如服务器401,服务器402,……,服务器40m,m为服务器的数量。通信系统400即一个包含多个节点的系统,每个节点可以是一个服务器。局域网402中可以包括交换机、网卡等通信设备。服务器401包括通过总线4012进行通信的处理器4011和存储器4013。其中,处理器4011包括多个内核,例如内核4011-1,内核4011-2,……,和内核4011-n,n为内核的数量。不同内核间通过总线4012通信。多个内核可以属于相同或者不同的中央处理器。类似的,服务器402包括通过总线4022进行通信的处理器4021和存储器4023。其中,处理器4021包括多个内核,例如内核4021-1,内核4022-2,……,和内核4022-n。不同内核间通过总线4022通信。服务器40m包括通过总线40m2进行通信的处理器40m1和存储器40m3。其中,处理器40m1包括多个内核,例如内核40m1-1,内核40m1-2,……,和内核40m1-n。不同内核间通过总线40m2通信。
应用于图4所示计算集群时,图3a和图3c中的不同进程以及本申请实施例的不同进程分别属于不同内核。该不同内核可以属于同一服务器。例如,进程0属于内核4011-1,进程1属于内核4011-2。或者,该不同内核可以属于不同服务器。例如,进程0属于服务器401的任一内核,进程1属于服务器402的任一内核。
在具体应用中,上述计算集群中的服务器启动任务(例如天气预报数据获取的任务),为该任务分配进程组,进程组包括多个进行数据通讯以实现该任务的进程,例如,图3a中的进程0至进程3,或者,图3c中的进程0至进程5。
应该理解的是,图4所示计算集群仅是计算集群的一个范例,并且计算集群可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图4中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面结合图5至图8,对本申请实施例提供的集合通信方法进行具体说明。示例性的,图5是本申请实施例提供的一种集合通信方法的流程图。如图5所示,该方法应用于计算集群,该计算集群包括多个进程,计算集群包括多个计算资源,多个计算资源上运行有多个例如可以是N个进程,N个进程形成一个用于执行计算任务的进程组,N个进程中的每个进程分配有内存资源,进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,N为大于等于2的整数;该方法包括但不限于如下步骤:
S501,第一通信组中的第一进程获取第一内存地址,并记录第一内存地址;
其中,第二进程为多个进程中与第一进程进行目标数据传输的进程,也就是说,第一进程与第二进程存在通信关系,组成一个第一通信组;第一通信组为M个通信组中的任一通信组。示例性的,第一进程获取第一内存地址即获取目标信息,目标包括第二进程的单元标识和目标地址。目标地址用于指示第二进程对数据的存储空间,目标地址也就是第一内存地址,为第二进程对应的内存资源的内存地址。
在一对多的集合通信中,第一通信组中的第一进程可以包括根进程,第一通信组中的第二进程可以包括该根进程的中继进程。其中,中继进程指对根进程传输的数据进行中转的进程。例如,根进程为进程0,目标进程为进程3,中继进程为进程1和进程2,且进程1为进程2的根进程。那么进程0可以将数据0传输至进程1,进程0和进程1存在通信关系,属于通信组1;进程1将数据0传输至进程2,进程1和进程2存在通信关系,属于通信组2;进程2将数据0传输至进程3,进程2和进程3存在通信关系,属于通信组3。也就是说,在一对多的集合通信中,一个数据发送端对应有一个数据接收端。
在多对一的集合通信中,第一通信组中的第一进程可以包括除根进程以外的任一进程。第一进程将数据写入第一进程的上一级进程时,第一通信组中的第二进程可以包括第一进程的上一级进程。第一进程从第二进程读取数据时,第一通信组中的第二进程可以包括第一进程的下一级进程。多对一的集合通信即一对多的集合通信过程的反向传输过程。也就是说,在多对一的集合通信中,一个数据发送端同样对应有一个数据接收端。
在多对多的集合通信中,第一进程包括参与集合通信的每个进程,第二进程包括该集合通信中除第一进程以外的进程。也就是说,在多对多的集合通信中,多个数据发送端可以对应有多个数据接收端。
示例性的,第一进程和第二进程例如可以为不同的进程,第二进程的单元标识可以为进程的进程标识号(rank号)。对于进程标识号可以参见上述术语及相关技术解释中的已有描述。为了便于理解,目标地址在后续具体的集合通信方法中进行说明。
下面以多对多的集合通信为例,对本申请实施例提供的集合通信方法进行具体说明。
示例性的,图6a是本申请实施例提供的一种集合通信过程的示意图。如图6a所示,在基于MPI_Allgather Ring算法的集合通信中,第一进程可以包括进程0至进程3中的每一个。举例而言,第一进程为进程0,第二进程包括进程1至进程3;第一进程为进程3,第二进程包括进程0至进程2。在一种可选的实施方式中,目标数据可以包括待写入数据,也就是第一进程在后续通信步骤中写入另一进程的数据。相应地,上述目标地址具体可以包括待写入数据的缓冲区(buffer)地址,也就是被第一进程写入目标数据的第二进程的缓冲区的地址。在另一种可选的实施方式中,目标数据可以包括待读取数据,也就是第一进程在后续通信步骤中从另一进程读取的数据。相应地,上述目标地址具体可以包括待读取数据当前的存储地址,也就是第一进程待读取的目标数据被第二进程存储时的存储地址。
第一进程从第二进程获取目标地址,包括:第一进程在进行集合通信(如传输目标数据D0至目标数据D3)之前,进行地址同步。举例而言,如图6a所示,该地址同步可以包括:按照MPI_Allgather Ring算法逻辑,每个进程获取左邻居进程的数据,并形成环状邻居关系:进程0从进程3获取目标地址A1至A3;进程1从进程0获取目标地址A1,A2和A3;进程2从进程1获取目标地址A0,A1和A3;进程3从进程2获取目标地址A0至A2。
在一种示例中,图6b是本申请实施例提供的一种集合通信中地址传输过程的示意图。如图6b所示,图6a的地址同步中可以基于Rendezvous协议进行地址传输。这样,每两个交互的进程间可以按照Rendezvous协议的读取方式传输目标地址:进程0发送报文头RTS至进程1,以告知进程0中地址信息的保存位置,从而进程1根据该保存位置从进程0读取目标地址A0,A2和A3。可以理解的是,在一种情况中,上述每两个交互的进程间可以按照Rendezvous协议的写入方式传输目标地址:参见图2a,进程0发送报文头RTS至进程1,以请求进程1的缓冲区地址,进而进程1通过CTS报文反馈该缓冲区地址给进程0,从而进程0将目标地址A0,A2和A3写入该缓冲区地址中。
上述图6b实施例中,交互的两个进程按照Rendezvous协议中读取或写入方式传输目标地址,只需在集合通信前进行一次报文头(如RTS报文)的发送,或者只需进行一次报文头和缓冲区地址的反馈(如CTS报文),即可实现参与集合通信的每个进程获得集合通信全局的目标地址:该集合通信中除该进程以外的其他进程的数据的存储地址。在此基础上,参与集合通信的每个进程保存第二进程和目标地址的对应关系,每个进程即可直接根据该对应关系进行集合通信,从而无需在集合通信的每个通信步骤中重复进行报文发送和反馈的操作,从而减少集合通信的时延。
在另一种示例中,目标地址通常不属于大包,也就是说,目标地址的数据量小于数据量阈值(如512字节),这样,本实施例可以按照Eager协议也就是小包通信的方式传输目标地址,从而实现参与集合通信的每个进程获得集合通信全局的目标地址:该集合通信中除该进程以外的其他进程的数据的存储地址。图6c-1是示例性示出的一种点对点通信过程的示意图。如图6c-1所示,Eager协议下的数据传输包括:发送端将载荷(如数据DR)和报文头(如发送通知)打包为一个数据包直接发送给接收端,接收端执行接收操作。Eager协议中可以由通信双方参与通信操作,也就是进行双边通信。基于Eager协议时,接收端要从接收缓冲区中拷贝所接收的数据,适用于所传输数据(如数据DR)的数据量小于或者等于数据量阈值(如512字节)也就是传输的数据为小包(例如目标地址)的场景。在此基础上,图6c-2是本申请实施例提供的一种集合通信中地址传输过程的示意图。如图6c-2所示,对于图6a的地址同步,每两个交互的进程间可以按照Eager协议传输目标地址,也就是图6c-2所示的过程:进程0直接发送包含报文头(通知信息)的目标地址A0,A2和A3至进程1,进程1接收进程0发送的目标地址即可。
上述图6c-2实施例中,交互的两个进程按照Eager协议传输目标地址,在集合通信前可以直接进行目标地址的传输,无需进行报文头(如RTS报文)和缓冲区地址的反馈(如CTS报文)。在此基础上,参与集合通信的每个进程保存第二进程和目标地址的对应关系,每个进程即可直接根据该对应关系进行集合通信,从而无需在集合通信的每个通信步骤也就是数据传输中重复进行报文发送和反馈的操作,从而可以进一步减少集合通信的时延。
可以理解的是,上述图6b至图6c-2实施例中,进程0保存的目标地址A3和目标地址A2为进程0从进程3获取的。进程0至进程3中每两个交互的进程,均可以按照与图6b和图6c-2实施例类似的方式传输目标地址,区别在于交互的进程与所传输的目标地址适应性调整。
在一种可选的实施方式中,图6d是本申请实施例提供的另一种集合通信过程的示意图。如图6d所示,基于MPI_Allgather Ring算法的集合通信中,集合通信的通信步骤0至通信步骤2仍按照MPI_Allgather Ring算法逻辑实现,与图6a实施例中传输目标数据D0至目标数据D3的方式类似,对于相同部分此处不再赘述,可以参见图6a实施例。区别在于,图6d的地址同步包括:一个主进程(如进程0)从第二进程获取目标地址,并发送第二目标地址至第二进程。其中,第二进程包括参与该集合通信的所有进程中除主进程以外的进程(如进程1至进程3),第二目标地址包括参与该集合通信的每个进程对应的目标地址中,除第二进程对应的目标地址以外的目标地址(如第二进程为进程3,第二目标地址包括目标地址A0至A2)。
本申请实施例,通过第一通信组中的多个第一进程中的主进程集中获取第一通信组中的每个第二进程对应的第一内存地址,可以在第一通信包括多个第一进程和多个第二进程的场景中,减少每个第一进程均与每个第二进程交互以获取每个第二进程对应的内存地址,从而更加便捷地实现内存地址的获取。
举例而言,图6d的地址同步与图6b或者图6c-2实施例中传输目标地址的方式类似,区别在于图6d的地址同步中由目标进程与第二进程交互。例如,进程0可以按照Rendezvous协议中读取的方式,从进程1至进程3分别读取目标地址A1至A3;或者,进程1至进程3可以按照Rendezvous协议中写入的方式,分别将目标地址A1至A3写入进程0;或者,进程1至进程3可以按照Eager协议,分别将目标地址A1至A3直接发送至进程0。在此基础上,参见图6d,进程0可以按照Rendezvous协议中写入的方式,将目标地址A0至A2写入进程3,将目标地址A0,A1和A3写入进程2,将目标地址A0,A2和A3写入进程1;或者,进程0可以按照Eager协议,将目标地址A0至A2直接发送至进程3,将目标地址A0,A1和A3直接发送至进程2,将目标地址A0,A2和A3直接发送至写入进程1。对于相同部分可以参见图6b和图6c-2实施例中两个进程间传输目标地址的描述,此处不再赘述。
可以理解的是,本申请实施例中第一进程从第二进程获取目标地址之外,还可以获取第二进程的单元标识。例如,进程1从进程0获取目标地址A0,A2和A3以外,还可以分别获取进程0的标识P0,进程2的标识P2,进程3的标识P3。在一种可选的实施方式中,目标地址和第二进程的单元标识可以同时获取,示例性的,第一进程可以从第二进程获取目标信息,目标信息可以包括目标地址和第二进程的单元标识,以进一步减少时延。例如,进程1从进程0获取目标信息1,目标信息1可以包括目标地址A0和进程0的标识P0。
上述图6a和图6d中的地址同步,也就是第一进程从第二进程获取目标地址的具体方式,仅为示例性说明,本实施例对具体的地址同步方式不作限定。
在一种可选的实施方式中,第一通信组中的第一进程记录第一内存地址,可以包括:第一进程基于第二进程的单元标识,保存目标地址与第二进程间的对应关系。
第一进程从第二进程获取目标地址后,可以提取目标地址包含的第二进程的单元标识,进而基于第二进程的单元标识,保存目标地址与第二进程间的对应关系。示例性的,本申请实施例应用于上述图4所示的计算集群中,不同进程(如进程0和进程1)属于同一服务器的不同内核。这样,第一进程基于第二进程的单元标识,保存目标地址与第二进程间的对应关系,可以包括:第一进程创建第二进程的单元标识与包含该标识的目标地址间的对应关系,得到目标地址与第二进程间的对应关系。
举例而言,图7a是本申请实施例提供的一种进程与数据存储地址的对应关系的示意图。如图7a所示,目标地址与第二进程间的对应关系的数据结构,例如可以是图7a所示进程与数据存储地址的对应关系表,表项中保存进程标识和相应数据的存储地址。例如,进程标识P0与数据的存储地址A0对应,进程标识P1与数据的存储地址A0对应等。其中,数据的存储地址即上述目标地址。在一种情况中,目标地址与第二进程间的对应关系可以是键-值(key-value)对,目标地址与第二进程中的一个作为键,另一个作为值。
在一种可选的实施方式中,本申请实施例应用于上述图4所示的计算集群中,不同进程(如进程0和进程1)可以属于不同的服务器。这样,第一进程基于第二进程的单元标识,保存目标地址与第二进程间的对应关系,可以包括:第一进程还从目标地址中提取第二进程所属服务器的设备标识,创建该目标地址与从该目标地址提取的单元标识和设备标识间的对应关系,得到目标地址与第二进程间的对应关系。举例而言,图7b是本申请实施例提供的另一种进程与数据存储地址的对应关系的示意图。如图7b所示,目标地址与第二进程间的对应关系的数据结构,例如可以是图7b所示进程与数据存储地址的对应关系表,表项中保存设备标识,进程标识和相应数据的存储地址。例如,设备标识N0,进程标识P0和数据的存储地址A0对应;设备标识N1,进程标识P1和数据的存储地址A0对应等。
本实施例对上述对应关系的具体数据结构不作限制。
S502,第一通信组中的第一进程根据第一内存地址多次与第一通信组中的第二进程进行数据传输。
第一进程在保存目标地址与第二进程间的对应关系后,可以根据该对应关系,按照计算集群进行的集合通信的通信规则与第二进程进行目标数据的传输。其中,计算集群进行的集合通信的通信规则即计算集群所采用的MPI算法的算法逻辑,具体可以参见上述对MPI的已有描述和图3a实施例的描述,此处不再赘述。本申请实施例对计算集群所采用的具体MPI算法不作限制,可以根据应用需求适应性设置。可以理解的是,上述通信规则决定了第一进程与计算集群中的哪些进程交互,以及如何交互等具体的通信步骤。上述目标地址与第二进程间的对应关系可以保证第一进程能够准确与对端也就是第一进程所属第一通信组中的第二进程进行数据传输,避免数据传输的异常。
在一种可选的实施方式中,第一通信组中的第一进程与第一通信组中的第二进程每传输一次数据,可以记录所传输数据所占用的第一内存地址的地址空间;第一通信组中的第一进程在每次传输数据之前,根据所记录的第一内存地址的地址空间占用情况确定所传输数据对应的内存地址。
示例性的,第一内存地址的地址空间例如可以是地址空间AS1,第一内存地址例如可以是内存地址A11。第一通信组中的第一进程在第一次传输数据之前,可以记录地址空间AS的占用情况为未占用,则确定所传输数据对应的内存地址为内存地址A11;第一通信组中的第一进程在第二次传输数据之前,可以记录第一内存地址的地址空间占用情况为已占用第一内存地址例如内存地址A11,则确定第二次传输数据中所传输数据对应的内存地址为地址空间AS中,与内存地址A11对应的地址空间相邻的下一段地址空间的内存地址,例如内存地址A12。以此类推,第一通信组中的第一进程在第三次传输数据之前,可以记录第一内存地址的地址空间占用情况为已占用内存地址A12,则确定第三次传输数据中所传输数据对应的内存地址为地址空间AS中,与内存地址A12对应的地址空间相邻的下一段地址空间的内存地址,例如内存地址A13。
本申请实施例中,第一通信组中的第一进程可以通过第一内存地址,记录每一次数据传输对第一内存地址的地址空间占用情况,从而在每次传输数据前,根据所记录的第一内存地址的地址空间占用情况确定所传输数据对应的内存地址,也就是实现了对第一内存地址对应的内存资源的管理,从而可以根据提前获取的第一内存地址在每次数据传输中准确确定所传输数据对应的内存地址。
示例性的,参见图6a和图6d,计算集群采用MPI_Allgather Ring算法,则通信规则可以包括:每个进程向右邻居发送数据,从左邻居接收数据,所有进程形成环形的邻居关系;在此基础上,每个进程对接收和发送的数据的缓冲区进行偏移,或者,每个进程对读取的数据的缓冲区进行偏移。图6a和图6d所示集合通信的通信步骤0至通信步骤2按照MPI_Allgather Ring算法逻辑实现,与图3a实施例中传输目标数据D0至目标数据D3的方式类似,对于相同部分此处不再赘述,可以参见图3a实施例对传输目标数据D0至目标数据D3的描述。区别在于本实施例中每个通信步骤不再进行地址同步。
可以理解的是,上述实施例中传输的具体数据取决于集合通信的应用场景。例如,集合通信应用于天气预报,传输的数据具体可以为天气预报的参数,例如历史温度数据、预测温度数据等。集合通信应用于神经网络的分布式训练中,传输的数据具体可以为该分布式训练所训练模型的模型参数等。本实施例对集合通信的应用场景,以及所传输的数据不作限制。
在一种可选的实施方式中,图8是本申请实施例提供的另一种集合通信过程的示意图。如图8所示,基于MPI_Allgather的Neighbor exchange算法的集合通信中,计算集群进行的集合通信的通信规则为MPI_Allgather的Neighbor exchange算法。图8与图3c实施例中传输目标数据D0至目标数据D3的方式类似,对于相同部分此处不再赘述,可以参见图3c实施例对传输目标数据D0至目标数据D3的描述。区别在于,图8的实施例中,在进行集合通信之前,也就是在传输目标数据D0至目标数据D3之前,进行地址同步,也就是第一进程从第二进程获取目标地址。
在一种示例中,按照MPI_Allgather的Neighbor exchange算法,图8中地址同步可以包括:进程0从进程1获取目标地址A1,A2和A3,从进程5获取目标地址A4和A5;进程1从进程0获取目标地址A0,A4和A5,从进程2获取目标地址A2和A3;进程2从进程1获取目标地址A0和A1,从进程3获取目标地址A3,A4和A5;进程3从进程2获取目标地址A0至A2,从进程4获取目标地址A4和A5;进程4从进程3获取目标地址A2和A3,从进程5获取目标地址A5,A0和A1;进程5从进程4获取目标地址A4,A2和A3,从进程0获取目标地址A0和A1。这样,每个进程获取了该计算集群的第二通信单的数据的存储地址,也就是获得了该计算集群中进程的全局地址。
上述图8示例的地址同步中,每个进程获取目标地址的具体方式,与图6b和图6c-2所述方式类似,区别在于所传输的数据和参与交互的进程适应性调整。对于相同部分此处不再赘述,详见上述图6b和图6c-2实施例中的相关描述。
在另一种示例中,图8中地址同步可以与图6d所示的地址同步类似,区别在于参与交互的进程以及传输的目标地址适应性调整。对于相同部分此处不再赘述,详见上述图6d实施例中的相关描述。
可以理解的是,在具体的地址传输和数据传输中,具体采用的方式本实施例不作限制。也就是说,在地址传输中,第一进程可以采用图6b和图6c-2实施例中的至少一种:读取,写入和/或小包传输;在数据传输中,可以采用图2a和图2b所示方式中的至少一种:读取和/或写入。其中,小包传输也就是按照Eager协议进行地址传输:发送端主动发送载荷到接收端,而不会考虑接收端是否有能力接收载荷。这就要求接收进程预先准备足够的缓冲空间(例如空间大小满足空间阈值:缓冲区的空间大小大于或者等于空间阈值)来接收所发送的载荷。在一种可选的实施方式中,数据传输中采用图2a和图2b所示方式中的至少一种:读取和/或写入时,全局地址传输中第一进程已经进行了RTS报文和CTS报文中至少之一的发送,因此,数据读取和写入时,第一进程无需再重复进行这两个报文的发送,可以直接进行单边操作:写入(Put)和读取(Get)中的至少之一即可。
参见图6a、图6d和图8,第一进程完成地址同步和集合通信的每个通信步骤中的数据传输时,可以发送结束通知(如FIN)至对端,以告知对端本次交互完成。这样,通过集合通信完成多个P2P的Rendervous FIN操作,可以实现在每个步骤结束时,在所有进程间进行一次屏障操作fence的效果,从而保证下一次交互的开始(如通信步骤0结束,通信步骤1开始),或者进程执行集合通信以外的算法逻辑。其中,集合通信以外的算法逻辑例如可以是天气预报场景中,上述通信步骤2结束,每个进程可以将通过集合通信获得的数据用于绘图、永久性存储等其他算法逻辑。
可以理解的是,本申请实施例应用于一对多和多对一的集合通信场景与应用于多对多的集合通信场景类似,区别在于具体的第一进程和第二进程不同,可以按照相应集合通信场景进行适应性调整,对于相同部分可以参见上述本申请实施例应用于多对多集合通信场景的具体描述,此处不再赘述。
为了便于理解本申请实施例提供的集合通信方法的优势,下面以表1所示集合通信时延对比进行说明。如下表1所示,计算集群应用于计算集群,该计算集群包括6个节点,每个节点可以是图4实施例中所示同一服务器的不同内核,或者每个节点可以是图5实施例中所示不同的服务器。该计算集群中的服务器应用ARM处理器,按照MPI Allgather算法进行集合通信。其中,ARM处理器是一种精简指令集计算机(reduced instruction setcomputer,RISC)的处理器。
/>
表1中,对于按照MPI Allgather算法进行的集合通信中相邻进程间交互的平均时延:当具体的通信步骤采用本申请图3a和图3c实施例的方式时,平均时延为表1的列“two-sides(双边)”中所示时延;当具体的通信步骤采用本申请图5至图8实施例的方式时,平均时延为表1的列“one-sided(单边)”中所示时延。可见,在传输的数据包大小相同,通信系统相同,经过相同的测试次数时,本申请图5至图8实施例的方式可以大幅减少集合通信的平均时延。例如,本实施例集合通信中相邻两个进程间传输大小为2048字节(byte)的数据,共试验1000次以测试平均时延,可以得到未采用本申请实施例方案时的平均时延为10.82微秒(μs),采用本申请实施例方案时的平均时延为8.78微秒(μs)。也就是说,本申请实施例提供的基于地址同步,结合单边操作实现的MPI Allgather集合通信的时延,远少于直接基于Rendezvous协议实现的MPI Allgather集合通信的时延。
本申请实施例,在计算集群的通信步骤执行之前,也就是按照计算集群进行的集合通信的通信规则进行数据的传输之前,实现了集合通信的地址同步操作,保证参与计算集群的每个进程均保存该计算集群中第二进程对应的目标地址。进而,第一进程也就是参与计算集群的每个进程,可以直接根据对应关系和计算集群进行的集合通信的通信规则(例如MPI_Allgather的算法逻辑),进行数据的传输,减少在每个通信步骤中大量重复执行的地址同步操作,减少集合通信的时延。
可以理解的是,服务器为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
另外,在一种应用场景中,本申请实施例提供的集合通信方法可以封装为PMPI_XXX形式的接口,供应用集合通信的主体调用。例如,本申请实施例提供的集合通信方法可以封装为接口PMPI_Allgather_Neighbor exchange、PMPI_Allreduce等,具体取决于集合通信所遵循的MPI算法。示例性的,天气预报应用程序调用PMPI_XXX接口后,运行天气预报应用会执行本申请实施例提供的集合通信方法,也就是说底层逻辑会执行本申请实施例中描述的点对点操作。相应地,安装有天气预报应用程序的服务器针对天气预报应用程序发送的报文、产生的网络流量特征(如交换机中传输的数据)和服务器中的寄存器事件,均会先执行本申请实施例中的地址同步,接着执行后续的通信步骤例如上述通信步骤0至通信步骤2。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在服务器上运行时,使得服务器执行上述相关方法步骤实现上述实施例中的集合通信方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的集合通信方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的集合通信方法。
其中,本实施例提供的服务器、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuit,ASIC)中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (14)

1.一种集合通信方法,其特征在于,应用于计算集群,所述计算集群包括多个计算资源,所述多个计算资源上运行有N个进程,所述N个进程形成一个用于执行计算任务的进程组,所述N个进程中的每个进程分配有内存资源,所述进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,N为大于等于2的整数;所述方法包括:
第一通信组中的第一进程获取第一内存地址,并记录所述第一内存地址;其中,所述第一内存地址为所述第一通信组中第二进程的内存资源对应的内存地址;所述第一通信组为所述M个通信组中的任一通信组;
所述第一通信组中的第一进程根据所述第一内存地址多次与所述第一通信组中的第二进程进行数据传输。
2.根据权利要求1所述的方法,其特征在于,所述第一通信组中的第一进程根据所述第一内存地址多次与所述第一通信组中的第二进程进行数据传输,包括:
所述第一通信组中的第一进程将数据多次写入所述第一内存地址对应的所述第一通信组中的第二进程的内存资源。
3.根据权利要求1所述的方法,其特征在于,所述第一通信组中的第一进程根据所述第一内存地址多次与所述第二进程进行数据传输,包括:
所述第一通信组中的第一进程从所述第一内存地址对应的所述第一通信组中的第二进程的内存资源中多次读取数据。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一通信组中的第一进程根据所述第一内存地址多次与所述第一通信组中的第二进程进行数据传输,包括:
所述第一通信组中的第一进程与所述第一通信组中的第二进程每传输一次数据,记录所传输数据所占用的所述第一内存地址的地址空间;
所述第一通信组中的第一进程在每次传输数据之前,根据所记录的所述第一内存地址的地址空间占用情况确定所传输数据对应的内存地址。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述第一通信组中的第一进程的数量为一个或多个,所述第一通信组中的第二进程的数量为一个或多个。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述第一通信组中的第一进程的数量为多个,所述第一通信组中的第二进程的数量为多个;
所述第一通信组中的第一进程获取所述第一内存地址,包括:
所述第一通信组中的多个第一进程中的主进程获取所述第一通信组中的每个第二进程对应的所述第一内存地址,得到地址集合;
所述主进程发送所述地址集合至所述多个第一进程中除所述主进程外的其他第一进程。
7.一种计算集群,其特征在于,包括多个计算资源,所述多个计算资源上运行有N个进程,所述N个进程形成一个用于执行计算任务的进程组,所述N个进程中的每个进程分配有内存资源,所述进程组中包括M个通信组,每个通信组包括至少两个具有通信关系的进程,其中,M为大于等于1的整数,N为大于等于2的整数;
第一通信组中的第一进程,用于获取第一内存地址,并记录所述第一内存地址;其中,所述第一内存地址为所述第一通信组中第二进程的内存资源对应的内存地址;所述第一通信组为所述M个通信组中的任一通信组;
所述第一通信组中的第一进程,用于根据所述第一内存地址多次与所述第二进程进行数据传输。
8.根据权利要求7所述的计算集群,其特征在于,所述第一通信组中的第一进程,具体用于:
将数据多次写入所述第一内存地址对应的所述第二进程的内存资源。
9.根据权利要求7所述的计算集群,其特征在于,所述第一通信组中的第一进程,具体用于:
从所述第一内存地址对应的所述第二进程的内存资源中多次读取数据。
10.根据权利要求7-9中任一项所述的计算集群,其特征在于,所述第一通信组中的第一进程,具体用于:
与所述第一通信组中的第二进程每传输一次数据,记录所传输数据所占用的所述第一内存地址的地址空间;
在每次传输数据之前,根据所记录的所述第一内存地址的地址空间占用情况确定所传输数据对应的内存地址。
11.根据权利要求7-10中任一项所述的计算集群,其特征在于,所述第一通信组中的第一进程的数量为一个或多个,所述第一通信组中的第二进程的数量为一个或多个。
12.根据权利要求7-11中任一项所述的计算集群,其特征在于,所述第一通信组中的第一进程的数量为多个,所述第一通信组中的第二进程的数量为多个;所述第一通信组中的多个第一进程中的主进程,具体用于:
获取所述第一通信组中的每个第二进程对应的所述第一内存地址,得到地址集合;
发送所述地址集合至所述多个第一进程中除所述主进程外的其他第一进程。
13.一种计算机可读存储介质,其特征在于,包括计算机程序,其特征在于,当所述计算机程序在计算集群上运行时,使得所述计算集群执行如权利要求1至6中任意一项所述的方法。
14.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被计算集群执行时,使得所述计算集群执行权利要求1至6中任意一项所述的方法。
CN202211245236.2A 2022-10-12 2022-10-12 集合通信方法及计算集群 Pending CN117914860A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211245236.2A CN117914860A (zh) 2022-10-12 2022-10-12 集合通信方法及计算集群
PCT/CN2023/101329 WO2024077999A1 (zh) 2022-10-12 2023-06-20 集合通信方法及计算集群

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211245236.2A CN117914860A (zh) 2022-10-12 2022-10-12 集合通信方法及计算集群

Publications (1)

Publication Number Publication Date
CN117914860A true CN117914860A (zh) 2024-04-19

Family

ID=90668636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211245236.2A Pending CN117914860A (zh) 2022-10-12 2022-10-12 集合通信方法及计算集群

Country Status (2)

Country Link
CN (1) CN117914860A (zh)
WO (1) WO2024077999A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975407B (zh) * 2016-03-22 2020-10-09 华为技术有限公司 一种内存地址的映射方法及设备
US10747673B2 (en) * 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
CN111316244A (zh) * 2018-12-28 2020-06-19 深圳市大疆创新科技有限公司 多进程间的通信方法和系统
CN114064302B (zh) * 2020-07-30 2024-05-14 华为技术有限公司 一种进程间通信的方法及装置

Also Published As

Publication number Publication date
WO2024077999A1 (zh) 2024-04-18

Similar Documents

Publication Publication Date Title
US11010681B2 (en) Distributed computing system, and data transmission method and apparatus in distributed computing system
US8527739B2 (en) Iterative process partner pairing scheme for global reduce operation
CN106688208B (zh) 利用机架规模架构中的池化存储器进行的网络通信
CN108268328B (zh) 数据处理装置及计算机
CN101616083B (zh) 一种报文转发方法和装置
US8751655B2 (en) Collective acceleration unit tree structure
US9535873B2 (en) System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster
Lawlor Message passing for GPGPU clusters: CudaMPI
WO2011128369A1 (en) Querying performance data on a parallel computer system having compute nodes
US20080091789A1 (en) Distributed Multi-Media Server System, Multi-Media Information Distribution Method, Program Thereof, and Recording Medium
CN112948149A (zh) 一种远端内存共享方法、装置、电子设备及存储介质
CN111404931B (zh) 一种基于持久性内存的远程数据传输方法
CN114546913A (zh) 一种基于pcie接口的多主机之间数据高速交互的方法和装置
DE102020133272A1 (de) Pufferzuweisung für Parallelverarbeitung von Daten
CN109857545A (zh) 一种数据传输方法及装置
Chu et al. Exploiting hardware multicast and GPUDirect RDMA for efficient broadcast
CN114598746A (zh) 基于智能网卡的服务器间负载均衡性能优化方法
CN114050998A (zh) 实现远程直接内存访问的方法、装置、电子设备及介质
Cardellini et al. Overlapping communication with computation in MPI applications
CN116069262B (zh) 一种分布式存储卸载方法、装置、电子设备及存储介质
US10277547B2 (en) Data communications in a distributed computing environment
CN117914860A (zh) 集合通信方法及计算集群
CN115269174A (zh) 一种数据传输方法、数据处理方法及相关产品
CN111240845A (zh) 一种数据处理方法、装置和存储介质
CN114567520B (zh) 实现集合通信的方法、计算机设备和通信系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination