CN111488205A - 面向异构硬件架构的调度方法和调度*** - Google Patents
面向异构硬件架构的调度方法和调度*** Download PDFInfo
- Publication number
- CN111488205A CN111488205A CN201910072581.2A CN201910072581A CN111488205A CN 111488205 A CN111488205 A CN 111488205A CN 201910072581 A CN201910072581 A CN 201910072581A CN 111488205 A CN111488205 A CN 111488205A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- task
- heterogeneous
- heterogeneous hardware
- policy
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 17
- 230000003044 adaptive effect Effects 0.000 claims abstract description 5
- 238000011156 evaluation Methods 0.000 claims description 19
- 238000005538 encapsulation Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000005457 optimization Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 15
- 239000008186 active pharmaceutical agent Substances 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 235000019580 granularity Nutrition 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/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
- G06F9/5044—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 considering hardware capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种面向异构硬件架构的调度方法和调度***。该调度方法包括:接收总体计算任务并基于异构硬件架构中异构硬件单元的计算特征确定将所述总体计算任务分解为一个或多个子任务的调度策略,其中,所述调度策略用于表征执行所述子任务的异构硬件单元;基于所述调度策略,将所述子任务分发给适配的异构硬件单元执行。本发明的调度方法和调度***能够整个异构硬件体系架构的资源利用率和计算效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向异构硬件架构的调度方法和调度***。
背景技术
异构硬件体系架构包含一系列硬件结构差异很大的异构设备,例如CPU、GPU、DSP、FPGA、ASIC等。对于异构硬件体系架构,通常硬件由一个或多个硬件vendor(供应商)提供驱动、专有API和行业标准API接口供应用开发人员调度任务,即使同一个硬件vendor,在同一个硬件功能模块上也有可能提供多级API接口以适应不同的上层软件。
在现有的异构硬件体系架构中,各个硬件模块、API仅关心自己可见的功能和效率,对整体异构架构没有一个良好的认识,不能从全局角度统一地进行任务分割和调度,即使面对同一个硬件,因为任务数据的不同,也不适用于单一的调度方法。
目前,软件开发人员通常在粗放的粒度上划分子任务给不同类型的异构硬件单元,再通过各异构硬件单元提供的同步数据访问等功能实现子任务时序上的依赖和运算结果传递,而通常任务划分和同步数据访问是由应用开发人员根据经验做出的决定,这种方式不能充分利用硬件单元的资源。此外,为了适配不同的异构硬件,需要设计不同的功能模块,并且随着硬件的升级,需要不断改进功能模块,这对应用层软件开发人员提出了更高的要求,由于软件开发人员对异构体系的理解不同,即使对于相同的硬件架构,软件模块的计算效率差异也非常大,从而导致计算效率降低,并且软件开发人员除了开发上层算法和应用逻辑功能,还需要将大量时间花在开发适配不同异构硬件单元的软件模块上。
对于异构硬件体系结构,要求开发人员对各个硬件模块、模块内部、甚至指令级别的优化有深入理解。在软件不同层次对硬件进行不同粒度的任务划分,具体到单个硬件模块,也有不同的划分方式,得到不同的执行效率。然而,目前基于应用程序自己划分任务,调度异构硬件单元的方法,缺乏基于整个异构架构的统一调度,对于不同的计算任务,甚至于相同的计算任务,均无法高效发挥异构架构性能,从而导致计算效率低、资源利用率低等问题。
因此,需要对现有技术进行改进,以提供面向异构硬件架构的联合调度方法。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种面向异构硬件架构的调度方法和调度***。
根据本发明的第一方面,提供了一种面向异构硬件架构的调度方法。该方法包括以下步骤:
步骤1:接收总体计算任务并基于异构硬件架构中异构硬件单元的计算特征确定将所述总体计算任务分解为一个或多个子任务的调度策略,其中,所述调度策略用于表征执行所述子任务的异构硬件单元;
步骤2:基于所述调度策略,将所述子任务分发给适配的异构硬件单元执行。
在一个实施例中,根据以下步骤确定所述调度策略:
从所述总体计算任务中划分出需要由专用的异构硬件单元处理的子任务;
将所述总体计算任务中没有被分配的子任务分配给由通用的异构硬件单元处理。
在一个实施例中,步骤1还包括:
从所述调度策略中抽取子任务组合和子任务参数组合,生成多种候选调度策略;
以所述总体计算任务在不同的异构硬件单元上的执行性能为优化目标,选择出一种调度策略。
根据本发明的第二方面,提供了一种面向异构硬件架构的调度***。该***包括:
调度控制总控模块:用于从应用程序接收总体计算任务并基于异构硬件架构中异构硬件单元的计算特征确定将所述总体计算任务分解为一个或多个子任务的调度策略,其中,所述调度策略用于表征执行所述子任务的异构硬件单元;
异构任务执行模块:用于基于所述调度策略,将所述子任务分发给适配的异构硬件单元执行。
在一个实施例中,所述调度控制总控模块包括调度控制单元、策略单元和评估单元,其中:
所述调度控制单元用于确定将所述总体计算任务分解为一个或多个子任务的调度策略;
所述策略单元用于从所述调度策略中抽取子任务组合和子任务参数组合,生成多种候选调度策略;
所述评估单元用于以所述总体计算任务在不同的异构硬件单元上的执行性能为优化目标,评估所述多种候选调度策略,并将评估结果反馈给所述调度控制单元。
在一个实施例中,所述调度控制总控模块还包括任务描述层、封装层,其中,所述任务描述层用于从应用程序接收总体计算任务并表示为待执行的计算任务序列,提供给所述调度控制单元,所述封装层用于为所述异构任务执行模块提供子任务分发、子任务同步、子任务数据传输接口,以及为所述调度控制单元提供子任务的执行性能反馈接口。
在一个实施例中,所述调度控制总控模块还用于基于异构硬件单元的实际执行的性能结果优化将所述总体计算任务分解为一个或多个子任务的调度策略。
在一个实施例中,所述性能结果包括异构硬件单元的执行时间、存储访问的带宽、工作空闲比中的一项或多项。
在一个实施例中,所述异构硬件单元包括针对设备级的异构计算设备,或者针对异构计算设备内的运算单元,或者所述设备级的异构计算设备和所述异构计算设备内的运算单元的组合。
与现有技术相比,本发明的优点在于:针对异构硬件体系架构,提供了一种层次化的联合调度方法,能够感知下层异构硬件单元的计算特征,选择适合的任务调度策略,从而为不同类型的异构硬件单元适配子任务,提高了整个异构硬件体系架构的资源利用率和计算效率;并且,能够基于感知的底层硬件单元的计算特征和总体计算任务的数据特征,以迭代的方式针对各异构硬件单元生成优化的子任务调度策略;此外,在子任务生成过程中,能够基于不同硬件单元内部提供的多种硬件功能单元,生成粒度更小的运算任务,以最大化发挥整个异构硬件体系架构的性能。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1示出了根据本发明一个实施例的面向异构硬件架构的调度***的示意图;
图2示出了根据本发明一个实施例的面向异构硬件架构的调度方法的流程图;
图3示出了根据本发明另一实施例的面向异构硬件架构的调度***的示意图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
在本文示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1示出了根据本发明一个实施例的面向异构硬件架构的调度***的示意图。该调度***100包括任务描述层120、高层调度控制单元130、封装层140、策略单元170、评估单元180、以及多个异构任务执行单元,其中示出了异构任务执行单元151、异构任务执行单元152和异构任务执行单元153。为便于理解,图1还示出了与本发明的调度***100具有交互的应用程序110和异构硬件单元161-163。
首先,需要说明的是,在本文的实施例中,异构硬件单元161-163可以是设备级的硬件设备或者更细粒度的计算单元级,例如,设备级是指CPU、GPU、DSP、FPGA、ASIC等计算设备,或者由这些计算设备中的至少两项以上的计算能力组合构成的混合计算加速设备,例如,GPU+ASIC混合计算加速器、CPU+GPU+ASIC混合计算加速设备等,而计算单元级是指这些计算设备中所包含的更细粒度的计算单元。在***初始化时,这些异构硬件单元能够注册其硬件类型以及计算能力等,以供高层调度控制单元130感知。
应用程序110用于根据计算需求生成一个总体计算任务。在本发明中,该应用程序110只需提供整体的逻辑计算任务,一次下发给调度***100即可,而不需制定计算任务的某个部分最终是由哪种类型的异构硬件单元实现,例如一个总体逻辑计算任务为(a+b)*(c+d),a、b、c、d可表示矩阵或数据。
任务描述层120用于接收应用程序110下发的总体计算任务并表示为具体执行的任务序列,任务描述层120可根据内部定义的数据结构来表示计算任务序列,例如,对于接收的总体计算任务(a+b)*(c+d),生成的任务序列包括相加运算(即S1=(a+b)和S2=(c+d))和相乘运算(即S=S1*S2)。
在一个实施例中,计算任务序列包括具体运算类型(如矩阵乘法运算、乘法运算、加密运算等)、任务的数据属性(如矩阵大小、加密运算的see d等)以及需要计算的输入数据等,例如,参见下表1所示。
表1:计算任务序列
任务序列索引 | 运算类型 | 数据属性 | 输入数据 |
1 | 矩阵乘法运算 | 2*4,4*3 | (A,B) |
2 | 乘法运算 | 单精度浮点数 | (S1,S2) |
3 | 加密运算 | 加密seed | seed数据 |
4 | 加法运算 | 单精度浮点数 | (a,b) |
高层调度控制单元130作为调度***100的核心控制部件,用于确定将总体计算任务划分为多个子任务的调度策略,其中子任务调度策略表征子任务序列和执行各子任务的异构硬件单元的标识。高层调度控制单元130能够感知异构硬件体系架构中各异构硬件单元的计算特征(包括性能特征和功能特征等)并根据计算任务序列中的运算类型、任务数量、数据属性等,确定子任务调度策略,从而为各个异构硬件单元分配适合的子任务,以充分发挥各异构硬件单元的计算能力。例如,分配的子任务调度策略参见表2所示。
表2:子任务调度策略
子任务索引 | 包含的任务序列 | 目标异构硬件单元 |
1 | 任务序列1、2 | 异构硬件单元161 |
2 | 任务序列3 | 异构硬件单元162 |
3 | 任务序列4 | 异构硬件单元163 |
在一个实施例中,高层调度控制单元130根据以下原则确定子任务的调度策略:对于专用的异构硬件单元(如专用于矩阵乘法运算的FPGA),由于其仅能够处理一些有限的特定的计算任务,但处理性能强,高层调度控制单元130将按照性能导向将这样的特定计算子任务优先划分出来给它们;对于某些相对通用的异构硬件单元(如CPU),由于其能够通用处理各种计算任务但处理性能相对而言没有优势,高层调度控制单元130将按照功能需求将一些专用异构硬件单元不能完成或不适于执行的计算任务分配给它们。简言之,高层调度控制单元130可根据总体计算任务的数据属性、运算属性等以及参与运算的所有类型的异构硬件单元的计算特征确定子任务调度决策,子任务调度策略需要相应的异构硬件单元能够正确处理。
策略单元170与高层调度控制单元130具有通信连接,接收高层调度控制单元130的子任务调度策略,以高层调度控制单元130初步确定的子任务调度策略为参考,从中抽取任务特性(例如,子任务组合、子任务参数组合等条件),并根据不同的任务特性生成多种候选的子任务调度策略。例如,高层调度控制单元130初步确定的子任务调度策略为将子任务1分配给异构硬件单元161,将子任务2分配给异构硬件单元162时,策略单元170根据任务特性生成的候选策略可包括两种,一是将子任务1和子任务2均分配给异构硬件单元161,二是将子任务1分配给异构硬件单元161,而将子任务2分配给异构硬件单元163。在另外的实施例中,高层调度控制单元130可仅初步确定将子任务分配给那些异构硬件单元,而由策略单元170进一步根据任务特性确定具体的候选策略。在本文中,将调度控制单元130初步确定的参考的子任务调度策略称为内置策略,内置策略由高层调度控制单元130生成,策略单元170可存储内置策略,以供高层调度控制单元130在后续查询。
在一个实施例中,内置策略包括:由硬件的特性决定某些任务划分会比较高效而与硬件单元类型相关的策略(如上述高层调度控制单元130确定的子任务调度策略),或者是基于实际执行的历史经验归纳出的经验策略生成多种子任务划分,调用对应硬件单元的标准API或私有库生成任务,并根据执行结果判断性能,从而选择出一种最佳的策略作为内置策略,关于优选的内置策略将在下文进一步介绍。
在一个实施例中,策略单元170基于内置策略根据输入数据和数据总量生成候选的子任务调度策略列表,例如,输入数据包括本次总体计算任务需要执行的子任务序列和子任务执行时处理的数据特性,例如一次需要执行多种乘法、加法、矩阵运算,并且各乘法、加法、矩阵运算的单位数据大小(8位/16位/32位/64位数据)和数据总量(每次执行2M的8位数据,或者16M的64位数据等)。
候选的子任务调度策略列表表示每个任务和数据量输入后,根据现有硬件的特性和经验划分出在不同的硬件单元执行的子任务序列,最终该子任务序列会生成具体的硬件命令序列,所述候选的子任务调度策略可包括内置策略。
综上,策略单元170用于接收并存储高层调度控制单元130下发的内置策略,并且对于内置策略,根据抽取的任务特性生成多种候选的子划分调度策略,由不同的硬件单元执行,此外,对于同一个任务在同一个硬件单元也有多种实现方法(例如,由该硬件单元内部的更细粒度的不同计算单元实现),也可根据内置策略生成多种候选的子任务调度策略,以联合完成异构硬件单元之间和异构硬件单元内部的任务分配。
评估单元180与策略单元170和高层调度控制单元130具有通信连接,评估单元180对来自于策略单元170的多种候选的子任务调度策略,给出用于反映执行性能的分数,并将每种候选策略的分数返回给高层调度控制单元130,由高层调度控制单元130选择最终的子任务调度策略。
评估单元180根据候选策略、任务特性和具体的输入数据特性(例如,二维还是多维数组等)对各候选策略的执行性能评估分数,并将候选策略和对应分数返回给高层调度控制单元130。
在一个实施例中,各候选策略的性能数据可由评估单元180的估算算法给出,也可由评估单元180利用某些软硬件模拟器来模拟异构硬件单元161-163的执行性能获得。
高层调度控制单元130可综合考虑各子任务的调度策略的评估性能,选择最优的子任务调度策略。
例如,在根据某些局部性能结果无法决策合适的子任务调度策略的情况下(例如,子任务调度策略A相对于子任务调度策略B而言,可以减少X类计算资源的使用,但同时会增加Y类的内存访问带宽的使用。在有些全局情况下,X类计算资源是唯一性能瓶颈,故子任务调度策略A更优;而在另一些全局情况下,Y类的内存访问带宽才是性能瓶颈,故子任务调度策略B更优),可以评估各子任务调度策略,然后根据整体评估结果选出最优策略,例如,以总执行时间最短为准则,或者以能耗比最佳为准则来决策。
封装层140用于从高层调度控制单元130接收最终的子任务调度策略,并根据执行各子任务的硬件单元标识将子任务派发给对应的异构任务执行单元。封装层140根据高层调度控制单元130提供的子任务描述,生成具体的执行逻辑,例如,需要基于所有硬件底层函数抽象一个标准的接口,该接口支持高层调度控制单元130进行任务描述分发、任务同步原语、任务数据传输原语、任务信息反馈(包括时间,内存占用等性能信息)接口。在该实施例中,利用一个专有的虚拟层(即封装层)封装了各异构硬件单元的功能,以统一的方式给高层调度控制单元130提供任务派发、执行和评估功能,从而实现对各异构硬件单元的统一调度。
异构任务执行单元151-153根据封装层140的子任务描述,调用对应的异构硬件单元提供的基础函数功能库(例如,加法、乘法、矩阵乘等),由各异构硬件单元计算后,返回计算结果和统计信息,这些计算结果和统计信息可经由封装层140返回给高层调度控制单元130。在一个实施例中,计算结果包括各子任务执行的效率指标,例如,执行时间、带宽、各个硬件单元执行的cycle number等。
进一步地,高层调度控制单元130根据计算结果和统计信息,调整策略单元170中的各候选的子任务调度策略的优先级和分数,以供后续执行任务时参考。通过这种方式,本发明提供的调度***100本身是一种特殊的迭代、性能评估和子划分调度策略的选择过程,其能够基于计算任务的运算特性、数据特性、异构硬件单元的计算特征、以及实际执行的历史经验而生成的优化的调度策略。
需要说明的是,在此实施例中,异构任务执行单元151-153与异构硬件执行单元161-163一一对应,多个异构任务执行单元可根据封装层的同步原语实现同步,数据传输原语实现任务数据传输。在另外的实施例中,多个异构任务执行单元也可以集成为一个模块,以集中对多个硬件单元进行管理和控制。关于数据同步和数据传输属于现有技术,在此不再赘述。
在上述实施例中,高层调度控制单元130基于异构硬件单元的计算特征确定内置策略,策略单元170基于任务特性以内置策略作为参考,生成多种候选的子任务调度策略,评估单元180对多种候选的子任务调度策略进行性能评估,以供高层调度控制单元130选出使整个异构硬件体系架构执行所述总体计算任务的性能最佳的调度策略。因此,本发明实施例提供的调度***100能够根据异构硬件单元的功能特征和性能特征,结合整体计算任务的运算特征、输入数据量和输入数据属性,确定适当的子任务划分策略,以对底层的各种类型的异构硬件单元进行联合调度。
需要说明的是,在不违背本发明的精神和范围的前提下,本领域的技术人员能够对图1实施例的调度***100作各种改变或变型,只要其能够实现本发明的目的即可,例如,参见图2的实施例,与图1的调度***不同,该调度***200包括高层总控模块220和异构任务执行模块230,其中,高层总控模块220用于集成图1的任务描述层、高层调度控制单元和封装层,并可进一步集成策略单元和评估单元,而异构任务执行模块230用于统一对各类型的异构硬件单元进行集中管理和控制。
基于上述实施例的调度***,本发明提供了一种联合调度方法,该方法自动指挥多种类型的异构硬件单元联合执行总体计算任务,具体地,参见图3所示,该调度方法包括以下步骤:
步骤S310,根据异构硬件单元的计算特征确定将接收的一个总体计算任务划分为一个或多个子任务的调度策略。
步骤S320,基于子任务序列抽取的任务特性,生成多种候选的子任务调度策略。
步骤S330,评估多种候选的子任务调度策略的执行性能。
步骤S340,根据评估结果,以最大化总体计算任务在异构硬件架构的执行性能为目标,选择最终的子任务调度策略。
步骤S350,执行所选择的子任务调度策略,并根据实际执行结果进一步对候选的子任务调度策略评估。
本发明的联合调度方法和***可用于多种类型的计算***,例如、台式计算机、便携式计算机、平板电脑、智能手机或任何其他类型的计算设备,也可以是片上***(SOC)。本发明的联合调度方法和***可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理设备、机器人、移动设备、物联网***和服务器等。
本发明提供的联合调度方法和调度***,能够解决现有技术中异构硬件体系架构中存在的以下问题:
1)、完全不同的API和库函数,各厂商提供行业标准接口库和各家私有的API,函数库和扩展功能。有的API是各厂商都有的,有的是私有。通常各厂商会提供CPU端的通信同步方式,但是设备之间直接的通信同步,数据传输一般在API这层是没有的。
2)、在设备内部,执行的方式不同,有的设备提供高并发大吞吐的运算,有的设备提供复杂控制逻辑,有的设备提供高精度执行支持,有的设备只支持低精度等等,并且数据同步方式和数据传递功能不同。
3)、各个设备的特性和多种私有库的存在,没有一种统一API接口实现所有设备的执行,尤其是需要发挥设备高效性的时候,通常只有设备厂商提供的专有库具有最大化的效果。
综上所述,本发明提供的面向异构硬件体系架构的联合调度方法和调度***,通过层次化的调度优化,用户只需执行一次,自动实现内部的任务划分和性能评估,生成在不同异构硬件单元上执行的子任务划分策略,并将该优化方案作内置策略存储,从而便于下次优化方案的选择,使得整个异构硬件体系能够有效的运行整体应用程序。并且,用户只需提供一个逻辑上的整体计算任务即可,而无需关心每个部分的计算任务是最终是由哪一种异构硬件单元来执行的。本发明的这种联合调度方法,能够应用于所有类似“一个整体计算任务需要根据任务和各类异构硬件单元的特点,联合使用各类异构硬件单元,在它们之间自动协调、交互、划分计算子任务、最终整合各自效率,生成最优执行方案”的场景。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的***和方法,也可以通过其它方式实现。以上所描述的***实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能能够以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。还应注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种面向异构硬件架构的调度方法,包括以下步骤:
步骤1:接收总体计算任务并基于异构硬件架构中异构硬件单元的计算特征确定将所述总体计算任务分解为一个或多个子任务的调度策略,其中,所述调度策略用于表征执行所述子任务的异构硬件单元;
步骤2:基于所述调度策略,将所述子任务分发给适配的异构硬件单元执行。
2.根据权利要求1所述的方法,其中,根据以下步骤确定所述调度策略:
从所述总体计算任务中划分出需要由专用的异构硬件单元处理的子任务;
将所述总体计算任务中没有被分配的子任务分配给由通用的异构硬件单元处理。
3.根据权利要求1所述的方法,其中,步骤1还包括:
从所述调度策略中抽取子任务组合和子任务参数组合,生成多种候选调度策略;
以所述总体计算任务在不同的异构硬件单元上的执行性能为优化目标,选择出一种调度策略。
4.一种面向异构硬件架构的调度***,包括:
调度控制总控模块:用于从应用程序接收总体计算任务并基于异构硬件架构中异构硬件单元的计算特征确定将所述总体计算任务分解为一个或多个子任务的调度策略,其中,所述调度策略用于表征执行所述子任务的异构硬件单元;
异构任务执行模块:用于基于所述调度策略,将所述子任务分发给适配的异构硬件单元执行。
5.根据权利要求4所述的***,其特征在于,所述调度控制总控模块包括调度控制单元、策略单元和评估单元,其中:
所述调度控制单元用于确定将所述总体计算任务分解为一个或多个子任务的调度策略;
所述策略单元用于从所述调度策略中抽取子任务组合和子任务参数组合,生成多种候选调度策略;
所述评估单元用于以所述总体计算任务在不同的异构硬件单元上的执行性能为优化目标,评估所述多种候选调度策略,并将评估结果反馈给所述调度控制单元。
6.根据权利要求5所述的***,其特征在于,所述调度控制总控模块还包括任务描述层、封装层,其中,所述任务描述层用于从应用程序接收总体计算任务并表示为待执行的计算任务序列,提供给所述调度控制单元,所述封装层用于为所述异构任务执行模块提供子任务分发、子任务同步、子任务数据传输接口,以及为所述调度控制单元提供子任务的执行性能反馈接口。
7.根据权利要求4所述的***,其特征在于,所述调度控制总控模块还用于基于异构硬件单元的实际执行的性能结果优化将所述总体计算任务分解为一个或多个子任务的调度策略。
8.根据权利要求7所述的***,其特征在于,所述性能结果包括异构硬件单元的执行时间、存储访问的带宽、工作空闲比中的一项或多项。
9.根据权利要求4所述的***,其特征在于,所述异构硬件单元包括针对设备级的异构计算设备,或者针对异构计算设备内的运算单元,或者所述设备级的异构计算设备和所述异构计算设备内的运算单元的组合。
10.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求1至3中任一项所述方法的步骤。
11.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072581.2A CN111488205B (zh) | 2019-01-25 | 2019-01-25 | 面向异构硬件架构的调度方法和调度*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072581.2A CN111488205B (zh) | 2019-01-25 | 2019-01-25 | 面向异构硬件架构的调度方法和调度*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488205A true CN111488205A (zh) | 2020-08-04 |
CN111488205B CN111488205B (zh) | 2024-03-19 |
Family
ID=71793816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910072581.2A Active CN111488205B (zh) | 2019-01-25 | 2019-01-25 | 面向异构硬件架构的调度方法和调度*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488205B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256623A (zh) * | 2020-10-26 | 2021-01-22 | 曙光信息产业(北京)有限公司 | 一种基于异构***的处理性能优化方法及装置 |
CN112463377A (zh) * | 2020-11-26 | 2021-03-09 | 海光信息技术股份有限公司 | 异构计算***执行计算任务的方法及装置 |
CN113051053A (zh) * | 2021-03-24 | 2021-06-29 | 依瞳科技(深圳)有限公司 | 异构资源调度方法、装置、设备和计算机可读存储介质 |
CN114116015A (zh) * | 2022-01-21 | 2022-03-01 | 上海登临科技有限公司 | 用于管理硬件命令队列的方法及*** |
CN114880101A (zh) * | 2022-07-01 | 2022-08-09 | 成都登临科技有限公司 | 一种ai处理器、电子部件及电子设备 |
CN115658269A (zh) * | 2022-11-01 | 2023-01-31 | 上海玫克生储能科技有限公司 | 一种用于任务调度的异构计算终端 |
CN115794359A (zh) * | 2021-09-09 | 2023-03-14 | 深圳致星科技有限公司 | 用于联邦学习的异构***及处理方法 |
CN116382880A (zh) * | 2023-06-07 | 2023-07-04 | 成都登临科技有限公司 | 任务执行方法、装置、处理器、电子设备及存储介质 |
CN116932226A (zh) * | 2023-09-14 | 2023-10-24 | 中诚华隆计算机技术有限公司 | 一种基于Chiplet的硬件加速方法和硬件加速器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120278811A1 (en) * | 2011-04-26 | 2012-11-01 | Microsoft Corporation | Stream processing on heterogeneous hardware devices |
CN104598425A (zh) * | 2013-10-31 | 2015-05-06 | 中国石油天然气集团公司 | 一种通用多机并行计算方法及*** |
CN105893157A (zh) * | 2016-04-29 | 2016-08-24 | 国家计算机网络与信息安全管理中心 | 一种开放分布式***资源管理与任务调度***与方法 |
US20180276049A1 (en) * | 2017-03-24 | 2018-09-27 | Tata Consultancy Services Limited | Systems and methods for estimating computation times a-priori in fog computing robotics |
-
2019
- 2019-01-25 CN CN201910072581.2A patent/CN111488205B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120278811A1 (en) * | 2011-04-26 | 2012-11-01 | Microsoft Corporation | Stream processing on heterogeneous hardware devices |
CN104598425A (zh) * | 2013-10-31 | 2015-05-06 | 中国石油天然气集团公司 | 一种通用多机并行计算方法及*** |
CN105893157A (zh) * | 2016-04-29 | 2016-08-24 | 国家计算机网络与信息安全管理中心 | 一种开放分布式***资源管理与任务调度***与方法 |
US20180276049A1 (en) * | 2017-03-24 | 2018-09-27 | Tata Consultancy Services Limited | Systems and methods for estimating computation times a-priori in fog computing robotics |
Non-Patent Citations (1)
Title |
---|
宋曰聪: "基于异构环境的子任务可分解调度策略研究", vol. 28, no. 7, pages 1 - 4 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256623A (zh) * | 2020-10-26 | 2021-01-22 | 曙光信息产业(北京)有限公司 | 一种基于异构***的处理性能优化方法及装置 |
CN112463377B (zh) * | 2020-11-26 | 2023-03-14 | 海光信息技术股份有限公司 | 异构计算***执行计算任务的方法及装置 |
CN112463377A (zh) * | 2020-11-26 | 2021-03-09 | 海光信息技术股份有限公司 | 异构计算***执行计算任务的方法及装置 |
CN113051053A (zh) * | 2021-03-24 | 2021-06-29 | 依瞳科技(深圳)有限公司 | 异构资源调度方法、装置、设备和计算机可读存储介质 |
CN113051053B (zh) * | 2021-03-24 | 2023-09-08 | 博瀚智能(深圳)有限公司 | 异构资源调度方法、装置、设备和计算机可读存储介质 |
CN115794359A (zh) * | 2021-09-09 | 2023-03-14 | 深圳致星科技有限公司 | 用于联邦学习的异构***及处理方法 |
CN114116015A (zh) * | 2022-01-21 | 2022-03-01 | 上海登临科技有限公司 | 用于管理硬件命令队列的方法及*** |
CN114880101A (zh) * | 2022-07-01 | 2022-08-09 | 成都登临科技有限公司 | 一种ai处理器、电子部件及电子设备 |
CN115658269A (zh) * | 2022-11-01 | 2023-01-31 | 上海玫克生储能科技有限公司 | 一种用于任务调度的异构计算终端 |
CN115658269B (zh) * | 2022-11-01 | 2024-02-27 | 上海玫克生储能科技有限公司 | 一种用于任务调度的异构计算终端 |
CN116382880A (zh) * | 2023-06-07 | 2023-07-04 | 成都登临科技有限公司 | 任务执行方法、装置、处理器、电子设备及存储介质 |
CN116382880B (zh) * | 2023-06-07 | 2023-08-11 | 成都登临科技有限公司 | 任务执行方法、装置、处理器、电子设备及存储介质 |
CN116932226A (zh) * | 2023-09-14 | 2023-10-24 | 中诚华隆计算机技术有限公司 | 一种基于Chiplet的硬件加速方法和硬件加速器 |
CN116932226B (zh) * | 2023-09-14 | 2023-12-19 | 中诚华隆计算机技术有限公司 | 一种基于Chiplet的硬件加速方法和硬件加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN111488205B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488205B (zh) | 面向异构硬件架构的调度方法和调度*** | |
KR102011671B1 (ko) | 이종 계산 장치 기반의 질의 처리 방법 및 장치 | |
US10031775B2 (en) | Backfill scheduling for embarrassingly parallel jobs | |
US9250953B2 (en) | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system | |
WO2016078008A1 (zh) | 调度数据流任务的方法和装置 | |
CN110633153A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US10585653B2 (en) | Declarative programming model with a native programming language | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
WO2018059260A1 (en) | Apparatus and method for scheduling graph computing on heterogeneous platforms based on energy efficiency | |
US20220114429A1 (en) | Method and device for generating operation data and related product | |
US11630986B2 (en) | Graph conversion method | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
WO2015099562A1 (en) | Methods and apparatus for data-parallel execution of operations on segmented arrays | |
KR20200091790A (ko) | Gpu 연산의 동시 실행을 위한 플랫폼 | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
US9105208B2 (en) | Method and apparatus for graphic processing using multi-threading | |
CN116382880B (zh) | 任务执行方法、装置、处理器、电子设备及存储介质 | |
CN110968320A (zh) | 针对异构硬件架构的联合编译方法和编译*** | |
KR20230017212A (ko) | 워크로드 처리를 위한 작업 그래프 스케줄링 | |
Wu et al. | Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
US20220309606A1 (en) | Dynamically reconfigurable register file | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
US20110302590A1 (en) | Process allocation system, process allocation method, process allocation program |
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 |