CN115904643A - 图任务调度方法、执行设备、存储介质及程序产品 - Google Patents

图任务调度方法、执行设备、存储介质及程序产品 Download PDF

Info

Publication number
CN115904643A
CN115904643A CN202111109601.2A CN202111109601A CN115904643A CN 115904643 A CN115904643 A CN 115904643A CN 202111109601 A CN202111109601 A CN 202111109601A CN 115904643 A CN115904643 A CN 115904643A
Authority
CN
China
Prior art keywords
task
graph
computing resources
scheduling
tasks
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
Application number
CN202111109601.2A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202111109601.2A priority Critical patent/CN115904643A/zh
Publication of CN115904643A publication Critical patent/CN115904643A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Multi Processors (AREA)

Abstract

本发明实施例提供一种图任务调度方法、执行设备、存储介质及程序产品,通过确定图任务中每个子图所需的计算资源数,然后根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,从而解决现有的图任务调度方式中,其调度过程中时间成本大,任务处理效率较低问题。

Description

图任务调度方法、执行设备、存储介质及程序产品
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种图任务调度方法、执行设备、存储介质及程序产品。
背景技术
图任务是指采用图结构的方式表示的任务。图任务所对应的图结构中的每个节点表示一个任务,节点之间所形成的有向边表示任务之间的依赖关系。在处理图任务时,一般是通过主机端设备(简称:host)将各子图的任务依次下发到执行端设备(简称:device),由执行端设备为各子图任务调度足够的计算资源执行图任务。
但是,在现有资源调度方式中,由于图任务中的每个子图所需要的资源是由执行端设备相对独立进行调度的,即对于图任务中存在依赖关系的两个子图来说,其有可能被分配至不同计算资源单元以进行计算,这使得前继子图所得到的数据需要进行计算资源单元的数据传输以到达当前子图所在的计算资源单元,以进行计算处理。
显然的这样的任务调度方式使得需要花费大量的时间成本数据传输上,其整体的任务处理效率受到严重影响。
发明内容
本发明实施例提供一种图任务调度方法、执行设备、存储介质及程序产品,用以解决现有的图任务调度方式中,其调度过程中时间成本大,任务处理效率较低问题。
第一方面,本发明实施例提供一种图任务的调度方法,包括:
确定图任务中每个子图所需的计算资源数;
根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
可选实施方式中,所述确定图任务中每个子图所需的计算资源数,包括:
针对任一子图,确定所述子图中各任务的任务时长和计算资源数;
根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列;其中,每一任务执行序列中包括有所述子图中的全部任务,以及各任务之间的执行关系;
根据可调度计算资源数以及执行所述各任务执行序列所需的计算资源总数和任务总时长,确定所述子图所需的计算资源数。
可选实施方式中,所述根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列,包括:
根据各任务的任务时长和计算资源数对各任务的任务优先级进行排序;
根据各任务的优先级排序结果,确定所述子图的多种任务执行序列。
可选实施方式中,所述任务优先级与任务的计算资源数呈正比,且与任务的任务时长呈正比。
可选实施方式中,所述根据可调度计算资源数以及执行所述各任务执行序列所需的计算资源总数和任务总时长,确定所述子图所需的计算资源数,包括:
确定每一任务执行序列的计算资源总数与任务总时长之间的乘积;
在各任务执行序列中,确定出计算资源总数不大于所述可调度计算资源数且乘积最小的任务执行序列,并将该任务执行序列的计算资源总数作为所述子图的计算资源数。
可选实施方式中,所述方法还包括:
计算执行每一任务执行序列所需的计算资源总数和任务总时长。
可选实施方式中,所述计算执行每一任务执行序列所需的计算资源总数和任务总时长,包括:
针对任一任务执行序列,根据所述任务执行序列中的各任务之间的执行关系以及各任务的任务时长和计算资源数,确定所述任务执行序列在其相应的执行关系下完成各任务所需要的最大并行计算资源数,将所述最大并行计算资源数作为所述任务执行序列的计算资源总数;
根据所述任务执行序列中的各任务之间的执行关系和各任务的任务时长,将执行各任务直至所述任务执行序列执行完成的预计执行时间作为所述任务执行序列的任务总时长。
可选实施方式中,所述根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,包括:
根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定图任务所需的计算资源,并为所述图像任务调度相应的计算资源。
可选实施方式中,所述确定图任务所需的计算资源,包括:
各子图所需的各计算资源中的最大计算资源数,则为所述图任务所需的计算资源。
可选实施方式中,所述为所述图像任务调度相应的计算资源,包括:
确定图任务所需要的计算资源的象限数量以及所述图任务的各子图之间的象限约束关系;
根据所述象限数量以及象限约束关系,为所述图像任务调度计算资源。
第二方面,本发明实施例提供一种计算机系统,包括:主机端和设备端;其中,
主机端,用于确定图任务中每个子图所需的计算资源数;根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定所述图任务的任务调度图,其中,所述任务调度图用于表述图任务所需要的计算资源的象限数量以及象限约束关系;
设备端,用于根据主机端下发的任务调度图为所述图任务调度计算资源。
第三方面,本申请实施例提供了一种执行设备,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定图任务中每个子图所需的计算资源数;
根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的图任务的调度方法。
第五方面,本申请实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面任一项所述的图任务的调度方法。
本发明实施例提供一种图任务调度方法、执行设备、存储介质及程序产品,通过确定图任务中每个子图所需的计算资源数,然后根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,从而解决现有的图任务调度方式中,其调度过程中时间成本大,任务处理效率较低问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1示出本披露实施例的一种板卡10的结构示意图;
图2示出此实施例的芯片101中的组合处理装置的结构图;
图3示出了计算装置201为单核的内部结构示意图;
图4示出了计算装置201为多核的内部结构示意图;
图5示出根据本公开实施例的处理器核的内部结构示意图;
图6为一种图任务的图结构的示意图;
图7为执行端中可调度资源的结构示意图;
图8是现有技术提供的一种图任务的调度资源的示意图;
图9是本申请提供的一种图任务调度方法的流程示意图;
图10示出了任务执行序列在执行时的资源调度示意图;
图11为本申请实施例提供的一种象限分布示意图;
图12为本申请提供的一种计算机系统的硬件结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
针对现有技术中图任务中的每个子图所需要的资源是由执行端设备相对独立进行调度的,即对于图任务中存在依赖关系的两个子图来说,其有可能被分配至不同计算资源单元以进行计算,这使得前继子图所得到的数据需要进行计算资源单元的数据传输以到达当前子图所在的计算资源单元,以进行计算处理。显然的这样的任务调度方式使得需要花费大量的时间成本数据传输上,其整体的任务处理效率受到严重影响的问题,本申请提供了一种图任务调度方法、执行设备、存储介质及程序产品。
本发明实施例提供的图任务调度方法、执行设备、存储介质及程序产品通过确定图任务中每个子图所需的计算资源数,然后根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,从而解决现有的图任务调度方式中,其调度过程中时间成本大,任务处理效率较低问题。
其中,方法和装置是基于同一申请构思的,由于方法和装置解决问题的原理相似,因此装置和方法的实施可以相互参见,重复之处不再赘述。
为了便于说明,首先会对本申请方案涉及到的计算机硬件结构进行说明:
图1示出本披露实施例的一种板卡10的结构示意图,该板卡可以作为上述的执行端设备。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责单核计算装置301与DRAM 204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM 204,从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群405是多核计算装置41的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。集群405用以高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405包括多个处理器核(IPU core)406及一个存储核(MEM core)407。
处理器核406在图中示例性地展示4个,本披露不限制处理器核406的数量。其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,同样包括三大模块:控制模块51、运算模块52及存储模块53。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,不再赘述。需特别说明的是,存储模块53包括输入/输出直接内存访问模块(input/output direct memory access,IODMA)533、搬运直接内存访问模块(move direct memory access,MVDMA)534。IODMA 533通过广播总线409控制NRAM 531/WRAM 532与DRAM 204的访存;MVDMA 534则用以控制NRAM 531/WRAM 532与存储单元(SRAM)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与DRAM 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括SRAM 408、广播总线409、集群直接内存访问模块(cluster directmemory access,CDMA)410及全局直接内存访问模块(global direct memory access,GDMA)411。SRAM 408承担高性能数据中转站的角色,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SRAM 408在处理器核406间中转,存储核407只需要将复用的数据从SRAM 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与DRAM 204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从SRAM 408传输到所有处理器核406的通信方式,属于多播的一种特例。
CDMA 410用以控制在同一个计算装置201内不同集群405间的SRAM 408的访存。
GDMA 411与外部存储控制器401协同,用以控制集群405的SRAM 408到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 408中。从前述可知,DRAM 204与NRAM 431或WRAM432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 411使得数据在DRAM 204与SRAM 408间传输,再经过MVDMA 534使得数据在SRAM 408与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 411的功能和IODMA 533的功能可以整合在同一部件中。本披露为了方便描述,将GDMA 411和IODMA 533视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,GDMA 411的功能、IODMA 533的功能、CDMA 410的功能、MVDMA 534的功能亦可以由同一部件来实现。
本申请提供的图任务的调度方法是执行在图1所示的板卡10中,该图任务可以包括各类深度学习和机器学习任务,如包括多个任务节点的神经网络任务,该图任务可以应用于计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下。
在上述执行端设备的硬件结构的基础上,为了更清楚理解本申请的技术方案,下面将对现有技术的图任务的调度方案进行详细介绍。
图任务是指采用图结构的方式表示多个连续任务之间的任务。图任务所对应的图结构中的每个节点表示一个任务,节点之间所形成的有向边表示任务之间的依赖关系。其中,图任务可以是神经网络任务,图任务中的每个任务节点可以是神经网络任务中的一个算子(如卷积、全连接、激活等等)。
图6为一种图任务的图结构的示意图,如图6所示的,图结构中包括有A、B、C、D、E五个节点,其每个节点表示一个任务,A分别与B、C、D之间采用有向边进行连接,而B、C、D则分别与E之间采用有向边进行连接。基于该图结构可知,A分别与B、C、D具有依赖关系,即当A执行运算之后,B、C、D才能够执行运算;B、C、D则分别与E具有依赖关系,即当B、C、D均执行完运算之后,E才能够执行运算。
而在现有资源调度方式中,由于图任务中的每个子图所需要的资源是由执行端设备相对独立进行调度的,在调度时,执行端设备采用了动态调度的执行方式。
在处理图任务时,首先由主机端将任务下发到执行端,再由执行端中的处理单元来执行任务。其中,执行端可以是人工智能处理器等多核处理器,其可以包括多个处理单元。图7为执行端中可调度资源的结构示意图,如图7所示,多个处理单元可以按照NUMA架构设置,该多个处理单元可以被划分为四个象限,每个象限中包括至少一个运算单元和至少一个存储单元。
如图7所示,每个象限的处理单元包括4个运算单元和一个存储单元。具体地,第一象限中包括存储单元1和运算单元11-14;第二象限中包括存储单元2和运算单元21-24;第三象限中包括存储单元3和运算单元31-34;第四象限中包括存储单元4和运算单元41-44。应当清楚的是,图7仅以执行端处理器包含16个运算单元进行举例,并不用于限定执行端的具体结构及其所包含的运算单元的数量。当然,在其他可选实施例中,该执行端处理器所包含的运算单元也可以是8个或32等,此时,每个象限中的运算单元的数量不限于4个。
图8是现有技术提供的一种图任务的调度资源的示意图;如图8所示的,对于上述的图结构来说,当执行端接收到图任务之后,执行端将根据图任务中所记录的各子图的各任务所需的运算资源为各子图进行资源调度。
首先会为A进行动态的资源调度,如执行端已知出A需要4个运算单元的运算资源,而在为A确定运算资源时发现第一象限的运算资源空闲(即运算单元11-14空闲),此时,可将该第一象限的运算资源分配给A以执行运算处理,相应的,A运算所得到数据也相应的存储在第一象限的存储资源(即存储单元1)中。
执行端在A运算完毕后,会开始为BCD进行动态的资源调度,如执行端已知出BC分别需要2个运算单元的运算资源,D需要4个运算单元的运算资源,此时,执行端会再次确定当前空闲的运算资源,如,执行端发现第二象限和第三象限的运算资源空闲,此时,执行端将第二象限的运算资源分配给BC,第三象限的运算资源分配给D。
此时,由于A与BCD之间具有依赖关系,为了能够执行对BCD的运算,第二象限的运算资源需要从第一象限的存储资源处读取对A的运算结果并基于运算结果执行对BC的运算处理;类似的,第三象限的运算资源也需要从第一象限的存储资源处读取对A的运算结果并基于运算结果执行对D的运算处理。
最后,执行端在BCD均运算完毕后,会开始为E进行动态的资源调度,如执行端已知出E需要4个运算单元的运算资源,此时,执行端会再次确定当前空闲的运算资源,如,执行端发现第一象限的运算资源空闲,此时,执行端将第一象限的运算资源分配给E。
与前述类似的是,由于E与BCD之间具有依赖关系,为了能够执行对E的运算,第一象限的运算资源需要从第二象限的存储资源中读取BC的运算结果,并且,第一象限的运算资源还需要从第三象限的存储资源中读取D的运算结果;然后,第一象限的运算资源才可利用读取的BCD的运算结果执行对E的运算处理,得到最终的图任务运算结果。
显然的,上述的对于图任务的资源调度过程中,由于执行端采用的动态调度的方式,其仅会根据当前运算资源的空闲情况为任务进行资源调度,而未考虑任务之间的关联情况。这就使得在任务执行时,对于图任务中存在依赖关系的两个子图来说,其有可能被分配至不同计算资源单元以进行计算,这使得前继子图所得到的数据需要进行计算资源单元的数据传输以到达当前子图所在的计算资源单元,以进行计算处理。显然的这样的任务调度方式使得需要花费大量的时间成本数据传输上,其整体的任务处理效率受到严重影响的问题。
为了解决上述问题,本发明实施例的主机端,将确定图任务中每个子图所需的计算资源数;根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定所述图任务的任务调度图,其中,所述任务调度图用于表述图任务所需要的计算资源的象限数量以及象限约束关系。然后,执行端将根据主机端下发的任务调度图为所述图任务调度计算资源。通过这样的处理方式,使得具有依赖关系的任务聚集在相同或相近的运算资源中,有效提升了任务的整体运算效率。
以下将参照附图并结合如上提供的各步骤来具体描述本申请的实施例。
图9是本申请提供的一种图任务调度方法的流程示意图,该图任务调度方法可以应用于图1所示的计算机硬件结构中。本调度方法的执行主体可以为主机端,其可为前述的外部设备103,通过本申请提供的实现方式主机端设备可以生成图任务,并通过对外接口装置102将该图任务以及相应的调度图以整体的形式下发给执行端设备,以供执行端设备基于调度图执行图任务。
如图9所示,该图任务的调度方法包括:
步骤901、确定图任务中每个子图所需的计算资源数;
步骤902、根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
在本申请实施方式中,主机端设备在将图任务下发给执行端设备之前,还将采用本实施方式提供的调度方法,为所述图任务调度计算资源。随后,主机端设备会将图任务中的每个子图以及图任务对应的任务调度图一并下发至执行端设备。执行端设备在接收到图任务以及任务调度图之后,将基于任务调度图中所描述的图任务所需要的计算资源的象限数量以及象限约束关系,为图任务中的每个子图进行相应的资源调度处理。
对于主机端设备来说,为了实现对于图任务的任务调度图的生成,主机端设备会先确定出图任务中的每个子图所需的计算资源数。然后,主机端设备将会根据各子图之间的依赖关系,如前继任务、后继任务等依赖关系,并结合前述得到的子图所需的计算资源数,为所述图任务调度计算资源。
具体的,对于子图来说如前所述的,子图中可能包括有多个任务,而子图所需的计算资源数是指执行这些任务所需要的计算资源的数量。其中,计算资源可理解为包括IPU在内的可用于进行数据运算的模块或单元。一般的,每个任务的计算资源数量是创建任务时便确定。而对于子图的计算资源数来说,由于执行各任务的执行顺序或执行关系的差异,不同执行顺序或执行关系所得到的任务序列需要不同的计算资源数。而不同的计算资源数将影响着后续的资源调度处理。
步骤9011至步骤9013描述了如何确定任一子图所需的计算资源数:
步骤9011、确定子图中各任务的任务时长和计算资源数;
步骤9012、根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列;其中,每一任务执行序列中包括有所述子图中的全部任务,以及各任务之间的执行关系;
步骤9013、根据可调度计算资源数以及执行所述各任务执行序列所需的计算资源总数和任务总时长,确定所述子图所需的计算资源数。
以前述图6所示的图任务为例,在图6所示的图任务中,基于各任务之间的依赖关系,对图任务进行子图的划分。其中,子图的划分方式可为多种,如基于深度优先的子图划分方式,或基于广度优先的子图划分方式。
以广度优先的划分为例,可将该图任务划分为3个子图,即,子图A;子图BCD;子图E。其中,对于子图A和子图E来说,由于该两个子图中仅包括唯一任务,该子图所需的计算资源数与其子图中唯一任务的任务资源数相同。
而对于子图BCD来说,由于其子图内包括有3个任务,即存在多种可能的任务执行序列和每种任务执行序列所需的计算资源总数。基于此,在确定该子图BCD所需的计算资源数时,可首先确定出该子图可能对应的任务执行序列。
举例来说,对于BCD来说,可能存在的任务执行序列可用如下表1示出。
表1
Figure BDA0003273696520000141
表1展示了子图BCD具有的全部可能的任务执行序列,其中的任务执行顺序用于表示各任务的执行优先级,如B-C-D用于表示B的优先级大于C,且C的优先级大于D。
在相同的任务执行优先级的排序下,各任务之间的不同执行关系将呈现不同的任务执行序列。例如,在B-C-D的任务优先级的情况下,具有包括:“B串行C串行D”、“B并行C并行D”“B串行(C并行D)”“(B串行C)并行D”“(B并行C)串行D”在内的多种任务执行序列。
其中的,“串行”和“并行”用于表示任务执行关系,即可理解为“依次执行”和“并行执行”。需要说明的是,在“串行”的任务执行关系下,两个任务一般会利用全部相同或部分相同的计算资源,并采用顺序执行的方式执行任务;在“并行”的任务执行关系下,两个任务一般会利用不同的计算资源,并采用并发执行的方式执行任务。
以“B串行C串行D”为例,其表示利用全部相同或部分相同的计算资源依次执行BCD。
“(B串行C)并行D”则表示利用全部相同或部分相同的计算资源依次执行BC,并在BC执行的同时,利用与执行BC完全不同的计算资源执行D。
“B串行(C并行D)”则表示执行B的计算资源,与执行C和执行D的计算资源部分或全部相同,且B先执行并在B执行后才会开始执行C和D,其中,执行C和执行D的计算资源为不同的计算资源,且其二者同步执行。
在根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列的过程中,随着任务数量的增多,其可能的任务执行序列的数量将倍增式增长。为了降低确定任务执行序列时的工作量,在一种可选的实施方式中,可先确定出子图中的各任务的任务优先级,再基于任务优先级排序结果确定出最优的多种任务执行序列。
具体来说,任务的优先级一般与任务的计算资源数和任务时长相关。当某一任务所需的计算资源数越多,其任务紧急程度越高;类似的,当某一任务所需要的任务时长越长,其任务的计算复杂程度越高。即,任务优先级与任务的计算资源数呈正比,且与任务的任务时长呈正比。
以前述的子图BCD为例,假设:任务B的任务时长为40ms,计算资源数为4;任务C的任务时长为20ms,计算资源数为2IPU;任务D的任务时长为40ms,计算资源数为2。
按照前述的方式可先基于计算资源数对BCD进行排序,得到BD以及C;然后基于BD的任务时长再进行排序,最终得到B-D-C的任务优先级;
在该任务的优先级排序结果下,可如前述的再利用不同的执行关系,得到不同的任务执行序列,如表2所示的。
表2
Figure BDA0003273696520000161
而这样的方式所得到的任务执行序列的数量将大大降低,有利于对整体调度效率的提升。
随后的,图任务中每个子图所需的计算资源数将取决于上述的任务执行序列,而不同的任务执行序列一般具有不同的计算资源数和任务总时长;基于此,在确定子图所需的计算资源数时,一方面需要考虑执行端设备可调度计算资源数,如,执行端设备所包含的IPU数量等等,另一方面还需要考虑任务执行序列所需的计算资源总数和任务总时长。根据上述两方面因素从多种任务执行序列中选出最优的任务执行序列,以作为任务调度图中该子图的任务执行序列,而相应的最后的任务执行序列的计算资源总数将作为该子图所需的计算资源数。
基于此,在可选实施方式中,可先确定每一任务执行序列的计算资源总数与任务总时长之间的乘积;然后,在各任务执行序列中,确定出计算资源总数不大于所述可调度计算资源数且乘积最小的任务执行序列,并将该任务执行序列的计算资源总数作为所述子图的计算资源数。
为了实现对于每一任务执行序列所需的计算资源总数和任务总时长的确定,本申请实施例还提供了计算执行每一任务执行序列所需的计算资源总数和任务总时长的方式:
具体的,针对子图对应的任一个任务执行序列,可执行如下步骤:
步骤901、根据所述任务执行序列中的各任务之间的执行关系以及各任务的任务时长和计算资源数,确定所述任务执行序列在其相应的执行关系下完成各任务所需要的最大并行计算资源数,将所述最大并行计算资源数作为所述任务执行序列的计算资源总数。
步骤902、根据所述任务执行序列中的各任务之间的执行关系和各任务的任务时长,将执行各任务直至所述任务执行序列执行完成的预计执行时间作为所述任务执行序列的任务总时长。
以“B并行(D串行C)”这一任务执行序列为例,图10示出了任务执行序列在执行时的资源调度示意图。
需要说明的是,在图10所示结构中,IPU是指智能化处理单元(IntelligenceProcessing Unit,简称IPU)。IPU是前述的运算单元中的其中一种具体单元类型。
如图10所示的,由于前述假设有任务B的任务时长为40ms,计算资源数为4IPU;任务C的任务时长为20ms,计算资源数为2IPU;任务D的任务时长为40ms,计算资源数为2IPU。并且,假设可调度资源数为8IPU,即如图4所示的IPU1、IPU2、IPU3、IPU4、IPU5、IPU6、IPU7、IPU8。其中的IPU1-IPU4同属于一个象限,如第一象限;其中的,IPU5-IPU8同属于一个象限,如第二象限。
按照“B并行(D串行C)”这一任务执行序列,在第0ms-40ms,IPU1、IPU2、IPU3、IPU4均分配给任务B执行运算;在第0-40ms,IPU5、IPU6、IPU7、IPU8中的任意两个IPU,如IPU5和IPU6分配给任务D执行运算,并在第41ms-60ms,任务C继续使用任务D的计算资源执行运算,即IPU5、IPU6分配给任务C执行运算。
此时,可知的是,“B并行(D串行C)”这一任务执行序列的最大并行计算资源数为6IPU,即在第0-40ms,6个IPU均在执行运算;并且,B并行(D串行C)”这一任务执行序列的预计执行时间为60ms,即,在第60ms全部任务将完成执行。
根据上述方式可确定子图对应的全部的任务执行序列的任务总时长和计算资源总数。以表2所列出的任务执行序列为例,可得到如表3所示的计算资源总数与任务总时长,以及二者之积。
表3
Figure BDA0003273696520000171
Figure BDA0003273696520000181
基于上述内容可知的是,在可调度计算资源小于8IPU的情况下,“B串行(D并行C)”将作为最优的那个任务执行序列,而相应的4IPU将作为子图BCD的计算资源总数。
在可调度计算资源大于等于8IPU的情况下,“B串行(D并行C)”和“B并行D并行C”均满足计算资源总数小于可调度计算资源数的条件,此时可根据实际情况自行确定最优的任务执行序列。即,若希望快速完成整个子图的任务执行,可选用“B并行D并行C”的任务执行顺序,并把8IPU作为子图的计算资源总数;若整个图任务还有其他子图需要运行,且本子图的处理紧急度不是很高,则可将“B串行(D并行C)”作为任务执行顺序,并把4IPU作为子图的计算资源总数。
上述方式可确定出图任务中每个子图所需的计算资源总数。
再后,还需要根据各子图之间的依赖关系以及每个子图所需的计算资源数,并为所述图任务调度计算资源,具体来说:可根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定图任务所需的计算资源,并为所述图像任务调度相应的计算资源。
其中,在确定图任务所需的计算资源时,可将各子图所需的各计算资源中的最大计算资源数,作为所述图任务所需的计算资源。
举例来说,假设前述的子图A需要4IPU,子图BCD需要8IPU,子图E需要8IPU,那么该图任务所需的计算资源为8IPU。
基于此,在为所述图像任务调度相应的计算资源时,将先确定图任务所需要的计算资源的象限数量以及所述图任务的各子图之间的象限约束关系;根据所述象限数量以及象限约束关系,为所述图像任务调度计算资源。
图11为本申请实施例提供的一种象限分布示意图,如图11所示的,当为前述的图任务进行调度图的分配时,可结合该象限分布情况。
其中,由于每个象限中包括有4个IPU,而图任务所需的计算资源为8IPU,即为图任务分配2个象限即可。同时,由于子图之间的依赖关系为A-BCD-E,那么可进行如下分配,子图A分配至第一象限(4IPU),子图BCD(如,采用B并行D并行C的任务执行序列)中的B分配至第一象限(4IPU),DC分配至第二象限(4IPU);子图E分配至第一象限和第二象限(共8IPU)。
至此,按照这样的资源调度方式能够使得整个图任务的运算资源均集中在两个象限中,减少数据在多个象限中的传输,提升图任务的整体运行效率。
本发明实施例提供一种图任务调度方法,通过确定图任务中每个子图所需的计算资源数,然后根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,从而解决现有的图任务调度方式中,其调度过程中时间成本大,任务处理效率较低问题。
实施例二
图12为本申请提供的一种计算机系统的硬件结构示意图。如图12所示的,该计算机系统,包括:主机端1210和设备端1220;其中,
主机端1210,用于确定图任务中每个子图所需的计算资源数;根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定所述图任务的任务调度图,其中,所述任务调度图用于表述图任务所需要的计算资源的象限数量以及象限约束关系;
设备端1220,用于根据主机端下发的任务调度图为所述图任务调度计算资源。
该计算机系统中的设备端1220可用于执行实现前述实施例一所述的方法。
实施例三
本申请还提供了一种执行端设备,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定图任务中每个子图所需的计算资源数;
根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
此外,所述处理器还被配置为可用于执行实现前述实施例一所述的方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如实施例一任一项所述的图任务的调度方法。
所述计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现实施例一任一项所述的图任务的调度方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机可执行指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机可执行指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机可执行指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机可执行指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

