CN112835695B - Pod间通信的方法和分布式计算系统 - Google Patents
Pod间通信的方法和分布式计算系统 Download PDFInfo
- Publication number
- CN112835695B CN112835695B CN202110121360.7A CN202110121360A CN112835695B CN 112835695 B CN112835695 B CN 112835695B CN 202110121360 A CN202110121360 A CN 202110121360A CN 112835695 B CN112835695 B CN 112835695B
- Authority
- CN
- China
- Prior art keywords
- pod
- task
- gpu
- target
- gpus
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种Pod间通信的方法和分布式计算系统,其中,该分布式计算系统中的每个节点上包括多个GPU,目标任务对应的多个Pod用于运行在目标节点的GPU上;目标任务包括第一Pod和第二Pod;该方法包括:第一Pod获取任务资源信息,任务资源信息包括:第一Pod所属的目标任务对应占用的GPU集合;GPU集合包括:第一Pod所在的第一GPU及第二Pod所在的第二GPU;第一Pod根据GPU集合,通过第一GPU与第二GPU之间建立P2P连接。本公开实施例提高了跨Pod通信时的任务处理效率。
Description
技术领域
本公开涉及机器学习技术,具体涉及一种Pod间通信的方法和分布式计算系统。
背景技术
随着深度学习的应用与普及,以及深度学习对GPU为主的高性能计算资源的迫切需求,越来越多的任务开始使用大规模的云计算分布式系统进行计算,例如,该云计算分布式系统可以是Kubernetes。在Kubernetes中,调度的基本单位是pod,可以根据用户提交的待处理的深度学习任务创建一个或多个pod,并将这些pod调度到Kubernetes中的节点(Node)上进行执行。在深度学习任务的执行过程中,不同的Pod间可能会进行相互通信。
目前的Kubernetes系统中,pod间存在着一定程度的隔离,当不同的Pod间要进行相互通信时,即使他们可能处于同一个节点上,也会自动通过网卡互相连接,这使得整个深度学习任务的执行性能较低。
发明内容
有鉴于此,本公开至少提供一种Pod间通信的方法和分布式计算系统,以解决上述提到的任务执行效率低的问题。
第一方面,提供一种Pod间通信的方法,所述方法应用于分布式计算系统,所述分布式计算系统包括:主机和多个节点;每个所述节点上包括多个GPU,待处理的目标任务对应的多个容器集Pod用于运行在所述多个节点中的目标节点的GPU上;所述目标任务对应的多个Pod包括第一Pod和第二Pod;所述方法包括:
所述第一Pod获取任务资源信息,所述任务资源信息包括:所述第一Pod所属的所述目标任务对应占用的GPU集合;其中,所述GPU集合包括:所述第一Pod运行所在的第一GPU以及第二Pod运行所在的第二GPU;
所述第一Pod根据所述GPU集合,通过所述第一GPU与所述第二GPU之间建立P2P连接,以实现所述第一Pod与第二Pod间的通信。
第二方面,提供一种分布式计算系统,所述分布式计算系统包括:主机和多个节点;每个节点上包括多个GPU,待处理的目标任务对应的多个容器集Pod用于运行在所述多个节点中的目标节点的GPU上;其中,所述目标任务对应的多个Pod中包括第一Pod和第二Pod;
所述第一Pod,运行于所述目标节点的第一GPU上,用于获取任务资源信息,所述任务资源信息包括:所述第一Pod所属的所述目标任务对应占用的GPU集合;其中,所述GPU集合包括:所述第一GPU和第二Pod运行所在的第二GPU;并根据所述GPU集合,通过所述第一GPU与所述第二GPU之间建立P2P连接,以实现所述第一Pod与第二Pod间的通信。
第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开任一实施例的方法。
本公开实施例提供的Pod间通信的方法、装置和电子设备,通过对属于同一任务的各个Pod通知该任务对应占用的GPU集合,使得属于同一任务的各Pod对该任务对应的GPU集合都是可见的,从而可以通过建立GPU P2P连接实现跨Pod的通信,不再需要经过CPU和网卡,显著提高了跨pod间的通信性能,减少任务运行时间,提高了任务处理效率。
附图说明
为了更清楚地说明本公开一个或多个实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开至少一个实施例提供的一种分布式计算系统的系统架构;
图2示出了本公开至少一个实施例提供的一种任务调度过程流程图;
图3示出了本公开至少一个实施例提供的同一节点的跨Pod的GPU P2P通信示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开一个或多个实施例中的技术方案,下面将结合本公开一个或多个实施例中的附图,对本公开一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
本公开实施例提供了一种在分布式计算系统中进行跨Pod通信的方法,其中,该分布式计算系统例如可以是Kubernetes系统。如下以Kubernetes系统为例,简单介绍该分布式计算系统的系统架构。如图1所示,该系统可以包括:主机(Master)11和多个节点(Node),图1中示例了两个节点:节点12和节点13,实际实施中节点的数量可以更多。其中,每个节点可以是物理机也可以是虚拟机,在每个节点上可以包括多个GPU。
当用户想要在该分布式计算系统上处理一个深度学习任务时,可以将该深度学习任务的配置文件上传到系统中的主机11,该配置文件中可以预定义将该深度学习任务划分为几个Pod,以及每个Pod运行需要的GPU数量。主机11中的控制器111可以根据该配置文件,为所述深度学习任务创建其预定义数量的Pod,例如,一个深度学习任务可以划分为三个Pod。而主机11中的调度器112可以负责将上述的Pod发送到该分布式计算系统中的各个节点(Node)上,这些Pod将在节点上运行,Pod是Kubernetes系统的最小调度单元。
请继续参见图1,每个节点上可以至少包括如下组件(以节点12为例):
代理控制器(kubelet)121,每个节点中都有一个kubelet,它可以负责与主机(Master)进行通信。例如,主机11上的调度器112就可以将Pod发送至该代理控制器121,由该代理控制器121继续将Pod调度到节点上的各个GPU上。
GPU122,每个节点上都可以有多个GPU,Pod可以在GPU上运行。例如,一个Pod可以调度到一个GPU上运行。
插件(Device Plugin)123,可以定期向kubelet汇报该Node上GPU的列表,例如,某个节点上共有三个GPU(GPU0、GPU1和GPU2),以使得kubelet在拿到这个列表之后上报给主机11,还可以用于方便kubelet根据本节点的GPU资源的列表进行Pod的调度分配。例如,代理控制器121在接收到调度器112发送的Pod后,就可以根据本节点上的GPU资源列表将Pod分配调度到上述的GPU上运行。
在上述分布式计算系统的架构的基础上,本公开实施例的在分布式计算系统进行跨Pod通信的方法中,对系统中的调度器112、以及节点上的代理控制器121、插件123和GPU122均进行了改进,目的是使得当同一个任务中的多个Pod被调度到同一个Node的各个GPU上时,跨Pod间通信可以通过GPU的P2P连接来实现,以加快任务的处理效率。上述的多个Pod以分布式计算系统在实际应用中所涉及的POP数量为准,当然GPU的数量亦如此。如下将详细描述:
首先,为了降低单机多GPU间的通信延迟,提高单机多GPU间的通信带宽,有些GPU可以支持GPU Direct Peer-to-Peer(P2P)通信,在这种GPU间的P2P通信技术中,其中一个GPU可以通过PCI Express直接访问另一个GPU的显存,避免了通过拷贝到CPU作为中转,大大降低了数据交换的延迟。本公开实施例中,修改了GPU的通信框架层面的相关逻辑,使得GPU能够支持P2P连接。
其次,如下的图2可以通过一个深度学习任务的调度分配过程为例,描述在分布式计算系统中的各个组件(例如,主机的调度器、节点的代理控制器等)上做了哪些处理。需要说明的是,本实施例并不限制如下各步骤间的执行顺序。
例如,假设待处理的深度学习任务在主机11的控制器111侧被对应创建了四个Pod,分别包括:Pod-1、Pod-2、Pod-3和Pod-4。并假设该四个Pod对应的深度学习任务是目标任务T1。此外,每个Pod运行所需要的GPU数量也已经由用户预定义,例如,这四个Pod运行都各自需要一个GPU。
在步骤200中,调度器为任务的各个Pod设置标注信息。
调度器112可以由控制器111获取到上述四个Pod与目标任务T1的对应关系,并可以根据该对应关系,为目标任务T1对应的上述四个Pod中的每个Pod分别设置标注信息(Annotation)。例如,该标注信息可以包括目标任务的任务标识。
此外,调度器112还可以根据目标任务T1对应的各个Pod各自所需的GPU数量,统计得到整个目标任务所需的GPU数量。例如,上述四个Pod中每个Pod运行需要一个GPU,那总共需要四个GPU。可以将整个目标任务总共需要的GPU数量称为任务GPU数量。可以将该任务GPU数量也设置在Pod的标注信息中。示例性的,Pod-1的标注信息可以包括(目标任务标识,任务GPU数量)=(T1,4),Pod-2的标注信息可以包括(T1,4)。
当然,每个Pod的标注信息中除了所述目标任务标识和任务GPU数量之外,还可以包括每个Pod各自所需的Pod数量,例如,Pod-1的标注信息:(该Pod所需GPU数量,目标任务标识,任务GPU数量)=(1,T1,4)。
相对于现有技术来说,现有技术中调度器不会给Pod设置标注信息,这将不方便识别属于同一任务的各Pod,有可能调度器将属于同一任务的各Pod调度到不同的节点上,无法使用GPU P2P通信;即使同一任务的各Pod被调度至同一节点,由于Pod没有标注信息,也使得在节点处调度Pod到GPU时,不能区分哪些Pod和GPU属于同一任务,同样不能利用GPUP2P通信。而本公开实施例中,通过由调度器为Pod设置标注信息,在该标注信息中标注Pod所属的目标任务标识,有助于根据该目标任务标识将属于同一目标任务的各个Pod调度到同一节点上,并且,该Pod标注的目标任务标识也能够用于后续的节点在为Pod分配GPU时,根据目标任务标识方便确定属于同一任务的GPU集合。此外,后续实施例也将说明,为Pod标注的任务GPU数量,将有助于节点根据该任务GPU数量为任务预留足够的GPU资源。
在步骤202中,调度器将任务的各个Pod发送到节点的代理控制器。
在设置好上述Pod的标注信息后,调度器112就可以将目标任务T1的所有Pod下发到分布式计算系统的各个节点上。其中,调度器112可以根据任务GPU数量来选择合适的节点,本例子中,目标任务T1需要的任务GPU数量是4,即总共需要4个GPU,并假设图1中的节点12上可使用的GPU数量多于或等于4,则调度器112可以将节点12作为目标节点,将目标任务T1对应的携带了上述标注信息的四个Pod“Pod-1、Pod-2、Pod-3和Pod-4”都下发至目标节点12。
这样做可使得属于同一深度学习任务的多个Pod位于同一个节点上,从而为该节点的GPU之间进行P2P连接做好基础。比如,假设两个Pod之间要进行通信(即跨Pod通信),如果这两个Pod在同一节点上,且运行所在的GPU支持P2P,就可以通过GPU之间建立P2P连接,提高Pod间的通信性能,这样Pod间的交换数据就不用再经过CPU中转,提高数据交换效率,降低通信延迟。因此,调度器112在下发任务的Pod时,尽可能让同一任务的Pod位于同一节点。
在步骤204中,代理控制器判断Pod是否具有标注信息,如果具有标注信息,且是该任务的第一个Pod,则根据该Pod标注的任务GPU数量,分配任务所需的GPU集合,并标注为已占用和对应的任务标识。
本步骤中,代理控制器kubelet接收到待分配GPU资源的Pod后,可以判断该Pod是否具有任务标识和任务GPU数量这些标注信息。如果没有,则可以按照普通的分配规则执行,即按照Pod分配,一个Pod分配一个GPU,且各个Pod间具有一定程度的隔离。当然,按照普通分配规则执行时,可以根据各Pod各自所需的GPU来分配。
如果发现Pod具有任务标识和任务GPU数量这些标注信息,表明该Pod所属的任务是希望进行P2P通信方式的任务,则代理控制器可以继续判断当前是否已经给该任务分配了任务所需的GPU数量。具体的,代理控制器可以根据Pod的标注信息中包括的目标任务的任务标识来判断是否已存在对应的GPU集合。
假设判断结果是不存在该任务标识对应的GPU集合,表明这个待分配的Pod是其所属的目标任务的第一个Pod。代理控制器可以获取Pod的标注信息中的任务GPU数量,并据此由该代理控制器所在的节点12中的各GPU中选择所述任务GPU数量对应的多个GPU,组成GPU集合,并且,该GPU集合是与Pod标注信息中的任务标识对应,表示这些GPU集合中的GPU已经分配给了任务标识对应的目标任务。示例性的,假设目标任务T1中包括四个Pod,每个Pod需要的GPU数量是1,那目标任务总共需要四个GPU。代理控制器可以选择四个GPU作为目标任务对应的GPU集合:GPU-1、GPU-2、GPU-3和GPU-4。并且,代理控制器还根据目标任务T1中各Pod需要的GPU数量,分别为这些Pod分配GPU集合中的部分GPU,如下示例:
Pod-1——分配了GPU-1;
Pod-2——分配了GPU-2;
Pod-3——分配了GPU-3;
Pod-4——分配了GPU-4。
如上,上述的GPU-1至GPU-4就可以称为与目标任务T1对应的GPU集合。
一方面,代理控制器可以为每个Pod记录如下的资源分配信息:以Pod-1为例,Pod-1(GPU-1,[GPU-1,GPU-2,GPU-3,GPU-4]),其中,GPU-1是为Pod-1分配的GPU,[GPU-1,GPU-2,GPU-3,GPU-4]是Pod-1所属的目标任务对应的GPU集合。
另一方面,代理控制器还可以将上述的四个GPU的状态标记为已占用且与所述目标任务对应。例如,可以将上述的GPU-1,GPU-2,GPU-3,GPU-4的状态均标注为已占用,并且标注这些GPU均与目标任务T1对应,即已分配给T1,从而避免将已经分配给T1的GPU资源在之后分配给其他目标任务造成冲突。
假设代理控制器根据Pod的标注信息中包括的目标任务的任务标识,确定已经存在了与该任务标识对应的GPU集合,即这个待分配的Pod不是目标任务的第一个Pod,已经有目标任务的其他Pod被分配GPU了。此时,代理控制器可以根据Pod标注信息中的任务标识,找到与该任务标识对应的GPU集合,并由该GPU集合中选择待分配的Pod所需数量的GPU来分配。
举例来说,上述的例子中,目标任务T1有四个Pod,当调度器112将这四个Pod发到节点12上时,假设节点12先调度其中的Pod-1,那么,节点12上的代理控制器121可以先判断Pod-1的标注信息中是否具有任务GPU数量和任务标识。如果没有,则可以按照常规的分配规则执行。如果具有标注信息,则再继续判断是否已经存在与Pod-1的标注信息中的任务标识对应的GPU集合。由于Pod-1是目标任务T1中首个被调度的Pod,此时节点12上尚没有对应该目标任务T1的GPU集合。此时,代理控制器可以先确定与Pod-1标注信息中的任务标识对应且数量满足任务GPU数量的GPU集合,然后再由该GPU集合中为Pod-1分配所需数量的GPU。而后,当后续的Pod-2至Pod-4分配时,代理控制器发现已经存在与任务标识对应的GPU集合了,就由该GPU集合中选择Pod所需数量的GPU分配即可。
本公开实施例中,通过由代理控制器根据Pod的标注信息来调度Pod,使得更方便确定属于同一任务的GPU集合;比如,代理控制器可以根据Pod标注的目标任务标识,识别属于同一任务的GPU集合,并记录下该属于同一任务的GPU集合的信息。此外,通过由代理控制器根据Pod标注的任务GPU数量预留GPU资源,既能保证该任务具有足够的GPU资源来运行任务的各Pod,也能够避免将已分配给某任务的GPU资源再分配给其他任务造成冲突。比如,代理控制器可以是逐个Pod分配GPU的,有可能不同任务的Pod交叉顺序分配,不一定是同一个任务的Pod集中分配,所以预留资源可以更好的保证某个任务够用。
在步骤206中,代理控制器将Pod调度到GPU上。
例如,代理控制器将目标任务T1中的Pod-1分配调度到GPU-1上,将Pod-2分配调度到GPU-2上,将Pod-3分配调度到GPU-3上,将Pod-4分配调度到GPU-4。
在步骤208中,代理控制器向插件发送设备分配信息。
例如,本实施例的设备分配信息可以包括:每个Pod对应分配的GPU,以及该Pod所属的目标任务对应的GPU集合。
以Pod-1为例,代理控制器可以向插件发送该Pod-1的相关设备分配信息包括:{GPU-1,[GPU-1,GPU-2,GPU-3,GPU-4]},其中,GPU-1表示将Pod-1调度到GPU-1上,[GPU-1,GPU-2,GPU-3,GPU-4]表示该Pod-1所属目标任务对应占用的GPU集合,即这些GPU“GPU-1,GPU-2,GPU-3,GPU-4”上运行的各Pod都属于同一个目标任务T1。
在步骤210中,插件根据GPU集合,向集合中的各个Pod发送该Pod所属任务对应的GPU集合信息。
其中,插件可以在Pod启动之前,向Pod发送目标任务对应的GPU集合信息。例如,插件可以向运行在GPU-1上的Pod-1发送:{GPU-1,GPU-2,GPU-3,GPU-4},这些GPU即为Pod-1所属的目标任务T1对应的GPU集合。同理,插件将向属于同一目标任务的Pod-2/Pod-3/Pod-4均分别发送上述GPU集合信息。
此外,由于上述的GPU集合信息是目标任务对应的多个GPU的信息,也可以将该GPU集合信息称为任务资源信息。如前所述的,这个任务资源信息是由代理控制器发给插件的。
本公开实施例中,通过由插件将属于同一任务的GPU集合的信息发给该任务的各个Pod,使得属于同一任务的各个Pod对该任务的GPU集合都是可见的,从而为跨Pod的GPUP2P通信建立基础。
在步骤212中,各个Pod根据插件发送的GPU集合信息,通过GPU间的P2P连接进行相互通信。
例如,假设对应目标任务T1创建的各Pod中包括第一Pod(如,Pod-1)和第二Pod(如,Pod-2),并且第一Pod要与第二Pod间交换数据,那么,第一Pod可以获取插件发给它的任务资源信息[GPU-1,GPU-2,GPU-3,GPU-4],其中,第一Pod位于GPU-1(该GPU-1可以称为第一GPU)上,第二Pod位于GPU-2上(该GPU-2可以称为第二GPU)。接着,第一Pod可以根据上述任务资源信息,通过GPU-1与[GPU-1,GPU-2,GPU-3,GPU-4]中的第二GPU(GPU-2)之间建立P2P连接,实现第一Pod与第二Pod间的通信。
请结合参见图3,图3示意了位于同一个节点上的多个Pod,任意两个Pod之间,可以通过各自所在的GPU建立P2P连接实现通信。
此外,在上述的实施例描述中,有些处理是可选的,例如,kubelet在为任务中的各Pod分配GPU时,也可以是不区分是否首个Pod,直接根据Pod所需的GPU数量为其分配GPU,最后根据Pod标注信息中的任务标识,将属于同一任务的各Pod分配的GPU汇总就得到对应该任务的GPU集合,后续kubelet将该任务对应的GPU集合以及每个Pod分配的GPU发送给插件。当然,前述实施例中所述的,在识别到任务首个Pod时,就预先根据任务GPU数量,将该任务GPU数量的多个GPU标记为占用状态,这样能够更好的保证在本节点上为目标任务预留出足够的GPU,确定同一任务的各Pod在同一节点。可选的,如上所述的,如果代理控制器不为任务预留出任务GPU数量个GPU,那么调度器可以在Pod的标注信息中不设置任务GPU数量。
本实施例中,通过在对Pod分配GPU时记录并通知各Pod其所属任务对应的GPU集合,使得属于同一任务的各Pod对该任务对应的GPU集合都是可见的,从而在GPU支持P2P的基础上,可以通过建立GPU P2P连接实现跨Pod的通信,不再需要经过CPU和网卡;这种Pod间通信方式大大提高了通信性能,可以获得更大的连接带宽和更小的连接延迟,减少了任务运行时间,大幅提高了跨pod间GPU通信的性能表现。
本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开任一实施例所述的Pod间通信的方法。
本领域技术人员应明白,本公开一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本公开一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本公开中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本公开中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本公开中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPG多(现场可编程门阵列)或多SIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PD多)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本公开包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本公开内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本公开一个或多个实施例的较佳实施例而已,并不用以限制本公开一个或多个实施例,凡在本公开一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开一个或多个实施例保护的范围之内。
Claims (15)
1.一种Pod间通信的方法,其特征在于,所述方法应用于分布式计算系统,所述分布式计算系统包括:主机和多个节点;每个所述节点上包括多个GPU,待处理的目标任务对应的多个容器集Pod用于运行在所述多个节点中的目标节点的GPU上;所述目标任务对应的多个Pod包括第一Pod和第二Pod;
所述方法包括:
所述第一Pod获取任务资源信息,包括:所述第一Pod接收所述目标节点上的插件发送的所述任务资源信息;所述任务资源信息包括:所述第一Pod所属的所述目标任务对应占用的GPU集合;其中,所述GPU集合包括:所述第一Pod运行所在的第一GPU以及第二Pod运行所在的第二GPU;
所述第一Pod根据所述GPU集合,通过所述第一GPU与所述第二GPU之间建立P2P连接,以实现所述第一Pod与第二Pod间的通信。
2.根据权利要求1所述的方法,其特征在于,所述GPU集合位于所述目标节点上;所述目标节点上运行有:代理控制器和插件;其中,所述代理控制器用于负责所述目标节点与主机间的通信;
所述第一Pod获取任务资源信息,包括:
所述第一Pod接收所述目标节点上的插件发送的所述任务资源信息,其中,所述任务资源信息由所述代理控制器发送至所述插件。
3.根据权利要求1所述的方法,其特征在于,所述主机上包括:调度器;所述第一Pod获取任务资源信息之前,所述方法还包括:
所述调度器根据所述目标任务与多个Pod间的对应关系,为所述目标任务对应的每个Pod设置标注信息,所述标注信息包括:所述目标任务的任务标识;
所述调度器将所述多个Pod发送至目标节点,以使得所述目标节点根据所述标注信息将Pod调度到GPU上。
4.根据权利要求3所述的方法,其特征在于,所述目标节点上运行有:代理控制器和插件;所述调度器将所述多个Pod发送至目标节点之后,所述方法还包括:
所述目标节点上的代理控制器根据所述Pod标注的目标任务的任务标识,得到属于同一所述目标任务的多个Pod对应分配的GPU集合;
所述代理控制器将所述多个Pod中每个Pod对应分配的GPU、以及所述目标任务对应的所述GPU集合发送至所述插件。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:所述调度器根据所述每个Pod运行所需的GPU数量,统计得到整个所述目标任务对应所需的任务GPU数量,并将所述任务GPU数量设置在所述标注信息中;
所述调度器将所述多个Pod发送至目标节点,包括:
所述调度器选择所述多个节点中的其中一个节点,作为用于运行所述目标任务的目标节点,所述目标节点中可使用的GPU数量不低于所述任务GPU数量;
所述调度器将所述目标任务对应的多个Pod发送至所述目标节点。
6.根据权利要求5所述的方法,其特征在于,所述目标节点上运行有:代理控制器;所述调度器将所述目标任务对应的多个Pod发送至所述目标节点之后,所述方法还包括:
所述代理控制器在获取待分配的Pod时,根据所述Pod的标注信息中包括的任务标识,判断所述目标节点上是否已存在与所述任务标识对应的GPU集合;
若判断结果是不存在,则所述代理控制器根据所述待分配的Pod标注的所述任务GPU数量,由所述目标节点上选择所述任务GPU数量对应的多个GPU确定为所述GPU集合,并标注所述GPU集合中的各GPU的状态为已占用且与所述目标任务对应;
根据所述待分配的Pod所需数量的GPU,将所述Pod调度到所述GPU集合中的GPU上。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若判断结果是存在,则所述代理控制器由所述GPU集合中选择所述待分配的Pod所需数量的GPU分配。
8.一种分布式计算系统,其特征在于,所述分布式计算系统包括:主机和多个节点;每个节点上包括多个GPU,待处理的目标任务对应的多个容器集Pod用于运行在所述多个节点中的目标节点的GPU上;其中,所述目标任务对应的多个Pod中包括第一Pod和第二Pod;
所述第一Pod,运行于所述目标节点的第一GPU上,用于获取任务资源信息,包括:所述第一Pod接收所述目标节点上的插件发送的所述任务资源信息;所述任务资源信息包括:所述第一Pod所属的所述目标任务对应占用的GPU集合;其中,所述GPU集合包括:所述第一GPU和第二Pod运行所在的第二GPU;并根据所述GPU集合,通过所述第一GPU与所述第二GPU之间建立P2P连接,以实现所述第一Pod与第二Pod间的通信。
9.根据权利要求8所述的系统,其特征在于,所述GPU集合位于所述目标节点上;所述目标节点上运行有:代理控制器和插件;其中,所述代理控制器用于负责所述目标节点与主机间的通信;
所述第一Pod,还用于接收所述目标节点上的插件发送的所述任务资源信息,其中,所述任务资源信息由所述代理控制器发送至所述插件。
10.根据权利要求8所述的系统,其特征在于,所述主机上包括调度器;
所述调度器,用于:在所述第一Pod获取任务资源信息之前,根据所述目标任务与多个Pod间的对应关系,为所述目标任务对应的每个Pod设置标注信息,所述标注信息包括:所述目标任务的任务标识;并将所述多个Pod发送至目标节点,以使得所述目标节点根据所述标注信息将Pod调度到GPU上。
11.根据权利要求10所述的系统,其特征在于,所述目标节点还包括:代理控制器和插件;
所述代理控制器,用于:根据所述Pod标注的目标任务的任务标识,得到属于同一所述目标任务的多个Pod对应分配的GPU集合;并将所述多个Pod中每个Pod对应分配的GPU、以及所述目标任务对应的所述GPU集合发送至所述插件。
12.根据权利要求10所述的系统,其特征在于,
所述调度器,还用于:根据所述每个Pod运行所需的GPU数量,统计得到整个所述目标任务对应所需的任务GPU数量,并将所述任务GPU数量设置在所述标注信息中;
所述调度器在用于将所述多个Pod发送至目标节点时,包括:选择所述多个节点中的其中一个节点,作为用于运行所述目标任务的目标节点,所述目标节点中可使用的GPU数量不低于所述任务GPU数量;并将所述目标任务对应的多个Pod发送至所述目标节点。
13.根据权利要求12所述的系统,其特征在于,所述目标节点还包括:代理控制器;
所述代理控制器,用于:在获取待分配的Pod时,根据所述Pod的标注信息中包括的任务标识,判断所述目标节点上是否已存在与所述任务标识对应的GPU集合;若判断结果是不存在,则根据所述待分配的Pod标注的所述任务GPU数量,由所述目标节点上选择所述任务GPU数量对应的多个GPU确定为所述GPU集合,并标注所述GPU集合中的各GPU的状态为已占用且与所述目标任务对应;以及,根据所述待分配的Pod所需数量的GPU,将所述Pod调度到所述GPU集合中的GPU上。
14.根据权利要求13所述的系统,其特征在于,
所述代理控制器,还用于:响应于判断结果是存在,由所述GPU集合中选择所述待分配的Pod所需数量的GPU分配。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1~7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110121360.7A CN112835695B (zh) | 2021-01-28 | 2021-01-28 | Pod间通信的方法和分布式计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110121360.7A CN112835695B (zh) | 2021-01-28 | 2021-01-28 | Pod间通信的方法和分布式计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835695A CN112835695A (zh) | 2021-05-25 |
CN112835695B true CN112835695B (zh) | 2022-12-23 |
Family
ID=75932291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110121360.7A Active CN112835695B (zh) | 2021-01-28 | 2021-01-28 | Pod间通信的方法和分布式计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835695B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204434B (zh) * | 2021-07-05 | 2021-09-21 | 易纳购科技(北京)有限公司 | 基于k8s的计划任务执行方法、装置及计算机设备 |
CN114003359A (zh) * | 2021-10-20 | 2022-02-01 | 上海交通大学 | 基于弹性持久的线程块的任务调度方法、系统及gpu |
CN115037747A (zh) * | 2022-05-31 | 2022-09-09 | 北京百度网讯科技有限公司 | 数据通信方法及装置、分布式系统、设备和介质 |
CN115145695B (zh) * | 2022-08-30 | 2022-12-06 | 浙江大华技术股份有限公司 | 资源调度方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858045A (zh) * | 2020-07-13 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种多任务gpu资源调度方法、装置、设备及可读介质 |
EP3767894A1 (de) * | 2019-07-19 | 2021-01-20 | Siemens Aktiengesellschaft | Verfahren zur datenkommunikation, arbeitsknoten, cluster, industrielles netzwerk, computerprogramm und computerlesbares medium |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885389B (zh) * | 2019-02-19 | 2021-07-16 | 浪潮云信息技术股份公司 | 一种基于容器的并行深度学习调度训练方法及系统 |
CN112231049A (zh) * | 2020-09-28 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 基于kubernetes的计算设备共享方法、装置、设备及存储介质 |
-
2021
- 2021-01-28 CN CN202110121360.7A patent/CN112835695B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3767894A1 (de) * | 2019-07-19 | 2021-01-20 | Siemens Aktiengesellschaft | Verfahren zur datenkommunikation, arbeitsknoten, cluster, industrielles netzwerk, computerprogramm und computerlesbares medium |
CN111858045A (zh) * | 2020-07-13 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种多任务gpu资源调度方法、装置、设备及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112835695A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112835695B (zh) | Pod间通信的方法和分布式计算系统 | |
US11704144B2 (en) | Creating virtual machine groups based on request | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
CN105511954B (zh) | 一种报文处理方法及装置 | |
US8122449B2 (en) | Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel | |
CN103309738A (zh) | 用户作业调度方法及装置 | |
CN109522090B (zh) | 资源调度方法及装置 | |
CN112148468B (zh) | 一种资源调度方法、装置、电子设备及存储介质 | |
CN114706596B (zh) | 容器部署方法、资源调度方法、装置、介质和电子设备 | |
CN108762687A (zh) | Io服务质量控制方法、装置、设备及存储介质 | |
CN114168302A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN103166845A (zh) | 数据处理方法和装置 | |
CN106571935B (zh) | 一种资源调度的方法与设备 | |
CN107741873A (zh) | 业务处理方法及装置 | |
CN111679918B (zh) | 一种消息传输方法及装置 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN102170401B (zh) | 一种数据的处理方法和设备 | |
CN109639599B (zh) | 网络资源调度方法及系统、存储介质及调度设备 | |
CN111475277A (zh) | 一种资源分配方法、系统、设备及机器可读存储介质 | |
CN105939242B (zh) | 实现虚拟系统的方法及装置 | |
CN116841720A (zh) | 资源配置方法、装置、计算机设备、存储介质及程序产品 | |
CN111245794B (zh) | 数据传输方法和装置 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
WO2014000188A1 (zh) | 时频资源分配消息发送方法、解析方法和装置及系统 | |
CN117041259B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |