本技术涉及芯片运算,尤其设计一种任务调度方法、装置、设备及介质。
背景技术:
1、人工智能(artificial intelligence,简称ai)芯片做运算时,需要访问大量的运算数据,ai芯片本身的存储数据能力有限,访问随机存取存储器(random access memory,简称ram)去取得计算相关的数据的延时很高。
2、目前,ai计算芯片都会通过缓存器来做数据的缓存,在缓存器中缓存当前计算任务所需要的数据,从而减少芯片中计算单元访问ram需要的延时。
3、但是,当执行的计算任务相关性不高,需要缓存器缓存不同的数据时,会增加缓存器访问ram的次数,增加缓存器切换数据的次数,降低了ai芯片的计算效率。
技术实现思路
1、本技术提供一种任务调度方法、装置、设备及介质,用来提升芯片计算效率。
2、一方面,本技术提供一种任务调度方法,包括:
3、从软件下发的任务中确定待调度任务,所述软件下发的任务设定有连续调度次数;
4、将所述待调度任务拆分成多个子任务,并按照所述待调度任务的连续调度次数,将所述多个子任务进行划分,得到所述待调度任务的至少一个区间任务;
5、针对所述待调度任务的每个区间任务,从所述待调度任务当前可见的资源中,为所述区间任务占据区间亲和资源,以及,将所述区间任务中的每个子任务连续调度至所述子任务对应的亲和资源,直至所述区间任务下的所有子任务均完成调度;其中,所述区间亲和资源包括所述区间任务中所有子任务对应的亲和资源的集合,其中被占据的资源对其它任务不可见。
6、在一种实施例中,所述方法还包括:
7、若所述区间任务中的所有子任务均完成调度,则释放所述区间任务占据的所述区间亲和资源,其中被释放的资源对其它任务可见。
8、在一种实施例中,所述从所述待调度任务当前可见的资源中,为所述区间任务占据区间亲和资源,包括:
9、获取所述区间任务中子任务对应的资源掩码,所述子任务对应的资源掩码表征所述子任务对应的亲和资源;
10、将所述待调度任务当前可见的资源中所述掩码表征的资源,作为所述区间亲和资源,为所述区间任务占用所述区间亲和资源。
11、在一种实施例中,所述方法还包括:
12、通过解析所述任务调度指令,获得所述连续调度次数并记录在第一寄存器中;
13、基于第一更新条件,更新第二寄存器中的数据,所述第二寄存器中的数据表征当前已连续调度的次数;其中,所述第一更新条件包括:若当前已成功连续调度的次数达到所述第一寄存器中的连续调度次数,或者执行所述将所述待调度任务拆分成多个子任务的步骤后,或者收到针对所述待调度任务的终止调度指令,或者当前达到最大并行度,则对所述第二寄存器清零;否则,每次完成子任务的调度后,将所述第二寄存器执行加1处理;
14、基于第二更新条件,更新第三寄存器中的数据,所述第三寄存器中的数据表征当前需为所述区间任务占据的区间亲和资源;其中,所述第二更新条件包括:若当前已成功连续调度的次数达到所述第一寄存器中的连续调度次数,或者执行所述将所述待调度任务拆分成多个子任务的步骤后,或者收到针对所述待调度任务的终止调度指令,或者当前达到最大并行度,则清除所述第三寄存器中的数据;否则,每次完成子任务的调度后,从所述第三寄存器中删除该子任务的亲和资源。
15、在一种实施例中,所述将所述区间任务中的每个子任务连续调度至所述子任务对应的亲和资源,包括:
16、若所述第二寄存器中的数据未达到所述第一寄存器中的连续调度次数,则确定所述区间任务中未完成调度的子任务;
17、从所述未完成调度的子任务中选取待调度的子任务,将所述待调度的子任务调度至所述子任务对应的亲和资源,直至所述区间任务中所有子任务均完成调度。
18、在一种实施例中,所述软件下发的任务具有优先级;所述从软件下发的任务中确定待调度任务,包括:
19、根据当前的可用资源,按照优先级自高向低,从每个优先级对应的任务中选取至少一个任务作为所述待调度任务,直至当前的可用资源不包括任意任务对应的亲和资源;其中,不同待调度任务对应的亲和资源不同,所述可用资源包括除当前的所有待调度任务对应的亲和资源以外的资源。
20、在一种实施例中,所述从每个优先级对应的任务中选取至少一个任务作为所述待调度任务,包括:
21、若所述优先级对应的任务中存在亲和资源有重合的不同任务,则将当前所述不同任务中权重最大的任务作为所述待调度任务,并增加所述不同任务中其它任务的权重。
22、另一方面,本技术提供一种任务调度装置,包括:
23、确定模块,用于从软件下发的任务中确定待调度任务,所述软件下发的任务设定有连续调度次数;
24、处理模块,用于将所述待调度任务拆分成多个子任务,并按照所述待调度任务的连续调度次数,将所述多个子任务进行划分,得到所述待调度任务的至少一个区间任务;
25、处理模块,还用于针对所述待调度任务的每个区间任务,从所述待调度任务当前可见的资源中,为所述区间任务占据区间亲和资源,以及,将所述区间任务中的每个子任务连续调度至所述子任务对应的亲和资源,直至所述区间任务下的所有子任务均完成调度;其中,所述区间亲和资源包括所述区间任务中所有子任务对应的亲和资源的集合,其中被占据的资源对其它任务不可见。
26、在一种实施例中,所述处理模块,还用于若所述区间任务中的所有子任务均完成调度,则释放所述区间任务占据的所述区间亲和资源,其中被释放的资源对其它任务可见。
27、在一种实施例中,所述处理模块,具体用于获取所述区间任务中子任务对应的资源掩码,所述子任务对应的资源掩码表征所述子任务对应的亲和资源;
28、所述处理模块,具体还用于将所述待调度任务当前可见的资源中所述掩码表征的资源,作为所述区间亲和资源,为所述区间任务占用所述区间亲和资源。
29、在一种实施例中,所述处理模块,具体还用于通过解析所述任务调度指令,获得所述连续调度次数并记录在第一寄存器中;
30、所述处理模块,具体还用于基于第一更新条件,更新第二寄存器中的数据,所述第二寄存器中的数据表征当前已连续调度的次数;其中,所述第一更新条件包括:若当前已成功连续调度的次数达到所述第一寄存器中的连续调度次数,或者执行所述将所述待调度任务拆分成多个子任务的步骤后,或者收到针对所述待调度任务的终止调度指令,或者当前达到最大并行度,则对所述第二寄存器清零;否则,每次完成子任务的调度后,将所述第二寄存器执行加1处理;
31、所述处理模块,具体还用于基于第二更新条件,更新第三寄存器中的数据,所述第三寄存器中的数据表征当前需为所述区间任务占据的区间亲和资源;其中,所述第二更新条件包括:若当前已成功连续调度的次数达到所述第一寄存器中的连续调度次数,或者执行所述将所述待调度任务拆分成多个子任务的步骤后,或者收到针对所述待调度任务的终止调度指令,或者当前达到最大并行度,则清除所述第三寄存器中的数据;否则,每次完成子任务的调度后,从所述第三寄存器中删除该子任务的亲和资源。
32、在一种实施例中,所述处理模块,具体还用于若所述第二寄存器中的数据未达到所述第一寄存器中的连续调度次数,则确定所述区间任务中未完成调度的子任务;
33、所述处理模块,具体还用于从所述未完成调度的子任务中选取待调度的子任务,将所述待调度的子任务调度至所述子任务对应的亲和资源,直至所述区间任务中所有子任务均完成调度。
34、在一种实施例中,所述处理模块,具体还用于根据当前的可用资源,按照优先级自高向低,从每个优先级对应的任务中选取至少一个任务作为所述待调度任务,直至当前的可用资源不包括任意任务对应的亲和资源;其中,不同待调度任务对应的亲和资源不同,所述可用资源包括除当前的所有待调度任务对应的亲和资源以外的资源。
35、在一种实施例中,所述处理模块,具体还用于若所述优先级对应的任务中存在亲和资源有重合的不同任务,则将当前所述不同任务中权重最大的任务作为所述待调度任务,并增加所述不同任务中其它任务的权重。
36、又一方面,本技术提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
37、所述存储器存储计算机执行指令;
38、所述处理器执行所述存储器存储的计算机执行指令,以实现如前所述的方法。
39、又一方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前所述的方法。
40、本技术提供的任务调度方法、装置、设备及介质中,根据软件下发的任务确定出待调度任务,并将所述待调度任务拆分成多个子任务,以及根据解析出的所述待调度任务对应的连续调度次数,将所述多个子任务按区间进行划分,针对所述待调度任务的每个区间任务,从所述待调度任务当前可见的资源中,为所述区间任务占据区间亲和资源,将所述区间任务中的每个子任务连续调度至所述子任务对应的亲和资源,直至所述区间任务下的所有子任务均完成调度。本方案通过将多个子任务按区间进行划分,并连续调度所述区间中每个子任务直至所述区间下的所有子任务均完成调度,由于执行同一任务下的子任务需要的数据具有强相关性,所以连续调度同一区间下的子任务可以有效减少缓存器对于ram的访存,减少了数据在缓存器中的切换次数,从而有效提升芯片计算效率。