CN115269131A - 一种任务调度方法及装置 - Google Patents
一种任务调度方法及装置 Download PDFInfo
- Publication number
- CN115269131A CN115269131A CN202110485859.6A CN202110485859A CN115269131A CN 115269131 A CN115269131 A CN 115269131A CN 202110485859 A CN202110485859 A CN 202110485859A CN 115269131 A CN115269131 A CN 115269131A
- Authority
- CN
- China
- Prior art keywords
- queue
- slave
- queues
- task
- sub
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000015654 memory Effects 0.000 claims description 77
- 238000012545 processing Methods 0.000 claims description 35
- 238000001514 detection method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 17
- 238000013461 design Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006386 memory function Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 208000019901 Anxiety disease Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000036506 anxiety Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本申请提供一种任务调度方法及装置,其方法包括:获取目标主队列对应的一个或多个从队列的长度,并根据一个或多个从队列的长度将目标主队列中的任务的数据包调度至一个或多个从队列中的一个或多个从队列。计算设备可以根据从队列的长度来派发任务,避免任务分配不均匀,导致任务在一个计算单元处堆积,阻塞,本申请提供的方法不需要预编排多个工作流程,便可以实现让多个计算单元同步进行运算,提高计算单元的利用率,并且不需要测试计算单元的算力,可以简化业务流程,减少时延。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种任务调度方法及装置。
背景技术
随着深度学习的发展,一台计算机上面存在着越来越多的计算单元,例如CPU,GPU,FPGA,TPU等等,某一时刻,其中某个计算单元可能是计算的瓶颈,但是其他计算单元却是空闲状态,导致计算单元的利用率不高。
发明内容
本申请提供一种任务调度的方法及装置,用以提高计算单元的利用率。
第一方面,本申请实施例提供了一种任务调度方法,应用于计算设备,计算设备维护多个主队列,每个主队列中包括一个或多个待调度的任务,不同主队列对应于不同的子操作,同一主队列中的任务对应于相同的子操作;计算设备还包括多个计算单元,计算设备还维护有与每个主队列对应的一个或多个从队列,每个从队列对应于一个计算单元,从队列中包括调度给计算单元的待执行的任务;
计算设备获取目标主队列对应的一个或多个从队列的长度;目标主队列为多个主队列中的任意一个主队列;并根据一个或多个从队列的长度将目标主队列中的任务派发至一个或多个从队列中的至少一个从队列中。
通过上述设计,计算设备可以根据从队列的长度来派发任务,避免任务分配不均匀,导致任务在一个计算单元处堆积,阻塞,本申请提供的方法不需要预编排多个工作流程,便可以实现让多个计算单元同步进行运算,提高计算单元的利用率,并且不需要测试计算单元的算力,可以简化业务流程,减少时延。
在一种可能的设计中,每个主队列具有预设的优先级;目标主队列为存在任务的一个或多个主队列中优先级最高的主队列。
通过上述设计,可以根据用户意图确定主队列的优先级,并优先调度目标主队列中的任务,提高业务灵活性。
在一种可能的设计中,计算设备在检测到任意一个主队列接收到新的任务之后,再确定目标主队列。
在一种可能的设计中,每个从队列具有预设的优先级;目标主队列对应于至少两个从队列;其中,第一从队列为目标主队列对应的至少两个从队列中优先级最高的从队列;第二从队列为目标主队列对应的至少两个从队列中优先级其次的从队列;
在获取目标主队列对应的一个或多个从队列的长度时,计算设备可以首先获取目标主队列对应的第一从队列的长度,判断第一从队列的长度是否超过第一预设阈值,若未超过,则将目标主队列中的N个任务派发至第一从队列,N取正整数;或者,
若第一从队列的长度超过第一预设阈值,则计算设备继续获取第二从队列的长度,判断第二从队列的长度是否超过第二预设阈值,若未超过第二预设阈值,则将目标主队列中的M个任务派发至第二从队列,M取正整数。
通过上述设计,可以根据设备队列的长度进行动态调度,并且可以优先将任务分配至优先级高的从队列,这样便可以通过设置优先级将任务自动分配至适于处理这类任务的计算单元。
在一种可能的设计中,不同的子操作之间存在预设的执行顺序,例如,第p个子操作的输出数据为第p+1个子操作的输入数据,第p个子操作和第p+1个子操作为执行顺序相邻的两个子操作;第P+1个子操作对应的主队列中存在的每个任务包括,该任务在第p个子操作的输出数据的存储地址和执行设备信息,执行设备信息用于指示第p个子操作的执行设备;
计算设备中的每个计算单元从其对应的第一从队列中获取一个或多个任务的数据包;第一从队列中的任务对应于第P+1个子操作;针对任一任务,根据所述任务的执行设备信息判断所述任务的所述第P个子操作的执行设备是否为所述计算单元,若不是,则将所述任务在所述第p个子操作的输出数据拷贝至所述计算单元对应的存储介质中。
通过上述设计,可以根据上一个子操作的执行设备和当前子操作的执行设备判断是否需要进行内存拷贝,实现自动内存拷贝操作,不需要开发人员编写大量的内存拷贝的重复代码,节省了人力成本。
在一种可能的设计中,每个所述计算单元对应的每个所述从队列具有预设的优先级;所述目标从队列为所述计算单元对应的一个或多个从队列中存在任务的从队列中优先级最高的从队列。
通过上述设计,可以根据用户意图确定从队列的优先级,并优先执行目标从队列中的任务,提高业务灵活性。
第二方面,提供一种计算装置,所述装置包括处理器和存储器,存储器用于存储程序指令和数据。该存储器与该处理器耦合,该处理器可以调用并执行该存储器中存储的程序指令,用于实现上述第一方面描述的方法中的任意一种方法。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第四方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请提供了一种芯片***,该芯片***包括处理器和存储器,用于实现第一方面所述的方法。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
上述第二方面至第五方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
图1为本申请实施例提供的一种计算设备的架构示意图;
图2为一种多计算流程的编排示意图;
图3为一种任务分配方式的流程示意图;
图4为本申请实施例提供的一种计算设备的任务调度的架构示意图;
图5为本申请实施例提供的一种任务调度方法的流程示意图;
图6为本申请实施例提供的一种任务调度的架构示例的示意图;
图7为本申请实施例提供的一种任务调度的完整方法所对应的流程示意图;
图8为本申请实施例提供的一种计算装置的结构示意图;
图9为本申请实施例提供的另一种计算装置的结构示意图。
具体实施方式
首先对本申请实施例中的部分技术用语进行解释说明。
1,计算设备,是现代一种用于高速计算的电子计算机器,可以进行数值计算,还可以进行逻辑计算,并且具有存储记忆功能。可以按照程序运行,自动、高速处理海量数据的现代化智能电子设备。例如,台式计算机、笔记本,还可以是手机、ipad等终端设备,或其他设备等。计算设备上执行计算的单元为计算单元,具有存储记忆功能的为存储单元。本申请实施例中的计算设备至少包括两个计算单元,下文将会进行介绍。
2,算力,用于衡量计算单元的计算能力,示例性地,算力可以是通过计算耗时来表征。不同的计算单元执行同一计算操作的算力可以是不同的,应理解的是,计算耗时越小,则算力越强。
参见图1,图1为本申请实施例提供的一种计算设备的架构示意图。该计算设备100包括多个计算单元(图1是以计算单元101和计算单元102为例示出的,但本申请实施例对此不做限定)和存储单元。
其中,计算单元,用于对数据进行计算或处理,可以是中央处理器(centralprocessing unit,CPU)、可编程门阵列(field programmable gate array,FPGA)、图形处理器(graphics processing unit,GPU)、数据计算单元(data processing unit,DPU)、特殊应用集成电路(application specific integrated circuit,ASIC)、***级芯片(system on chip,SOC)等。其中,计算单元101和计算单元102可以是相同类型的处理器,也可以是不同类型的处理器例如,计算单元101和计算单元102均为CPU,又例如,计算单元101可以是CPU,计算单元102可以是GPU。再例如,计算单元101可以是CPU,计算单元102可以是FPGA等,本申请实施例对此不做限定。
存储单元,用于存储数据的装置,它可以是内存,也可以是硬盘。内存是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作***或其他正在运行中的程序的临时数据存储器。与内存不同的是,硬盘读写数据的速度比内存慢,通常用于持久性地存储数据,例如,操作***、应用程序等的程序指令和/或数据。在操作***运行或应用程序运行时,硬盘中存储的程序代码和/或数据需要首先被读入到内存中,处理器110再从内存中获取程序代码和/或数据。对应的,处理器通过运行存储在内存中的代码,从而执行计算设备的各种应用以及数据处理等功能。
在一种实现方式中,计算单元101和计算单元102可以有自己的专属内存,例如,计算单元101的专属内存为内存101,计算单元102的专属内存为内存102。举例来说,计算单元101在执行数据处理时,会从内存101获取待执行/运算的程序/数据,并将得到的运算结果存储在内存101上,其中,内存101中存储的待执行的数据可以是从硬盘中获取的,也可能是从内存102中获取的。类似的,计算设备102在执行数据处理时,会从内存102获取待执行/运算的程序/数据,并将得到的运算结果存储在内存102上。其中,内存102中待运算的数据可能是从硬盘获取的,也可能是从内存101获取的。下文会进行介绍。
不同类型的计算单元具有各自不同的性能特点。举例来说,CPU,具有较强的管理能力,可以称为计算机的“大脑”,适用于管理和调度,例如数据读取、文件管理等工作,同时可以兼具各种运算功能,具有通用性,但运算能力相对较弱。GPU,可以是一种专门在个人电脑、工作站、游戏机或一些移动设备(例如平板电脑、智能手机等)上执行图像运算工作的微处理器,擅长浮点运算和并行计算,适用于执行大量数据的复杂运算和几何计算,该特征使得GPU在深度学习这一应用领域中占据主导位置,但其管理能力较弱。FPGA,处理速度快,作为可编程逻辑器件,其功能可以通过配置而改变,该特征使得FPGA在深度学习这一应用中具有重要的位置,综合而言,FPGA,既可以用于管理也可以用于运算。
随着深度学习的发展,目前,一台计算设备上存在着越来越多的计算单元,包括但不限于:CPU、GPU、FPGA等等计算单元中的至少两个计算单元,示例性地,对于存在多个计算单元的计算设备,可以包括适适用于调度的计算单元和适用于计算的计算单元,例如,多个计算单元包括CPU和GPU,或者CPU、GPU和FPGA,或者FPGA和GPU等等,示例性地,擅长于调度的计算单元(例如CPU)可以将计算量较大的任务调度给擅长于计算的计算单元(例如GPU或FPGA)处理,以此提高计算设备的综合性能。应理解的是,在某些场景中,虽然CPU运算能力较弱,但其也可以进行运算。
如下以CPU和GPU为例,介绍多个计算单元的计算流程。示例性地,一个完整的处理流程可能包括多个处理操作,该多个处理操作之间存在预设的执行顺序,例如,输入→操作1→操作2→操作3→输出。其中,上一个操作的输出数据为本操作的输入数据。例如,操作1是操作2的上一个操作,对应的,操作2是操作1的下一个操作,操作1的输出数据为操作2的输入数据。另外,该多个处理操作可以由同一个计算单元执行,例如,操作1、操作2和操作3均由cpu执行;或者,该多个处理操作也可以由多个计算单元联合执行,例如,计算流程一中,操作1由CPU执行,操作2和操作3由GPU执行,应理解,即使联合执行,该多个计算单元也要按顺序执行,即CPU获取输入数据执行操作1,该输入数据可以是一个待处理的原始文件对象,例如一帧图像、一个视频分片、一个音频分片、一个数据包等等,并得到操作1针对该对象的输出数据,GPU获取该操作1的输出数据执行操作2,得到操作2的输出数据,GPU基于操作2的输出数据执行操作3,得到该对象最终的处理结果。
其中,若相邻操作为不同的执行设备,例如GPU在执行操作2之前,还需要进行内存申请、内存拷贝等操作以获取操作1的输出数据。举例来说,在上述示例中,操作1由CPU执行,操作2和操作3由GPU执行,假设计算单元101为CPU,计算单元102为GPU,CPU执行操作1得到的输出数据会存储在CPU的专属内存101上,GPU在执行操作2时,需要从内存101上将操作1的输出数据再拷贝至内存102上,GPU再从内存102获取该操作1的输出数据作为操作2的输入数据,以执行操作2,随后得到操作2的输出数据,应理解的是,操作2的输出数据会存储在GPU的专属内存102上,后续,GPU在执行操作3时,可以直接从内存102上获取该操作2的输出数据,执行操作3。同理,若由CPU执行操作3,则CPU需要将操作2的输出数据从内存102上拷贝至内存101中。
对于存在多个计算单元的计算设备,在某一时刻,其中的某个计算单元可能处于计算瓶颈,例如,调度给该计算单元的任务出现拥塞的情况,而其他计算单元却可能是空闲状态,导致计算单元的利用率不高。
为最大限度利用计算单元的算力,在同一时刻让尽可能多的计算单元参与计算,即减少计算单元的空置率,在一种实现方式中,可以预编排多个计算流程,该多个计算流程具有相同的功能,但不同计算流程中的同一操作的执行设备可能是不同的。在每个预编排的计算流程中,编制了每个操作的执行设备(operator),例如,参见图2所示,图2是在上述示例的基础上,预编排了两个的计算流程,示例性地,计算流一为:输入→操作1(CPU)→操作2(GPU)→操作3(GPU)→输出;计算流二为:输入→操作1(CPU)→操作2(CPU)→操作3(CPU)→输出。
应理解,计算流一的输入数据和计算流二的输入数据应是不同的,即调度给计算流一的待处理的对象和调度给计算流二的待处理的对象是不同的。这样,通过编排的方式可以让同一时刻有多个计算单元同步进行运算,以此提高计算单元的利用率。但是,该方式需要编排多个计算流程,业务比较复杂,更主要的,由于GPU的计算能力较强,而CPU的计算能力较弱,若分配给计算流一和计算流二的任务不均匀,也可能导致在同一时刻,某一计算单元过于繁忙,而其他计算单元空闲的情况,例如,有100帧待处理的图像,分配给计算流一20帧图像,分配给计算流二80帧图像,由于GPU的计算速度快,可能导致GPU处理完20帧图像时,仍有大量待处理图像在CPU处堆积,也可能导致计算单元的利用率低。
在另一种实现方式中,参见图3,为另一种提升计算单元利用率的方法流程示意图,该方法包括:(1)首先对CPU和GPU进行性能测试,以评估出CPU和GPU的算力。例如,对于上述示例,可以首先测试CPU执行操作1的算力、执行操作2的算力以及执行操作3的算力;以及测试GPU执行操作1的算力、执行操作2的算力以及执行操作3的算力。(2)根据CPU、GPU的算力的比例,来分配任务给CPU和GPU。
在上述方法中,需要测试各计算单元执行所有操作的算力,耗费较多的时间和硬件资源,并且不同输入(任务)所包含的操作所需要的算力最好是一致的,否则测试到的算力和实际任务的算力相差较多时,仍可能导致任务分配不均匀的情况。
为例提高计算单元的利用率,本申请实施例提供了一种任务调度方法,该方法不需要预编排多个计算流程,也不需要测试计算单元的算力,通过本申请实施例提供的方案,可以减少任务阻塞的情况发生,同时可以提高硬件资源的利用率,提升计算效率,简化业务流程。
下面结合具体的附图对本申请实施例提供的方法进行详细介绍。本申请实施例提供的方法可以应用于图1所示的计算设备,该计算设备包括多个计算单元,该多个计算单元可以是相同的类型,也可以是不同的类型,本申请实施例对此不做限定。
请参见图4,图4为本申请实施例提供一种计算设备的架构示意图。该计算设备可以用于对多个文件对象中的每个文件对象执行相同的处理流程,该处理流程可以包括多个子操作,如前所述,该多个子操作之间可以存在预设的执行顺序,子操作的输出数据为下一个子操作的输入数据。每个子操作对应一个任务队列,即该计算设备上可以存在多个任务队列,每个任务队列内包括待调度给计算单元的一个或多个任务。
该计算设备包括多个计算单元,例如图4中所示的第一计算单元和第二计算单元,每个计算单元可以用于执行该处理流程中的一个或多个子操作,每个可以执行的子操作对应于一个设备队列,每个设备队列内存储有已调度给该计算单元任务,也即该计算单元待执行的任务。
在调度阶段:调度线程将从一个子操作的任务队列中获取一个或多个任务,并选择一个计算设备,将选择的该一个或多个任务发送至该计算单元上该子操作对应的设备队列中。
在计算阶段:计算单元将从一个子操作的设备队列中获取一个或多个任务,并对该一个或多个任务执行该子操作,得到输出数据。后续,该子操作的输出数据将发送至下一个子操作的任务队列中,以等待下一步的调度及计算处理。
需要说明的是,上述仅为对计算设备的一个功能的介绍,本申请实施例的计算设备可以具有多个功能,本申请实施例对此不做限定。
基于图4所示的计算设备的架构,提供本申请实施例的任务调度方法。请参见图5,图5为本申请实施例提供的一种任务调度方法,为便于说明,图5所示的方法的执行主体可以记为调度线程,该调度线程可以运行在计算设备的其中一个计算单元上,例如CPU上。该计算设备可以兼顾调度和计算,也可以是专用于调度(例如该计算设备可以是不具有计算能力的处理器),本申请实施例对此不做限定。
如图5所示,该方法可以包括如下步骤:
步骤501:从多个任务队列中确定目标任务队列。
为便于说明,将主队列称为任务队列,将从队列称为设备队列,这里的目标任务队列可以是计算设备上存在的多个任务队列中的任意一个任务队列。后续,将会从目标任务队列中选择一个或多个任务调度至设备队列上,也可以理解为,目标任务队列为即将被调度的任务队列。
在一种可实施的方式中,图4所示的多个任务队列中的每个任务队列可以具有自己的优先级,调度线程可以根据任务队列的优先级确定目标任务队列,示例性地,目标任务队列可以是存储有任务的任务队列中优先级最高的任务队列。例如,该计算设备上的任务队列的优先级排序为:任务队列1﹤任务队列2﹤任务队列3。若任务队列3中有任务等待,则可以首先调度任务队列3中的任务,即此时目标任务队列为任务队列3;当任务队列3为空,即没有等待调度的任务时,则可以选择优先级次之的任务队列中的任务进行调度,例如任务队列3为空,但任务队列2中有任务,则任务队列2为目标任务队列。
示例性地,本申请实施例中属于同一个功能的多个任务队列可以具有默认的优先级,该默认的优先级可以是按照子操作的执行顺序,由低逐次升高。如前所述,图4所示的任务队列中各任务队列的优先级排序为:任务队列1﹤任务队列2﹤任务队列3。通过上述设计,由于最后一个子操作的任务队列的优先级最高,这样该任务队列的任务可以被优先调度给计算单元进行计算,需要说明的是,计算设备每执行一个任务队列3中的一个任务,则可以得到一个文件对象最终的处理结果,如果计算设备大部分时间都用于执行中间的子操作的计算,则可能导致处理进度长时间没有变化,假设用户可以看到处理进度,则可能由于处理进度长时间不变化而产生焦虑情绪,因此,上述方式可以减少处理进度长时间不变化的情况产生,可以提高用户体验。
该多个任务队列的优先级还可以进行配置,基于该设计构思,本申请实施例还提供了一种第一配置界面,该第一配置界面可以包括各任务队列的优先级配置区,可以用于配置各任务队列的优先级。具体的,任务队列的各优先级可以通过一个或多个参数例如,字母、数字、符号中的一种或多种来表示,例如上述示例中,任务队列3的优先级为3,任务队列2的优先级为2,任务队列1的优先级为1。实际上,只要可以表示优先级大小或排序的都可以适用于本申请实施例。
需要说明的是,上述确定目标任务队列的方式仅为举例,在另一种可实施的方式中,还可以是调度线程随机选择一个任务队列作为目标任务队列,或者是根据任务队列中排队的任务的数量来确定目标任务队列,例如将任务数量最多的任务作为目标任务队列,还可以是通过其他方法确定目标任务队列,本申请实施例对此不做限定。
需要说的是,该步骤是可选的步骤,并非必须执行的步骤,目标任务队列也可以是随机选择的一个任务队列,故图5中该步骤501以虚线框表示。
步骤502,确定该目标任务队列对应的至少一个设备队列的长度。
其中,目标任务队列对应的设备队列和目标任务队列对应于同一子操作,示例性地,本申请实施例中的任务队列和设备队列可以通过子操作的标识来表征,具体的,每个任务队列中可以包括头部,头部可以包括该任务队列所属的子操作的标识,同理,设备队列中也可以包括头部,其头部中可以包括该设备队列所属的子操作的标识。例如,子操作1的任务队列的标识可以是1,CPU或GPU上子操作1的设备队列的标识也为1。也就是说,目标任务队列和目标任务队列对应的设备队列的标识相同。
本申请实施例中,在计算设备上,同一个子操作可能存在多个设备队列,如前所述,由于每个计算单元的性能、功能不同,因此,不同计算设备可以执行的子操作可以是不同的,也可以是相同的。这里首先说明一下,在编排该工作流程时,还可以根据计算单元的特性来编排每个子操作的指定执行设备,示例性地,假设子操作1的指定执行设备为CPU,或者未指定执行设备,则该子操作1默认在CPU上执行,不在GPU上执行,假设子操作2的指定执行设备为GPU,由于CPU具有通用性,因此,该子操作2优先在GPU上执行,也可以在CPU上执行,假设操作3的指定执行设备也是GPU,则同理,操作3既可以在GPU上行又可以在CPU上执行,但GPU的优先级高于CPU,后续会对该应用进行详细介绍。应理解的是,对于计算单元而言,对于不需要执行的子操作则不需要建立其对应的设备队列。例如,结合示例,针对GPU,会建立子操作2的设备队列和子操作3的设备队列30,针对CPU,会建立子操作1的设备队列和子操作3的设备队列31。
具体的,在执行步骤502时,在一种可实施的方式中,在调度时可以在目标任务队列对应的多个设备队列中选择一个设备队列作为第一目标设备队列,首先确定该第一目标设备队列的长度,这里的长度可以是根据该任务队列所包含的(任务)数据的大小确定的,也可以是根据该任务队列中的任务的数量确定的。后续,根据该第一目标设备队列的长度判断是否可以将任务调度至该第一目标设备队列,如果可以,则不需要再获取其他设备队列的长度,可以缩短调度的时延,减少计算资源开销。如果不可以,则再从剩余的设备队列中选择一个新的设备队列作为第一目标设备队列,继续判断是否可以将任务调度至该第一目标设备队列,以此类推,直至对该目标任务队列对应的所有的设备队列轮询完成。
下面对确定第一目标设备队列的方式进行介绍。示例性地,可以以子操作为粒度来配置对应的设备队列的优先级,也就是说,同一计算单元的不同设备队列可能具有不同的优先级。第一目标设备队列为目标任务队列对应的多个设备队列中优先级最高的设备队列。例如,上文中的子操作3的指定执行设备为GPU时,则GPU上该子操作3的设备队列30的优先级高于CPU该子操作3的设备队列31,则第一目标设备队列为设备队列30。再例如,当计算设备上存在多个计算单元时,也可以配置子操作对应的多个计算单元的优先级,举例来说,计算设备存在CPU、GPU、FPGA,子操作3可以在CPU、GPU、FPGA上执行,则可以配置子操作3的执行设备的优先级,例如,GPU>FPGA>CPU。基于该构思,本申请实施例还可以提供一种第二配置界面,该第二配置界面可以用于配置子操作的指定执行设备,还可以用于配置不同子操作对应的设备队列的优先级,可选的,该第二配置界面和上文的第一配置界面可以集成在一个界面上。可选的,各设备队列的优先级可以存储在设备队列自身的头部中。
类似于任务队列的优先级,设备队列的优先级,也可以以数字、字母、符号等中的一项或多项参数来表示,本申请对此不做限定。
需要说明的是,上述串行方式获取设备队列长度的方式仅为举例,当目标任务队列存在多个设备队列时,还可以并行的确定该目标任务队列对应的每个设备队列的长度,以此减少时延。
步骤503:根据该至少一个设备队列中每个设备队列的长度,将该目标任务队列中的至少一个任务调度至其中一个设备队列中。
以目标任务队列对应的设备队列为2个为例,通过上文步骤502的描述,可以在2个设备队列中确定一个第一目标设备队列,在确定了第一目标设备队列的长度后,可以首先判断第一目标设备队列的长度是否超过第一预设阈值,若未超过,则可以从目标任务队列中获取一个或多个任务调度至该第一目标设备队列;若超过,则从剩余的设备队列中继续确定优先级次之的设备队列作为新的第一目标设备队列,判断该新的第一目标设备队列的长度是否超过第二预设阈值,若未超过第二预设阈值,则可以将目标任务队列中的任务调度至该设备队列,否则,不进行调度,放弃本次调度机会。需要说明的是,这里的第一预设阈值和第二预设阈值可以是相同的,也可以是不同的,本申请实施例对此不做限定。在实际应用中,由于不同的计算单元的算力不同,因此该预设阈值一般是不同的。并且,该第一预设阈值和第二预设阈值可以是可配置的值,可以根据具体的任务和计算单元的性能进行配置。下文将步骤502中确定的,可以将目标任务队列的任务调度至的设备队列称为第二目标设备队列。
在确定了第二目标设备队列之后,接下来可以基于该第二目标设备队列的执行设备来确定将被调度的任务的数量。例如,第二目标设备队列的计算单元为CPU,在一种可实施的方式中,可以根据CPU的线程池内的空闲线程的数量进行调度,举例来说,当前空闲线程有2个,则可以一次调度2个任务至CPU上。若当前空闲线程有3个,则可以一次调度3个任务至CPU上。再例如,第二目标设备队列的计算单元为GPU,在一种可实施的方式中,可以根据GPU的batch值进行调度,具体的,GPU上具有默认的batch值,也可以设置该batch值。该batch值为多少,则可以一次调度多少个任务至GPU的设备队列中。例如,batch值为3个,则可以一次调度3个任务至GPU的设备队列中。
上文确定了本轮调度将被调度的任务的数量,为便于描述,如下记为第一数量,更进一步地,若目标任务队列中包含的任务的总数量小于该第一数量,例如,若目标任务队列中有2个任务,而第一数量为3,则本次可以仅将该2个任务调度至第二目标设备队列中。若目标任务队列中包含的任务的总数量大于该第一数量,则调度线程可以从该全部任务中选择N个任务发送给目标设备队列,N等于第一数量。应理解的是,任务队列中的任务可以按照任务到达任务队列的时间进行排队,在一种可实施的方式中,调度线程可以是随机选择N个任务,也可以按任务排序选择排在前N个的任务,还可以是按照任务的优先级来选择任务,或者通过其他方式来选择任务,或者也可以是结合上述多个维度来选择任务,本申请实施例对此不做限定,任何可以选择一个或多个任务的方法均适用于本申请实施例。
上述方式,计算设备可以根据从队列的长度来派发任务,避免任务分配不均匀,导致任务在一个计算单元处堆积,阻塞,本申请提供的方法不需要预编排多个工作流程,便可以实现让多个计算单元同步进行运算,提高计算单元的利用率,并且不需要测试计算单元的算力,可以简化业务流程,减少时延。
如下通过具体的实施例对本申请技术方案进行介绍。
给定某功能为将黑白视频图像转换为彩***图像,假设待处理的数据为黑白视频流,应理解,一个视频流可以包括多帧图像,则该黑白视频流中的每一帧黑白图像为一个待处理的文件对象,对每一帧黑白图像进行相同的处理,以得到一帧彩色图像。
示例性地,该处理流程可以包括:输入(一帧黑白图像)→图像解码(操作1)→彩色处理(操作2)→图像编码(操作3)→输出(一帧彩色图像)。
具体的,每个处理操作可以调用一个或多个算子来完成,算子可以理解为具有预设功能的函数,在计算机视角,调用一个算子可以理解为执行一项“操作”,与之对应的,就是***作的对象,可以称之为“操作数”。例如,求和操作可以调用sum算子完成,过滤操作可以调用filter算子完成,内存拷贝操作可以调用MakeContiguous(),该函数在GPUOperator中实现可简要描述为检查从设备队列中获取的batch个数据是不是在GPU内存上,并且是连续的,如果不是,那么将发生拷贝动作,将数据拷贝到GPU内存并且保证数据地址连续。等等。
示例性地,假设图像解码需要解码算子完成,彩色处理需要彩色算子完成,图像编码需要编码算子完成。
参考图6所示,每个算子对应一个任务队列,假设该计算设备上包括GPU和CPU,假设上述操作均可以在GPU、CPU上执行,则针对每个计算单元还包括对应于各算子的设备队列。如图6所示,任务队列中的任务为待调度的任务,设备队列中的任务是已分配给该计算单元的待处理的任务。
应理解的是,这里是以图像名称来表示任务的处理进度,虽然在不同算子的任务队列中同一张图像的名称相同,但实际上,同一帧图像在不同算子的任务队列中的数据是不同的。
如前所述,当前算子的输出数据为下一个算子的输入数据,即一帧黑白图像为解码算子的输入数据,后续,调用解码算子进行运算得到的输出数据为彩色算子的输入数据,依次类推。具体的,任务队列中的一个任务可以包括该文件对象的输入数据的地址,还可以包括指示信息,其中,输入数据的地址为该文件对象在上一个算子的输出数据的内存地址,指示信息用于指示该上一个算子的执行设备,例如CPU或GPU。
计算单元可以从设备队列中获取设备,并根据任务中包含的上一个算子的输出数据的内存地址获取本算子的输入数据,以执行算子的运算,还可以根据指示信息来确定是否需要进行内存拷贝等,下文会进行详细说明。
计算单元从某子操作(非最后一个子操作)的设备队列中获取某个任务的数据包,该任务的数据包包含某帧图像的输入数据,处理完成后,得到该图像的输出数据,并基于该图像的输出数据和执行设备生成该图像的下一个任务的数据包,并将该数据包发送至下一个子操作的任务队列中。可选的,在该示例中,每个任务的数据包中还可以包括图像的标识。
参见图7,为本申请实施例提供的一种任务调度方法的完整流程示意图。该方法可以应用于图1所示的计算设备上,在图7中将以图6所示的场景并假设同一算子,GPU的设备队列的优先级高于CPU的设备队列为例进行说明。该方法包括如下步骤:
步骤701:第一计算单元基于当前算子的输出数据生成新的任务的数据包,并将该新的任务的数据包发送至下一个算子的任务队列中。
例如,GPU从彩色算子的设备队列中获取图像1的数据包,根据该数据包获取图像1的数据,作为彩色算子的输入数据,得到图像1的第一输出数据,该第一输出数据存储在GPU的内存上,GPU生成该图像1的新的数据包,该新的数据包包括第一输出数据在GPU的内存上的内存地址,和指示信息,该指示信息用于指示得到该第一输出数据的计算单元,即GPU。后续,将该新的数据包发送至编码算子的任务队列,以等待将该图像1的新的数据包调度至设备队列中,进行下一步的处理。
步骤702:某算子的任务队列中检测到新的任务,则通知调度线程进行调度。
例如,GPU的彩色算子对应的设备队列中包括图像7和图像8的数据,以图像7为例,图像7的数据包括第一输出数据的内存地址,该第一输出数据即为图像7的原始图像输入至解码算子进行运算得到的数据,该第一输出数据可以是GPU调用解码算子对图像7进行处理得到的,也可以是CPU调用解码算子对图像7进行处理得到的。
GPU调用彩色算子对图像7的第一输出数据进行处理,处理完成后得到第二输出数据,此时该图像7(第二输出数据)需要进行编码算子的处理,则GPU还需要将图像7的数据(第二输出数据)发送至编码算子的任务队列,后续由调度线程将该图像7调度至GPU或CPU上编码算子对应的设备队列。
示例性地,这里当编码算子的任务队列检测到新的任务后,通知调度线程进行调度。
步骤703:根据各任务队列的优先级和任务数量选择目标任务队列,假设该目标任务队列为第一算子的任务队列,这里的第一算子仅为代称,其可以是解码算子或彩色算子或编码算子。
步骤704:获取GPU对应的该第一算子的设备队列(记为第一设备队列)的长度。
步骤705:判断该第一设备队列的长度是否大于第一预设阈值,如果不大于,则执行步骤706,否则,执行步骤707。
步骤706:从目标任务队列中获取n个任务,并将该n个任务发送至第一设备队列中。
其中,n≤batch值,需要说明的是,(1)在获取时,第一算子的任务队列中的任务数量可能小于batch值,因此,实际获取的任务的数据可能是小于batch值的。(2)将n个任务调度至GPU的第一算子的设备队列后,该设备队列的长度可能是超过第一预设阈值的,也可能是未超过第一预设阈值,本申请实施例对此不做限定。
再示例性地,上述对n的限定仅为举例,还可以该n个任务调度至该设备队列后,该设备队列的长度等于第一预设阈值,下文相似之处不在赘述。
步骤707:获取CPU对应的该第一算子的设备队列(记为第二设备队列)的长度,并判断该第二设备队列的长度是否大于第二预设阈值,如果不大于,则执行步骤708,否则,退出流程。
步骤708:从目标任务队列中获取m个任务,并将该m个任务发送至第二设备队列中,其中,m≤CPU当前空闲线程的数量,或将m个任务发生至该设备队列后,该设备队列的长度等于第二预设阈值。
步骤709a:GPU从其对应的多个设备队列中选择一个设备队列获取k个任务。
示例性地,在GPU中,每个设备队列也可以具有自己的优先级,GPU可以在有任务等待的设备队列中选择一个优先级最高的设备队列,从该设备队列中获取k个任务。其中,k≤batch值,应理解的是,该设备队列中的任务的数量也可能是小于batch值的,则实际获取的任务的数量可以是小于或等于batch值的。
步骤710a:GPU检测该k个任务的输入数据是否在GPU的内存中且连续,如果不连续,则执行步骤711a(内存拷贝);如果是,执行步骤712a。
示例性地,针对该k个任务中的每一个任务,根据该任务的指示信息可以确定该任务在上一个算子的执行设备,如果上一个算子的执行设备和本算子的执行设备相同,则继续判断k是否等于1,如果等于,则不需要内存拷贝;如果k大于1,则继续判断该k个任务的输入数据是否连续,如果连续,则不需要内存拷贝,否则,申请一块与该k个任务的输入数据等大且连续的内存空间,将该k个任务的输入数据拷贝至该内存空间。若上一个算子的执行设备和本算子的执行设备不同,则申请一块与该k个任务的输入数据等大且连续的内存空间,将该k个任务的输入数据拷贝至该内存空间。实际应用中,可以调用GPU的MakeContiguous()来实现内存申请、内存拷贝。
本领域技术人员可知,由于GPU在运算时,需要输入数据的内存地址连续,因此对于不连续的内存数据需要单独申请一块连续的内存空间来存储这些数据。需要说明的是,该步骤不是必须执行的步骤,如果GPU对此不再要求连续则可以不执行该步骤。另外,目前,CPU对此也没有要求。
步骤712a:针对该k个任务中的每个任务,GPU基于该任务的输入数据调用第一算子进行计算,得到输出数据。
步骤713a:基于该输出数据和执行设备生成新的数据包,GPU将该新的数据包发送至该第一算子的下一个算子的任务队列中。
步骤709b:CPU从其对应的多个设备队列中选择一个设备队列获取y个任务,并行对该多个任务进行计算。该多个任务的数量可以是空闲线程的数量。应理解的是,这里的y个任务可以是不同设备队列中的任务,CPU支持通过多个线程对不同设备队列中的设备执行并行处理。
步骤710b:GPU检测该k个任务的输入数据是否在CPU的内存中,如果不是,则执行步骤711a(内存拷贝);如果是,则执行步骤712a。
步骤712b:针对该y个任务中的每个任务,CPU基于该任务的输入数据调用第一算子进行计算,得到输出数据。
步骤713b:基于该输出数据和执行设备生成新的数据包,CPU将该新的数据包发送至该第一算子的下一个算子的任务队列中。
上述本申请提供的实施例中,为了实现上述本申请实施例提供的方法中的各功能,存储***可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
图8示出了一种计算装置800的结构示意图。其中,该计算装置800可以是图5或图7所示的计算设备,或者位于计算设备中,可以用于实现该计算设备的功能。计算装置800可以是硬件结构或硬件结构加软件模块。
具体的,计算装置800维护多个主队列,每个主队列用于存储待调度的一个或多个任务的数据包,不同主队列对应于不同的子操作,同一主队列中的多个任务对应相同的子操作;计算设备还包括与每个主队列对应的一个或多个从队列,每个从队列对应于一个计算单元,从队列用于存储计算设备待执行的任务的数据包;
如图8所示,计算装置800包括:获取单元801、调度单元802:可选的,还包括确定单元803、检测单元804;
获取单元801,用于获取目标主队列对应的一个或多个从队列的长度;目标主队列为多个主队列中的任意一个主队列;
调度单元802,用于根据一个或多个从队列的长度将目标主队列中的任务派发至一个或多个从队列中的至少一个从队列中。
在一种可能的实施方式中,每个主队列具有预设的优先级;
确定单元801,用于从多个主队列中确定目标主队列;目标主队列为存在任务的一个或多个主队列中优先级最高的主队列。
在一种可能的实施方式中,检测单804还用于检测到任意一个主队列接收到新的任务。
在一种可能的实施方式中,每个从队列具有预设的优先级;目标主队列对应于至少两个从队列;获取单元802用于,在获取目标主队列对应的一个或多个从队列的长度时具体用于:获取目标主队列对应的第一从队列的长度,第一从队列为目标主队列对应的一个或多个从队列中优先级最高的从队列;
调度单元802,用于在根据一个或多个从队列的长度将目标主队列中的任务派发至一个或多个从队列中的至少一个从队列中,具体用于判断第一从队列的长度是否超过第一从队列对应的第一预设阈值,若未超过,则将目标主队列中的N个任务派发至第一从队列,N取正整数;若超过,则获取第二从队列的长度,第二从队列为目标主队列对应的一个或多个从队列中,除去第一从队列之外的其余从队列中优先级最高的从队列;判断第二从队列的长度是否超过第二从队列对应的第二预设阈值,若未超过第二预设阈值,则将目标主队列中的M个任务派发至第二从队列,M取正整数。
在一种可能的实施方式中,所述不同的子操作之间存在预设的执行顺序,第p个子操作的输出数据为第p+1个子操作的输入数据,所述第p个子操作和所述第p+1个子操作为执行顺序相邻的两个子操作;所述第P+1个子操作对应的主队列中的每个所述任务包括,所述任务在所述第p个子操作的输出数据的存储地址和执行设备信息,所述执行设备信息用于指示所述第p个子操作的执行设备;
调度单元804,用于从对应的目标从队列中获取一个或多个任务;第三从队列中的任务对应于第P+1个子操作;针对任一任务,根据任务的执行设备信息判断任务的第P个子操作的执行设备是否为计算单元,若不是,则控制计算单元将任务在第p个子操作的输出数据拷贝至计算单元对应的存储介质中。
在一种可能的实施方式中,每个计算单元对应的每个从队列具有预设的优先级;目标从队列为计算单元对应的一个或多个从队列中存在任务、且优先级最高的从队列。
与上述构思相同,如图9所示,本申请提供一种计算装置900,该装置900可用于执行如图图5所示方法中执行主体的步骤,或执行上述图7所示流程中,调度线程执行的步骤。
装置900可包括处理器901和存储器902。进一步的,该装置还可包括通信接口904,该通信接口可为收发器,或者该通信接口可为网卡。进一步的,该装置900还可包括总线***903。
其中,处理器901、存储器902和通信接口904可通过总线***903相连,该存储器902可用存储指令,该处理器901可用于执行该存储器902存储的指令,以控制通信接口904接收或发送信号,完成上述图5所示方法中执行主体的步骤,或执行上述图7所示流程中,调度线程执行的步骤。
其中,存储器902可以集成在处理器901中,也可以是与处理器901不同的物理实体。
作为一种实现方式,通信接口904的功能可以考虑通过收发电路或收发的专用芯片实现。处理器901可以考虑通过专用处理芯片、处理电路、处理器或通用芯片实现。
作为另一种实现方式,可以考虑使用计算机的方式,来实现本申请图5所示的实施例中的执行主体的功能。即将实现处理器901和通信接口904功能的程序代码存储在存储器902中,通用处理器可通过执行存储器中的代码来实现处理器901和通信接口904的功能。
该装置1100所涉及的与本申请提供的技术方案相关的概念、解释和详细说明以及其他步骤,可参见前述方法或其它实施例中关于这些内容的描述,此处不作赘述。
在本申请的一示例中,所述装置900可用于执行上述图5所示流程中,执行主体的步骤。或执行上述图7所示流程中,调度线程执行的步骤。比如,从多个所述主队列中确定目标主队列;获取所述目标主队列对应的一个或多个从队列的长度;根据所述一个或多个从队列的长度将所述目标主队列中的任务的数据包调度至所述一个或多个从队列中的一个或多个从队列。
关于处理器901和通信接口904的介绍,可参见上述图5或图7所示流程的介绍,在此不再赘述。
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或***实施例中。其中,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
本领域普通技术人员可以理解:本申请中涉及的第一、第二等各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围,也表示先后顺序。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“至少一个”是指一个或者多个。至少两个是指两个或者多个。“至少一个”、“任意一个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个、种),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。“多个”是指两个或两个以上,其它量词与之类似。此外,对于单数形式“a”,“an”和“the”出现的元素(element),除非上下文另有明确规定,否则其不意味着“一个或仅一个”,而是意味着“一个或多于一个”。例如,“a device”意味着对一个或多个这样的device。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (14)
1.一种任务调度方法,其特征在于,应用于计算设备,所述计算设备维护多个主队列,每个所述主队列中包括一个或多个待调度的任务,不同主队列对应于不同的子操作,同一主队列中的任务对应于相同的子操作;所述计算设备还包括多个计算单元,所述计算设备还维护有与每个所述主队列对应的一个或多个从队列,每个所述从队列对应于一个计算单元,所述从队列中包括调度给所述计算单元的待执行的任务;
所述方法包括:
获取目标主队列对应的一个或多个从队列的长度;所述目标主队列为所述多个主队列中的任意一个主队列;
根据所述一个或多个从队列的长度将所述目标主队列中的任务派发至所述一个或多个从队列中的至少一个从队列中。
2.如权利要求1所述的方法,其特征在于,每个所述主队列具有预设的优先级;
所述目标主队列为存在任务的一个或多个主队列中优先级最高的主队列。
3.如权利要求1或2所述的方法,其特征在于,获取目标主队列对应的一个或多个从队列的长度之前,还包括:
检测到任意一个所述主队列接收到新的任务。
4.如权利要求1-3任一项所述的方法,其特征在于,每个所述从队列具有预设的优先级;所述目标主队列对应于至少两个从队列;
获取所述目标主队列对应的一个或多个从队列的长度,包括:
获取所述目标主队列对应的第一从队列的长度,所述第一从队列为所述目标主队列对应的指示两个从队列中优先级最高的从队列;
判断所述第一从队列的长度是否超过所述第一从队列对应的第一预设阈值,若未超过,则将所述目标主队列中的N个任务派发至所述第一从队列,所述N取正整数;或者,
若超过,则获取第二从队列的长度,所述第二从队列为所述目标主队列对应的一个或多个从队列中,除去所述第一从队列之外的其余从队列中优先级最高的从队列;判断所述第二从队列的长度是否超过所述第二从队列对应的第二预设阈值,若未超过所述第二预设阈值,则将所述目标主队列中的M个任务派发至所述第二从队列,所述M取正整数。
5.如权利要求1-4任一项所述的方法,其特征在于,所述不同的子操作之间存在预设的执行顺序,第p个子操作的输出数据为第p+1个子操作的输入数据,所述第p个子操作和所述第p+1个子操作为执行顺序相邻的两个子操作;所述第P+1个子操作对应的主队列中的每个所述任务包括,所述任务在所述第p个子操作的输出数据的存储地址和执行设备信息,所述执行设备信息用于指示所述第p个子操作的执行设备;所述方法还包括:
从对应的目标从队列中获取一个或多个任务;所述目标从队列中的任务对应于所述第P+1个子操作;
针对任一所述任务,根据所述任务的执行设备信息判断所述任务的所述第P个子操作的执行设备是否为所述计算单元,若不是,则将所述任务在所述第p个子操作的输出数据拷贝至所述计算单元对应的存储介质中。
6.如权利要求5所述的方法,其特征在于,每个所述计算单元对应的每个所述从队列具有预设的优先级;所述目标从队列为所述计算单元对应的一个或多个从队列中存在任务的从队列中优先级最高的从队列。
7.一种计算装置,其特征在于,所述装置维护多个主队列,每个所述主队列中包括一个或多个待调度的任务,不同主队列对应于不同的子操作,同一主队列中的任务对应于相同的子操作;所述计算设备还包括多个计算单元,所述计算设备还维护有与每个所述主队列对应的一个或多个从队列,每个所述从队列对应于一个计算单元,所述从队列中包括调度给所述计算单元的待执行的任务;所述装置包括:
获取单元,用于获取目标主队列对应的一个或多个从队列的长度;所述目标主队列为所述多个主队列中的任意一个主队列;
调度单元,用于根据所述一个或多个从队列的长度将所述目标主队列中的任务派发至所述一个或多个从队列中的至少一个从队列中。
8.如权利要求7所述的装置,其特征在于,每个所述主队列具有预设的优先级;所述装置还包括确定单元;
所述确定单元,用于从所述多个主队列中确定所述目标主队列,所述目标主队列为存在任务的一个或多个主队列中优先级最高的主队列。
9.如权利要求7或8所述的装置,其特征在于,所述装置还包括检测单元;
所述检测单元,还用于检测到任意一个所述主队列接收到新的任务。
10.如权利要求7-9任一项所述的装置,其特征在于,每个所述从队列具有预设的优先级;所述目标主队列对应于至少两个从队列;
所述获取单元在获取目标主队列对应的一个或多个从队列的长度时具体用于:获取所述目标主队列对应的第一从队列的长度,所述第一从队列为所述目标主队列对应的一个或多个从队列中优先级最高的从队列;
所述调度单元在根据所述一个或多个从队列的长度将所述目标主队列中的任务派发至所述一个或多个从队列中的至少一个从队列中,具体用于判断所述第一从队列的长度是否超过所述第一从队列对应的第一预设阈值,若未超过,则将所述目标主队列中的N个任务派发至所述第一从队列,所述N取正整数;若超过,则获取第二从队列的长度,所述第二从队列为所述目标主队列对应的一个或多个从队列中,除去所述第一从队列之外的其余从队列中优先级最高的从队列;判断所述第二从队列的长度是否超过所述第二从队列对应的第二预设阈值,若未超过所述第二预设阈值,则将所述目标主队列中的M个任务派发至所述第二从队列,所述M取正整数。
11.如权利要求7-10任一项所述的装置,其特征在于,所述不同的子操作之间存在预设的执行顺序,所述不同的子操作之间存在预设的执行顺序,第p个子操作的输出数据为第p+1个子操作的输入数据,所述第p个子操作和所述第p+1个子操作为执行顺序相邻的两个子操作;所述第P+1个子操作对应的主队列中的每个所述任务包括,所述任务在所述第p个子操作的输出数据的存储地址和执行设备信息,所述执行设备信息用于指示所述第p个子操作的执行设备;
所述调度单元,还用于从对应的目标从队列中获取一个或多个任务;所述第三从队列中的任务对应于所述第P+1个子操作;针对任一所述任务,根据所述任务的执行设备信息判断所述任务的所述第P个子操作的执行设备是否为所述计算单元,若不是,则控制所述计算单元将所述任务在所述第p个子操作的输出数据拷贝至所述计算单元对应的存储介质中。
12.如权利要求11所述的装置,其特征在于,每个所述计算单元对应的每个所述从队列具有预设的优先级;所述目标从队列为所述计算单元对应的一个或多个从队列中存在任务、且优先级最高的从队列。
13.一种计算装置,其特征在于,所述装置包括处理器和存储器,所述存储器中存储有计算机可执行程序,所述可执行程序在被所述处理器调用时用于使所述处理器执行上述权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序,所述程序被处理器调用时,权利要求1-6任一所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110485859.6A CN115269131A (zh) | 2021-04-30 | 2021-04-30 | 一种任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110485859.6A CN115269131A (zh) | 2021-04-30 | 2021-04-30 | 一种任务调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115269131A true CN115269131A (zh) | 2022-11-01 |
Family
ID=83745722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110485859.6A Pending CN115269131A (zh) | 2021-04-30 | 2021-04-30 | 一种任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269131A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483584A (zh) * | 2023-05-26 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
-
2021
- 2021-04-30 CN CN202110485859.6A patent/CN115269131A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483584A (zh) * | 2023-05-26 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
CN116483584B (zh) * | 2023-05-26 | 2024-05-03 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机*** | |
CN113535367B (zh) | 任务调度方法及相关装置 | |
KR101587201B1 (ko) | Gpu 워크의 하드웨어 기반 스케쥴링 | |
WO2017166777A1 (zh) | 一种任务调度方法及装置 | |
TW202246977A (zh) | 一種任務調度方法、任務調度裝置、電腦設備、電腦可讀儲存媒介和電腦程式產品 | |
CN110300959B (zh) | 用于动态运行时任务管理的方法、***、设备、装置和介质 | |
WO2022179486A1 (zh) | 多核处理器任务调度方法、装置及设备、存储介质 | |
CN112181613B (zh) | 异构资源分布式计算平台批量任务调度方法及存储介质 | |
CN112486642B (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN115269196A (zh) | 线程池动态创建方法、装置、设备及存储介质 | |
CN115220921A (zh) | 资源调度方法及相关装置、图形处理器、摄像器件和介质 | |
CN116048721A (zh) | 一种gpu集群的任务分配方法、装置、电子设备和介质 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN115269131A (zh) | 一种任务调度方法及装置 | |
CN109766168B (zh) | 任务调度方法和装置、存储介质以及计算设备 | |
CN112214299A (zh) | 多核处理器及其任务调度方法和装置 | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
CN107634978B (zh) | 一种资源调度方法及装置 | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN112395062A (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
US9760969B2 (en) | Graphic processing system and method thereof | |
CN112486638A (zh) | 用于执行处理任务的方法、装置、设备和存储介质 | |
CN115775199A (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 |