CN114024858B - 一种任务执行方法、装置、设备及存储介质 - Google Patents
一种任务执行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114024858B CN114024858B CN202111293062.2A CN202111293062A CN114024858B CN 114024858 B CN114024858 B CN 114024858B CN 202111293062 A CN202111293062 A CN 202111293062A CN 114024858 B CN114024858 B CN 114024858B
- Authority
- CN
- China
- Prior art keywords
- topology
- communication
- task execution
- obtaining
- computing
- 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
Abstract
本公开提供了一种任务执行方法、装置、设备及存储介质,涉及计算机技术领域,尤其涉及云计算技术领域。具体实现方案为:获得分布式计算系统中各台设备的第一物理拓扑,其中,第一物理拓扑为:设备中计算单元间的拓扑;获得分布式计算系统中设备间的第二物理拓扑;根据第一物理拓扑和第二物理拓扑,生成分布式计算系统中计算单元间的总物理拓扑;获得应用程序对应的任务执行单元间的通信拓扑;对总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。应用本公开实施例提供的方案能够实现为应用程序提供分布式计算系统中的计算资源。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及云计算技术领域。
背景技术
由于分布式计算系统能够提供丰富的计算资源,因此,越来越多的大规模应用程序部署于分布式计算系统,基于分布式计算系统中的各个设备执行应用程序的各项任务。
为保证应用程序的各项任务顺利执行,需要针对各项任务分配计算资源。
发明内容
本公开提供了一种任务执行方法、装置、设备及存储介质。
根据本公开的一方面,提供了一种任务执行方法,包括:
获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
获得所述分布式计算系统中设备间的第二物理拓扑;
根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
获得应用程序对应的任务执行单元间的通信拓扑;
对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。根据本公开的另一方面,提供了一种任务执行装置,包括:
第一物理拓扑获得模块,用于获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
第二物理拓扑获得模块,用于获得所述分布式计算系统中设备间的第二物理拓扑;
总物理拓扑获得模块,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信拓扑获得模块,用于获得应用程序对应的任务执行单元间的通信拓扑;
拓扑映射模块,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任务执行方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述任务执行方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述任务执行方法。
由以上可见,本公开实施例提供的方案中,第一物理拓扑是分布式计算系统中各台设备中计算单元间的拓扑,第二物理拓扑是分布式计算系统中各台设备之间的拓扑,所以,基于第一物理拓扑和第二物理拓扑生成的总物理拓扑不仅能够反映各台设备中计算单元间的拓扑,还能够反映设备间计算单元间的拓扑。通信拓扑反映了应用程序对应的任务执行单元间的拓扑。在上述基础上,对总物理拓扑和通信拓扑进行映射时,能够在整个分布式计算系统中各台设备内的计算单元中进行映射,这样为各个任务执行单元分配计算资源时也就考虑了整个分布式计算系统各台设备内的计算单元,进而本公开实施例提供的方案中不仅能够实现为各任务执行单元分配计算资源,还能够优化所分配的计算资源,有效保证各任务执行单元顺利执行任务。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1a为本公开实施例提供的第一种任务执行方法的流程示意图;
图1b为本公开实施例提供的第一物理拓扑的示意图;
图1c为本公开实施例提供的总物理拓扑的示意图;
图1d为本公开实施例提供的通信拓扑的示意图;
图2为本公开实施例提供的第二种任务执行方法的流程示意图;
图3为本公开实施例提供的第三种任务执行方法的流程示意图;
图4为本公开实施例提供的第四种任务执行方法的流程示意图;
图5为本公开实施例提供的一种任务执行方法的工作流程图;
图6为本公开实施例提供的第一种任务执行装置的结构示意图;
图7为本公开实施例提供的第二种任务执行装置的结构示意图;
图8为本公开实施例提供的第三种任务执行装置的结构示意图;
图9为本公开实施例提供的第四种任务执行装置的结构示意图;
图10是用来实现本公开实施例的任务执行方法的电子设备的框图;
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面对本公开实施例所提供方案的应用场景进行说明。
如今各种应用程序的功能越来越丰富,所提供功能的精度也越来越高,与此同时,应用程序在运行过程中需要的计算资源也越来越多。由于一台设备能够提供的计算资源有限,为保证上述应用程序正常且高效的运行,实际应用中越来越多的引入分布式计算系统,这样可以由上述系统中的多台设备联合为应用程序提供计算资源。
例如,实现深度学习模型训练的应用程序。运行上述应用程序对深度学习模型进行训练时,需要使用大量的样本数据对深度学习模型进行训练,另外,深度学习模型的层级也越来越多,所以,综合上述情况,运行上述应用程序需要的计算资源较多,这样可以由分布式计算系统中的各台设备为上述应用程序提供计算资源,保证上述应用程序顺利执行。例如,由分布式计算系统中的各台设备为深度学习模型中的不同层级对应的任务提供计算资源,这样不仅可以保证各个层级对应的任务顺利执行,还能够在不同层级对应的任务满足并行执行条件时,基于所分配的资源并行执行各个任务。
上述针对深度学习模型训练的场景仅仅为本公开实施例所提供方案的一种应用场景,本公开实施例提供的方案还可以应用于其他需要大量计算资源的场景。
下面对本公开实施例提供的任务执行方法进行具体说明。
参见图1a,图1a为本公开实施例提供的第一种任务执行方法的流程示意图,上述方法包括以下步骤S101-S105。
步骤S101:获得分布式计算系统中各台设备的第一物理拓扑。
上述分布式计算系统可以是基于各种已知分布式框架的系统,其中,分布式系统所采用的框架可以根据应用场景、设计需求等因素确定。分布式系统中包括多台设备,每一设备中可以包含至少一种计算单元,另外,一台设备中可以包括多个同一类型的计算单元,这些计算单元可以执行任务指示的数据处理。
例如,上述计算单元可以是CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、TPU(Tensor Processing Unit,张量处理单元)、NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等器件中的核。
在一台设备中存在多个计算单元的情况下,该设备内的各个计算单元之间可以进行通信,因此,可以基于该设备中计算单元之间的拓扑表征各计算单元之间的通信情况。为便于表述,本公开实施例中将设备中计算单元间的拓扑称为第一物理拓扑。
参见图1b,示出了一种第一物理拓扑。该图中方框表示的是节点,各个节点代表设备中的计算单元,该图中的连线代表节点与节点之间的边,节点间存在边,则表示两节点对应的计算单元之间存在通信链路,可以进行数据通信。
具体的,可以通过以下方式获得分布式计算系统中各台设备的第一物理拓扑。
一种实施方式中,采用预设的物理拓扑提取工具提取分布式计算系统中各台设备的第一物理拓扑。
例如,在设备中计算单元的布局架构是NVIDIA(英伟达)架构时,可以采用NVIDIA提供的NVML(英伟达管理库)和hwloc(硬件定位库)工具提取设备中计算单元的第一物理拓扑。
另一种实施方式中,针对分布式计算系统中的每一台设备,可以先探测设备中存在的计算单元以及各计算单元间的通信链路,然后以各计算单元为节点、计算单元间的通信链路为边,构建第一物理拓扑。具体实施过程可以详见后续图2所示实施例中步骤S201-S204,这里暂不详述。
上述通信链路是计算单元间进行数据交互的链路。
步骤S102:获得分布式计算系统中设备间的第二物理拓扑。
分布式计算系统中包含多台设备,每两台设备之间可能能够直接通信,也可能不能直接通信。上述第二物理拓扑是分布式计算系统中各台设备之间的物理拓扑,因此,该物理拓扑能够反映设备间能否进行直接通信。
一种实施方式中,探测分布式计算系统中存在的设备以及各设备间的通信链路,以各设备为节点,基于探测到的通信链路构建第二物理拓扑。
上述通信链路是设备间进行数据交互的链路。
具体实施过程可以详见后续图3所示实施例中的步骤S302-S306,这里暂不详述。
步骤S103:根据第一物理拓扑和第二物理拓扑,生成分布式计算系统中计算单元间的总物理拓扑。
上述总物理拓扑是分布式计算系统中各台设备的全部计算单元之间的物理拓扑,这样该物理拓扑能够反应分布式计算系统中所有计算单元之间的通信情况。
参见图1c,示出了一种总物理拓扑的示意图。该图中的方框表示的是节点,各个节点代表设备中的计算单元,其中,左侧四个节点为一台设备中的计算单元,右侧四个节点为另一台设备中的计算单元。该图中的连线表示节点与节点之间的边,节点间存在边,则表示两节点对应的计算单元之间存在通信链路,可以进行数据通信。另外,从图1c还可以看出两台设备中的部分计算单元之间存在通信链路。
一种实施方式中,可以根据第二物理拓扑确定分布式计算系统中各台设备与其它设备之间是否存在通信链路,可以认为存在通信链路的设备各自的计算单元之间也存在通信链路;基于此,可以在第一物理拓扑的基础上,为存在通信链路的设备中计算单元对应的节点之间建立新边,得到总物理拓扑。
当然,存在通信链路的两设备间也可以仅有部分计算单元存在通信链路。上述部分计算单元可以依据所能够进行的数据处理的类型、能够提供的计算资源量等信息确定。
例如,假设,设备X包括计算单元X1、X2和X3,设备Y包括计算单元Y1、Y2和Y3,设备X与设备Y之间存在通信链路,这时可能是X1、X2和X3分别与Y1、Y2和Y3之间存在通信链路,也可能是X1、X2和X3中的一部分与Y1、Y2和Y3中的一部分存在通信链路,如,X1与Y1之间存在通信链路,X3与Y3之间存在通信链路。
步骤S104:获得应用程序对应的任务执行单元间的通信拓扑。
应用程序在运行过程中一般需要执行多个任务,每一任务通过一个任务执行单元完成,因此,上述任务执行单元可以理解为应用程序中执行任务的主体。具体的,任务执行单元可以包括应用程序创建的进程和/或在已创建进程中创建的线程。
具体的,可以在每一已创建进程中创建至少2个线程。
参见图1d,示出了一种通信拓扑的示意图。
该图中的圆形表示的是节点,各个节点表示应用程序对应的任务执行单元,在一个矩形框内的节点对应一个进程。在一个矩形框中包括两个圆形时,这两个圆形对应的节点表示的是一个进程中创建的两个线程。在一个矩形框中包括一个圆形时,这一个圆形对应的节点表示的是一个进程。该图中的连线表示节点与节点之间的边,节点间存在边,则表示两节点对应的进程或线程之间存在通信链路,可以进行数据通信。
由上述描述可以看出,任务执行单元不仅可以包括进程,还可以包括进程中创建的线程,这样在执行应用程序中的任务时,不仅可以通过进程执行,还可以通过进程中创建的线程执行,从而能够拓宽任务执行单元的范围,使得更多的任务执行单元参与到应用程序的运行过程中来。另外,后续为每一个任务执行单元分配计算单元时,不仅可以为进程分配计算资源,还可以为线程分配计算资源,由于一个进程下可以创建多个线程,因此,可以为一个进程分配多份计算资源,进而提高应用程序对应的任务执行单元的任务执行效率。
本公开的一个实施例中,可以获取应用程序对应的任务执行单元间的通信数据,根据通信数据构建通信拓扑。
上述通信数据可以通过不同的方式获取,详见后续图4所示实施例中的步骤S404这里暂不详述。
具体的,可以通过以下方式获取任务执行单元间的通信拓扑。
一种实施方式中,由于应用程序可以对应有多个不同的任务执行单元,每一任务执行单元执行不同的任务,在任务处理过程中这些任务执行单元之间可能会存在数据交互需求,若两个任务执行单元之间存在数据交互需求,则可以认为两个任务执行单元之间存在通信链路。基于上述情况,在构建上述通信拓扑时,可以以各任务执行单元为节点,任务执行单元间的通信链路为边,构建上述通信拓扑。详见后续图4所示实施例中的步骤S404-S407,这里暂不详述。
另一种实施方式中,可以根据预先存储的应用程序对应任务执行单元间的通信数据,预先生成任务执行单元间的通信拓扑,并存储所生成的通信拓扑,这样在执行本公开实施例提供的方案之前,应用程序对应的任务执行单元间的通信拓扑已经生成,这样在执行上述步骤S104时,可以从预存的通信拓扑中,获得应用程序对应的任务执行单元间的通信拓扑。
其中,上述预先存储的通信数据可以是用户提供的,还可以是通过预先运行应用程序获得的。
由于通信拓扑是预先生成,所以,本实施方式中能够快速的获得通信拓扑,从而有利于提高为任务执行单元分配计算资源的效率,进而提高任务执行单元执行任务的效率。
步骤S105:对总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
由于总物理拓扑反映的是分布式计算系统中各计算单元之间的通信情况,通信拓扑反映的是任务执行单元之间的通信情况,所以,对总物理拓扑和通信拓扑进行映射后,所得映射结果能够体现任务执行单元与计算单元之间的映射关系。
本步骤中,可以针对总物理拓扑和通信拓扑,采用图映射算法构建总物理拓扑和通信拓扑之间的映射关系,根据映射关系将各任务执行单元对应的计算单元提供的计算资源分配给各任务执行单元,这样可以使得各任务执行单元基于所分配的资源执行任务,完成应用程序的执行过程。
一种实施方式中,上述图映射算法可以是基于多变量求极值的图切分算法。
由以上可见,本公开实施例提供的方案中,第一物理拓扑是分布式计算系统中各台设备中计算单元间的拓扑,第二物理拓扑是分布式计算系统中各台设备之间的拓扑,所以,基于第一物理拓扑和第二物理拓扑生成的总物理拓扑不仅能够反映各台设备中计算单元间的拓扑,还能够反映设备间计算单元间的拓扑。通信拓扑反映了应用程序对应的任务执行单元间的拓扑。在上述基础上,对总物理拓扑和通信拓扑进行映射时,能够在整个分布式计算系统中各台设备内的计算单元中进行映射,这样为各个任务执行单元分配计算资源时也就考虑了整个分布式计算系统各台设备内的计算单元,进而本公开实施例提供的方案中不仅能够实现为各任务执行单元分配计算资源,还能够优化所分配的计算资源,有效保证各任务执行单元顺利执行任务。
在获得第一物理拓扑时,除了前述图1所示实施中步骤S101处提及的实现方式外,还可以通过下述图2所示实施例中提及的步骤S201-S204实现。
参见图2,提供了第二种任务执行方法的流程示意图,本实施例中任务执行方法包括以下步骤S201-S208。
步骤S201:探测设备中存在的计算单元以及各计算单元间的通信链路。
一种实施方式中,可以使用预设的物理拓扑探测工具探测设备中存在的计算单元以及各计算单元间的通信链路。
例如,分布式计算系统中的设备可以访问预设的通信库,上述通信库用于存储物理拓扑探测工具等各种工具以及这些工具需要使用的组件。这种情况下,分布式计算系统中的设备分别连接到上述通信库,并调用通信库中针对设备内计算单元的物理拓扑探测工具,这时物理拓扑探测工具使用通信库中存储的组件对设备中的计算单元以及计算单元之间的通信链路进行探测,然后物理拓扑探测工具将探测结果反馈给上述设备。
其中,上述通信库可以包括针对各种计算单元架构的探测工具,这样可以对多种架构下计算单元的物理拓扑进行探测。另外,上述通信库可以包括对不同通信方式的计算单元进行探测的探测工具,例如,P2P(Point-to-Point,点对点)通信方式、基于collective语义进行通信的方式等,这样可以增强本公开实施例所提供方案的扩展性和可移植性。
步骤S202:以各计算单元为节点,并以计算单元间的通信链路为边,构建第一拓扑。
本步骤中所构建的第一拓扑中,每一节点与一个计算单元相对应。在得到第一拓扑后,通过观察第一拓扑即可获知哪些节点之间存在边,进而可以获知哪些节点对应的计算单元之间存在通信链路。
步骤S203:获得各计算单元的计算能力表征值,并获得各通信链路的通信能力表征值。
受各个计算单元硬件属性的影响,各个计算单元的计算能力可能会有所差异,在应用中可以采用计算能力表征值对计算单元的计算能力进行表征,这样通过查看计算能力表征值,即可获知计算单元的计算能力强弱。一种实施方式中,上述计算能力表征值可以包括计算单元的算力信息。例如,上述算力信息可以是计算单元的可用计算资源量、硬件型号等信息。
受各个计算单元硬件属性、通信需求等因素的影响,每两个计算单元间通信链路的通信能力会有所差异,在应用中可以采用通信能力表征值对计算单元间通信链路的通信能力进行表征,这样通过查看通信能力表征值,即可获知两个计算单元之间通信链路的通信能力。其中,上述通信能力可以是通信链路的通信质量和通信可靠度等。
一种实施方式中,上述通信能力表征值可以包括以下信息中的至少一种:通信链路连接的计算单元间的物理距离、通信链路的链路带宽、通信链路的通信延迟等信息。
由于上述计算能力表征值和通信能力表征值可以通过多种信息综合得到,所以能够较为全面地表征各计算单元的计算能力和各通信链路的通信能力。
下面对获取计算单元的计算能力表征值和通信链路的通信能力表征值的方式进行说明。
一种实施方式中,设备中可以预存有各个计算单元的算力信息,这种情况下,可以通过直接从设备中读取计算单元的算力信息的方式,获得计算能力表征值。
另一种实施方式中,在使用物理拓扑探测工具探测设备中存在的计算单元以及各计算单元间的通信链路时,可以统计探测到的通信链路连接的计算单元间的物理距离、通信链路的链路带宽、通信链路的通信延迟信息,从而得到通信能力表征值。
步骤S204:基于所获得的计算能力表征值设置第一拓扑中节点的属性,并基于所获得的通信能力表征值设置第一拓扑中边的属性,得到第一物理拓扑。
在上述步骤S202中已经生成了第一拓扑后,虽然通过第一拓扑能够获知各个节点对应的计算单元间的通信链路,但是为了能够更加清楚直观的获知各个节点对应的计算单元的计算能力以及各条通信链路的通信能力,本实施例提供的方案中,还为各个节点设置了与计算能力相关的属性,为各条边设置了与通信能力相关的属性。
本步骤中,在设置第一拓扑中节点的属性时,可以直接将算力信息设置为第一拓扑中节点的属性值。这样第一拓扑中节点的上述属性值越大,表示该节点对应的计算单元的计算能力越强。
在设置第一拓扑中边的属性时,一种实施方式中,在通信能力表征值包括通信链路连接的计算单元间的物理距离、通信链路的链路带宽和通信链路的通信延迟的情况下,可以将通信链路连接的计算单元间的物理距离、通信链路的链路带宽和通信链路的通信延迟分别作为第一拓扑中边的属性的子属性值进行设置,这样边的属性中可以存在多个属性值。这样在判断边对应的通信链路对应的通信能力时,可以从各个属性值对应的不同方面分别进行判断。
另一种实施方式中,在通信能力表征值包括通信链路连接的计算单元间的物理距离、通信链路的链路带宽和通信链路的通信延迟的情况下,可以将上述三种信息通过预设的权值进行加权计算,将得到的计算结果设置为第一拓扑中边的属性值,其中,上述信息预设的权值的绝对值越大,表示该信息代表的属性对于评估通信能力时越重要。另外,可以为权值设置正负,这样经过加权计算后的属性值的大小可以表征通信链路通信能力。
例如,可以将通信链路连接的计算单元间的物理距离的权值设置为0.2,将通信链路的通信延迟的权值设置为0.4,将通信链路的链路带宽的权值设置为-0.5,若一条通信链路连接的计算单元间的物理距离、通信链路的通信延迟和通信链路的链路带宽分别为v1、v2和v3,则该通信链路对应的边的属性值可以经过加权求和得到:0.2*v1+0.4*v2-0.5*v3,此时,第一拓扑中边的属性值越小,表示该边对应的通信链路的通信能力越强。
步骤S205:获得分布式计算系统中设备间的第二物理拓扑。
步骤S206:根据第一物理拓扑和第二物理拓扑,生成分布式计算系统中计算单元间的总物理拓扑。
步骤S207:获得应用程序对应的任务执行单元间的通信拓扑。
步骤S208:对总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
上述步骤S205-S208分别与前述图1所示的步骤S102-S105相同,这里不再详述。
由以上可见,本实施例提供的方案中,基于计算单元的算力表征值设置第一拓扑的节点的属性,基于计算单元间的通信链路的通信能力表征值设置第一拓扑的边的属性,从而得到第一物理拓扑,这样第一物理拓扑不仅能够表征出哪些计算单元之间存在通信链路,还能够表征出计算单元的计算能力和计算单元间的通信链路的通信能力,使得依据第一物理拓扑得到的总物理拓扑图能够表征的信息更加丰富,进而使得后续生成的总物理拓扑和通信拓扑间的映射关系更加准确,为各个任务执行单元分配的计算资源更加准确,从而提高了各任务执行单元顺利执行的概率。
在获得第二物理拓扑时,除了前述图1所示实施中步骤S102处提及的实现方式外,还可以通过下述图3所示实施例中提及的步骤S302-S306实现。
参见图3,图3为本公开实施例提供的第三种任务执行方法的流程示意图,本实施例中任务执行方法包括以下步骤S301-S309。
步骤S301:获得分布式计算系统中各台设备的第一物理拓扑。
上述步骤S301与前述图1实施例中所示的步骤S101相同,这里不再详述。
步骤S302:探测分布式计算系统中存在的设备以及各设备间的通信链路。
一种实施方式中,可以使用预设的物理拓扑探测工具探测分布式计算系统中存在的设备以及各设备间的通信链路。
例如,分布式计算系统中的设备可以访问预设的通信库,上述通信库用于存储物理拓扑探测工具等各种工具以及这些工具需要使用的组件。这种情况下,分布式计算系统中的设备分别连接到上述通信库,并调用通信库中的针对设备间的物理拓扑探测工具,这时物理拓扑探测工具使用通信库中存储的组件对分布式计算系统中存在的设备以及各设备间的通信链路进行探测,并将探测结果反馈给上述设备。
步骤S303:以各设备为节点,并以各设备间的通信链路为边,构建第二拓扑。
本步骤中所构建的第二拓扑中,每一节点与一台设备相对应。在得到第二拓扑后,通过观察第二拓扑即可获知哪些节点之间存在边,进而可以获知哪些节点对应的设备之间存在通信链路。
步骤S304:获得分布式计算系统中设备的IP地址。
一种实施方式中,分布式计算系统中的各台设备可以获得自身网卡的IP地址,然后将所获得的IP地址发送给作为执行主体的电子设备,从而上述电子设备获得分布式系统中各台设备的IP地址。
步骤S305:获得基于所获得的IP地址、通过路由追踪方式确定的分布式计算系统中设备间的跳数。
一种实施方式中,作为执行主体的电子设备获得各设备的IP地址后,可以将所获得的IP地址发送给各设备,然后各设备可以对其它设备的IP地址进行路由追踪,根据路由追踪的结果确定与其他设备间的跳数,并向上述电子设备发送所确定的跳数。
例如,各设备可以通过traceroute(跟踪路由)命令追踪其它设备的IP地址,获得追踪结果,然后根据追踪结果确定与其他设备之间的IP跳数。
步骤S306:基于所获得的跳数设置第二拓扑中边的属性,得到分布式计算系统中设备间的第二物理拓扑。
在上述步骤S303中已经生成了第二拓扑,虽然通过第二拓扑能够获知各个节点对应的设备间的通信链路,但是为了能够更加清楚直观的获知各个设备间的连接情况,本实施例提供的方案中,还可以在第二拓扑的基础上使用设备间的跳数设置第二拓扑中边的属性,从而得到第二物理拓扑。这样可以依据第二物理拓扑中边的属性获知存在通信链路的两台设备是直接连接的,还是通过其他设备间接连接的。
步骤S307:根据第一物理拓扑和第二物理拓扑,生成分布式计算系统中计算单元间的总物理拓扑。
由于第二物理拓扑的边设置了属性,因此,在生成总物理拓扑时,可以根据第二物理拓扑的边设置的属性获知节点对应的设备间的跳数,进而能够判断两台设备间的连接情况。例如,若两台设备对应的节点间的边的属性值为1,则可以认为两台设备直接连接;若两台设备对应的节点间的边的属性值大于1,则可以认为两台设备是经由至少一台其他设备连接的。
鉴于上述情况,一种实施方式中,在生成上述总物理拓扑时,可以先根据第二物理拓扑中各条边上设置的属性,确定分布式计算系统中直接连接的设备,然后在第一物理拓扑的基础上,为直接连接的设备中计算单元对应的节点之间建立新边,得到总物理拓扑。
为直接连接的两台设备中计算单元对应的节点建立新边时,可以仅为两台设备中部分计算单元对应的节点建立新边。上述部分计算单元可以依据所能够进行的数据处理的类型、能够提供的计算资源量等信息确定。
步骤S308:获得应用程序对应的任务执行单元间的通信拓扑。
步骤S309:对总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
上述步骤S308-S309分别与前述图1所示的步骤S104-S105相同,这里不再详述。
由以上可见,本实施例提供的方案中,不仅根据分布式计算系统中存在的设备以及设备间的通信链路构建了第二拓扑,还获得了各台设备间的IP跳数,这样,基于各设备间的IP跳数为第二拓扑中的边设置属性值得到第二物理拓扑后,第二物理拓扑不仅能够表征哪些设备间存在通信链路,还能够表征出存在链路的设备间的IP跳数,进而能够准确的得到总物理拓扑,使得所获得总物理拓扑更加准确。
在获得通信拓扑时,除了前述图1所示实施中步骤S104处提及的实现方式外,还可以通过下述图4所示实施例中提及的步骤S404-S408实现。
参见图4,图4为本公开实施例提供的第四种任务执行方法的流程示意图,本实施例中任务执行方法包括以下步骤S401-S408。
步骤S401:获得分布式计算系统中各台设备的第一物理拓扑。
步骤S402:获得分布式计算系统中设备间的第二物理拓扑。
步骤S403:根据第一物理拓扑和第二物理拓扑,生成分布式计算系统中计算单元间的总物理拓扑。
上述步骤S401-S403分别与前述图1实施例中所示的步骤101-103相同,这里不再详述。
步骤S404:获得应用程序对应的任务执行单元间的通信数据。
上述通信数据可以包括任务执行单元间的通信记录、任务执行单元的计算资源需求量和任务执行单元间的通信数据量等信息,其中,上述通信记录中可以记录有通信的起止时间、通信时长、任务执行单元所执行任务的标识、通信链路标识等信息。
具体的,可以通过不同的方式获得应用程序对应的任务执行单元间的通信数据。
第一种方式:获得预设的数据收集工具收集的应用程序运行过程中产生的任务执行单元间的通信数据。
例如,通过NVIDIA开发的MPI profiling(Multi Point Interface profiling,多点接口探测)工具收集应用程序运行过程中产生的任务执行单元间的通信数据。当然,还可以使用其他的数据收集工具收集上述通信数据,本公开实施例并不限定所使用的具体工具,只要能够收集到上述通信数据的工具均可以使用。
使用预设的数据收集工具收集通信数据,这样能够针对不同的应用场景采用不同的数据收集工具,提高了本公开实施例所提供方案的使用灵活性。
第二种方式:接收通信库在目标时间段内通过预设的数据发送接口发送的目标通信数据,将接收的目标通信数据确定为应用程序对应的任务执行单元间的通信数据。
其中,目标时间段为:从应用程序启动至结束之间的时间段,目标通信数据为:通信库通过预设的数据抓取接口实时抓取的任务执行单元间进行通信产生的数据。
为通信库设置数据发送接收接口和数据抓取接口后,在各种不同的应用场景中均访问上述接口,通过统一的接口实现通信数据获取,从而提高了本公开实施例所提供方案的兼容性。
第三种方式,获得用户提供的应用程序对应的任务执行单元间的通信数据。
在一些情况下,用户对应用程序的框架较为熟悉,在不运行应用程序的情况下,也能够知道任务执行单元间进行数据通信的情况,这种情况下,上述通信数据可以由用户提前提供,从而免去了运行应用程序获得通信数据的过程,进而提高为任务执行单元分配计算资源的效率,从而能够提高任务执行单元执行任务的效率。
步骤S405:根据所获得的通信数据,确定任务执行单元间的通信链路、任务执行单元的计算资源需求量和任务执行单元间的通信数据量。
若通信数据中存在一任务执行单元与另一任务执行单元间的通信记录,那么可以认为上述两个任务执行单元之间存在通信链路,这样可以对上述通信记录进行解析,从而获得两个任务执行单元间的通信链路,另外,可以根据上述通信记录从通信数据中获得对应的计算资源需求量和任务执行单元间的通信数据量。
步骤S406:以各任务执行单元为节点,并以各任务执行单元间的通信链路为边,构建第三拓扑。
本步骤中所构建的第三拓扑中,每一节点与一个任务执行单元相对应。在得到第三拓扑后,通过观察第三拓扑即可获知哪些节点之间存在边,进而可以获知哪些节点对应的任务执行单元之间存在通信链路。
步骤S407:基于所获得的计算资源需求量设置第三拓扑中节点的属性,并基于所获得的通信数据量设置第三拓扑中边的属性,得到应用程序对应的任务执行单元间的通信拓扑。
在上述步骤S406中已经生成了第三拓扑,虽然通过第三拓扑能够获知各个节点对应的任务执行单元间的通信链路,但是为了能够更加清楚直观的获知各个节点对应的任务执行单元的计算资源需求量以及各条通信链路的通信数据量,本实施例提供的方案中,还使用计算资源需求量为第三拓扑的节点设置了属性,使用数据通信量第三拓扑的边设置了属性。
步骤S408:对总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
从上述步骤S408可以看出,本实施例提供的方案中,通信拓扑不仅仅包含了任务执行单元对应的节点、节点之间的边,节点和边还分别设置了计算资源需求量和数据通信量作为属性,这样在对总物理拓扑和通信拓扑进行拓扑映射时,可以进一步的将各节点对应的任务执行单元的计算资源需求量,以及任务执行单元间的数据通信量考虑在内,使得映射后总物理拓扑中节点对应的计算单元能够提供的计算资源量与通信拓扑中节点所对应任务执行单元的计算资源需求量更加匹配,映射后总物理拓扑中边对应的通信链路的数据通信量与通信拓扑中边对应的通信链路的数据通信量也更加匹配。
由以上可见,本实施例提供的方案中基于所获得的计算资源需求量设置第三拓扑中节点的属性,并基于所获得的通信数据量设置第三拓扑中边的属性,得到应用程序对应的任务执行单元间的通信拓扑,这样通信拓扑不仅可以表征哪些任务执行单元间存在通信链路,还可以表征每个任务执行单元所需的计算资源和任务执行单元间的通信数据量,这样使得通信拓扑能够提供的信息更加丰富多样化,为总物理拓扑和通信拓扑进行映射提供了跟多的参考信息,使得映射结果更加准确,从而能够提高为任务执行单元分配计算资源的准确率,进而提高任务执行单元执行任务的效率。
需要说明的是,前述各个实施例中获得总物理拓扑的过程可以与获得通信拓扑的过程并行之前,也可以串行执行,本公开实施例并不对此进行限定。
以下结合图5,对本公开实施例提供的任务执行方法进行具体说明。图5为本公开实施例提供的一种任务执行方法的工作流程图。
首先,方法开始执行时,判断电子设备本地是否存储有总物理拓扑,若电子设备本地没有存储有总物理拓扑,进行物理拓扑探测,从而获得总物理拓扑;若电子设备本地存储有总物理拓扑,则从电子设备本地获得总物理拓扑。
获得了总物理拓扑之后,判断用户是否能够提供通信拓扑,若用户不能提供通信拓扑,则运行应用程序,进行通信拓扑探测,获得通信拓扑,并对总物理拓扑和通信拓扑进行映射,生成映射文件;若用户提供了通信拓扑,则使用用户提供的通信拓扑,对总物理拓扑和通信拓扑进行映射,生成映射文件。
然后依据上述映射文件中记录的内容,为应用程序的各任务执行单元分配计算资源,任务执行单元使用所分配的计算资源执行任务。
与上述图像搜索方法相对应的,本公开还提供了一种任务执行装置。
参见图6,图6为本公开实施例提供的第一种任务执行装置的结构示意图,上述装置包括以下模块601-605。
第一物理拓扑获得模块601,用于获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
第二物理拓扑获得模块602,用于获得所述分布式计算系统中设备间的第二物理拓扑;
总物理拓扑获得模块603,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信拓扑获得模块604,用于获得应用程序对应的任务执行单元间的通信拓扑;
拓扑映射模块605,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
由以上可见,本公开实施例提供的方案中,第一物理拓扑是分布式计算系统中各台设备中计算单元间的拓扑,第二物理拓扑是分布式计算系统中各台设备之间的拓扑,所以,基于第一物理拓扑和第二物理拓扑生成的总物理拓扑不仅能够反映各台设备中计算单元间的拓扑,还能够反映设备间计算单元间的拓扑。通信拓扑反映了应用程序对应的任务执行单元间的拓扑。在上述基础上,对总物理拓扑和通信拓扑进行映射时,能够在整个分布式计算系统中各台设备内的计算单元中进行映射,这样为各个任务执行单元分配计算资源时也就考虑了整个分布式计算系统各台设备内的计算单元,进而本公开实施例提供的方案中不仅能够实现为各任务执行单元分配计算资源,还能够优化所分配的计算资源,有效保证各任务执行单元顺利执行任务。
本公开的一个实施例中,所述应用程序对应的任务执行单元包括:进程和/或进程中创建的线程。
由上述描述可以看出,任务执行单元不仅可以包括进程,还可以包括进程中创建的线程,这样在执行应用程序中的任务时,不仅可以通过进程执行,还可以通过进程中创建的线程执行,从而能够拓宽任务执行单元的范围,使得更多的任务执行单元参与到应用程序的运行过程中来。另外,后续为每一个任务执行单元分配计算单元时,不仅可以为进程分配计算资源,还可以为线程分配计算资源,由于一个进程下可以创建多个线程,因此,可以为一个进程分配多份计算资源,进而提高应用程序对应的任务执行单元的任务执行效率。
本公开的一个实施例中,所述通信拓扑获得模块,具体用于从预存的通信拓扑中,获得应用程序对应的任务执行单元间的通信拓扑,其中,所述预存的通信拓扑包括:根据预先存储的所述应用程序所对应任务执行单元间的通信数据预先生成的任务执行单元间的通信拓扑。
由于通信拓扑是预先生成,所以,本实施方式中能够快速的获得通信拓扑,从而有利于提高为任务执行单元分配计算资源的效率,进而提高任务执行单元执行任务的效率。
参见图7,图7为本公开实施例提供的第二种任务执行装置的结构示意图,上述装置包括以下模块701-709。
第一链路探测子模块701,用于探测设备中存在的计算单元以及各计算单元间的通信链路;
第一拓扑构建子模块702,用于以各计算单元为节点,并以计算单元间的通信链路为边,构建第一拓扑;
计算能力表征值获得子模块703,用于获得各计算单元的计算能力表征值;
通信能力表征值获得子模块704,用于获得各通信链路的通信能力表征值;
第一属性值设置子模块705,用于基于所获得的计算能力表征值设置所述第一拓扑中节点的属性,并基于所获得的通信能力表征值设置所述第一拓扑中边的属性,得到第一物理拓扑。
第二物理拓扑获得模块706,用于获得所述分布式计算系统中设备间的第二物理拓扑;
总物理拓扑获得模块707,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信拓扑获得模块708,用于获得应用程序对应的任务执行单元间的通信拓扑;
拓扑映射模块709,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
由以上可见,本实施例提供的方案中,基于计算单元的算力表征值设置第一拓扑的节点的属性,基于计算单元间的通信链路的通信能力表征值设置第一拓扑的边的属性,从而得到第一物理拓扑,这样第一物理拓扑不仅能够表征出哪些计算单元之间存在通信链路,还能够表征出计算单元的计算能力和计算单元间的通信链路的通信能力,使得依据第一物理拓扑得到的总物理拓扑图能够表征的信息更加丰富,进而使得后续生成的总物理拓扑和通信拓扑间的映射关系更加准确,为各个任务执行单元分配的计算资源更加准确,从而提高了各任务执行单元顺利执行的概率。
本公开的一个实施例中,所述计算能力表征值获得子模块,具体用于获得各计算单元的算力信息,将各计算单元的算力信息作为各计算单元的计算能力表征值;和/或所述通信能力表征值获得子模块,具体用于针对各通信链路获得以下信息中的至少一种,将所获得的信息确定为各通信链路的通信能力表征值:通信链路的链路带宽;通信链路的通信延迟;通信链路连接的计算单元间的物理距离。
由于上述计算能力表征值和通信能力表征值可以通过多种信息综合得到,所以能够较为全面地表征各计算单元的计算能力和各通信链路的通信能力。
参见图8,图8为本公开实施例提供的第三种任务执行装置的结构示意图,上述装置包括以下模块801-809。
第一物理拓扑获得模块801,用于获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
第二链路探测子模块802,用于探测所述分布式计算系统中存在的设备以及各设备间的通信链路;
第二拓扑构建子模块803,用于以各设备为节点,并以各设备间的通信链路为边,构建第二拓扑;
IP地址获得子模块804,用于获得所述分布式计算系统中设备的IP地址;
跳数获得子模块805,用于获得基于所获得的IP地址、通过路由追踪方式确定的所述分布式计算系统中设备间的跳数;
第二属性值设置子模块806,用于基于所获得的跳数设置所述第二拓扑中边的属性,得到所述分布式计算系统中设备间的第二物理拓扑。
总物理拓扑获得模块807,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信拓扑获得模块808,用于获得应用程序对应的任务执行单元间的通信拓扑;
拓扑映射模块809,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
由以上可见,本实施例提供的方案中,不仅根据分布式计算系统中存在的设备以及设备间的通信链路构建了第二拓扑,还获得了各台设备间的IP跳数,这样,基于各设备间的IP跳数为第二拓扑中的边设置属性值得到第二物理拓扑后,第二物理拓扑不仅能够表征哪些设备间存在通信链路,还能够表征出存在链路的设备间的IP跳数,进而能够准确的得到总物理拓扑,使得所获得总物理拓扑更加准确。
参见图9,图9为本公开实施例提供的第四种任务执行装置的结构示意图,上述装置包括以下模块901-908。
第一物理拓扑获得模块901,用于获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
第二物理拓扑获得模块902,用于获得所述分布式计算系统中设备间的第二物理拓扑;
总物理拓扑获得模块903,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信数据获得子模块904,用于获得应用程序对应的任务执行单元间的通信数据;
属性值确定子模块905,用于根据所获得的通信数据,确定任务执行单元间的通信链路、任务执行单元的计算资源需求量和任务执行单元间的通信数据量;
第三拓扑构建子模块906:以各任务执行单元为节点,并以各任务执行单元间的通信链路为边,构建第三拓扑;
第三属性值设置子模块907,用于基于所获得的计算资源需求量设置所述第三拓扑中节点的属性,并基于所获得的通信数据量设置所述第三拓扑中边的属性,得到所述应用程序对应的任务执行单元间的通信拓扑。
拓扑映射模块908,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
由以上可见,本实施例提供的方案中基于所获得的计算资源需求量设置第三拓扑中节点的属性,并基于所获得的通信数据量设置第三拓扑中边的属性,得到应用程序对应的任务执行单元间的通信拓扑,这样通信拓扑不仅可以表征哪些任务执行单元间存在通信链路,还可以表征每个任务执行单元所需的计算资源和任务执行单元间的通信数据量,这样使得通信拓扑能够提供的信息更加丰富多样化,为总物理拓扑和通信拓扑进行映射提供了跟多的参考信息,使得映射结果更加准确,从而能够提高为任务执行单元分配计算资源的准确率,进而提高任务执行单元执行任务的效率。
本公开的一个实施例中,所述通信数据获得子模块,具体用于根据以下方式中的至少一种,获得应用程序对应的任务执行单元间的通信数据:
获得预设的数据收集工具收集的所述应用程序运行过程中产生的任务执行单元间的通信数据;
使用预设的数据收集工具收集通信数据,这样能够针对不同的应用场景采用不同的数据收集工具,提高了本公开实施例所提供方案的使用灵活性。
接收通信库在目标时间段内通过预设的数据发送接口发送的目标通信数据,将接收的目标通信数据确定为所述应用程序对应的任务执行单元间的通信数据,其中,所述目标时间段为:从所述应用程序启动至结束之间的时间段,所述目标通信数据为:所述通信库通过预设的数据抓取接口实时抓取的任务执行单元间进行通信产生的数据;
为通信库设置数据发送接收接口和数据抓取接口后,在各种不同的应用场景中均访问上述接口,通过统一的接口实现通信数据获取,从而提高了本公开实施例所提供方案的兼容性。
获得用户提供的所述应用程序对应的任务执行单元间的通信数据。
在一些情况下,用户对应用程序的框架较为熟悉,在不运行应用程序的情况下,也能够知道任务执行单元间进行数据通信的情况,这种情况下,上述通信数据可以由用户提前提供,从而免去了运行应用程序获得通信数据的过程,进而提高为任务执行单元分配计算资源的效率,从而能够提高任务执行单元执行任务的效率。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
本公开的一个实施例中,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述方法实施例所述的任务执行方法。
本公开的一个实施例中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述方法实施例所述的任务执行方法。
本公开的一个实施例中,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前述方法实施例所述的任务执行方法。
图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如任务执行方法。例如,在一些实施例中,任务执行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的任务执行方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务执行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (16)
1.一种任务执行方法,包括:
获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
获得所述分布式计算系统中设备间的第二物理拓扑;
根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
获得应用程序对应的任务执行单元间的通信拓扑,其中,所述应用程序对应的任务执行单元包括:进程和/或进程中创建的线程;
对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
2.根据权利要求1所述的方法,其中,所述获得分布式计算系统中各台设备的第一物理拓扑,包括:
按照以下方式获得分布式计算系统中每一台设备的第一物理拓扑:
探测设备中存在的计算单元以及各计算单元间的通信链路;
以各计算单元为节点,并以计算单元间的通信链路为边,构建第一拓扑;
获得各计算单元的计算能力表征值,并获得各通信链路的通信能力表征值;
基于所获得的计算能力表征值设置所述第一拓扑中节点的属性,并基于所获得的通信能力表征值设置所述第一拓扑中边的属性,得到第一物理拓扑。
3.根据权利要求2所述的方法,其中,
所述获得各计算单元的计算能力表征值,包括:
获得各计算单元的算力信息,将各计算单元的算力信息作为各计算单元的计算能力表征值;
和/或
所述获得各通信链路的通信能力表征值,包括:
针对各通信链路获得以下信息中的至少一种,将所获得的信息确定为各通信链路的通信能力表征值:
通信链路的链路带宽;
通信链路的通信延迟;
通信链路连接的计算单元间的物理距离。
4.根据权利要求1所述的方法,其中,所述获得所述分布式计算系统中设备间的第二物理拓扑,包括:
探测所述分布式计算系统中存在的设备以及各设备间的通信链路;
以各设备为节点,并以各设备间的通信链路为边,构建第二拓扑;
获得所述分布式计算系统中设备的IP地址;
获得基于所获得的IP地址、通过路由追踪方式确定的所述分布式计算系统中设备间的跳数;
基于所获得的跳数设置所述第二拓扑中边的属性,得到所述分布式计算系统中设备间的第二物理拓扑。
5.根据权利要求1所述的方法,其中,所述获得应用程序对应的任务执行单元间的通信拓扑,包括:
获得应用程序对应的任务执行单元间的通信数据;
根据所获得的通信数据,确定任务执行单元间的通信链路、任务执行单元的计算资源需求量和任务执行单元间的通信数据量;
以各任务执行单元为节点,并以各任务执行单元间的通信链路为边,构建第三拓扑;
基于所获得的计算资源需求量设置所述第三拓扑中节点的属性,并基于所获得的通信数据量设置所述第三拓扑中边的属性,得到所述应用程序对应的任务执行单元间的通信拓扑。
6.根据权利要求5所述的方法,其中,所述获得应用程序对应的任务执行单元间的通信数据,包括:
根据以下方式中的至少一种,获得应用程序对应的任务执行单元间的通信数据:
获得预设的数据收集工具收集的所述应用程序运行过程中产生的任务执行单元间的通信数据;
接收通信库在目标时间段内通过预设的数据发送接口发送的目标通信数据,将接收的目标通信数据确定为所述应用程序对应的任务执行单元间的通信数据,其中,所述目标时间段为:从所述应用程序启动至结束之间的时间段,所述目标通信数据为:所述通信库通过预设的数据抓取接口实时抓取的任务执行单元间进行通信产生的数据;
获得用户提供的所述应用程序对应的任务执行单元间的通信数据。
7.根据权利要求1所述的方法,其中,所述获得应用程序对应的任务执行单元间的通信拓扑,包括:
从预存的通信拓扑中,获得应用程序对应的任务执行单元间的通信拓扑,其中,所述预存的通信拓扑包括:根据预先存储的所述应用程序所对应任务执行单元间的通信数据预先生成的任务执行单元间的通信拓扑。
8.一种任务执行装置,包括:
第一物理拓扑获得模块,用于获得分布式计算系统中各台设备的第一物理拓扑,其中,所述第一物理拓扑为:设备中计算单元间的拓扑;
第二物理拓扑获得模块,用于获得所述分布式计算系统中设备间的第二物理拓扑;
总物理拓扑获得模块,用于根据所述第一物理拓扑和第二物理拓扑,生成所述分布式计算系统中计算单元间的总物理拓扑;
通信拓扑获得模块,用于获得应用程序对应的任务执行单元间的通信拓扑,其中,所述应用程序对应的任务执行单元包括:进程和/或进程中创建的线程;
拓扑映射模块,用于对所述总物理拓扑和通信拓扑进行拓扑映射,并基于映射结果为所述应用程序对应的任务执行单元分配计算资源,以使得各任务执行单元基于所分配的资源执行任务。
9.根据权利要求8所述的装置,其中,所述第一物理拓扑获得模块,具体用于获得分布式计算系统中每一台设备的第一物理拓扑;
所述第一物理拓扑获得模块,包括:
第一链路探测子模块,用于探测设备中存在的计算单元以及各计算单元间的通信链路;
第一拓扑构建子模块,用于以各计算单元为节点,并以计算单元间的通信链路为边,构建第一拓扑;
计算能力表征值获得子模块,用于获得各计算单元的计算能力表征值;
通信能力表征值获得子模块,用于获得各通信链路的通信能力表征值;
第一属性值设置子模块,用于基于所获得的计算能力表征值设置所述第一拓扑中节点的属性,并基于所获得的通信能力表征值设置所述第一拓扑中边的属性,得到第一物理拓扑。
10.根据权利要求9所述的装置,其中,
所述计算能力表征值获得子模块,具体用于获得各计算单元的算力信息,将各计算单元的算力信息作为各计算单元的计算能力表征值;
和/或
所述通信能力表征值获得子模块,具体用于针对各通信链路获得以下信息中的至少一种,将所获得的信息确定为各通信链路的通信能力表征值:
通信链路的链路带宽;
通信链路的通信延迟;
通信链路连接的计算单元间的物理距离。
11.根据权利要求8所述的装置,其中,所述第二物理拓扑获得模块,包括:
第二链路探测子模块,用于探测所述分布式计算系统中存在的设备以及各设备间的通信链路;
第二拓扑构建子模块,用于以各设备为节点,并以各设备间的通信链路为边,构建第二拓扑;
IP地址获得子模块,用于获得所述分布式计算系统中设备的IP地址;
跳数获得子模块,用于获得基于所获得的IP地址、通过路由追踪方式确定的所述分布式计算系统中设备间的跳数;
第二属性值设置子模块,用于基于所获得的跳数设置所述第二拓扑中边的属性,得到所述分布式计算系统中设备间的第二物理拓扑。
12.根据权利要求8所述的装置,其中,所述通信拓扑获得模块,包括:
通信数据获得子模块,用于获得应用程序对应的任务执行单元间的通信数据;
属性值确定子模块,用于根据所获得的通信数据,确定任务执行单元间的通信链路、任务执行单元的计算资源需求量和任务执行单元间的通信数据量;
第三拓扑构建子模块,用于以各任务执行单元为节点,并以各任务执行单元间的通信链路为边,构建第三拓扑;
第三属性值设置子模块,用于基于所获得的计算资源需求量设置所述第三拓扑中节点的属性,并基于所获得的通信数据量设置所述第三拓扑中边的属性,得到所述应用程序对应的任务执行单元间的通信拓扑。
13.根据权利要求12所述的装置,其中,所述通信数据获得子模块,具体用于根据以下方式中的至少一种,获得应用程序对应的任务执行单元间的通信数据:
获得预设的数据收集工具收集的所述应用程序运行过程中产生的任务执行单元间的通信数据;
接收通信库在目标时间段内通过预设的数据发送接口发送的目标通信数据,将接收的目标通信数据确定为所述应用程序对应的任务执行单元间的通信数据,其中,所述目标时间段为:从所述应用程序启动至结束之间的时间段,所述目标通信数据为:所述通信库通过预设的数据抓取接口实时抓取的任务执行单元间进行通信产生的数据;
获得用户提供的所述应用程序对应的任务执行单元间的通信数据。
14.根据权利要求8所述的装置,其中,
所述通信拓扑获得模块,具体用于从预存的通信拓扑中,获得应用程序对应的任务执行单元间的通信拓扑,其中,所述预存的通信拓扑包括:根据预先存储的所述应用程序所对应任务执行单元间的通信数据预先生成的任务执行单元间的通信拓扑。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111293062.2A CN114024858B (zh) | 2021-11-03 | 一种任务执行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111293062.2A CN114024858B (zh) | 2021-11-03 | 一种任务执行方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114024858A CN114024858A (zh) | 2022-02-08 |
CN114024858B true CN114024858B (zh) | 2023-07-25 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108770016A (zh) * | 2018-06-04 | 2018-11-06 | 北京邮电大学 | 基于模板的5g端到端网络切片生成方法及装置 |
CN109672662A (zh) * | 2018-10-11 | 2019-04-23 | 中山大学 | 一种微服务环境中服务依赖关系构建方法 |
CN113568860A (zh) * | 2021-07-23 | 2021-10-29 | 北京百度网讯科技有限公司 | 基于深度学习的拓扑映射方法、装置、介质及程序产品 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108770016A (zh) * | 2018-06-04 | 2018-11-06 | 北京邮电大学 | 基于模板的5g端到端网络切片生成方法及装置 |
CN109672662A (zh) * | 2018-10-11 | 2019-04-23 | 中山大学 | 一种微服务环境中服务依赖关系构建方法 |
CN113568860A (zh) * | 2021-07-23 | 2021-10-29 | 北京百度网讯科技有限公司 | 基于深度学习的拓扑映射方法、装置、介质及程序产品 |
Non-Patent Citations (2)
Title |
---|
OHTMA:面向天河三号E级原型机的一种启发式优化拓扑感知映射算法(英文);李翊谁;陈新海;刘杰;杨博;龚春叶;甘新标;李胜国;徐涵;;Frontiers of Information Technology & Electronic Engineering(第06期);全文 * |
基于网络单纯形的虚拟网络映射算法;王志臻;郑烇;陈晨;田洪亮;;计算机工程(04);全文 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112988535B (zh) | 数据推送服务的测试方法、设备、存储介质及程序产品 | |
CN116225769B (zh) | 一种系统故障根因的确定方法、装置、设备及介质 | |
CN109033814A (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN114024858B (zh) | 一种任务执行方法、装置、设备及存储介质 | |
JP2022000775A (ja) | 交通流監視測定システムのテスト方法、装置及び機器 | |
CN110380902B (zh) | 拓扑关系生成方法、装置、电子设备及存储介质 | |
CN108153654A (zh) | 一种日志收集方法及装置 | |
CN116938953A (zh) | 基于区块链的数据处理方法、装置、电子设备及存储介质 | |
CN116049420A (zh) | 知识图谱生成任务构建方法、装置、电子设备和存储介质 | |
CN114579311B (zh) | 执行分布式计算任务的方法、装置、设备以及存储介质 | |
CN113691403B (zh) | 拓扑节点配置方法、相关装置及计算机程序产品 | |
CN114024858A (zh) | 一种任务执行方法、装置、设备及存储介质 | |
CN115481594B (zh) | 计分板实现方法、计分板、电子设备及存储介质 | |
CN116126719A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN114817003A (zh) | 一种测试信息处理方法、装置、设备及存储介质 | |
CN110162666A (zh) | 一种检索任务的执行方法及执行装置 | |
CN109032922B (zh) | 接口诊断方法、装置、设备和存储介质 | |
CN113836291B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN116306407B (zh) | 片上网络noc的验证方法、装置、设备和存储介质 | |
CN115102850B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
CN115361290B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
CN116055386B (zh) | 一种端口权重更新方法、装置、芯片及存储介质 | |
CN114372238B (zh) | 一种分布式状态估计方法 | |
CN115756993A (zh) | 系统运行检测方法、装置、电子设备和存储介质 | |
CN113656268B (zh) | 业务服务的性能测试方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |