任务调度方法、任务调度装置、图形处理器及电子设备与流程

未命名 09-29 阅读:78 评论:0


1.本公开的实施例涉及一种任务调度方法、任务调度装置、图形处理器及电子设备。


背景技术:

2.通用图形处理器(general-purpose computing on graphics processing unit,gpgpu)是一种利用处理图形任务的图形处理器来计算原本由中央处理器(central processing unit,cpu)处理的通用计算任务的处理器。这些通用计算通常与图形处理无关。由于现代图形处理器强大的并行处理能力和可编程流水线,因此可以处理非图形数据。特别在面对单指令流多数据流且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序。


技术实现要素:

3.本公开至少一个实施例提供一种任务调度方法,用于图形处理器,其中,所述方法包括:基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为待处理任务,其中,被选择的任务具有相同的优先级,所述被选择的任务的优先级高于或等于所述任务池中未被选择的任务的优先级或者所述被选择的任务是所述任务池中的全部任务,所述权重反映在相同优先级下的运行时间分配比重;基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理。
4.例如,在本公开一实施例提供的方法中,基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为所述待处理任务,包括:获取所述任务池中各个任务的优先级,其中,所述任务池包括一个或多个任务,所述任务池中的任务划分为至少一个优先级;在所述任务池的任务中确定至少一个任务作为备选任务,其中,所述备选任务具有相同的优先级,所述备选任务的优先级高于所述任务池中除所述备选任务以外的任务的优先级或者所述备选任务是所述任务池中的全部任务;响应于所述备选任务的数量小于或等于预设阈值,将所述备选任务均加载至所述硬件缓存中以作为所述待处理任务,其中,所述预设阈值反映所述硬件缓存的容量,所述预设阈值是所述硬件缓存能够存储的任务的数量;响应于所述备选任务的数量大于所述预设阈值,基于所述备选任务的权重在所述备选任务中选择至少一个备选任务,并将所述至少一个备选任务加载至所述硬件缓存中以作为所述待处理任务,其中,被选择的所述至少一个备选任务的数量等于所述预设阈值。
5.例如,在本公开一实施例提供的方法中,所述权重基于对应的任务的存活时间和运行时间而确定,所述存活时间指从所述任务建立至当前时刻的时长,所述运行时间指从所述任务建立至所述当前时刻所述任务被处理的累计时长。
6.例如,在本公开一实施例提供的方法中,所述权重等于所述存活时间与所述运行时间的比值。
7.例如,在本公开一实施例提供的方法中,基于所述备选任务的权重在所述备选任务中选择至少一个备选任务,并将所述至少一个备选任务加载至所述硬件缓存中以作为所述待处理任务,包括:将所述备选任务按照所述权重的数值从大到小进行排序;在所述备选任务的排序中选择前n个备选任务,并将选择的备选任务加载至所述硬件缓存中以作为所述待处理任务,其中,n等于所述预设阈值。
8.例如,在本公开一实施例提供的方法中,基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据所述预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理,包括:根据所述待处理任务的权重计算各个待处理任务的所述单次运行时长;确定处理所述待处理任务的所述预设顺序;根据所述预设顺序将所述待处理任务依次从所述硬件缓存加载至所述运算单元中,并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理,其中,所述待处理任务被所述运算单元处理的时间等于对应的单次运行时长。
9.例如,在本公开一实施例提供的方法中,所述单次运行时长采用如下公式计算:tc=t0
×
(wz
÷
wc),其中,tc表示所述单次运行时长,t0表示所述图形处理器的时间片的时长,wz表示所述硬件缓存中所有待处理任务的权重的和,wc表示当前计算的单次运行时长对应的待处理任务的权重。
10.例如,在本公开一实施例提供的方法中,所述时间片的时长为10ms的数量级。
11.例如,在本公开一实施例提供的方法中,所述预设顺序包括按照先进先出规则确定的顺序。
12.例如,在本公开一实施例提供的方法中,所述优先级包括第一优先级至第十六优先级,所述第一优先级至所述第十六优先级的优先等级依次降低。
13.例如,在本公开一实施例提供的方法中,所述优先级采用4比特位的二进制数表示。
14.例如,在本公开一实施例提供的方法中,所述任务包括图形处理器进程。
15.例如,在本公开一实施例提供的方法中,所述图形处理器包括通用图形处理器。
16.本公开至少一个实施例还提供一种任务调度装置,用于图形处理器,其中,所述装置包括:第一加载单元,配置为基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为待处理任务,其中,被选择的任务具有相同的优先级,所述被选择的任务的优先级高于或等于所述任务池中未被选择的任务的优先级或者所述被选择的任务是所述任务池中的全部任务,所述权重反映在相同优先级下的运行时间分配比重;第二加载单元,配置为基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理。
17.本公开至少一个实施例还提供一种图形处理器,包括本公开任一实施例提供的任务调度装置。
18.本公开至少一个实施例还提供一种电子设备,包括本公开任一实施例提供的图形处理器。
附图说明
19.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
20.图1示出了gpgpu编程模型中的处理流程;
21.图2为一种gpgpu的架构示意图;
22.图3为本公开一些实施例提供的一种任务调度方法的流程示意图;
23.图4为图3中步骤s10的示例性流程图;
24.图5为图4中步骤s14的示例性流程图;
25.图6为图3中步骤s20的示例性流程图;
26.图7为本公开一些实施例提供的任务调度方法中从任务池中加载任务到硬件缓存中的示意图;
27.图8为本公开一些实施例提供的任务调度方法中从硬件缓存中加载任务到运算单元中的示意图;
28.图9为本公开一些实施例提供的一种任务调度装置的示意框图;
29.图10为本公开一些实施例提供的一种图形处理器的示意框图;
30.图11为本公开一些实施例提供的一种电子设备的示意框图;以及
31.图12为本公开一些实施例提供的另一种电子设备的示意框图。
具体实施方式
32.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
33.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
34.gpgpu编程是一种将gpu用作通用计算设备的技术。在gpgpu编程模型中,gpu被用作cpu的辅助计算单元,gpgpu无法单独启动程序或执行任务。由于gpu是cpu的协处理器,所以所有指令都从cpu开始,并在cpu的请求下启动,gpu只处理程序的并行计算部分。gpgpu计算环境是一个异构的计算环境,同时使用cpu和gpu作为计算设备。
35.图1示出了gpgpu编程模型中的处理流程。如图1所示,在gpgpu编程模型中,运行在gpgpu上的代码通常称为kernel code或者device code,运行在cpu上的代码通常称为host code。编译器将device code和host code一起打包为elf文件,cpu加载elf文件,运行host code,然后将kernel code下发给gpgpu以由gpgpu运行。
36.gpgpu任务和普通cpu任务之间的最大区别在于任务数据的管理方式。通常情况下,cpu使用的数据在主存(host memory)中进行管理,而gpgpu有自己的设备内存(device memory)。gpgpu内存不能直接接受用户的输入,cpu也不能直接访问gpu内存。当需要向gpgpu写入数据时,需要先将数据加载到主存中,再通过特定的方式拷贝到gpgpu的设备内存中。同理,如果要读取gpgpu的运算结果,也需要将任务结果数据从gpu内存复制到主存中。
37.图2为一种gpgpu的架构示意图。在并行计算中,计算任务一般通过多个线程(thread)执行。如图2所示,这些线程在gpgpu中执行前,被线程块调度模块划分成多个线程块(thread block),然后经由线程块分发模块,将多个线程块分发到各个计算单元(compute processor,cp)。一个线程块中的所有线程必须要分配到同一个计算单元上执行。同时,线程块会被拆分成最小执行线程束(或简称线程束,thread warp),每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。
38.在每个计算单元中,线程束调度/分发模块对线程束进行调度、分配,以便该计算单元的多个计算核心(例如,流处理器(sp))运行线程束。每个计算核心包括算数逻辑单元(alu)、浮点计算单元等。根据计算单元中计算核心的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。指令的读取、译码、发送都在线程束调度/分发模块中完成。内存执行指令会被发送到计算单元中的共享缓存(例如共享l1缓存)或进一步发送到统一缓存中以进行读写操作等。
39.在一个线程束执行计算指令时,需要的源数据(来自于通用寄存器)可能来自于之前某一条内存读取指令,这时需要一条等待指令(wait)来确保之前的内存读取指令读回的数据已经准备好。而在同一个线程块中,多个线程束之间也存在这样的同步关系。例如,一个线程块包括2个线程束,分别为线程束0和线程束1,这2个线程束的计算都需要读取内存区域中的数据。为了节省读取的时间和带宽,一般的优化方法是线程束0读取内存区域的一半数据,线程束1读取内存区域的另一半数据。但对于任一个线程束,在该线程束执行计算指令时都需要内存区域的所有数据,因此在线程束执行计算指令之前,需要等待线程束0和线程束1的内存读取指令都读回了数据,这时需要一条屏障指令(barrier)来阻止线程束继续执行指令,直到线程束0和线程束1的内存读取指令结束,以得到内存区域的所有数据。
40.通常的cpu的调度基于分时(time sharing)技术,多个进程以“时间多路复用”方式运行。cpu的时间被分成“片(slice)”,以划分给每个可运行进程。当然,单处理器在任何给定的时刻只能运行一个进程。如果当前运行进程的时间片或者时限(quantum)到期时,该进程还没运行完毕,进程切换就会发生。cpu上的多任务并发是通过上下文切换(context switch)实现的,上下文切换会带来额外的延迟和吞吐量损失,这些对于cpu来说是可以在一定程度上忽略的。而gpu(例如gpgpu)的特点是并行性高,吞吐量大,在gpu上使用cpu的策略带来的额外开销会严重影响性能。例如,一个gpu进程的切换可能涉及到接近1mb的寄存
器以及几十mb的内存切换,这会极大地影响gpu运行效率。
41.通常的gpu进程调度方案主要由gpu的计算单元(cp)完成。gpu自身的驱动维护一个用户进程列表,每当有新的用户进程进来,驱动就会阻塞(unmap)当前正在运行的所有gpu进程,并将新的用户进程添加到进程队列中,然后再将该队列交由计算单元调度。由于计算单元的硬件资源有限,它能加载的进程数也是固定的。当进程队列中的进程数小于计算单元的硬件缓存时,计算单元可以将所有的进程队列全部加载并根据优先级依次运行。
42.当进程队列中的进程数大于计算单元的硬件缓存时,运行流程大致如下。首先,计算单元从进程队列中选一部分进程加载到缓存中;然后,计算单元从缓存根据优先级挑选进程运行;接着,当前时间片耗尽,计算单元暂停正在运行的进程,将所有数据保存到主存中。采用这种方式,重复上述步骤,从而实现进程调度。
43.上述方式存在运行效率低下的问题,当gpu(例如gpgpu)任务队列足够多时,计算单元会频繁的发生上下文切换(context switch),由于gpgpu吞吐量大的特性,上下文切换会极大地降低运行效率,多任务调度时上下文切换过于频繁会造成gpgpu性能的损失。
44.本公开至少一个实施例提供一种任务调度方法、任务调度装置、图形处理器及电子设备。该任务调度方法可以在效率优先的前提下兼顾实时性,可以在多任务情况下减少由于任务调度而产生的性能损失,从整体上提升运行效率,可以明显提升人工智能(artificial intelligence,ai)训练场景的运行效率。
45.下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
46.本公开至少一个实施例提供一种任务调度方法,用于图形处理器。该任务调度方法包括:基于图形处理器的任务池中各个任务的优先级和权重以及图形处理器的硬件缓存的容量,在任务池中选择至少一个任务加载至硬件缓存中以作为待处理任务,被选择的任务具有相同的优先级,被选择的任务的优先级高于或等于任务池中未被选择的任务的优先级或者被选择的任务是所述任务池中的全部任务,权重反映在相同优先级下的运行时间分配比重;基于待处理任务的权重确定待处理任务的单次运行时长,根据预设顺序将待处理任务依次从硬件缓存加载至图形处理器的运算单元中并由运算单元依据单次运行时长对待处理任务进行处理。
47.图3为本公开一些实施例提供的一种任务调度方法的流程示意图,该任务调度方法用于图形处理器(gpu),例如可以进一步用于通用图形处理器(gpgpu)。在一些实施例中,如图3所示,该任务调度方法包括如下操作。
48.步骤s10:基于图形处理器的任务池中各个任务的优先级和权重以及图形处理器的硬件缓存的容量,在任务池中选择至少一个任务加载至硬件缓存中以作为待处理任务,其中,被选择的任务具有相同的优先级,被选择的任务的优先级高于或等于任务池中未被选择的任务的优先级或者被选择的任务是任务池中的全部任务,权重反映在相同优先级下的运行时间分配比重;
49.步骤s20:基于待处理任务的权重确定待处理任务的单次运行时长,根据预设顺序将待处理任务依次从硬件缓存加载至图形处理器的运算单元中并由运算单元依据单次运行时长对待处理任务进行处理。
50.例如,在步骤s10中,图形处理器中的任务组成任务池,任务可以是图形处理器进
程,也即,由图形处理器进行处理的进程。任务池中的任务可以是一个,也可以是多个,本公开的实施例对任务池中任务的数量不作限制。例如,每个任务都有优先级,不同的任务可能具有相同的优先级,也可能具有不同的优先级。每个任务也有对应的权重,权重反映在相同优先级下的运行时间分配比重,在需要使用权重时,可以根据时间参数计算得到。关于优先级和权重将在后文详细说明,此处不再赘述。
51.图形处理器的硬件缓存的容量是指硬件缓存能够存储的任务的数量,这是由硬件缓存的硬件配置而决定的,当然,也可以通过软件设置对其容量进行缩小或设置使用限制。硬件缓存是设置在图形处理器内的缓存,可以是前述的设备内存(device memory)或其他适用的存储部件,只要是设置在图形处理器中且可以用于存储待处理任务即可,本公开的实施例对硬件缓存的具体类型不作限制。
52.例如,被选择且被加载到硬件缓存中的待处理任务是任务池中的一个或多个任务,这些被选择的任务的优先级是任务池的所有任务中优先级最高的,被选择的任务具有相同的优先级,也即,被选择的任务属于同一个优先级。例如,在任务池中除了被选择的任务还有其他任务的情形下,被选择的任务的优先级高于或等于任务池中未被选择的任务的优先级。例如,在一些示例中,被选择的任务的优先级高于任务池中未被选择的任务的优先级,也即,任务池中优先级最高的任务均被选中。例如,在另一些示例中,被选择的任务的优先级高于任务池中一部分未被选择的任务的优先级,并且等于任务池中另一部分未被选择的任务的优先级,也即,任务池中优先级最高的任务中的一部分任务被选中,而优先级最高的任务中的另一部分任务未被选中。例如,在任务池中的任务均被选中的情形下,被选择的任务是任务池中的全部任务。在该情形中,任务池中的所有任务属于同一个优先级,并且都被选中以作为待处理任务。
53.例如,在一些示例中,假设任务池中优先级最高的任务有m个,m为正整数,则被选择的任务可能是这m个任务中的一部分任务,也可能是全部m个任务,这需要依据一定条件来选择,详细说明将在后文描述,此处不再赘述。例如,可以是任务池中除了这m个任务还包括其他优先级较低的任务,也可以是任务池中仅有这m个任务。
54.图4为图3中步骤s10的示例性流程图。如图4所示,在一些示例中,步骤s10可以进一步包括如下操作。
55.步骤s11:获取任务池中各个任务的优先级,其中,任务池包括一个或多个任务,任务池中的任务划分为至少一个优先级;
56.步骤s12:在任务池的任务中确定至少一个任务作为备选任务,其中,备选任务具有相同的优先级,备选任务的优先级高于任务池中除备选任务以外的任务的优先级或者备选任务是任务池中的全部任务;
57.步骤s13:响应于备选任务的数量小于或等于预设阈值,将备选任务均加载至硬件缓存中以作为待处理任务,其中,预设阈值反映硬件缓存的容量,预设阈值是硬件缓存能够存储的任务的数量;
58.步骤s14:响应于备选任务的数量大于预设阈值,基于备选任务的权重在备选任务中选择至少一个备选任务,并将至少一个备选任务加载至硬件缓存中以作为待处理任务,其中,被选择的至少一个备选任务的数量等于预设阈值。
59.例如,在步骤s11中,首先获取任务池中各个任务的优先级。例如,任务池包括一个
或多个任务,每个任务具有优先级,因此,任务池中的任务被划分为至少一个优先级。例如,每个任务的优先级可以彼此不同,也可以彼此相同。或者,多个任务中可以有一部分任务的优先级相同,另一部分任务的优先级不同。
60.例如,在一些示例中,优先级包括第一优先级至第十六优先级,第一优先级至第十六优先级的优先等级依次降低。也即是,第一优先级是最高优先级,第十六优先级是最低优先级。从第一优先级到第十六优先级,优先等级依次降低。例如,第一优先级高于第二优先级,第二优先级高于第三优先级,第三优先级高于第四优先级,以此类推。每个任务都对应于一个优先级,例如对应于第一优先级至第十六优先级中的一个优先级。通过划分多个优先级,可以提高灵活度。
61.例如,每个任务都具有优先级信息,优先级信息用于指示该任务的优先级。例如,在一些示例中,对于划分为十六个优先级的情形,也即对于优先级包括第一优先级至第十六优先级的情形,优先级可以采用4比特位(4bits)的二进制数表示。例如,0000、0001、0010、0011可以分别表示第一优先级、第二优先级、第三优先级、第四优先级,以此类推。该二进制数换算为十进制数为0、1、2、3,以此类推,因此第一优先级至第十六优先级可以对应于数值0~15。由此,可以清楚地指示每个任务各自的优先级。
62.需要说明的是,优先级不限于划分为十六个等级,也可以划分为任意数量的等级,这可以根据实际需求而定,本公开的实施例对此不作限制。优先级的表示方式不限于二进制数,也不限于4比特位,可以采用任意适用的方式来表示优先级,例如还可以采用字符串、哈希值等任意方式,本公开的实施例对此不作限制。
63.例如,在步骤s12中,在任务池的任务中确定至少一个任务作为备选任务。例如,备选任务并不是要加载到硬件缓存中的待处理任务,备选任务是初步确定的任务范围,待处理任务是备选任务的一部分或者全部,需要在后续步骤中在备选任务中确定待处理任务。
64.例如,备选任务具有相同的优先级。例如,在任务池中除了备选任务还有其他任务的情形下,备选任务的优先级高于任务池中除备选任务以外的任务的优先级。也即是,将任务池中具有最高优先级的所有任务都作为备选任务。这里,最高优先级是指任务池中当前的所有任务的优先级中最高的优先级。当任务池中除备选任务以外还有其他任务时,备选任务的优先级高于其他任务。例如,在任务池中的所有任务均属于同一个优先级的情形下,将任务池中的全部任务均作为备选任务,也即是,在该情形下,任务池中除备选任务以外没有其他任务。
65.例如,在一些示例中,假设任务池中共有11个任务,其中,5个任务为第三优先级,6个任务为第五优先级,则将第三优先级的5个任务都作为备选任务。例如,在另一些示例中,假设任务池中共有7个任务,其中,2个任务为第二优先级,4个任务为第四优先级,1个任务为第十优先级,则将第二优先级的2个任务都作为备选任务。例如,在另一些示例中,假设任务池中共有3个任务,这3个任务均为第六优先级,则将这3个任务都作为备选任务。备选任务的数量可以为一个或多个,这根据任务池中任务的数量和优先级而确定。
66.例如,在步骤s13中,若备选任务的数量小于或等于预设阈值,则将备选任务均加载至硬件缓存中以作为待处理任务。例如,预设阈值反映硬件缓存的容量,预设阈值是硬件缓存能够存储的任务的数量。也即是,如果备选任务的数量小于或等于硬件缓存能够存储的任务的数量,则硬件缓存可以将备选任务全部存储,因此将备选任务均加载至硬件缓存
中以作为待处理任务,由此提高硬件缓存的利用率。例如,硬件缓存能够存储的任务的数量是由硬件配置而决定的,这可以根据实际需求采用适用的硬件配置。
67.例如,在步骤s14中,若备选任务的数量大于预设阈值,则基于备选任务的权重在备选任务中选择至少一个备选任务,并将选择的至少一个备选任务加载至硬件缓存中以作为待处理任务。也即是,如果备选任务的数量大于硬件缓存能够存储的任务的数量,则硬件缓存无法将备选任务全部存储,因此需要在备选任务中选择部分备选任务加载至硬件缓存中以作为待处理任务。例如,被选择的至少一个备选任务的数量等于预设阈值,也即是,被选择的备选任务的数量等于硬件缓存能够存储的任务的数量,由此可以充分利用硬件缓存,提高硬件缓存的利用率,从而提高整体效率。
68.例如,在备选任务中选择需要加载到硬件缓存中的任务时,依据各个备选任务的权重而进行选择。权重是基于对应的任务的存活时间和运行时间而确定的。存活时间指从该任务建立至当前时刻的时长,运行时间指从该任务建立至当前时刻该任务被处理的累计时长。例如,权重等于存活时间与运行时间的比值,也即是,权重=存活时间
÷
运行时间。
69.例如,在一些示例中,假设某一任务在9:00建立,当前时刻(也即需要进行选择的时刻)为10:00,则该任务的存活时间是从9:00至10:00的时间段,也即存活时间为1小时(也即60分钟)。在这60分钟内,该任务并不是一直被处理器处理的,该任务在相当长的时间内其实是处于队列中等待处理或者在缓存中等待处理,该任务实际上被处理器处理的累计时长假设为3分钟,则该任务的运行时间为3分钟。因此,该任务的权重为60分钟/3分钟,权重等于20。为了便于说明,该任务被称为第一任务。
70.例如,在另一些示例中,假设另一任务也在9:00建立,当前时刻(也即需要进行选择的时刻)为10:00,则该任务的存活时间是从9:00至10:00的时间段,也即存活时间为1小时(也即60分钟)。在这60分钟内,该任务实际上被处理器处理的累计时长假设为10分钟,则该任务的运行时间为10分钟。因此,该任务的权重为60分钟/10分钟,权重等于6。为了便于说明,该任务被称为第二任务。
71.在上述示例中,第一任务被累计运行了3分钟,第二任务被累计运行了10分钟。第一任务的权重为20,第二任务的权重为6,第一任务的权重大于第二任务的权重,因此在第一任务和第二任务具有相同优先级的情形下(当第一任务和第二任务都作为备选任务时,其优先级必然是相同的),第一任务的运行时间分配比重更大,也即是,需要给第一任务分配更多的运行时间。例如,运行越久的任务,在下次调度时,权重会相对降低(在相同优先级下其优先程度会相对降低);运行时间短的任务在下次调度时权重会相对提高(在相同优先级下其优先程度会相对提高)。由此,可以提升任务处理的公平性。
72.因此,在步骤s14中,若备选任务的数量大于预设阈值,则基于备选任务的权重来选择待处理任务(例如选择权重较大的任务),可以使累计运行时间较少的任务在未来能够被分配更多的运行时间,从而对各个任务保证相对的公平性。
73.需要说明的是,上述关于权重的定义及计算方式仅为示例性的,而非限制性的,在其他实施例中,还可以采用其他适用的方式来定义和计算权重,这可以根据实际需求而定,只要权重能够反映在相同优先级下的运行时间分配比重,能够作为在备选任务中进行选择的依据即可,本公开的实施例对此不作限制。
74.图5为图4中步骤s14的示例性流程图。如图5所示,在一些示例中,步骤s14可以进
一步包括如下操作。需要说明的是,步骤s14适用于备选任务的数量大于预设阈值的情形。
75.步骤s141:将备选任务按照权重的数值从大到小进行排序;
76.步骤s142:在备选任务的排序中选择前n个备选任务,并将选择的备选任务加载至硬件缓存中以作为待处理任务,其中,n等于预设阈值。
77.例如,在步骤s141中,按照权重的数值从大到小将备选任务进行排序。例如,排第一位的备选任务的权重最大,排最后一位的备选任务的权重最小。例如,权重可以按照上文描述的方法确定,此处不再赘述。
78.例如,在步骤s142中,在备选任务的排序中选择前n个备选任务,也即,选择权重的数值最大的n个备选任务,并将选择的备选任务加载至硬件缓存中以作为待处理任务。例如,n等于预设阈值,也即,等于硬件缓存能够存储的任务的数量。由此,可以将备选任务中权重较大的任务选出来并加载到硬件缓存中。权重较大的任务被处理器已处理过的累计时长较短,因此选择权重较大的任务可以使累计运行时间较少的任务在未来能够被分配更多的运行时间,从而对各个任务保证相对的公平性。
79.返回至图3,例如,在步骤s20中,基于待处理任务的权重确定待处理任务的单次运行时长,根据预设顺序将待处理任务依次从硬件缓存加载至图形处理器的运算单元中并由运算单元依据单次运行时长对待处理任务进行处理。这里的运算单元可以是前述的计算单元(cp),也可以是图形处理器中其他具有运算功能的组件或部件,本公开的实施例对此不作限制。
80.图6为图3中步骤s20的示例性流程图。如图6所示,在一些示例中,步骤s20可以进一步包括如下操作。
81.步骤s21:根据待处理任务的权重计算各个待处理任务的单次运行时长;
82.步骤s22:确定处理待处理任务的预设顺序;
83.步骤s23:根据预设顺序将待处理任务依次从硬件缓存加载至运算单元中,并由运算单元依据单次运行时长对待处理任务进行处理,其中,待处理任务被运算单元处理的时间等于对应的单次运行时长。
84.例如,在步骤s21中,首先根据待处理任务的权重计算各个待处理任务的单次运行时长。例如,单次运行时长是指对应的待处理任务即将被运算单元处理的时长,也即本次被处理的时长。例如,单次运行时长采用如下公式计算:tc=t0
×
(wz
÷
wc)。其中,tc表示单次运行时长。t0表示图形处理器的时间片的时长,该时间片的时长是图形处理器的最小时间单元,该时间片的时长例如为10ms的数量级。例如,该时间片是图形处理器的时间片,该时间片的时长例如比cpu的时间片高一个数量级。在一些示例中,该时间片的时长例如为30ms至50ms。本公开的实施例不限于此,时间片的时长可以根据实际需求而定,例如根据图形处理器的配置而定,不限于上文列举的数值范围。wz表示硬件缓存中所有待处理任务的权重的和,也即,将硬件缓存中所有待处理任务的权重相加可以得到wz。wc表示当前计算的单次运行时长对应的待处理任务的权重,也即,表示本次计算所针对的待处理任务的权重。
85.例如,在一些示例中,假设硬件缓存中有10个待处理任务,这10个待处理任务的权重的和为30,其中一个待处理任务的权重是5,那么该待处理任务的单次运行时长可以表示为:单次运行时长=时间片
×
(硬件缓存中所有任务的权重之和
÷
当前任务的权重)=时间片
×
(30
÷
5),也即,单次运行时长等于6个时间片。由此,该待处理任务即将被处理的时间
为6个时间片。
86.例如,在步骤s22中,确定处理待处理任务的预设顺序,也即是,确定运算单元按照何种顺序来处理硬件缓存中的待处理任务。例如,在一些示例中,该预设顺序包括按照先进先出规则(fifo)确定的顺序,也即是,运算单元按照fifo的方式从硬件缓存中读取待处理任务并进行处理,先被写入硬件缓存的任务会被运算单元先处理,后被写入硬件缓存的任务会被运算单元后处理。当然,本公开的实施例不限于此,也可以采用其他适用的方式来读取并处理待处理任务,例如可以按照随机的顺序读取,或者按照其他预设顺序读取,这可以根据实际需求而定,本公开的实施例对此不作限制。
87.例如,在步骤s23中,根据预设顺序将待处理任务依次从硬件缓存加载至运算单元中,并由运算单元依据单次运行时长对待处理任务进行处理。例如,待处理任务被运算单元处理的时间等于对应的单次运行时长,也即,当运算单元对当前的任务进行处理的时长达到该任务对应的单次运行时长时,运算单元才会停止处理该任务并切换为处理下一个任务。
88.图7为本公开一些实施例提供的任务调度方法中从任务池中加载任务到硬件缓存中的示意图,图8为本公开一些实施例提供的任务调度方法中从硬件缓存中加载任务到运算单元中的示意图。下面结合图7和图8对本公开实施例提供的任务调度方法的工作流程进行示例性说明。
89.该任务调度方法包括两个阶段,第一阶段是挑选哪些任务(例如gpu任务)加载到gpu的硬件缓存中,第二阶段是加载到gpu硬件缓存中的任务如何由运算单元进行调度和处理。
90.首先,在该示例中,任务的优先级划分为16个等级,例如第一优先级至第十六优先级。采用4个bit来表示优先级,这样更易于硬件设计和软件编程。在通常的cpu的完全公平调度方法中,高优先级任务和低优先级任务的区别在于真正执行时间的长短,高优先级任务未执行完毕时,低优先级任务也会执行;与cpu任务不同的是,本公开实施例提供的任务调度方法中,在高优先级任务没执行完毕之前,低优先级的任务不会执行。
91.例如,时间片的长短对gpu(例如gpgpu)性能较为关键,时间片既不能太长也不能太短。如果时间片太短(平均时间太短),由上下文切换带来的额外开销会变得非常高。如果时间片太长(平均时间太长),又会影响gpu的响应速度。cpu上进程调度的时间片一般是3ms~5ms,而gpu本身吞吐量大,上下文切换带来的开销要远超cpu,由此,gpu的时间片至少比cpu的时间片高一个数量级,例如为10ms的数量级,进一步地,例如为30ms~50ms。
92.在第一阶段,需要从任务池中挑选任务(进程)加载到gpu硬件缓存中。假设任务池中当前一共有t个任务,优先级从高到低的个数分别为a、b、c、d...,其中,t、a、b、c、d等均为正整数。也即是,当前的任务池中优先级最高的任务有a个,优先级次高的任务有b个,以此类推。例如,gpu硬件缓存只能加载l个任务,也即,硬件缓存的最大容量是l,l为正整数。
93.此时,首先将优先级最高的a个任务作为备选任务。然后判断a与l的大小关系。如果a《l,则说明gpu硬件缓存能够存储所有的优先级最高的任务,因此将a个任务全部加载到gpu硬件缓存中,这a个任务均作为待处理任务。如果a》l,则说明gpu硬件缓存无法存储所有的优先级最高的任务,因此需要从a个任务中挑选出权重最大的l个任务加载到gpu硬件缓存中。例如,可以将a个任务按照权重从大到小进行排序,从而挑选前l个任务,挑选出的l个
任务是a个任务中权重较大的任务,这l个任务作为待处理任务。例如,权重的计算公式如下:权重=当前任务的存活时间
÷
当前任务的运行时间。关于存活时间和运行时间的说明可以参考上文内容,此处不再赘述。
94.需要说明的是,当加载到gpu硬件缓存中的任务都在后续第二阶段运行完毕之后,将按照前述第一阶段加载任务的方式重新在任务池中选择任务加载到gpu硬件缓存中。例如,在一些示例中,假设第一阶段中a个任务全部加载到gpu缓存中,且期间没有新的任务加入任务池,那么再次加载任务时,会基于上述规则选择b个任务作为备选任务且根据b与l的大小关系来确定加载的任务。例如,在另一些示例中,假设第一阶段中在a个任务中选择了l个任务加载到gpu硬件缓存中,且期间没有新的任务加入任务池,那么再次加载任务时,会基于上述规则选择余下的a-l个任务作为备选任务且根据a-l与l的大小关系来确定加载的任务。
95.在第二阶段,gpu的运算单元调度gpu硬件缓存中的任务(进程)。例如,基于一定的顺序从gpu硬件缓存中挑选任务并交给运算单元处理。由于同一批硬件缓存中的任务优先级都一样,因此需要基于一定规则为每个任务分配即将被处理的运行时间,也被称为单次运行时长。例如,在一些示例中,单次运行时长的计算公式如下:单次运行时长=时间片
×
(gpu硬件缓存中所有任务权重之和
÷
当前任务的权重)。例如,将gpu硬件缓存中所有任务权重相加,可以得到gpu硬件缓存中所有任务权重之和,然后根据时间片和当前任务的权重,可以计算得到当前任务的单次运行时长。由此,当前任务被运算单元处理的时间为对应的单次运行时长。例如,可以基于fifo或其他适用的顺序来从gpu硬件缓存中挑选任务交给运算单元处理。
96.由此,通过上述方式,在第一阶段选择任务加载到gpu的硬件缓存中,在第二阶段按照一定的顺序并基于对应的单次运行时长,由运算单元对gpu硬件缓存中的任务进行调度和处理。该方式能在效率优先的前提下兼顾实时性,尤其适用于ai训练场景。
97.需要说明的是,本公开实施例提供的任务调度方法不限于上文描述的步骤和顺序,还可以包括更多或更少的步骤,各个步骤的执行顺序可以根据实际需求而定,本公开的实施例对此不作限制。该任务调度方法可以用于任意类型的图形处理器(gpu),不限于通用图形处理器(gpgpu),本公开的实施例对此不作限制。
98.本公开至少一个实施例还提供一种任务调度装置。该任务调度装置可以在效率优先的前提下兼顾实时性,可以在多任务情况下减少由于任务调度而产生的性能损失,从整体上提升运行效率,可以明显提升ai训练场景的运行效率。
99.图9为本公开一些实施例提供的一种任务调度装置的示意框图。如图9所示,该任务调度装置100包括第一加载单元110和第二加载单元120。该任务调度装置100用于图形处理器(gpu),例如进一步用于通用图形处理器(gpgpu)。
100.第一加载单元110配置为基于图形处理器的任务池中各个任务的优先级和权重以及图形处理器的硬件缓存的容量,在任务池中选择至少一个任务加载至硬件缓存中以作为待处理任务。例如,被选择的任务具有相同的优先级,被选择的任务的优先级高于或等于任务池中未被选择的任务的优先级或者被选择的任务是任务池中的全部任务,权重反映在相同优先级下的运行时间分配比重。例如,第一加载单元110可以执行图3所示的任务调度方法中的步骤s10。
101.第二加载单元120配置为基于待处理任务的权重确定待处理任务的单次运行时长,根据预设顺序将待处理任务依次从硬件缓存加载至图形处理器的运算单元中并由运算单元依据单次运行时长对待处理任务进行处理。例如,第二加载单元120可以执行图3所示的任务调度方法中的步骤s20。
102.例如,第一加载单元110包括获取单元、备选任务确定单元、判断单元。获取单元配置为获取任务池中各个任务的优先级。例如,任务池包括一个或多个任务,任务池中的任务划分为至少一个优先级。备选任务确定单元配置为在任务池的任务中确定至少一个任务作为备选任务。例如,备选任务具有相同的优先级,备选任务的优先级高于任务池中除备选任务以外的任务的优先级或者备选任务是任务池中的全部任务。
103.判断单元配置为:响应于备选任务的数量小于或等于预设阈值,将备选任务均加载至硬件缓存中以作为待处理任务,其中,预设阈值反映硬件缓存的容量,预设阈值是硬件缓存能够存储的任务的数量;响应于备选任务的数量大于预设阈值,基于备选任务的权重在备选任务中选择至少一个备选任务,并将至少一个备选任务加载至硬件缓存中以作为待处理任务,其中,被选择的至少一个备选任务的数量等于预设阈值。
104.例如,权重基于对应的任务的存活时间和运行时间而确定。存活时间指从任务建立至当前时刻的时长,运行时间指从任务建立至当前时刻该任务被处理的累计时长。例如,权重等于存活时间与运行时间的比值。
105.例如,判断单元进一步包括排序单元和选择单元。排序单元配置为将备选任务按照权重的数值从大到小进行排序。选择单元配置为在备选任务的排序中选择前n个备选任务,并将选择的备选任务加载至硬件缓存中以作为待处理任务。例如,n等于预设阈值。
106.例如,第二加载单元120包括时长计算单元、顺序确定单元、第三加载单元。
107.时长计算单元配置为根据待处理任务的权重计算各个待处理任务的单次运行时长。顺序确定单元配置为确定处理待处理任务的预设顺序。第三加载单元配置为根据预设顺序将待处理任务依次从硬件缓存加载至运算单元中,并由运算单元依据单次运行时长对待处理任务进行处理。例如,待处理任务被运算单元处理的时间等于对应的单次运行时长。
108.例如,单次运行时长采用如下公式计算:tc=t0
×
(wz
÷
wc)。其中,tc表示单次运行时长,t0表示图形处理器的时间片的时长,wz表示硬件缓存中所有待处理任务的权重的和,wc表示当前计算的单次运行时长对应的待处理任务的权重。例如,时间片的时长为10ms的数量级。例如,预设顺序包括按照先进先出规则确定的顺序。
109.例如,优先级包括第一优先级至第十六优先级,第一优先级至第十六优先级的优先等级依次降低。例如,优先级采用4比特位的二进制数表示。
110.例如,上述任务包括图形处理器进程,图形处理器可以包括通用图形处理器。
111.例如,上述各个单元可以为硬件、软件、固件以及它们的任意可行的组合。例如,上述各个单元可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
112.需要说明的是,本公开的实施例中,任务调度装置100的各个单元与前述的任务调度方法的各个步骤对应,关于该任务调度装置100的具体功能和技术效果可以参考上文中关于任务调度方法的相关描述,此处不再赘述。图9所示的任务调度装置100的组件和结构只是示例性的,而非限制性的,根据需要,该任务调度装置100还可以包括其他组件和结构。
113.本公开至少一个实施例还提供一种图形处理器。该图形处理器可以在效率优先的前提下兼顾实时性,可以在多任务情况下减少由于任务调度而产生的性能损失,从整体上提升运行效率,可以明显提升ai训练场景的运行效率。
114.图10为本公开一些实施例提供的一种图形处理器的示意框图。如图10所示,图形处理器200包括任务调度装置210,该任务调度装置210例如为前述的任务调度装置100。例如,图形处理器200可以为通用图形处理器(gpgpu)或其他类型的图形处理器,本公开的实施例对此不作限制。
115.关于该图形处理器200的具体功能和技术效果可以参考上文中关于任务调度装置100和任务调度方法的相关描述,此处不再赘述。图10所示的图形处理器200的组件和结构只是示例性的,而非限制性的,根据需要,该图形处理器200还可以包括其他组件和结构。
116.本公开至少一个实施例还提供一种电子设备,该电子设备可以在效率优先的前提下兼顾实时性,可以在多任务情况下减少由于任务调度而产生的性能损失,从整体上提升运行效率,可以明显提升ai训练场景的运行效率。
117.图11为本公开一些实施例提供的一种电子设备的示意框图。如图11所示,该电子设备300包括图形处理器310,该图形处理器310例如为前述的图形处理器200。例如,电子设备300可以为任意的具有数据处理能力和/或程序执行能力的设备,例如为服务器、终端设备、个人计算机或其组合等,本公开的实施例对此不作限制。关于该电子设备300的具体功能和技术效果可以参考上文中关于图形处理器200、任务调度装置100、任务调度方法的相关描述,此处不再赘述。
118.图12为本公开一些实施例提供的另一种电子设备的示意框图。如图12所示,该电子设备400例如适于用来实施本公开实施例提供的任务调度方法。电子设备400可以是终端设备或服务器等。需要注意的是,图12示出的电子设备400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
119.如图12所示,电子设备400可以包括处理装置410,其可以根据存储在只读存储器(rom)420中的程序或者从存储装置480加载到随机访问存储器(ram)430中的程序而执行各种适当的动作和处理。在ram 430中,还存储有电子设备400操作所需的各种程序和数据。处理装置410、rom 420以及ram 430通过总线440彼此相连。输入/输出(i/o)接口450也连接至总线440。
120.例如,处理装置410可以包括中央处理器(cpu)和图形处理器(gpu),图形处理器可以为通用图形处理器(gpgpu),图形处理器可以实施前述的任务调度方法。
121.通常,以下装置可以连接至i/o接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许电子设备400与其他电子设备进行无线或有线通信以交换数据。虽然图12示出了具有各种装置的电子设备400,但应理解的是,并不要求实施或具备所有示出的装置,电子设备400可以替代地实施或具备更多或更少的装置。
122.有以下几点需要说明:
123.(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
124.(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
125.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种任务调度方法,用于图形处理器,其中,所述方法包括:基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为待处理任务,其中,被选择的任务具有相同的优先级,所述被选择的任务的优先级高于或等于所述任务池中未被选择的任务的优先级或者所述被选择的任务是所述任务池中的全部任务,所述权重反映在相同优先级下的运行时间分配比重;基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理。2.根据权利要求1所述的方法,其中,基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为所述待处理任务,包括:获取所述任务池中各个任务的优先级,其中,所述任务池包括一个或多个任务,所述任务池中的任务划分为至少一个优先级;在所述任务池的任务中确定至少一个任务作为备选任务,其中,所述备选任务具有相同的优先级,所述备选任务的优先级高于所述任务池中除所述备选任务以外的任务的优先级或者所述备选任务是所述任务池中的全部任务;响应于所述备选任务的数量小于或等于预设阈值,将所述备选任务均加载至所述硬件缓存中以作为所述待处理任务,其中,所述预设阈值反映所述硬件缓存的容量,所述预设阈值是所述硬件缓存能够存储的任务的数量;响应于所述备选任务的数量大于所述预设阈值,基于所述备选任务的权重在所述备选任务中选择至少一个备选任务,并将所述至少一个备选任务加载至所述硬件缓存中以作为所述待处理任务,其中,被选择的所述至少一个备选任务的数量等于所述预设阈值。3.根据权利要求2所述的方法,其中,所述权重基于对应的任务的存活时间和运行时间而确定,所述存活时间指从所述任务建立至当前时刻的时长,所述运行时间指从所述任务建立至所述当前时刻所述任务被处理的累计时长。4.根据权利要求3所述的方法,其中,所述权重等于所述存活时间与所述运行时间的比值。5.根据权利要求2所述的方法,其中,基于所述备选任务的权重在所述备选任务中选择至少一个备选任务,并将所述至少一个备选任务加载至所述硬件缓存中以作为所述待处理任务,包括:将所述备选任务按照所述权重的数值从大到小进行排序;在所述备选任务的排序中选择前n个备选任务,并将选择的备选任务加载至所述硬件缓存中以作为所述待处理任务,其中,n等于所述预设阈值。6.根据权利要求1所述的方法,其中,基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据所述预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理,包括:根据所述待处理任务的权重计算各个待处理任务的所述单次运行时长;
确定处理所述待处理任务的所述预设顺序;根据所述预设顺序将所述待处理任务依次从所述硬件缓存加载至所述运算单元中,并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理,其中,所述待处理任务被所述运算单元处理的时间等于对应的单次运行时长。7.根据权利要求6所述的方法,其中,所述单次运行时长采用如下公式计算:tc=t0
×
(wz
÷
wc),其中,tc表示所述单次运行时长,t0表示所述图形处理器的时间片的时长,wz表示所述硬件缓存中所有待处理任务的权重的和,wc表示当前计算的单次运行时长对应的待处理任务的权重。8.根据权利要求7所述的方法,其中,所述时间片的时长为10ms的数量级。9.根据权利要求6所述的方法,其中,所述预设顺序包括按照先进先出规则确定的顺序。10.根据权利要求1-9任一项所述的方法,其中,所述优先级包括第一优先级至第十六优先级,所述第一优先级至所述第十六优先级的优先等级依次降低。11.根据权利要求10所述的方法,其中,所述优先级采用4比特位的二进制数表示。12.根据权利要求1-9任一项所述的方法,其中,所述任务包括图形处理器进程。13.根据权利要求1-9任一项所述的方法,其中,所述图形处理器包括通用图形处理器。14.一种任务调度装置,用于图形处理器,其中,所述装置包括:第一加载单元,配置为基于所述图形处理器的任务池中各个任务的优先级和权重以及所述图形处理器的硬件缓存的容量,在所述任务池中选择至少一个任务加载至所述硬件缓存中以作为待处理任务,其中,被选择的任务具有相同的优先级,所述被选择的任务的优先级高于或等于所述任务池中未被选择的任务的优先级或者所述被选择的任务是所述任务池中的全部任务,所述权重反映在相同优先级下的运行时间分配比重;第二加载单元,配置为基于所述待处理任务的权重确定所述待处理任务的单次运行时长,根据预设顺序将所述待处理任务依次从所述硬件缓存加载至所述图形处理器的运算单元中并由所述运算单元依据所述单次运行时长对所述待处理任务进行处理。15.一种图形处理器,包括权利要求14所述的任务调度装置。16.一种电子设备,包括权利要求15所述的图形处理器。

技术总结
一种任务调度方法、任务调度装置、图形处理器及电子设备。该方法用于图形处理器,该方法包括:基于图形处理器的任务池中任务的优先级和权重以及硬件缓存的容量,在任务池中选择至少一个任务加载至硬件缓存中以作为待处理任务,被选择的任务具有相同的优先级,被选择的任务的优先级高于或等于任务池中未被选择的任务的优先级或者被选择的任务是所述任务池中的全部任务,权重反映在相同优先级下的运行时间分配比重;基于待处理任务的权重确定待处理任务的单次运行时长,根据预设顺序将待处理任务依次从硬件缓存加载至运算单元中并由运算单元依据单次运行时长对待处理任务进行处理。该方法可以在多任务情况下减少由于任务调度而产生的性能损失。调度而产生的性能损失。调度而产生的性能损失。


技术研发人员:郭磊 张君威
受保护的技术使用者:海光信息技术股份有限公司
技术研发日:2023.03.17
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