Claims (14)

1.一种图任务的调度方法,其特征在于,包括:
确定图任务中每个子图所需的计算资源数;
根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
2.根据权利要求1所述的调度方法,其特征在于,所述确定图任务中每个子图所需的计算资源数,包括:
针对任一子图,确定所述子图中各任务的任务时长和计算资源数;
根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列;其中,每一任务执行序列中包括有所述子图中的全部任务,以及各任务之间的执行关系;
根据可调度计算资源数以及执行所述各任务执行序列所需的计算资源总数和任务总时长,确定所述子图所需的计算资源数。
3.根据权利要求2所述的调度方法,其特征在于,所述根据各任务的任务时长和计算资源数,确定所述子图的多种任务执行序列,包括:
根据各任务的任务时长和计算资源数对各任务的任务优先级进行排序;
根据各任务的优先级排序结果,确定所述子图的多种任务执行序列。
4.根据权利要求3所述的调度方法,其特征在于,所述任务优先级与任务的计算资源数呈正比,且与任务的任务时长呈正比。
5.根据权利要求2所述的调度方法,其特征在于,所述根据可调度计算资源数以及执行所述各任务执行序列所需的计算资源总数和任务总时长,确定所述子图所需的计算资源数,包括:
确定每一任务执行序列的计算资源总数与任务总时长之间的乘积;
在各任务执行序列中,确定出计算资源总数不大于所述可调度计算资源数且乘积最小的任务执行序列,并将该任务执行序列的计算资源总数作为所述子图的计算资源数。
6.根据权利要求2所述的调度方法,其特征在于,所述方法还包括:
计算执行每一任务执行序列所需的计算资源总数和任务总时长。
7.根据权利要求6所述的调度方法,其特征在于,所述计算执行每一任务执行序列所需的计算资源总数和任务总时长,包括:
针对任一任务执行序列,根据所述任务执行序列中的各任务之间的执行关系以及各任务的任务时长和计算资源数,确定所述任务执行序列在其相应的执行关系下完成各任务所需要的最大并行计算资源数,将所述最大并行计算资源数作为所述任务执行序列的计算资源总数;
根据所述任务执行序列中的各任务之间的执行关系和各任务的任务时长,将执行各任务直至所述任务执行序列执行完成的预计执行时间作为所述任务执行序列的任务总时长。
8.根据权利要求1-7任一项所述的调度方法,其特征在于,所述根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源,包括:
根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定图任务所需的计算资源,并为所述图像任务调度相应的计算资源。
9.根据权利要求8所述的调度方法,其特征在于,所述确定图任务所需的计算资源,包括:
各子图所需的各计算资源中的最大计算资源数,则为所述图任务所需的计算资源。
10.根据权利要求8所述的调度方法,其特征在于,所述为所述图像任务调度相应的计算资源,包括:
确定图任务所需要的计算资源的象限数量以及所述图任务的各子图之间的象限约束关系;
根据所述象限数量以及象限约束关系,为所述图像任务调度计算资源。
11.一种计算机系统,其特征在于,包括:主机端和设备端;其中,
主机端,用于确定图任务中每个子图所需的计算资源数;根据各子图之间的依赖关系以及每个子图所需的计算资源数,确定所述图任务的任务调度图,其中,所述任务调度图用于表述图任务所需要的计算资源的象限数量以及象限约束关系;
设备端,用于根据主机端下发的任务调度图为所述图任务调度计算资源。
12.一种执行设备,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定图任务中每个子图所需的计算资源数;
根据各子图之间的依赖关系以及每个子图所需的计算资源数,为所述图任务调度计算资源。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至10任一项所述的图任务的调度方法。
14.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至10任一项所述的图任务的调度方法。
CN202111109601.2A 2021-09-22 2021-09-22 图任务调度方法、执行设备、存储介质及程序产品 Pending CN115904643A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111109601.2A CN115904643A (zh) 2021-09-22 2021-09-22 图任务调度方法、执行设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111109601.2A CN115904643A (zh) 2021-09-22 2021-09-22 图任务调度方法、执行设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN115904643A true CN115904643A (zh) 2023-04-04

