掌桥专利:专业的专利平台
掌桥专利
首页

一种传输数据的方法和装置

文献发布时间:2024-05-31 01:29:11


一种传输数据的方法和装置

技术领域

本申请涉及软件工程技术领域,并且更具体地,涉及一种传输数据的方法和装置。

背景技术

近年来,随着算力需求的快速增长及数据中心的不断发展,超算中心运行的高性能计算(high performance computing,HPC),人工智能(artificial intelligence,AI)应用越来越多。其中,对于应用的应用性能的优化可以提升计算效率、节约算力成本。现有的方案中,主要通过软件手段对模型、算法、架构等进行优化来实现应用性能优化。而HPC/AI应用复杂多样,不同应用、不同场景对应的优化方法也不同,优化成本高。

发明内容

本申请提供一种传输数据的方法和装置,能够优先传输应用内关键进程的数据流,优化应用性能。

第一方面,提供了一种传输数据的方法,该方法包括:生成第一配置信息,该第一配置信息用于指示第一进程的数据流的转发优先级,其中,当该第一进程是第一应用的主要进程,该第二进程是该第一应用的次要进程时,该第一进程的数据流的转发优先级高于该第二进程的数据流的转发优先级,或者,当该第一进程是第一应用的次要进程,该第二进程是该第一应用的主要进程时,该第一进程的数据流的转发优先级低于该第二进程的数据流的转发优先级;根据该第一配置信息发送该第一进程的数据流。

基于上述方案,通过识别应用中的主要进程,并设置该主要进程的数据流的转发优先级高于其他进程的数据流的转发优先级,可以实现优先调度应用内主要进程的数据流,优化应用性能,该方法对于应用性能的优化具有通用性。

结合第一方面,在第一方面的某些实现方式中,生成第二配置信息和第一对应关系,该第二配置信息包括源进程与目的进程通信的通信权重,该第一对应关系包括该源进程,该目的进程以及该源进程的队列对信息之间的对应关系,该第一进程属于该源进程或该目的进程,该通信权重与该第一进程涉及的通信算子的类型相关;根据该第二配置信息和该第一对应关系生成第二对应关系,该第二对应关系包括该通信权重与该队列对信息的对应关系。

基于上述方案,通过第一进程涉及的通信算子的类型可以确定该第一进程与目的进程通信的通信权重,从而可以确定该第一进程的队列对信息与该通信权重的对应关系,以使硬件层可以基于该通信权重转发该第一进程的数据流。

结合第一方面,在第一方面的某些实现方式中,根据该第二对应关系生成该第一配置信息,该第一进程的数据流的转发优先级与该通信权重对应。示例性地,可以将该通信权重转换为该第一进程的数据流的转发优先级。

可选地,该第一配置信息包括该第一进程的数据流的转发优先级与该第一进程的该队列对信息的对应关系。

基于上述方案,可以基于该第一进程的队列对信息与该通信权重的对应关系,确定该第一进程的队列对信息与该第一进程的数据流的转发优先级的对应关系,以使硬件层可以优先转发该第一进程的数据流。

结合第一方面,在第一方面的某些实现方式中,该转发优先级由区分服务编码点的值表示,当该第一进程是该第一应用的主要进程,该第二进程是该第一应用的次要进程时,该第一进程的数据流的区分服务编码点的值大于该第二进程的数据流对应的区分服务编码点的值;或者,当该第一进程是该第一应用的次要进程,该第二进程是该第一应用的主要进程时,该第一进程的数据流的区分服务编码点的值小于该第二进程的数据流对应的区分服务编码点的值。

示例性地,可以将该通信权重转换为该区分服务编码点的值。

基于上述方案,硬件层可以基于该第一进程的队列对信息与该第一进程的数据流的区分服务编码点的值,转发该第一进程的数据流,可以实现优先调度应用内主要进程的数据流。

结合第一方面,在第一方面的某些实现方式中,根据进程的通信特征识别该第一进程,该通信特征包括该第一应用中进程间的依赖关系,该第一应用中通信算子的使用情况中的至少一种。

示例性地,可以通过分析该应用中进程的数据流的走向确定该进程间的依赖关系,识别该第一进程。或者,通过分析该通信算子的使用情况确定该第一进程。

