CN113568599A - 用于处理计算作业的方法、电子设备和计算机程序产品 - Google Patents
用于处理计算作业的方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN113568599A CN113568599A CN202010359328.8A CN202010359328A CN113568599A CN 113568599 A CN113568599 A CN 113568599A CN 202010359328 A CN202010359328 A CN 202010359328A CN 113568599 A CN113568599 A CN 113568599A
- Authority
- CN
- China
- Prior art keywords
- computing
- tasks
- candidate
- task
- determining
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 84
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 title claims abstract description 11
- 230000015654 memory Effects 0.000 claims description 26
- 230000001419 dependent effect Effects 0.000 claims description 16
- 230000002829 reductive effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 20
- 230000004927 fusion Effects 0.000 description 19
- 238000013473 artificial intelligence Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 3
- 238000007418 data mining Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Abstract
本公开的实施例提供了一种用于处理计算作业的方法、电子设备和计算机程序产品。在此提出的方法包括确定待处理的计算作业包括的多个计算任务之间的第一依赖关系。该方法还包括基于第一依赖关系和多个计算任务对计算资源的需求,从多个计算任务中确定用于组合的一组计算任务。该方法还包括将一组计算任务组合成目标计算任务。该方法进一步包括基于第一依赖关系,确定目标计算任务与多个计算任务中除一组计算任务以外的计算任务之间的第二依赖关系。根据本公开的实施例,可以减少计算作业处理期间的数据移动,并且有益于负载平衡。
Description
技术领域
本公开的实施例涉及计算作业(job)的管理,更具体地,涉及用于处理基于人工智能模型的计算作业的方法、设备和计算机程序产品。
背景技术
人工智能(AI)(例如,机器学习(ML)、深度学习(DL)和数据挖掘(DM))技术已经得到了广泛的发展,并且大量的人工智能应用已经被用于多种应用领域。这些应用可以利用诸如处理和存储资源的各种资源来完成各种计算作业。
由于人工智能作业的复杂度很高并且不断增加,因此需要大量和/或可变数量的专用处理资源来确保相应计算作业的正常运行。例如,已经开发了基于云的计算系统,这样的计算系统可以包括具有一个或多个专用处理资源的机器(例如,服务器)。在此计算系统中,不同的客户端可以根据需要来使用(例如,租赁)计算系统中的专用资源以用于运行各自的计算作业。然而,由于各个计算作业涉及的计算量存在较大差异,难以有效利用计算系统中的计算资源。因而,如何以更为有效的方式管理计算作业,成为一个研究热点。
发明内容
本公开的实施例提供了一种用于处理计算作业的方案。
在本公开的第一方面中,提供了一种处理计算作业的方法。该方法包括确定待处理的计算作业包括的多个计算任务之间的第一依赖关系。该方法还包括基于第一依赖关系和多个计算任务对计算资源的需求,从多个计算任务中确定用于组合的一组计算任务。该方法还包括将一组计算任务组合成目标计算任务。该方法进一步包括基于第一依赖关系,确定目标计算任务与多个计算任务中除一组计算任务以外的计算任务之间的第二依赖关系。
在本公开的第二方面中,提供了一种电子设备。该电子设备包括处理器以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使设备执行动作。动作包括确定待处理的计算作业包括的多个计算任务之间的第一依赖关系。动作还包括基于第一依赖关系和多个计算任务对计算资源的需求,从多个计算任务中确定用于组合的一组计算任务。动作还包括将一组计算任务组合成目标计算任务。动作进一步包括基于第一依赖关系,确定目标计算任务与多个计算任务中除一组计算任务以外的计算任务之间的第二依赖关系。
在本公开的第三方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。在附图中:
图1示出了本公开的实施例可以在其中被实现的计算系统的示意图;
图2示出了根据本公开的实施例的用于处理计算作业的架构的示意性框图;
图3示出了根据本公开的一些实施例的处理计算作业的过程的流程图;
图4示出了根据本公开的一些实施例的确定用于组合的计算任务的过程的流程图;
图5A示出了根据本公开的一些实施例的原始计算图的示意图;
图5B示出了根据本公开的一些实施例的移除部分顶点的计算图的示意图;
图5C示出了根据本公开的一些实施例的移除孤儿顶点的计算图的示意图;
图6示出了根据本公开的一些实施例的计算任务序列和子图的示意图;
图7A示出了根据本公开的一些实施例的组合前的计算任务列表的示意图;
图7B示出了根据本公开的一些实施例的组合后的计算任务列表的示意图;以及
图8示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
为了方便描述起见,在本公开的上下文中将在人工智能技术的应用环境下描述本公开的各个示例性实现方式。在人工智能领域,可以利用专用处理单元(例如,图形处理单元,GPU)的资源(例如,计算资源和存储资源)来处理计算作业。
为了更好地理解根据本公开的计算作业处理方案,首先来描述基于人工智能的计算作业的处理架构。基于人工智能的计算作业实质上是一种程序,该程序可以包括由代码段实现的一个或多个函数。类似于执行普通程序,在执行基于人工智能的计算作业时,需要利用编译器来对程序进行编译。在现代编译器设计和实现中,用于普通程序(例如,C/C++或者FORTRAN)的编译器(例如,GCC和LLVM)通常被分为两个部分:前端和后端。前端将源程序作为输入并将其转换为独立于硬件的中间表示。中间表示是按照在编译器内部被使用的另一语言而被编写的另一程序,但易于优化并易于被转换为机器代码。此后,后端将中间表示程序编译并且优化为二进制可执行文件,其包含目标中央处理单元的机器(例如,X86、Power或ARM等)的代码。
对于人工智能开发而言,人工智能开发框架通常由前端和后端组成。前端用来向程序员提供一组应用编程接口(API),这些应用编程接口通常按照更容易的编程语言(例如,Python)而被定义。应用编程接口定义可用的数据类型,诸如张量、数组等,以及以下方法:如何定义不同的层,诸如输入层、输出层和隐藏层以及每个隐藏层上的操作;如何通过连接不同的层来构建整个神经网络;分类器函数等等。后端通常按照更有效的语言(例如,C或C++)而被实现。后端需要实现在应用编程接口中被定义的所有数据类型和方法。在运行时,前端经由Python C/C++扩展或从后端编译的动态链接库而被链接到后端。
支持人工智能程序的编译器可以被嵌入到人工智能框架中或者可以是独立的可执行文件。类似于普通程序编译器一样,支持人工智能程序的编译器包括前端和后端。在支持人工智能程序的编译器中,编译计算作业而从前端输出的中间表示通常是计算图,而不是中间表示程序。计算图的顶点(或节点)定义神经网络中的计算(通常被称为内核),并且两个顶点之间的边定义两个内核之间的依赖性。通常,编译器可以对计算图执行一些优化,例如将若干个顶点融合为一个,等等。
编译器的后端生成代码包括两个部分,即,主机代码和设备代码。主机代码将由普通的编译器(例如,GCC或LLVM)编译成中央处理单元可执行文件。这一可执行文件与普通程序中的可执行文件相同。在主计算机中的中央处理单元和主存储器中运行。主机代码用于在专用处理单元设备中运行的内核函数的调度和协调。设备代码针对目标设备而生成,并且将由供应商特定的编译器编译到库中。所生成的库将在被附接到主机的目标设备中运行。
举例而言,如果目标设备是Nvidia的专用处理单元,则设备代码可以是CUD内核函数的C/C++代码或PTX代码,其中每个内核函数对应于被定义在中间表示计算图中的内核操作。这一代码将由供应商特定的编译器(例如,NVCC)编译。设备代码作为库来实现并且等待来自主机代码的调用。
主机代码的典型工作流程可以包括:初始化目标专用处理单元设备;读入中间表示的计算图;针对计算图中的路径中的每个计算顶点,从设备代码库选择对应的CUDA内核函数实现,针对用于内核函数的输入和输出分配存储器,针对内核函数执行分配工作空间存储器,将内核函数的输入参数从中央处理单元复制到专用处理单元,调用内核函数,在专用处理单元中执行内核函数,将内核函数的输出从专用处理单元复制回中央处理单元,释放目标专用处理单元设备,以及输出计算结果,等等。
如上文所提及的,不同的计算作业涉及的计算量不同,这导致需要不同数量的计算资源。例如,一个计算作业可以需要数百MB的存储器资源,并且需要数千个线程,而另一计算作业可以仅需要数十MB的存储器资源,并且需要数百个线程。
目前已经提出了基于资源的模型分区调度。在所提出的模型并行调度解决方案中,基于中间表示(例如,计算图)和每个分区的资源需求来支持不同服务等级中多个任务之间的负载平衡。然而,直接来自中间表示的分区结果难以在计算设备之间进行平衡,因为不同分区的负载在其存储器和线程需求方面非常不平衡。此外,还提出了基于平铺(tile)技术来优化模型平行调度。例如,使用平铺调度优化来将需要大量GPU存储器或需要大量GPU线程的计算任务划分为多个子计算任务。所产生的每个子计算只需要适度的GPU存储器和线程。
融合(fusion)在图像处理和深度学习中很常见,它是一种将多个计算合并为单个计算的非常有用的调度优化。一些卷积神经网络CNN模型(例如Cifar-10)在网络结构中会将卷积层和修正线性单元RELU层融合成一层。在这种情况下,所得到的计算图中只存在一个计算,而单个GPU CUDA函数将实现卷积和RELU计算两者。一些架构(例如Halide,TensorFlow中的XLA和TVM)将在其编译器中支持融合优化。
融合优化用于合并不同的计算以提高数据移动性能,这些计算分别是同一数据的生产者或消费者,以便可以在同一位置执行所有融合的计算,而无需在计算节点之间的功能之间交换数据。融合与上文提到的平铺相反:平铺技术将单个计算拆分成多个计算以增加并行度,但这要增加相关数据通信的开销,而融合将多个计算合并为一个计算以增加数据局部性、减少数据移动,但这也会降低并行性。本申请的发明人意识到对于设计良好的计算系统,需要在平铺与融合之间保持平衡。
然而,以上提出的关于平铺的解决方案仅是将资源需求大的计算任务划分为资源需求适度的多个子计算任务。在计算作业中,某些计算任务(例如,计算函数)可能非常琐碎,例如,除法和平方根函数都以非常简洁的方式在CUDA中实现。但是,调度器可能将这样的两个计算任务调度到不同的计算节点中以便执行。在这种情况下,数据移动将主导计算作业的处理,这意味着将参数或其他数据从运行在GPU中的一个计算任务传输到运行在另一个GPU中的另一个计算任务或仅从GPU传输到CPU的开销将使GPU内部的计算不堪重负。因此,本申请的发明人意识到需要将这种琐碎的计算任务组合或融合成具有适度资源需要的计算任务,从而减少数据移动的开销。
不同计算任务(例如,内核函数)对计算资源的需要不同。在本文中所提及的计算资源可以包括存储器资源和线程资源中的至少一项。通常,可以将一个计算作业所包括的不同计算任务按照对计算资源的需求划分为四种类型。第一种类型的计算任务可能需要较少的存储器(例如,约几MB或更少)和较少的线程(例如,数百个线程或更少);第二种类型的计算任务可能需要较多的存储器(例如,数十MB或更多)但较少的线程(例如,数百个线程或更少);第三种类型的计算任务可能需要较少的存储器DNA(例如,约几MB或更少)但较多的线程(例如,数千个线程或更多);第四种类型的技术任务可能需要较多的存储器(例如,数十MB或更多)和较多的线程(例如,数千个线程或更多)。对此,可以安全地融合第一种类型的计算任务并安全地平铺第四种类型的计算任务。然而,如果盲目地融合第二种和第三种类型的计算任务,则可能不会提高计算性能,而且还可能对计算性能造成不利影响。
在一些传统解决方案中,对神经网络中的计算进行盲目融合。例如,无论卷积层和RELU层在网络的何处,某些深度神经网络DNN都会盲目融合卷积层和RELU层。在这样的传统解决方案中,网络最后一层的这种融合将导致庞大或繁重的计算量,并对计算性能产生不利影响。
另一些传统解决方案不支持动态融合。例如,诸如TensorFlow XLA的架构只能支持基于静态规则的融合。由于用户通常不知道某个特定的融合是否合适,因此将无法知晓这种融合是将改善性能还是阻碍性能。因此,在这种架构中,用户通常忽略计算的融合。
又一些解决方案无法按需确定融合的结束。诸如TVM之类的某些架构将融合尽可能多的计算。在这种传统解决方案中,将产生两个问题。一是将极大地影响处理的并行性。例如,使用TVM来编译深度学习程序,则生成的计算图几乎是列表或序列而不是图。这样的列表很难并行化,因为列表中的所有计算都直接相互依赖。另一个问题是,经过这样的盲目融合,所得到的计算将非常繁重(需要许多线程)或庞大(需要许多存储器)。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种用于处理计算作业的技术方案。该技术方案可以基于计算任务之间的依赖性和计算任务对计算资源的需求,将计算作业中涉及较少计算资源需求的计算任务相组合。经组合的计算任务可以在同一计算节点或计算设备处被处理。以此方式,可以减少数据移动(例如,在GPU与CPU之间或不同GPU之间的移动),并提高计算性能。
此外,本公开的实施例对于负载平衡调度也是有益的。将资源需求小的计算任务融合可以促进多个计算设备或计算节点间的负载平衡。例如,可以避免如下的情况:一些计算设备仅处理资源需求小的计算任务而浪费了计算资源,同时另一些计算设备因处理资源需求大的计算任务而出现资源紧张。特别地,当根据本公开的实施例的计算任务融合与上文提及的计算任务平铺相结合以用于计算系统时,可以实现负载平衡调度。因此,利用本公开的实施例,可以以更为有效的方式来处理计算作业。
为了便于描述,在本公开的上下文中将以基于深度学习的计算作业作为具体示例来描述本公开的各个示例性实现方式。应当理解,虽然在本文中仅以基于深度学习的计算作业作为示例描述本公开的示例性实现方式的细节。然而应当理解,本发明的示例性实现方式可以同样适用于其他作业,诸如基于深度学习的计算作业、基于高性能计算(HPC)的计算作业、基于数据挖掘的计算作业,等等。
图1示意性示出了可以在其中实现本公开的实施例的计算系统的框图100。在该计算系统100中部署了多个服务器110-1、服务器110-2、...、以及服务器110-M(以下统称称为服务器110,其中M为大于1的自然数)。计算系统100还包括专用处理资源160-1、专用处理资源160-2、...、以及专用处理资源160-M(以下统称为专用处理资源160,其中M为大于1的自然数)。每个服务器110上具有一个或多个专用处理资源160。包括多个专用处理资源服务器160的这样的专用处理资源集群或池是动态和共享的。
在图1的示例中,服务器110-1具有专用处理资源160-1,服务器110-2具有专用处理资源160-2,并且服务器110-M具有专用处理资源160-M。专用处理资源160的示例可以包括但不限于图形处理单元、现场可编程门阵列(FPGA)等。为便于讨论,某些示例性实现方式将以图形处理单元作为专用处理资源160的示例进行描述。除了专用处理资源160之外,服务器110还可以包括诸如中央处理单元的一个或多个通用处理单元(未示出)。
图1还示出了多个客户端120-1、120-2...、以及120-N等(以下统称或单独称为客户端120,其中N为大于1的自然数),分别具有要运行的应用150-1、150-2、...、以及150-N(以下统称为应用150,其中N为大于1的自然数)。应用150可以是机器上可运行的任何应用,该应用可以被设计为执行相应数据处理或分析等作业。作为示例,应用150可以执行与深度学习、机器学习或高性能计算以及人工智能等相关的计算作业。
为了能够快速高效运行应用150,客户端120可以请求服务器110的专用处理资源160来运行这些应用150。在这样的实现中,客户端120可以通过互连网络130连接到一个或多个服务器110,并且将应用150交由服务器110的一个或多个专用处理资源160运行。取决于客户端120、服务器110和/或专用处理资源160所支持的接口,互连网络130可以支持基于诸如远程直接内存访问(RDMA)和传输控制协议(TCP)等各种网络传输技术的不同类型的有线或者无线连接。
应当理解,图1示出的设备和/或布置仅是一个示例。在其他示例中,该计算系统100可以包括任意适当数目的服务器110和客户端120。每个服务器110可以安装有任意适当数目的专用处理资源160,并且每个客户端120可以具有待运行的多个应用150。此外,专用处理资源调度系统100还包括远程控制器140和远程数据库170。
远程控制器140可以基于客户端120所请求的专用处理资源的资源量和系统100中的可用专用处理资源来为客户端120分配专用处理资源160。然后,客户端130可以向专用处理资源服务器110请求所分配的专用处理资源160。远程数据库170能够通过互联网络130与客户端120以及远程控制器140进行通信。远程数据库170能够存储客户端120编译应用150时所提取的元数据,并且该元数据能够由远程控制器140获取。应当理解,尽管在图1中所示出的控制器140和远程数据库170是分离的,但是二者也可以被实现在同一个设备上。
为了描述清楚和简洁,将主要以图形处理单元作为专用处理资源160的示例来详细描述本公开的示例实施例。如已知的,图形处理单元作为一种专用处理器,其强大的计算能力源自其大量的内核和高带宽的内存。在图形处理单元硬件架构中,一个图形处理单元通常具有大量的图形处理单元内核(kernel),例如,几千个或者接近一万个内核。
但是,应当理解,图形处理单元仅仅是一种示例性的专用处理资源160,并非用于限制本公开的范围。在此描述的精神和原理可以应用于其他专用处理资源,例如诸如现场可编程门阵列之类的加速器中的处理资源,不论是目前已知的还是将来开发的,而并不仅仅限于图形处理单元内核。
在下文中,首先参考图2描述有关本公开的实施例的概要。图2示出了根据本公开的实施例的用于处理计算作业的架构的示意性框图200。如图2所示,计算作业221(诸如,DL程序)被输入到计算系统的编译器,例如基于开源的深度学习编译器,诸如TesnorFlow、PyTorch、TVM等。编译器的前端231对计算作业221进行编译并且输出该计算作业221的中间表示。中间表示可以指示计算作业221所包括的各个计算任务之间的依赖性。在图2的示例中,将计算作业221的中间表示图示为计算图201,但应当理解这仅是示例性的而无意限制。计算图201中的各个顶点A-G分别对应于计算作业221的计算任务211-217。计算图201的边指示了计算任务之间的依赖性。例如,计算任务213依赖于计算任务211。
根据本公开的实施例,提出了资源需求220的概念。可以获得计算任务211-217对计算资源的需求,即所示的资源需要220。在一些实施例中,可以利用虚拟编译器232来获得资源需要220。对计算资源的需求可以包括对存储资源和线程资源的需求。例如,资源需求220可以包括计算任务211-217中的个体计算任务所需要的存储器空间(例如,多少MB)和线程数目。
基于资源需求220和计算任务211-217之间的依赖性,一些计算任务被组合或融合。继而,可以将计算图201更新为计算图202。在该示例中,顶点E和顶点F被融合成新的顶点H。相应地,计算任务215和计算任务216被合并成计算任务218。
在后端的代码生成器233处,可能没有与合并后的计算任务218相对应的代码生成逻辑。在一些实施例中,在前端处,还将生成与合并后的计算任务218相对应的代码生成逻辑225并将代码生成逻辑225提供给后端的代码生成器233。进而,代码生成器233可以生成与计算图202相对应的主机代码227和设备代码226,以用于处理计算作业221。
在下文中,将参考图3描述有关本公开的实施例的更多细节。图3示出了根据本公开的一些实施例的处理计算作业的过程300的流程图。为了便于讨论,结合图1来描述过程300。
在框310,确定待处理的计算作业221包括的多个计算任务之间的依赖关系(在本文中,又可以称为第一依赖关系)。在此描述的“多个计算任务”可以是指计算作业221所包括的所有计算任务,也可以指示计算作业221所包括的计算任务中的一部分。换言之,可以对计算作业221的所有计算任务或部分计算任务应用本公开的融合机制。在下文描述中,尽管以计算任务211-217作为多个计算任务的示例来描述本公开的实施例,但应当理解这仅是示例性的。
在一些实施例中,可以获得表示计算作业221的计算图,并且从计算图中确定第一依赖关系。例如,如图1所示,可以获得编译器的前端231输出的计算图201,其指示了计算任务211-217之间的依赖关系。在一些实施例中,也可以从计算作业221的其他类型的中间表示(例如,中间表示程序)中确定计算任务211-217之间的依赖关系。
在框320,基于第一依赖关系和多个计算任务211-217对计算资源的需求,从多个计算任务211-217中确定用于组合的一组计算任务。将会理解,与上文提及的传统方案中的盲目融合不同,在本公开的实施例中,为了确定适合于组合的计算任务,应用了两个方面的准则,即,依赖关系和资源需求。
与依赖关系有关的准则(也可以称为依赖关系准则)可以促进从计算实现方面选择更适合于组合的计算任务。这可以确保组合后的计算任务不过于复杂。例如,为了应用与依赖关系有关的准则可以定义计算任务的输出度和输入度。对于某个计算任务,输出度可以是指计算作业中依赖于该计算任务的其他计算任务的数目,而输入度可以是指该计算任务所依赖的计算作业中的其他计算任务的数目。输出度或输入度小于阈值的计算任务可以被确定为不适合于组合的计算任务,因而将从候选任务集合中被移除,或者将不会被添加到候选任务集合中。
现在参考图1中所示的计算图201。指向某个顶点的箭头数目可以表示与该顶点相对应的计算任务的输入度,从该顶点向外指的箭头数目可以表示该顶点相对应的计算任务的输出度。例如,与顶点D相对应的计算任务214的输入度为2并且输出度为1。
在一些实施例中,用于输入度和/或输出度的阈值可以被设置为2。在这样的实施例中,可以以最简便的方式确定组合的计算任务以及组合的计算任务与其他计算任务的依赖关系。在图1的示例中,计算任务214的输入度为2,等于阈值1。因此,可以确定计算任务214是不适合于组合的计算任务。类似地,计算任务212的输出度为2,等于阈值1。因此,可以确定计算任务212是不适合于组合的计算任务。输出度和输出度均为1(小于阈值2)的计算任务215和216是适合于组合的计算任务。应当理解,图1中的计算图201所示的计算任务间的依赖关系仅是示例性的。
与资源需求有关的准则(也可以称为资源需求准则)可以促进从计算负载角度选择更适合于组合的计算任务。这可以避免将本身繁重或庞大的计算任务与其他计算任务组合,而产生不期望的更为繁重或庞大的计算任务。
可以基于多种方式来获取计算任务对于计算资源的需求。例如,可以利用编译器来确定资源需求。计算任务211-217可以包括以编程语言编写的程序,可以利用真实编译器来执行编译并且获得可执行程序,可以在运行可执行程序期间读取各种计算资源(例如,存储资源以及线程资源)的开销。
又例如,可以基于虚拟方式来确定资源需求。可以修改真实编译器的操作以便获得虚拟程序(例如,图1中所示的虚拟编译器232),在虚拟程序中并不包括有关计算资源分配和释放相关的命令,而是仅记录与计算资源的分配和释放相关的数据。以此方式,可以在不必真正执行计算任务211-217的情况下,获得计算任务211-217中的每个计算任务的资源需求。
对计算资源的需求可以包括对存储器资源的需求和对线程资源的需求中的至少一项。可以基于计算系统的实际资源量来确定基于哪种或哪些类型的资源需求来确定适合于组合的计算任务。对计算资源的需求超过阈值(其在本文中又称为第一阈值)的计算任务将被确定为不适合于组合的计算任务,因而将从用于组合的候选任务集合中被移除或者将不被添加到候选任务集合中。
在一些实施例中,可以遍历多个计算任务211-217中的每一个,以确定相应计算任务是否满足以上描述的依赖关系准则和资源需求准则,并将满足这两个准则的计算任务添加到候选任务集合中,或者将不满足任一准则的计算任务从候选任务集合中移除。在一些实施例中,可以先基于资源需求、然后基于依赖关系从多个计算任务211-217中确定适合于组合的计算任务。例如,可以先将满足资源需求准则的计算任务添加到候选任务集合中,再将不满足依赖关系准则的计算任务从候选任务集合中移除。
在一些实施例中,可以先基于依赖关系、然后基于资源需求从多个计算任务211-217中确定适合于组合的计算任务。下面参考图4来描述这样的实施例的示例。图4示出了根据本公开的一些实施例的确定用于组合的计算任务的过程400的流程图。过程400可以认为是框320的一个具体实现。
在框410,针对多个计算任务211-217中的每个计算任务,基于第一依赖关系,确定与相应计算任务的输入或输出中的至少一项相关联的计算任务的数目。例如,可以从计算图201中确定顶点A-G中的每个顶点的输出度和输入度。
在框420,从多个计算任务211-217中确定第一组候选任务。针对每个候选任务所确定的数目小于阈值数目。例如,将多个计算任务211-217中输入度和输出度均小于阈值的计算任务确定为第一组候选任务,其在本文中也可以称为初始候选任务集合。
例如,可以将计算作业221的多个计算任务作为初始集合,然后针对初始集合中的每个计算任务计算输出度和输入度。输出度和输入度之一大于或等于阈值数目的计算任务将从初始集合中被移除。如此得到的计算任务集合是初始候选任务集合。对于图1中的示例,初始候选任务集合或第一组候选任务将包括计算任务215和216。
在第一依赖关系通过计算图来确定的实施例中,可以以计算图中的各个顶点作为初始集合,然后计算每个顶点的输出度和输入度。将输出度和输入度之一大于或等于阈值数目的顶点从计算图中移除。同时,被移除的顶点将由另一集合或列表来保存,以用于确定融合后的计算图。
图5A和图5B描述了这样的一个示例。图5A示出了根据本公开的一些实施例的原始计算图501的示意图。原始计算图501包括许多顶点,每个顶点对应一个计算任务。图5B示出了根据本公开的一些实施例的移除了部分顶点的计算图502的示意图。计算图502仅包括满足依赖关系准则的顶点(即,对应的计算任务)。与计算图502中的顶点对应的计算任务可以是初始候选集合。
继续参考图4。在框430,基于第一组候选任务对计算资源的需求,从第一组候选任务中确定用于组合的第二组候选任务。如果第一组候选任务中存在对计算资源的需求超过上文提及的第一阈值的候选任务,则可以通过从第一组候选任务中移除这样的候选任务来确定第二组候选任务。如果第一组候选任务中的每个候选任务对计算资源的需求均小于第一阈值,则将没有候选任务被从第一组候选任务中移除。在这种情况下,第一组候选任务中的所有候选任务可以被确定为第二组候选任务。继续图1中的示例。第一组候选任务包括计算任务215和216。在资源需求220指示计算任务215和216对存储资源和线程资源的需求均小于相应阈值的情况下,计算任务215和216将被确定为第二组候选任务。
应当理解,在此描述的对计算资源的需求可以包括对存储资源的需求和对线程资源的需求。相应地,第一阈值可以包括针对存储资源的阈值和针对线程资源的阈值。因此,第二组候选任务中的每个候选任务既满足依赖关系准则也满足资源需求准则。
作为示例,可以遍历初始候选任务集合中的每个候选任务,以查看该候选任务对计算资源的需求是否超过第一阈值。对存储资源和线程资源中的任一项的需求超过相应阈值的候选任务将从初始候选集合中被移除。以此方式,可以得到更新的候选任务集合,即,第二组候选任务。
在初始候选任务集合和更新的候选任务集合中可能存在孤儿(orphan)计算任务。孤儿计算任务独立于候选任务集合中的任何其他计算任务。换言之,孤儿计算任务不依赖于候选任务集合中的任何其他计算任务,候选任务集合中也没有依赖于孤儿计算任务的计算任务。在一些实施例中,可以从初始候选任务集合(即,第一组候选任务)中移除孤儿计算任务。备选地或附加地,也可以从更新的候选任务集合(即,第二组候选任务)中移除孤儿计算任务
相应地,在通过移除计算图中的顶点的方式来确定候选任务时,移除了部分顶点的计算图中可能存在孤儿顶点。在计算图中,没有任何边指向孤儿顶点或从孤儿顶点向外指。参考图5B,其中包括多个孤儿顶点,例如孤儿顶点520和521。在移除了部分顶点的计算图中,输出度和输入度均为0的顶点是孤儿顶点。图5C示出了根据本公开的一些实施例的移除孤儿顶点的计算图503的示意图。计算图503中,每个顶点均与至少一个另外的顶点相关联。
继续参考图4,在框440,从第二组候选任务中选择用于组合的一组计算任务。在一些实施例中,可以对多组计算任务进行组合。参考图5C,其示出了计算任务序列531、532和533。在这样的计算任务序列或链路中,多个计算任务顺序地依赖于前一计算任务。在仅允许输出度和输入度小于2的计算任务被组合的情况下,这样的计算任务序列可以对应于计算图中的子图(sub-graph)并且将是被组合或融合的潜在对象。
参考图6,其示出了根据本公开的一些实施例的计算任务序列610的示意图600。计算任务序列610可以是第二组候选任务或更新的候选任务集合的一部分,并且可以是被组合或融合的潜在对象。计算任务序列610以与顶点I相对应的计算任务601开始,并且以与顶点O相对应的计算任务609结束。在计算序列610中,除作为开始的计算任务601外,其余的计算任务顺序地依赖于前一计算任务。
在一些实施例中,在从候选任务集合中确定最终被组合的计算任务时,可以进一步地考虑组合后的计算任务对计算资源的需求。例如,融合算法可以从计算任务601开始,并且融合尽可能多的计算任务,直到融合后的计算任务可能超过计算资源的第二阈值。在此描述的第二阈值可以与上文提及的用于确定候选任务的第一阈值相同或不同。为此,需要估计融合后的计算任务对计算资源的需求。下面参考图6来描述这样的实施例中。
在一些实施例中,为了确定最终被组合的计算任务,可以首先基于第一依赖关系,确定第二组候选任务中的第一候选任务和第二候选任务。第一候选任务不依赖于第二组候选任务中的其他候选任务,并且第二候选任务依赖于第一候选任务。进而,可以估计将第一候选任务和第二候选任务相组合的第一组合任务对计算资源的第一需求。如果所估计的第一需求小于第二阈值,选择第一候选任务和第二候选任务作为用于组合的一组计算任务的至少一部分。
在一些实施例中,如果第二组候选任务包括依赖于第二候选任务的第三候选任务,估计将第一组合任务和第三候选任务相组合的第二组合任务对计算资源的第二需求。如果所估计的第二需求小于第二阈值,将第三候选任务添加到最终被组合的一组计算任务。如果第二组候选任务中没有依赖于第二候选任务的第三候选任务,将第一候选任务和第二候选任务确定为最终被组合的一组计算任务。
参考图6来描述这样的示例过程。从更新的候选任务集合中确定作为计算序列610的开始的计算任务601以及依赖于计算任务601的计算任务602(在图6中,对应于顶点J)。例如,在利用计算图的实现方式中,首先找到顶点I(例如,位于列表的头部),然后找到作为顶点I的邻居的顶点J。然后,可以利用诸如实验算法来估计将计算任务601和计算任务602相组合的第一组合任务对计算资源(包括存储资源和/或线程资源)的需求。如果所估计的需求小于第二阈值,则可以计算任务601和计算任务602作为最终被组合的一组计算任务的至少一部分。相应地,在利用计算图的实现方式中,顶点I和顶点J将被融合成一个新的顶点(可以称为第一融合顶点),同时顶点I和顶点J将被移除。此外,还将在新的顶点与顶点K之间添加边,其中顶点K是顶点J的邻居。换言之,顶点I和顶点J将被新的顶点代替。
过程继续,可以确定候选任务集合中是否存在依赖于计算任务602的计算任务。如果不存在依赖于计算任务602的计算任务,则计算任务601和计算任务602将被作为最终被合并的一组计算任务。在图6的示例中,可以确定依赖于计算任务602的计算任务603。即,作为顶点J的邻居的顶点K被找到。进而,可以估计将第一组合任务和计算任务603相组合的第二组合任务对计算资源的需求。如果所估计的该需求小于第二阈值,则计算任务603也将被确定为最终被组合的一组计算任务之一。相应地,在利用计算图的实现方式中,,顶点K将与上文提及的第一融合顶点融合成第二融合顶点,并且顶点K将被移除。如果所估计的该需求超过第二阈值,则不会将计算任务603与计算任务601和602组合。计算任务601和602将作为用于组合的一组计算任务。同时,将以计算任务603作为起始,从计算任务序列610中确定用于组合在一起的下一组计算任务。以此方式,对计算任务序列610中的计算任务进行搜索,以确定用于合并的一组或多组计算任务,直到最后一个计算任务609,即在输出方向上没有邻居的顶点O。
从以上描述中可以看出,计算任务序列610中的计算任务可以包括将被组合的一组或多组计算任务,并且还可能包括未被组合的计算任务。在这种情况下,与计算任务序列610相对应的融合后的顶点F_sg 620可以是其自身的正克林闭包(Kleene closure)。顶点F_sg 620可以包括一个或多个子图、一个或多个计算顶点(对应于组合的计算任务或未能与其他任务组合的计算任务)及子图和计算顶点的任意组合。
以上参考图4、图5和图6描述从多个计算任务中确定用于组合的至少一组计算任务的示例过程。继续参考图3,在框330,将一组计算任务组合成目标计算任务。例如,在图6的示例中,如果计算任务601-603确定为用于组合,则可以生成计算任务601-603的组合作为目标计算任务。
由于组合后的计算任务,即目标计算任务,对编译器来说是新的且陌生的,编译器后端的代码生成器233可能不具有针对目标计算任务的代码生成逻辑。在一些实施例中,可以按照如何组合成目标计算任务来生成并提供(例如,向代码生成器233)针对目标计算任务的代码生成逻辑。例如,可以获得与被组合的一组计算任务相对应的一组生成逻辑,该组生成逻辑中的每个生成逻辑用于生成针对相应计算任务的可执行指令。将该组生成逻辑组合成用于生成针对目标计算任务的可执行指令的目标逻辑,如图2所示的生成逻辑225。该目标逻辑可以进一步被提供给向代码生成器233,如图2所示。
现在参考图7A和图7B。图7A示出了根据本公开的一些实施例的组合前的计算任务列表701的示意图,并且图7B示出了根据本公开的一些实施例的组合后的计算任务列表702的示意图。在列表701和702中,第一列表示计算任务的编号,第二列表示计算任务的标识符,第三列表示计算任务对存储资源的需求(以MB为单位),第四列表示计算任务对线程资源的需求(以线程个数为单位).
仅作为一个示例,列表701可以包括从计算作业的多个计算任务中确定的满足依赖关系准则和资源需求准则的计算任务。例如,在上文参考图6所描述的过程中,确定计算任务711和712作为被组合的一组计算任务。标识符为fused_sqrt的计算任务711可以表示平方根函数,并且标识符为fused_divide的计算任务712可以表示除法函数。参考图7B,在组合后的计算任务列表702中,已不存在计算任务711和712。替代地,标识符为fused_test_sqrt_divide的计算任务720作为组合的计算任务(即,目标计算任务)被添加在列表702中。相应地,可以基于针对计算任务711和712(在此示例中,为平方根函数和除法函数)的代码生成逻辑,生成针对组合的计算任务720的代码生成逻辑。
继续参考图3,在框340,基于第一依赖关系,确定目标计算任务与多个计算任务中除一组计算任务以外的计算任务之间的第二依赖关系,也可以称为组合后的依赖关系。例如,可以确定更新的计算图202。在图2的示例中,组合的计算任务218将依赖于未被组合的计算任务212,并且未被组合的计算任务217将依赖于组合的计算任务218。同时,被从候选任务集中移除的计算任务将保持原来的依赖关系。相应地,在更新的计算图202中,融合的顶点H的输出将被关联到原始的顶点G,输入将被关联到原始的顶点B。
组合后的依赖关系(例如,计算图202)以及针对组合的计算任务的生成逻辑225可以被提供给后端的代码生成器233。进而,代码生成器233可以生成与计算图202相对应的主机代码227和设备代码226,以用于处理计算作业221。处理结果与没有进行计算任务组合的处理结果相同。如此,在处理计算作业221的过程中,被组合成单个计算任务的一组计算任务将在相同计算节点处被处理,从而避免了数据移动。
以上描述了根据本公开的实施例的组合计算任务的技术方案。该技术方案可以基于计算任务之间的依赖性和计算任务对计算资源的需求,从计算作业的计算任务中确定适合于组合的计算任务。经组合的计算任务可以在同一计算节点或计算设备处被处理。以此方式,可以减少数据移动(例如,在GPU与CPU之间或不同GPU之间的移动),并提高计算性能。
该解决方案可以在编译器内部自动实现,并且对用户完全透明,使得用户无需知道如何以及在何处进行配置。此外,本公开的实施例对于负载平衡调度也是有益的。将资源需求小的计算任务融合可以促进多个计算设备或计算节点间的负载平衡。例如,可以避免一些计算设备仅处理资源需求小的计算任务而浪费了计算资源。特别地,在将本公开的实施例的计算任务组合与上文提及的平铺方案结合在一起使用时,组合和平铺后的计算任务(例如,重新构造的计算图中的所有计算)都将是中等大小的,这不仅有利于负载均衡调度,而且有利于数据移动的效率。
图8示出了可以用来实现本公开的实施例的示例设备800的示意性框图。如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和处理,例如过程300、400中的任一个。例如,在一些实施例中,过程300、400中的任一个可以被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU 801执行时,可以执行上文描述的过程300、400中的任一个的一个或多个步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程300、400中的任一个。
根据本公开的一些实施例,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的方法。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (19)
1.一种用于处理计算作业的方法,包括:
确定待处理的计算作业包括的多个计算任务之间的第一依赖关系;
基于所述第一依赖关系和所述多个计算任务对计算资源的需求,从所述多个计算任务中确定用于组合的一组计算任务;
将所述一组计算任务组合成目标计算任务;以及
基于所述第一依赖关系,确定所述目标计算任务与所述多个计算任务中除所述一组计算任务以外的计算任务之间的第二依赖关系。
2.根据权利要求1所述的方法,其中从所述多个计算任务中确定所述一组计算任务包括:
针对所述多个计算任务中的每个计算任务,基于所述第一依赖关系,确定与相应计算任务的输入或输出中的至少一项相关联的计算任务的数目;
从所述多个计算任务中确定第一组候选任务,其中针对每个候选任务所确定的所述数目小于阈值数目;
基于所述第一组候选任务对所述计算资源的需求,从所述第一组候选任务中确定用于组合的第二组候选任务;以及
从所述第二组候选任务中选择所述一组计算任务。
3.根据权利要求2所述的方法,其中从所述第一组候选任务中确定所述第二组候选任务包括:
通过从所述第一组候选任务中移除对所述计算资源的需求超过第一阈值的候选任务,来确定所述第二组候选任务。
4.根据权利要求2所述的方法,其中从所述第二组候选任务中选择所述一组计算任务包括:
基于所述第一依赖关系,确定所述第二组候选任务中的第一候选任务和第二候选任务,其中所述第一候选任务不依赖于所述第二组候选任务中的其他候选任务,并且所述第二候选任务依赖于所述第一候选任务;
估计将所述第一候选任务和所述第二候选任务相组合的第一组合任务对所述计算资源的第一需求;
如果确定所估计的所述第一需求小于第二阈值,选择所述第一候选任务和所述第二候选任务作为所述一组计算任务的至少一部分。
5.根据权利要求4所述的方法,还包括:
如果确定所述第二组候选任务包括依赖于所述第二候选任务的第三候选任务,估计将所述第一组合任务和所述第三候选任务相组合的第二组合任务对所述计算资源的第二需求;以及
如果确定所估计的所述第二需求小于所述第二阈值,将所述第三候选任务添加到所述一组计算任务。
6.根据权利要求4所述的方法,还包括:
如果确定所述第二组候选任务中没有依赖于所述第二候选任务的第三候选任务,将所述第一候选任务和所述第二候选任务确定为所述一组计算任务。
7.根据权利要求1所述的方法,其中确定所述第一依赖关系包括:
获得表示所述计算作业的计算图,所述计算图中的顶点对应于所述多个计算任务中的相应计算任务;以及
从所述计算图中确定所述第一依赖关系。
8.根据权利要求1所述的方法,其中将所述一组计算任务组合成所述目标计算任务包括:
获得与所述一组计算任务相对应的一组生成逻辑,所述一组生成逻辑中的每个生成逻辑用于生成针对相应计算任务的可执行指令;以及
将所述一组生成逻辑组合成用于生成针对所述目标计算任务的可执行指令的目标逻辑。
9.根据权利要求1所述的方法,其中所述计算资源包括存储资源和线程资源中的至少一项。
10.一种电子设备,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述设备执行动作,所述动作包括:
确定待处理的计算作业包括的多个计算任务之间的第一依赖关系;
基于所述第一依赖关系和所述多个计算任务对计算资源的需求,从所述多个计算任务中确定用于组合的一组计算任务;
将所述一组计算任务组合成目标计算任务;以及
基于所述第一依赖关系,确定所述目标计算任务与所述多个计算任务中除所述一组计算任务以外的计算任务之间的第二依赖关系。
11.根据权利要求10所述的设备,其中从所述多个计算任务中确定所述一组计算任务包括:
针对所述多个计算任务中的每个计算任务,基于所述第一依赖关系,确定与相应计算任务的输入或输出中的至少一项相关联的计算任务的数目;
从所述多个计算任务中确定第一组候选任务,其中针对每个候选任务所确定的所述数目小于阈值数目;
基于所述第一组候选任务对所述计算资源的需求,从所述第一组候选任务中确定用于组合的第二组候选任务;以及
从所述第二组候选任务中选择所述一组计算任务。
12.根据权利要求11所述的设备,其中从所述第一组候选任务中确定所述第二组候选任务包括:
通过从所述第一组候选任务中移除对所述计算资源的需求超过第一阈值的候选任务,来确定所述第二组候选任务。
13.根据权利要求11所述的设备,其中从所述第二组候选任务中选择所述一组计算任务包括:
基于所述第一依赖关系,确定所述第二组候选任务中的第一候选任务和第二候选任务,其中所述第一候选任务不依赖于所述第二组候选任务中的其他候选任务,并且所述第二候选任务依赖于所述第一候选任务;
估计将所述第一候选任务和所述第二候选任务相组合的第一组合任务对所述计算资源的第一需求;
如果确定所估计的所述第一需求小于第二阈值,选择所述第一候选任务和所述第二候选任务作为所述一组计算任务的至少一部分。
14.根据权利要求13所述的设备,还包括:
如果确定所述第二组候选任务包括依赖于所述第二候选任务的第三候选任务,估计将所述第一组合任务和所述第三候选任务相组合的第二组合任务对所述计算资源的第二需求;以及
如果确定所估计的所述第二需求小于所述第二阈值,将所述第三候选任务添加到所述一组计算任务。
15.根据权利要求13所述的设备,还包括:
如果确定所述第二组候选任务中没有依赖于所述第二候选任务的第三候选任务,将所述第一候选任务和所述第二候选任务确定为所述一组计算任务。
16.根据权利要求10所述的设备,其中确定所述第一依赖关系包括:
获得表示所述计算作业的计算图,所述计算图中的顶点对应于所述多个计算任务中的相应计算任务;以及
从所述计算图中确定所述第一依赖关系。
17.根据权利要求10所述的设备,其中将所述一组计算任务组合成所述目标计算任务包括:
获得与所述一组计算任务相对应的一组生成逻辑,所述一组生成逻辑中的每个生成逻辑用于生成针对相应计算任务的可执行指令;以及
将所述一组生成逻辑组合成用于生成针对所述目标计算任务的可执行指令的目标逻辑。
18.根据权利要求10所述的设备,其中所述计算资源包括存储资源和线程资源中的至少一项。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010359328.8A CN113568599A (zh) | 2020-04-29 | 2020-04-29 | 用于处理计算作业的方法、电子设备和计算机程序产品 |
US16/887,573 US11385931B2 (en) | 2020-04-29 | 2020-05-29 | Method, electronic device, and computer program product for processing computing job |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010359328.8A CN113568599A (zh) | 2020-04-29 | 2020-04-29 | 用于处理计算作业的方法、电子设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113568599A true CN113568599A (zh) | 2021-10-29 |
Family
ID=78158620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010359328.8A Pending CN113568599A (zh) | 2020-04-29 | 2020-04-29 | 用于处理计算作业的方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11385931B2 (zh) |
CN (1) | CN113568599A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237911A (zh) * | 2021-12-23 | 2022-03-25 | 深圳华大医学检验实验室 | 基于cuda的基因数据处理方法、装置和cuda构架 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210107531A (ko) * | 2018-12-24 | 2021-09-01 | 인텔 코포레이션 | 멀티-프로세스 웹 브라우저 환경에서 머신 러닝 모델을 프로세싱하기 위한 방법들 및 장치 |
US11609811B2 (en) * | 2020-08-27 | 2023-03-21 | Microsoft Technology Licensing, Llc | Automatic root cause analysis and prediction for a large dynamic process execution system |
US20220261287A1 (en) * | 2021-02-12 | 2022-08-18 | Nvidia Corporation | Method and apparatus for improving processor resource utilization during program execution |
CN114780648A (zh) * | 2022-04-19 | 2022-07-22 | 湖南长银五八消费金融股份有限公司 | 任务调度方法、装置、计算机设备、存储介质和程序产品 |
CN116244324B (zh) * | 2023-03-15 | 2023-12-08 | 上海擎创信息技术有限公司 | 任务数据关系挖掘方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138571A1 (en) * | 2000-07-10 | 2002-09-26 | Jean-Marc Trinon | System and method of enterprise systems and business impact management |
US20140298321A1 (en) * | 2013-03-27 | 2014-10-02 | Fujitsu Limited | Installation control method and installation control apparatus |
US20160162478A1 (en) * | 2014-11-25 | 2016-06-09 | Lionbridge Techologies, Inc. | Information technology platform for language translation and task management |
WO2018045541A1 (zh) * | 2016-09-08 | 2018-03-15 | 华为技术有限公司 | 一种容器分配的优化方法及处理设备 |
CN109697206A (zh) * | 2018-12-19 | 2019-04-30 | 江苏理工学院 | 一种分布式函数依赖关系挖掘方法 |
US20190347127A1 (en) * | 2018-05-09 | 2019-11-14 | Red Hat, Inc. | Service provisioning and orchestration for virtual machine to container migration |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4211245B4 (de) * | 1991-04-05 | 2009-05-14 | Kabushiki Kaisha Toshiba, Kawasaki | Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung |
JP2001273313A (ja) * | 2000-01-19 | 2001-10-05 | Fuji Xerox Co Ltd | プロセス記述装置および方法ならびにプロセス分類方法 |
CN110389763B (zh) | 2018-04-20 | 2023-06-16 | 伊姆西Ip控股有限责任公司 | 用于调度专用处理资源的方法、设备和计算机可读介质 |
-
2020
- 2020-04-29 CN CN202010359328.8A patent/CN113568599A/zh active Pending
- 2020-05-29 US US16/887,573 patent/US11385931B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138571A1 (en) * | 2000-07-10 | 2002-09-26 | Jean-Marc Trinon | System and method of enterprise systems and business impact management |
US20140298321A1 (en) * | 2013-03-27 | 2014-10-02 | Fujitsu Limited | Installation control method and installation control apparatus |
US20160162478A1 (en) * | 2014-11-25 | 2016-06-09 | Lionbridge Techologies, Inc. | Information technology platform for language translation and task management |
WO2018045541A1 (zh) * | 2016-09-08 | 2018-03-15 | 华为技术有限公司 | 一种容器分配的优化方法及处理设备 |
US20190347127A1 (en) * | 2018-05-09 | 2019-11-14 | Red Hat, Inc. | Service provisioning and orchestration for virtual machine to container migration |
CN109697206A (zh) * | 2018-12-19 | 2019-04-30 | 江苏理工学院 | 一种分布式函数依赖关系挖掘方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237911A (zh) * | 2021-12-23 | 2022-03-25 | 深圳华大医学检验实验室 | 基于cuda的基因数据处理方法、装置和cuda构架 |
Also Published As
Publication number | Publication date |
---|---|
US11385931B2 (en) | 2022-07-12 |
US20210342184A1 (en) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113568599A (zh) | 用于处理计算作业的方法、电子设备和计算机程序产品 | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
CN103858099B (zh) | 用于执行应用的方法和系统、具有机器指令的电路 | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
US11144348B2 (en) | Heterogeneous computing system and method including analyzing expected costs of compute kernels | |
US11704161B2 (en) | Method, device and computer program product for processing computing job | |
US20110238955A1 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
CN111507476A (zh) | 部署机器学习模型的方法、设备和计算机程序产品 | |
CN111831287A (zh) | 用于确定执行代码段所需的资源的方法、设备和程序产品 | |
CN112148472A (zh) | 用于提高执行软件的异构系统的利用率的方法和装置 | |
JP4959774B2 (ja) | アプリケーション生成システム、方法及びプログラム | |
EP3367310A1 (en) | Method and apparatus for parallelizing layers of deep neural networks onto parallel computing systems | |
US11551095B2 (en) | Sharing preprocessing, computations, and hardware resources between multiple neural networks | |
US9009713B2 (en) | Apparatus and method for processing task | |
Jalalian et al. | A hierarchical multi-objective task scheduling approach for fast big data processing | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
Mirsoleimani et al. | A parallel memetic algorithm on GPU to solve the task scheduling problem in heterogeneous environments | |
Dovier et al. | GPU-based parallelism for ASP-solving | |
Neelima et al. | Communication and computation optimization of concurrent kernels using kernel coalesce on a GPU | |
KR102376527B1 (ko) | Dnn 프레임워크를 이용하는 단일 가속기용 프로그램을 복수의 가속기에서 처리하는 방법 및 컴퓨터 프로그램 | |
Gudukbay et al. | GYAN: Accelerating bioinformatics tools in galaxy with GPU-aware computation mapping | |
Elshazly et al. | Towards enabling I/O awareness in task-based programming models | |
Goodarzi | Efficient Scheduling and High-Performance Graph Partitioning on Heterogeneous CPU-GPU Systems |
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 |