Family

ID=86482739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111109601.2A Pending CN115904643A (zh) 2021-09-22 2021-09-22 图任务调度方法、执行设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN115904643A (zh)

Similar Documents

Publication Publication Date Title
CN112465129B (zh) 片内异构人工智能处理器
CN112799726B (zh) 数据处理装置、方法及相关产品
CN111488114B (zh) 一种可重构的处理器架构及计算设备
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
CN104657111A (zh) 一种并行计算方法和装置
CN111190735A (zh) 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN118035618B (zh) 数据处理器、数据处理方法、电子设备、存储介质
CN111767121B (zh) 运算方法、装置及相关产品
US20120151145A1 (en) Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
EP4432210A1 (en) Data processing method and apparatus, electronic device, and computer-readable storage medium
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
CN115904643A (zh) 图任务调度方法、执行设备、存储介质及程序产品
CN115904681A (zh) 任务调度方法、装置及相关产品
CN116204324A (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN117131910A (zh) 一种基于risc-v指令集架构拓展的卷积加速器及加速卷积运算的方法
CN117539823A (zh) 芯片算力控制方法、芯片及存储介质
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
WO2023045478A1 (zh) 图任务调度方法、执行端设备、存储介质及程序产品
US12093806B1 (en) Static memory allocation for neural network inference
CN115878299A (zh) 图任务调度方法、装置及相关产品
CN115904682A (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