第二方面,提供一种优化应用性能的装置,该装置包括处理模块和收发模块,该处理模快用于生成第一配置信息,该第一配置信息用于指示第一进程的数据流的转发优先级,其中,当该第一进程是第一应用的主要进程,该第二进程是该第一应用的次要进程时,该第一进程的数据流的转发优先级高于该第二进程的数据流的转发优先级,或者,当该第一进程是第一应用的次要进程,该第二进程是该第一应用的主要进程时,该第一进程的数据流的转发优先级低于该第二进程的数据流的转发优先级;该收发模块用于根据该第一配置信息发送该第一进程的数据流。

结合第二方面,在第二方面的某些实现方式中,该处理模快还用于,生成第二配置信息和第一对应关系,该第二配置信息包括源进程与目的进程通信的通信权重,该第一对应关系包括该源进程,该目的进程以及该源进程的队列对信息之间的对应关系,该第一进程属于该源进程或该目的进程,该通信权重与该第一进程涉及的通信算子的类型相关;根据该第二配置信息和该第一对应关系生成第二对应关系,该第二对应关系包括该通信权重与该队列对信息的对应关系。

结合第二方面,在第二方面的某些实现方式中,该处理模快具体用于根据该第二对应关系生成该第一配置信息,该第一进程的数据流的转发优先级与该通信权重对应。示例性地,可以将该通信权重转换为该第一进程的数据流的转发优先级。

可选地,该第一配置信息包括该第一进程的数据流的转发优先级与该第一进程的该队列对信息的对应关系。

结合第二方面,在第二方面的某些实现方式中,该转发优先级由区分服务编码点的值表示,当该第一进程是该第一应用的主要进程,该第二进程是该第一应用的次要进程时,该第一进程的数据流的区分服务编码点的值大于该第二进程的数据流对应的区分服务编码点的值;或者,当该第一进程是该第一应用的次要进程,该第二进程是该第一应用的主要进程时,该第一进程的数据流的区分服务编码点的值小于该第二进程的数据流对应的区分服务编码点的值。

示例性地,可以将该通信权重转换为该区分服务编码点的值。

结合第二方面,在第二方面的某些实现方式中,该处理单元还用于根据进程的通信特征识别该第一进程,该通信特征包括该第一应用中进程间的依赖关系,该第一应用中通信算子的使用情况中的至少一种。

示例性地,可以通过分析该应用中进程的数据流的走向确定该进程间的依赖关系,识别该第一进程。或者,通过分析该通信算子的使用情况确定该第一进程。

第三方面,提供了一种计算设备,包括处理器和存储器,可选地,还包括输入输出接口。其中所述处理器用于控制所述输入输出接口收发信息,所述存储器用于存储计算机程序,所述处理器用于从存储器中调用并运行该计算机程序,使得所述执行第一方面或第一方面任意一种可能的实现方式中所述的方法。

可选地,该处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。

第四方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面或第一方面任意一种可能的实现方式中所述的方法。

第五方面,提供了一种芯片,该芯片获取指令并执行该指令来实现上述第一方面以及第一方面的任意一种实现方式中的方法。

可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任意一种实现方式中的方法。

可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。

第六方面,提供了一种包含指令的计算机程序产品,当所述指令被区块链节点运行时,使得所述区块链节点执行如上述第一方面以及第一方面的任意一种实现方式中的方法。

第七方面,提供了一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如上述第一方面以及第一方面的任意一种实现方式中的方法。

第八方面,提供了一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如上述第一方面以及第一方面的任意一种实现方式中的方法。

作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。

可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。

第九方面,提供了一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如上述第一方面以及第一方面的任意一种实现方式中的方法。

作为示例,这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasablePROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。

可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。

附图说明

图1是本申请实施例适用的一种应用通信场景的示意图。

图2是本申请实施例提供的一种数据传输的示意图。

图3是本申请实施例提供的一种系统架构的示意性框图。

图4是本申请实施例提供的一种传输数据的方法的示意性流程图。

图5是本申请实施例提供的另一种数据传输的示意图。

图6是本申请实施例提供的一种装置600的示意性框图。

图7是本申请实施例提供的一种计算设备700的架构示意图。

图8是本申请实施例提供的一种计算设备集群的架构示意图。

图9是本申请实施例提供的计算设备700A和700B之间通过网络进行连接的示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

本申请将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。

另外,在本申请实施例中,“示例性地”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。

本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。

本申请实施例描述的业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。

为了便于理解,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。

1、统一通讯接口(unified communication X,UCX)

UCX是一个建立在远程直接内存访问(remote direct memroy access,RDMA)等技术之上的用于数据处理和高性能计算的通信框架,RDMA是其底层核心之一。UCX可以理解为位于应用和RDMA API之间的中间件,向上层用户封装了一层更易开发的接口。UCX提供了一组抽象的通信原语,为数据中心的应用程序提供了一个优化的通信层。UCX利用高速网络进行节点间通信,并利用共享内存机制进行有效的节点内通信。

2、OpenFabrics企业发行版(OpenFabrics enterprise distribution,OFED)

OFED是一组开源软件驱动、核心内核代码、中间件和支持InfiniBand(IB)协议的用户级接口程序,主要用于进行高性能计算和企业数据中心管理。其中,infiniband是一种开放的处理器及io互连标准,它具有高带宽、低延时等特点,目前已经成为HPC互连的主流网络之一。infiniband支持多种通信服务和通信语义,简化并加速了服务器之间的连接,同时支持服务器与远程存储和网络设备的连接。

3、队列对(queue pair,QP)

根据IB协议中的描述,QP是硬件和软件之间的虚拟接口。QP可以是队列结构,按顺序存储着软件给硬件下发的任务。QP可以理解为进程级别的资源,每个进程可以使用至少一个QP。例如,如果有两个节点,该两个节点可以分别使用一个QP;或者该两个节点中的任一个节点可以使用多个QP,一个节点使用多个QP通信主要是为了把流量分成几个通道,例如可以区分不同的业务数据的通道。

4、区分服务编码点(differentiated services code point,DSCP)

国际互联网工程任务组(The Internet Engineering Task Force,IETF)发布了区分服务Diff-Serv(Differentiated Service)的QoS分类标准。它在每个数据包IP头部的服务类别(type of service,TOS)标识字节中,例如,利用已使用的6比特(bit)和未使用的2bit,通过编码值来区分优先级,该TOS标识中的前6比特称为DSCP,DSCP的值得范围可以为0~63。

近年来,随着算力需求的快速增长及数据中心的不断发展,超算中心运行的HPC/AI应用越来越多。应用性能优化,对于提升计算效率、节约算力成本有着关键作用。当前应用性能优化,主要通过模型、算法、架构等软件手段来进行优化。而HPC/AI应用复杂多样,不同应用、不同场景优化方法也不同,优化成本较高。

图1所示为一种HPC/AI应用的通信场景示意图。如图1所示,该通信场景中包括三个节点(节点#1、节点#2以及节点#3)以及交换机(switch)。该三个节点可以中的任意两个节点可以通过该交换机实现通信。

其中,节点#1上可以运行进程(rank)0、rank1以及rank2;节点#2上可运行rank3至rank5;节点#3上可运行rank6至rank8。应用内进程间存在依赖关系,如图1所示,rank4与rank2通信以及rank5与rank1通信的并发依赖rank0与rank3之间的通信,rank7与rank5通信,rank8与rank4通信的并发性依赖rank3与rank6的通信。即在A阶段,rank0和rank3通信完成后,rank4和rank5分别与rank2和rank1通信;在B阶段,rank3和rank6通信;最后是C阶段,rank7和rank8分别与rank5和rank4通信。其中,rank0、rank3以及rank6可以理解为主要(关键)进程。可以看出应用内进程间的依赖关系会影响进程并发性。

在现有的方案中,底层通信网络通常无法识别哪个进程是主要进程,例如对底层网络来讲,rank3、rank4、rank5这3个进程可能没有区别。如图2所示,进入B阶段后,如果rank4和rank5的通信还没有结束,那么rank3和rank6通信的网络流量就会被干扰。在图2中表现为一个QP中包括rank3、rank4以及rank5的数据包,且rank4和rank5的数据包占多数。严重情况下,例如,rank4和rank5进行超大包通信,那么rank3和rank6的通信长尾时延就会恶化,使得阶段C的触发时机滞后,从而降低了应用的整体计算并发度,影响应用整体性能。

针对该场景,需要优化0、3、6号进程,以提高应用并发性,降低应用运行时间。例如,可以优化rank排布,降低次要进程对主要进程的通信干扰。但HPC/AI应用内部逻辑复杂,应用类型也多种多样,该方法与应用强耦合,不仅耗时耗力,也无法完全解除进程间干扰,局限性较大。

有鉴于此,本申请实施例提供了一种传输数据的方法,能够通过优先调度应用内关键进程的流量,优化应用性能。该方法对于HPC/AI应用性能的优化具有通用性。

图3示出了本申请实施例的一种系统架构示意图。该系统架构的应用场景可以为数据中心内的HPC/AI等应用进行性能优化。该系统架构可以包括软件层、驱动层和硬件层。其中,软件层例如可以包括HPC/AI应用,消息传递接口(message passing interface,MPI)以及UCX。其中,MPI软件层提供一套用于高性能计算的并行编程库,例如常见的MPI有OpenMPI、IntelMPI、MPICH等。HPC应用一般基于该软件栈进行开发;驱动层可以是OFED,驱动层北向为MPI软件层提供Verbs接口,南向对接硬件层网卡。例如常见的OFED有MLNX-OFED;硬件层可以包括网卡。硬件层网卡负责底层网络通信,对接如交换机之类的网络设备,例如数据中心内常见的网卡有MLNX厂商的ConnectX系列网卡。

图4是本申请实施例提供的传输数据的方法的示意性流程图。该方法可以由第一节点执行,该第一节点可以用于执行HPC/AI应用。该第一节点内部可以运行该应用的多个进程。如图4所示,该方法可以包括以下几个步骤。

可选地,S410,根据进程的通信特征识别应用中的第一进程。

其中,该通信特征可以包括第一应用中进程间的依赖关系。该第一进程可以为该应用的主要进程或次要进程。

示例性地,如果进程#1与进程#2间的通信依赖其他进程间的通信,则该其他进程可以理解为该应用的主要进程,该进程#1和进程#2可以是该第一应用的次要进程。以图2为例,节点#1和节点#2上分别包括rank 0至rank 2,rank 3至rank 5,该通信特征可以包括rank 0至rank 5之间的依赖关系。rank 5和rank 1之间的通信,以及rank 4和rank 2之间的通信依赖rank 3和rank 0之间的通信,则该rank 0和rank 3可以理解为该应用的主要进程,rank 1、rank2、rank 4以及rank 5可以理解为该应用的次要进程。

一种可能的实现方式中,可以通过分析(profiling)工具分析进程间的依赖关系识别该第一进程。

示例性地,可以通过分析工具分析进程的数据流的走向(trace)确定进程间的依赖关系。例如,可以通过分析工具分析图2所示的应用中,rank 0的数据流发送的目的进程为rank 3,且rank 0到rank 3的数据流可以触发rank 4向rank 2传输数据流,以及rank 5向rank 1传输数据流,因此可以确定该rank 0和rank 3为该应用的主要进程。

应理解,以上rank 0至rank 5之间的依赖关系仅为示例,在实际的应用中,进程数可能更多,进程之间的依赖关系可能更复杂,本申请对此不做限定。

另一种可能的实现方式中,该通信特征还可以包括应用中通信算子的使用情况的信息。即通过分析应用的通信算子的使用情况识别该第一进程。

具体地,一个应用中可以包括至少一个的通信算子,且各通信算子的使用情况可能不同。应用中通信算子的使用情况例如可以包括各通信算子的运算时长、占用的资源大小等。

示例性地,如果分析工具分析一个或多个通信算子运算的时长比较长,则该通信算子可能与应用的性能相关。与该通信算子相关的进程可以理解为该应用的主要进程。

其中,该至少一个通信算子可以属于多种类型。通信算子的类型例如可以包括点对点(point to point)、广播(broadcast),多对一(many to one)(也可以称为incast)等。

分析工具分析应用的通信特征的具体实现可以参考现有的相关描述,例如,针对HPC应用,常见的开源工具有综合性能监测(integrated performance monitoring,IPM)、调优和分析实用程序(tuning and analysis utilities,TAU)等。

S420,生成第一配置信息,该第一配置信息指示第一进程的数据流的转发优先级。

其中,当该第一进程是第一应用的主要进程,该第二进程是该第一应用的次要进程时,该第一进程的数据流的转发优先级高于该第二进程的数据流的转发优先级,或者,当该第一进程是第一应用的次要进程,该第二进程是该第一应用的主要进程时,该第一进程的数据流的转发优先级低于该第二进程的数据流的转发优先级。

示例性地,由于应用的数据流由硬件层转发,该转发优先级可以是硬件层可以识别的信息。

例如,数据流的转发优先级可以是数据流对应的DSCP的值。当该第一进程是第一应用的主要进程,该第二进程是该第一应用的次要进程时,通过设置该第一进程的DSCP的值大于该第二进程的DSCP的值,可以实现该第一进程的数据流的优先转发;当该第一进程是第一应用的次要进程,该第二进程是该第一应用的主要进程时,通过设置该第一进程的DSCP的值小于该第二进程的DSCP的值,可以实现该第二进程的数据流的优先转发。

可选地,该第一配置信息还可以包括该第一进程的QP信息,通过该QP信息硬件层可以获知软件层的数据存储的位置以及该数据发送的目的地址。该第一进程中的每个进程可以包括至少一个QP,该QP信息例如可以是队列对上下文(queue pair context,QPC),QP信息可以用于存储该第一进程的QP的相关属性。例如,该QP信息可以包括QP的队列对索引(queue pair number,QPN)、该QP的服务类型,可以储存的工作队列元素(work queueelement,WQE)数量等信息。

一种可能的实现方式中,通过第二配置信息以及第一对应关系生成该第一配置信息。其中,该第二配置信息包括该第一进程与其他进程通信的通信权重,且该通信权重可以与该第一进程的数据流的转发优先级相对应,或者说,可以将该通信权重信息转化为该优先级信息。

具体地,该第二配置信息可以包括源进程(集)信息、目的进程(集)的信息以及该源进程(集)与目的进程(集)之间通信的通信权重。该源进程(集)和/或该目的进程(集)可以属于该第一进程。

可选地,该第二配置信息还可以包括进程所涉及的通信算子的类型。该第二配置信息中各字段以及各字段的含义可以如表1中所示。

表1

示例性地,该通信权重可以根据通信算子的类型确定。每种类型的通信算子可以对应一个或多个通信权重的值,通信算子的类型可以参考S410中的描述。或者,可以根据通信算子的使用情况确定该通信权重,例如,对于同一种类型的通信算子,多个进程使用通信算子的时长不同,该多个进程对应的通信权重可以不同。

该第二配置信息可以表示为{src_ranks}_{dst_ranks}_{type}_{weight}。示例性地,该第二配置信息可以包括src0_dst0_type0_weight0。其中,src0为该第一进程的一例,dst0为该第一进程通信的目的进程,type0可以为前述通信算子类型中的任一种。

例如,“0_6_0_32”可以表示rank0到rank6的点对点通信,且该rank0与该rank6通信的通信权重为32;“0_set0_1_48”可以表示rank0到目的进程集set0的一对多通信,该rank0与set0通信的通信权重为48。其中rank0可以为该第一进程的一例。

可选地,该第二配置信息还可以包括应用内其他进程(第二进程)的通信权重。该第二进程可以为该应用中的次要进程。

示例性地,该第二配置信息还可以包括src1_dst1_type1_weight1,其中,src1为该第二进程的一例,该dst1为该次要进程通信的目的进程,type1可以为前述通信算子类型中的任一种。该weight1可以小于该weight0。

在实际的应用中,该通信权重占用的比特数可以根据应用中的进程数以及进程之间依赖的复杂程度配置,本申请对此不做限定。例如,该通信权重字段可以为6bit,通信权重支持64级(0-63)。当进程之间的依赖关系较简单时,该通信权重还可以为2bit、4bit。

该第二配置信息可以在应用初始化阶段由软件层(例如UCX)生成。其中,应用的初始化阶段可以完成进程间连接的建立。

该第一对应关系可以包括源进程、目的进程以及QP信息之间的对应关系。在应用的初始化阶段,软件层可以获取到应用内所有进程的QP信息。因此,在应用的初始化阶段,软件层可以生成该第一对应关系。

示例性地,该第一对应关系可以表示为:{src_rank}_{dst_rank}_{qp_code}。其中,qp_code可以表示该src_rank的QP信息。

进一步地,通过该第二配置信息和该第一对应关系可以确定:该源进程与该目的进程的通信权重与该QP信息之间的对应关系(记为第二对应关系)。示例性地,该第二对应关系可以表示为:{qp_code}_{weight}。

举例来说,假设该第二配置信息为“0_6_0_weight1”,该第一对应关系为“0_6_qp1”,则可以确定该第二对应关系为“qp1_weight1”。其中,该第二配置信息可以表示rank0和rank6之间的通信权重为weight1,该第一对应关系可以表示rank 0与rank6通信,且rank0的QP信息为qp1,从而根据该第二配置信息和该第一对应关系可以确定qp1对应该weight1。

通过确定第一进程的QP信息与该通信权重之间的对应关系可以确定该第一进程的数据流的转发优先级,即该第一进程的通信权重越高,该第一进程的数据流的转发优先级越高。由于对于应用的驱动层和硬件层来说,可能不能识别上述通信权重,因此可以将该通信权重转化为驱动层和硬件层可以识别的转发优先级信息。即可以将该第二对应关系转化为该第一配置信息。

示例性地,可以将该第二对应关系转换为第一进程的QP信息与DSCP值之间的对应关系。即将上述通信权重的值转换为DSCP值。

具体地,在将该通信权重的值转化为DSCP值的过程中,可以将该第一进程对应的DSCP值转化为大于应用中其他次要进程的DSCP值。DSCP的具体取值可以与MPI接口类型相关。例如,如果应用采用OpenMPI接口,通常默认数据流的DSCP值为26,在这种情况下,可以将该第一进程的通信权重映射为大于26的DSCP值。

本申请不限定将通信权重的值转化为DSCP值的具体方式。例如,可以通过预设的规则或对应关系将该通信权重转换为DSCP的值,该预设的规则可以是函数式或其他的规则,该对应关系可以是对应关系表。

S430,根据该第一配置信息发送该第一进程的数据流。

在数据流的转发阶段,驱动层基于数据流的QP信息以及该第一配置信息,更新数据流的转发优先级,例如更新数据流的DSCP值。在硬件层网卡侧,可以基于DSCP的转发策略,优先转发该第一进程的数据流。

基于上述方案,通过识别应用的关键进程,并设置该关键进程的数据流的转发优先级高于其他进程的数据流的转发优先级,可以实现优先调度应用内关键进程的数据流,优化应用性能,该方法对于HPC/AI应用性能的优化具有通用性。

如图5所示,针对图2所示的应用场景,可以识别出应用内的主要进程rank3,然后通过设置rank 3的数据流的转发优先级高于rank 4和rank 5的数据流的转发优先级,可以使底层网络优先转发该rank 3的数据流,从而优化次要进程(例如rank 4和rank 5)对rank3的干扰,提升应用性能。如图5所示,经过设置rank 3的数据流的转发优先级后,图1中进入B阶段后,rank3的数据流转发的DSCP值可以映射为34(高于应用默认DSCP的值26)。

上文结合图1至图5,详细描述了本申请实施例提供的传输数据的方法,下面将结合图6至图9,详细描述本申请提供的传输数据的装置。

应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。

图6是本申请实施例提供的一种传输数据的装置600的示意性框图。该装置600可以通过软件、硬件或者两者的结合实现。本申请实施例提供的装置600可以实现本申请实施例图4所示的方法流程。

该装置600包括:处理模块610和收发模块620。

该处理模块610用于根据进程的通信特征识别第一进程,该第一进程为该应用的主要进程;该处理模块610还用于生成第一配置信息,该第一配置信息包括该第一进程的数据流的转发优先级信息,该第一进程的数据流的转发优先级高于第二进程的数据流的转发优先级,该应用的进程包括该第二进程。

该收发模块620用于根据该第一配置信息发送该第一进程的数据流。

可选地,该处理模块610还用于生成第二配置信息和第一对应关系,该第二配置信息包括源进程与目的进程通信的通信权重,该第一对应关系包括该源进程,该目的进程以及该源进程的队列对信息之间的对应关系,该第一进程属于该源进程或该目的进程,该通信权重与该第一进程涉及的通信算子的类型相关;根据该第二配置信息和该第一对应关系生成第二对应关系,该第二对应关系包括该通信权重与该队列对信息的对应关系。

该处理模块610具体用于根据该第二对应关系生成该第一配置信息,该第一进程的数据流的转发优先级信息与该通信权重对应,该第一配置信息还包括该队列对信息。

该转发优先级信息包括区分服务编码点的值,该第一进程的数据流的区分服务编码点的值大于该第二进程的数据流对应的区分服务编码点的值。

该处理模块610可以通过分析该应用中进程的数据流的走向确定该进程间的依赖关系,识别该第一进程。

该处理模块610可以通过分析该通信算子的使用情况确定该第一进程。

需要说明的是:上述实施例提供的装置600在执行方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

例如,收发模块可以用于执行方法中的任意步骤,处理模块可以用于执行方法中的任意步骤。收发模块和处理模块负责实现的步骤可根据需要指定,通过收发模块,处理模块分别实现方法中不同的步骤来实现装置600的全部功能。

这里的装置600可以以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。

例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。示例性地,接下来以收发模块为例,介绍收发模块的实现方式。类似地,其他模块,例如处理模块的实现方式可以参考接收模块的实现方式。

模块作为软件功能单元的一种举例,收发模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,收发模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。

同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。

模块作为硬件功能单元的一种举例,收发模块可以包括至少一个计算设备,如服务器等。或者,收发模块也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。

收发模块包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。接收模块包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,收发模块包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。

因此,在本申请的实施例中描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

另外,本申请提供的传输数据的装置与传输数据的方法实施例属于同一构思,其具体实现过程详见上文中的方法实施例,这里不再赘述。

本申请实施例提供的传输数据的方法可以由计算设备执行,该计算设备也可以被称为计算机系统。包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括处理单元、内存和内存控制单元等硬件,随后对该硬件的功能和结构进行详细说明。该操作系统是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用程序。并且,可选地,该计算机系统是智能手机等手持设备,或个人计算机等终端设备,本申请并未特别限定,只要能够通过本申请实施例提供的方法即可。本申请实施例提供的传输数据的方法的执行主体可以是计算设备,或者,是计算设备中能够调用程序并执行程序的功能模块。

下面结合图7,对本申请实施例提供的一种计算设备进行详细描述。

图7是本申请实施例提供的一种计算设备700的架构示意图。该计算设备700可以是服务器或者计算机或者其他具有计算能力的设备。图7所示的计算设备700包括:至少一个处理器710和存储器720。

应理解,本申请不限定计算设备700中的处理器、存储器的个数。

处理器710执行存储器720中的指令,使得计算设备700实现本申请提供的传输数据的方法。或者,处理器710执行存储器720中的指令,使得计算设备700实现本申请提供的各功能模块,从而实现本申请提供的传输数据的方法。

可选地,计算设备700还包括通信接口730。通信接口730使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备700与其他设备或通信网络之间的通信。

可选地,计算设备700还包括系统总线740。计算设备700中,处理器710、存储器720和通信接口730分别与系统总线740连接。处理器710能够通过系统总线740访问存储器720,例如,处理器710能够通过系统总线740在存储器720中进行数据读写或代码执行。

该系统总线740是快捷外设部件互连标准(peripheral component interconnectexpress,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述系统总线740分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

一种可能的实现方式,处理器710的主要功能是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在存储器720或者缓存716中。

可选地,处理器710可能是集成电路芯片,具有信号的处理能力。

作为示例而非限定,处理器710是通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器710是中央处理单元(central processing unit,CPU)。

可选地,每个处理器710可以包括至少一个处理单元712和内存控制单元714。

可选地,处理单元712也称为核心(core)或内核,是处理器最重要的组成部分。处理单元712是由单晶硅以一定的生产工艺制造出来的,处理器所有的计算、接受命令、存储命令、处理数据都由核心执行。处理单元712分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。各种处理单元都具有固定的逻辑结构,例如,处理单元包括例如,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。

一种可能的实现方式中,内存控制单元714可以用于控制存储器720与处理单元712之间的数据交互。

具体地,内存控制单元714可以从处理单元712接收内存访问请求,并基于该内存访问请求控制针对内存的访问。作为示例而非限定,内存控制单元是内存管理单元(memorymanagement unit,MMU)等器件。

另一种可能的实现方式中,各内存控制单元714通过系统总线进行针对存储器720的寻址。并且在系统总线中配置仲裁器(图7中未示出),该仲裁器负责处理和协调多个处理单元712的竞争访问。

又一种可能的实现方式中,处理单元712和内存控制单元714通过芯片内部的连接线,例如地址线,通信连接,从而实现处理单元712和内存控制单元714之间的通信。

可选地,每个处理器710还可以包括缓存716。其中,缓存是数据交换的缓冲区(称作cache)。当处理单元712要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从存储器中找。由于缓存的运行速度比存储器快得多,故缓存的作用就是帮助处理单元712更快地运行。

存储器720能够为计算设备700中的进程提供运行空间,例如,存储器720中保存用于生成进程的计算机程序(具体地说,是程序的代码)。计算机程序被处理器运行而生成进程后,处理器在存储器720中为该进程分配对应的存储空间。进一步的,上述存储空间进一步包括文本段、初始化数据段、位初始化数据段、栈段、堆段等等。存储器720在上述进程对应的存储空间中保存进程运行期间产生的数据,例如,中间数据,或过程数据等等。

可选地,存储器也称为内存,其作用是用于暂时存放处理器710中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理器710就会把需要运算的数据调到内存中进行运算,当运算完成后处理单元712再将结果传送出来。

作为示例而非限定,存储器720是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。应注意,本文描述的系统和方法的存储器720旨在包括但不限于这些和任意其它适合类型的存储器。

以上列举的计算设备700的结构仅为示例性说明,本申请并未限定于此,本申请实施例的计算设备700包括现有技术中计算机系统中的各种硬件,例如,计算设备700还包括除存储器720以外的其他存储器,例如,磁盘存储器等。本领域的技术人员应当理解,计算设备700还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,上述计算设备700还可包括实现其他附加功能的硬件器件。

此外,本领域的技术人员应当理解,上述计算设备700也可仅仅包括实现本申请实施例所必须的器件,而不必包括图7中所示的全部器件。

本申请实施例还提供了一种计算设备集群。该计算设备集群可以包括至少一台计算设备。该计算设备可以是服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。

如图8所示,所述计算设备集群包括至少一个计算设备700。计算设备集群中的一个或多个计算设备700中的存储器720中可以存有相同的用于执行传输数据的方法的指令。

在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备700中的存储器720也可以分别存有用于执行传输数据的方法的部分指令。换言之,一个或多个计算设备700的组合可以共同执行用于执行传输数据的方法的指令。

需要说明的是,计算设备集群中的不同的计算设备700中的存储器720可以存储不同的指令,分别用于执行传输数据的装置的部分功能。也即,不同的计算设备700中的存储器720存储的指令可以实现将传输数据的装置中的一个或多个模块的功能。

在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,网络可以是广域网或局域网等等。图9示出了一种可能的实现方式。如图9所示,两个计算设备700A和700B之间通过网络进行连接。

具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备700A中的存储器720有执行收发模块和处理模块的功能的指令。同时,计算设备700B中的存储器720中存有执行收发模块和处理模块的功能的指令。

应理解,图9中示出的计算设备700A的功能也可以由多个计算设备700完成。同样,计算设备700B的功能也可以由多个计算设备700完成。

本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当其在计算设备上运行时,使得计算设备执行上述传输数据的方法,或者使得该计算设备实现上述传输数据的装置的功能。

本实施例中,还提供了一种包含指令的计算机程序产品,所述计算机程序产品可以是包含指令的,能够运行在计算设备集群上或被储存在任何可用介质中的软件或程序产品。当其由计算设备集群运行时,使得计算设备集群执行上述传输数据的方法,或者使得该计算设备集群实现上述传输数据的装置的功能。

本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令在计算设备上被执行时,使得计算设备执行上述所提供的传输数据的方法。

本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,当计算机可读存储介质中的指令由计算设备集群执行时,使得计算设备集群执行上述所提供的传输数据的方法。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种基于数据传输系统的数据传输方法、装置及系统
  • 一种数据传输方法、数据检测方法及装置
  • 一种实现数据传输处理的方法及装置
  • 一种基于模数转换器的高速数据传输方法及装置
  • 一种数据传输方法、装置、与服务器
  • 用于传输事件数据的方法和装置,其中所述数据的至少一部分通过较高带宽的至少一个传输通道来传输并且所述数据的至少一部分通过较低带宽的至少一个传输通道来传输
  • 数据传输装置、数据接收装置、数据传输系统和数据传输方法
技术分类

06120116623450