一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务处理方法、装置、电子设备及存储介质与流程

2022-02-19 01:04:58 来源:中国专利 TAG:


1.本公开涉及数据处理技术领域,尤其涉及一种任务处理方法、装置、电子设备及存储介质。


背景技术:

2.当前在很多数据处理场景中,数据量急剧增加,计算任务日益增大,传统的通用处理器cpu在面对日益复杂的计算任务时已经不能满足性能的需求。在这种情况下,多种计算平台共同组成的异构计算平台得到了快速的发展。常见的异构计算平台有fpga,gpu,asic等。
3.在基于异构模式进行任务处理时,cpu线程数量一般大于异构处理单元的数量,相关技术中对cpu线程采用循环分(round robin)的方式为每个线程分配固定的异构处理单元,会出现已完成任务处理的异构处理单元没有被分配新的线程而处于等待状态的情况,从而导致异构处理单元的资源浪费。


技术实现要素:

4.本公开提供一种任务处理方法、装置、电子设备及存储介质,以至少解决相关技术中异构处理单元的资源浪费问题。本公开的技术方案如下:
5.根据本公开实施例的第一方面,提供一种任务处理方法,包括:
6.当任务队列中不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务放入所述任务队列;所述多个目标线程为待处理线程的子集;
7.检测多个异构处理单元的运行状态;所述目标线程的数量大于所述异构处理单元的数量,所述异构处理单元为与所述子任务相适配的硬件单元;
8.当所述多个异构处理单元中存在目标异构处理单元时,基于所述目标异构处理单元对所述任务队列中的多个子任务进行处理;所述目标异构处理单元的所述运行状态为空闲状态。
9.在一示例性实施例中,所述方法还包括:
10.基于待抽取的线程中子任务的属性信息,从所述待抽取的线程中抽取出所述当前批次的多个目标线程。
11.在一示例性实施例中,所述子任务的属性信息用于表征所述子任务进入线程的时间;
12.所述方法还包括:
13.基于所述多个线程中首个子任务进入线程的时间信息,对所述多个线程进行排序,得到线程排序表;
14.其中,所述线程排序表中,排序在前的线程中首个子任务进入线程的时间早于排序在后的线程中首个子任务进入线程的时间。
15.在一示例性实施例中,所述从所述待抽取的线程中抽取出所述当前批次的多个目
标线程包括:
16.从所述待抽取的线程中抽取出在所述线程排序表中排序在前的多个线程;
17.将抽取出的多个线程确定为所述当前批次的多个目标线程。
18.在一示例性实施例中,所述从当前批次的多个目标线程中各取出一个子任务放入所述任务队列包括:
19.基于取出的多个子任务进入线程的时间,将所述多个子任务依次放入所述任务队列;
20.其中,进入线程的时间在前的子任务进入所述任务队列的时间,早于进入线程的时间在后的子任务;进入线程的时间在前的子任务进入所述目标异构处理单元的时间,早于进入线程的时间在后的子任务。
21.在一示例性实施例中,所述子任务包括任务标识,所述任务标识用于表征所述子任务所属的目标任务,所述目标任务被拆分为多个具有相同任务标识的子任务;
22.所述从当前批次的多个目标线程中各取出一个子任务,之后还包括:
23.将从所述多个目标线程中取出的多个子任务放入到任务队列中;
24.基于所述子任务的任务标识,确定具有所述任务标识的子任务进入所述任务队列的次数;
25.当具有所述任务标识的子任务进入所述任务队列的次数大于等于两次时,获取与所述任务标识对应的缓存数据;
26.将所述子任务包含的待处理数据以及所述任务标识对应的缓存数据,确定为处理所述子任务所需的数据。
27.在一示例性实施例中,所述子任务还包括线程标识;
28.所述基于所述目标异构处理单元对从所述多个目标线程中取出的多个子任务进行处理包括:
29.通过所述目标异构处理单元对所述处理所述子任务所需的数据进行处理,得到与所述子任务对应的已处理数据;
30.基于所述子任务包括的所述线程标识,将所述已处理数据更新到与所述线程标识对应的缓存区域。
31.在一示例性实施例中,同一目标任务对应的多个子任务被拆分到同一线程中;
32.所述方法还包括:
33.当具有所述任务标识的子任务进入所述任务队列的次数为一时,基于所述子任务包括的所述线程标识,确定所述子任务所在的原线程;
34.确定在所述原线程中所述子任务的前一个已处理子任务;
35.获取与所述已处理子任务的任务标识对应的缓存数据;
36.将所述已处理子任务的任务标识对应的缓存数据确定为对所述目标任务的处理结果;所述已处理子任务为所述目标任务包括的多个子任务中最后被处理的子任务。
37.根据本公开实施例的第二方面,提供一种任务处理装置,包括:
38.子任务取出单元,被配置为执行当任务队列中不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务放入所述任务队列;所述多个目标线程为待处理线程的子集;
39.运行状态检测单元,被配置为执行检测多个异构处理单元的运行状态;所述目标线程的数量大于所述异构处理单元的数量,所述异构处理单元为与所述子任务相适配的硬件单元;
40.子任务处理单元,被配置为执行当所述多个异构处理单元中存在目标异构处理单元时,基于所述目标异构处理单元对所述任务队列中的多个子任务进行处理;所述目标异构处理单元的所述运行状态为空闲状态。
41.在一示例性实施例中,所述装置还包括:
42.第一抽取单元,被配置为执行基于待抽取的线程中子任务的属性信息,从所述待抽取的线程中抽取出所述当前批次的多个目标线程。
43.在一示例性实施例中,所述子任务的属性信息用于表征所述子任务进入线程的时间;
44.所述装置还包括:
45.线程排序单元,被配置为执行基于所述多个线程中首个子任务进入线程的时间信息,对所述多个线程进行排序,得到线程排序表;
46.其中,所述线程排序表中,排序在前的线程中首个子任务进入线程的时间早于排序在后的线程中首个子任务进入线程的时间。
47.在一示例性实施例中,所述第一抽取单元包括:
48.第二抽取单元,被配置为执行从所述待抽取的线程中抽取出在所述线程排序表中排序在前的多个线程;
49.第一确定单元,被配置为执行将抽取出的多个线程确定为所述当前批次的多个目标线程。
50.在一示例性实施例中,所述子任务取出单元包括:
51.子任务放入单元,被配置为执行基于取出的多个子任务进入线程的时间,将所述多个子任务依次放入所述任务队列;
52.其中,进入线程的时间在前的子任务进入所述任务队列的时间,早于进入线程的时间在后的子任务;进入线程的时间在前的子任务进入所述目标异构处理单元的时间,早于进入线程的时间在后的子任务。
53.在一示例性实施例中,所述子任务包括任务标识,所述任务标识用于表征所述子任务所属的目标任务,所述目标任务被拆分为多个具有相同任务标识的子任务;
54.所述装置还包括:
55.子任务放入单元,被配置为执行将从所述多个目标线程中取出的多个子任务放入到任务队列中;
56.第二确定单元,被配置为执行基于所述子任务的任务标识,确定具有所述任务标识的子任务进入所述任务队列的次数;
57.第一获取单元,被配置为执行当具有所述任务标识的子任务进入所述任务队列的次数大于等于两次时,获取与所述任务标识对应的缓存数据;
58.第三确定单元,被配置为执行将所述子任务包含的待处理数据以及所述任务标识对应的缓存数据,确定为处理所述子任务所需的数据。
59.在一示例性实施例中,所述子任务还包括线程标识;
60.所述子任务处理单元包括:
61.已处理数据生成单元,被配置为执行通过所述目标异构处理单元对所述处理所述子任务所需的数据进行处理,得到与所述子任务对应的已处理数据;
62.数据更新单元,被配置为执行基于所述子任务包括的所述线程标识,将所述已处理数据更新到与所述线程标识对应的缓存区域。
63.在一示例性实施例中,同一目标任务对应的多个子任务被拆分到同一线程中;
64.所述装置还包括:
65.原线程确定单元,被配置为执行当具有所述任务标识的子任务进入所述任务队列的次数为一时,基于所述子任务包括的所述线程标识,确定所述子任务所在的原线程;
66.已处理子任务确定单元,被配置为执行确定在所述原线程中所述子任务的前一个已处理子任务;
67.第二获取单元,被配置为执行获取与所述已处理子任务的任务标识对应的缓存数据;
68.第四确定单元,被配置为执行将所述已处理子任务的任务标识对应的缓存数据确定为对所述目标任务的处理结果;所述已处理子任务为所述目标任务包括的多个子任务中最后被处理的子任务。
69.根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上所述的任务处理方法。
70.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上所述的任务处理方法。
71.根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行上述的任务处理方法。
72.本公开的实施例提供的技术方案至少带来以下有益效果:
73.本公开当不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务;检测多个异构处理单元的运行状态,当多个异构处理单元中存在处于空闲状态的异构处理单元时,基于处于空闲状态的异构处理单元对从目标线程中取出的多个子任务进行处理。本公开将从多个目标线程中取出的多个子任务作为待处理子任务,进入到处于空闲状态的异构处理单元进行处理,其中从目标线程中取出子任务和异构处理单元处理子任务是异步实现的,互不影响,即当不存在待处理子任务时,就会进行从多个目标线程中取出子任务的操作;当异构处理单元执行完当前的子任务时,便会继续对进入的待处理子任务进行处理,从而可根据异构处理单元的运行状态来对当前待处理子任务进行任务分配,使得异构处理单元能够实现对待处理子任务的连续处理,避免异构处理单元处于空闲状态而造成的资源浪费,提高异构处理单元的资源使用效率以及系统的吞吐量。
74.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
75.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
76.图1是根据一示例性实施例示出的一种任务处理方法的流程图。
77.图2是根据一示例性实施例示出的一种目标线程抽取方法流程图。
78.图3是根据一示例性实施例示出的处理子任务所需数据的确定方法流程图。
79.图4是根据一示例性实施例示出的一种子任务处理方法流程图。
80.图5是根据一示例性实施例示出的一种任务处理结果确定方法流程图。
81.图6是根据一示例性实施例示出的任务处理流程示意图。
82.图7是根据一示例性实施例示出的一种任务处理装置框图。
83.图8是根据一示例性实施例示出的一种设备结构示意图。
具体实施方式
84.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
85.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
86.为了解决相关技术中采用异构处理单元进行任务处理时存在的异构处理单元的资源浪费的问题,本公开实施例提供了一种任务处理方法,请参阅图1,该方法的执行主体可以为终端设备,该方法具体可包括:
87.s110.当任务队列中不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务放入所述任务队列;所述多个目标线程为待处理线程的子集。
88.本公开实施例中待处理子任务可以是指已经从多个目标线程中取出,但还没有被异构处理单元处理的子任务;从而若当前不存在待处理子任务时,可以从当前批次的多个目标线程中各取出一个子任务,作为待处理子任务。待处理线程可以为系统中所包含的所有线程,每个线程中包含至少一个子任务。
89.在一个可选实施例中,可将从目标线程中取出的子任务放入到任务队列中,对于是否存在待处理子任务的判断也可转换为判断任务队列是否为空,例如,若任务队列为空,说明不存在待处理子任务,需要进行子任务的取出操作;若任务队列不为空,说明存在待处理子任务。
90.在一个可选实施例中,基于从当前批次的多个目标线程中,取出的多个子任务进入线程的时间,将所述多个子任务依次放入所述任务队列;其中,进入线程的时间在前的子任务进入所述任务队列的时间,早于进入线程的时间在后的子任务;进入线程的时间在前的子任务进入所述目标异构处理单元的时间,早于进入线程的时间在后的子任务。以实现进入线程早的子任务先进入任务队列,相应先进入目标异构处理单元进行处理,即“先到先
处理”,提高了子任务的处理效率,缩短了子任务的等待时间。
91.在一个可选实施例中,由于当前批次的各个目标线程中所包含的子任务的数量可能不同,从而在从多个目标线程中取出子任务时,有的目标线程中可能已经不存在待取出的子任务了,此时可直接对存在待取出子任务的目标线程进行子任务取出操作,不访问已经不存在待取出的子任务的目标线程,从而能够节省子任务取出操作的耗时,提高待处理任务确定的效率。
92.在一个可选实施例中,对于现有的线程可进行分批次处理,每次从当前剩余线程中抽取多个线程进行处理,每个子任务均具有相应的属性信息,从而可基于待抽取的线程中子任务的属性信息,从待抽取的线程中抽取出当前批次的多个目标线程。其中,每个批次的目标线程的数量可以相同也可以不同。由于线程是并发的,通过对线程进行分批次处理,能够将第每批处理的线程的数量,从而降低并发数,提高对子任务的处理效率。
93.在一个具体实施例中,子任务的属性信息可以为表征子任务进入相应线程的时间;相应地,可基于所述多个线程中首个子任务进入线程的时间信息,对所述多个线程进行排序,得到线程排序表;其中,所述线程排序表中,排序在前的线程中首个子任务进入线程的时间早于排序在后的线程中首个子任务进入线程的时间。基于先到先处理的原则,使得优先进入线程的子任务优先被处理,从而能够避免子任务的长时间等待,提高任务处理效率。
94.在一个具体实施例中,子任务的属性信息可以为表征子任务的处理优先级;相应地,可基于所述多个线程中首个子任务的处理优先级,对所述多个线程进行排序,得到线程排序表;其中,所述线程排序表中,排序在前的线程中首个子任务的优先级高于排序在后的线程中首个子任务的优先级。基于子任务的优先级确定对子任务的处理顺序,实现了对子任务的个性化处理,能够满足不同的使用场景。
95.请参阅图2,其示出了一种目标线程抽取方法,该方法可包括:
96.s210.从所述待抽取的线程中抽取出在所述线程排序表中排序在前的多个线程。
97.s220.将抽取出的多个线程确定为所述当前批次的多个目标线程。
98.在开始进行线程抽取时,待抽取的线程即为当前所有的线程,根据上述的线程排序表,抽取排序靠前的多个线程作为当前批次的目标线程;当再次进行线程抽取时,待抽取的线程即可为取出已抽取线程的剩余线程,同样基于这些线程在线程排序表中的排序,抽取出排序靠前的多个线程作为当前批次的多个目标线程。基于各线程在线程排序表中的排序信息进行线程的抽取,能够使得排序靠前的线程被优先抽取出来,其中的子任务能够被优先处理,与子任务的属性信息相适配。
99.由于线程是在不断运行的,子任务会源源不断地进入到相应的线程中;从而在具体实施过程中,可对线程进行分段处理,例如可以是以预设的时间间隔获取一个处理周期内线程中进入的子任务进行处理,即每隔时间t去获取所有线程中的子任务,然后对获取到的线程中的子任务进行处理,由于每次获取的所有线程中的子任务的数量可能不同,从而每个处理周期的时长可能不同;其中在每个处理周期内,再进行上述的线程抽取,子任务取出等相关操作。
100.s120.检测多个异构处理单元的运行状态;所述目标线程的数量大于所述异构处理单元的数量,所述异构处理单元为与所述子任务相适配的硬件单元。
101.本实施例中的异构计算是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括cpu、gpu、dsp、asic、fpga等。
102.本公开实施例中的异构处理单元可以为协处理器,具体可以为硬件协处理器,硬件协处理器是cpu内部用于处理特定算法或逻辑运算的硬件电路模块,可以将其理解为一个特殊的加速器。硬件协处理器可以用于减轻系统微处理器的特定处理任务负担。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。一个协处理器通过扩展指令集或提供配置寄存器来扩展内核处理功能。一个或多个协处理器可以通过协处理器接口与cpu内核相连。协处理器可以通过一组专门的、提供的接口的cpu指令来访问。
103.在一个具体实施例中,协处理器可通过内置或者插装在终端设备的形式,协助终端设备的cpu进行任务处理操作,协处理器具体可包括多个异构处理单元,每个异构处理单元可以为一个kernel instance,kernel instance是fpga实例,每个fpga根据硬件资源的多寡,可以构建多个硬件实例,每个实例是个独立的计算单元;其中fpga(field programmable gate array)是在pal、gal等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
104.s130.当所述多个异构处理单元中存在目标异构处理单元时,基于所述目标异构处理单元对所述任务队列中的多个子任务进行处理;所述目标异构处理单元的所述运行状态为空闲状态。
105.每个子任务均包括任务标识,所述任务标识用于表征所述子任务所属的目标任务,所述目标任务被拆分为多个具有相同任务标识的子任务;请参阅图3,其示出了处理子任务所需数据的确定方法,该方法可包括:
106.s310.将从所述多个目标线程中取出的多个子任务放入到任务队列中。
107.s320.基于所述子任务的任务标识,确定具有所述任务标识的子任务进入所述任务队列的次数。
108.s330.当具有所述任务标识的子任务进入所述任务队列的次数大于等于两次时,获取与所述任务标识对应的缓存数据。
109.s340.将所述子任务包含的待处理数据以及所述任务标识对应的缓存数据,确定为处理所述子任务所需的数据。
110.在一个具体实施例中,对于同一个目标任务进行拆分得到的多个子任务之间可能具有依赖关系,后一个子任务的处理需要依赖于前一个子任务的处理结果,从而首先可通过确定具有相应任务标识的子任务进入任务队列的次数,来判断处理当前子任务是否需要依赖前一子任务的处理结果。每当有子任务进入任务队列时,会基于各子任务的任务标识进行计数,当具有所述任务标识的子任务进入任务队列的次数为一次时,说明具有该任务标识的子任务为第一次进入任务队列,处理该子任务不需要依赖前处理数据,可直接将当前子任务包含数据作为处理该子任务所需的数据;当具有所述任务标识的子任务进入任务队列的次数大于等于两次时,说明之前已经处理过具有该任务标识的其他子任务,相应获取与该任务标识对应的缓存数据,缓存数据即是通过对具有该任务标识的其他子任务进行处理之后得到的数据,然后将当前子任务包含的待处理数据以及缓存数据确定为处理当前子任务所需的数据,具体将当前子任务包含的待处理数据以及相应的缓存数据打包到任务
队列中。
111.在一个具体实施例中,目标任务可以为对一个时长为n的视频进行解码,将时长为n的视频的视频划分为多个视频片段,包括片段0、片段1、片段2
……
,相应对每个视频片进行解码即可看成是一个子任务,可得到子任务0、子任务1、子任务2
……
。在处理该目标任务时,对片段0进行解码的子任务0首先被处理并得到相应的解码信息0,对片段1的解码需要依赖于对片段0的解码信息0,从而在处理子任务1时需要依赖对子任务0的解码信息;以此类推,可实现对时长为n的视频的解码任务。
112.基于子任务的任务标识来判断是否属于同一目标任务,并在处理属于同一目标任务的后续子任务时,基于相同的任务标识获取在前处理的子任务的缓存数据,从而提高对处理子任务时所需数据确定的效率及准确性。
113.在一个具体实施例中,可为每个线程设置相应的缓存区域,并通过线程标识对各缓存区域进行标识;另外,除了设置与每个线程对应的缓存区域,还可以设置备用缓存区域,当与各线程对应的缓存区域出现存储已满,但还需要进行数据存储时,可将数据存储在备用缓存区域。这里可为每个线程分配预设存储空间的缓存区域,但是由于有的线程中的子任务较多,相应生成的处理数据较多,此时可能出现缓存区域已满数据无处存储的情况,可将无处存储的数据存储到备用缓存区域中。通过为每个线程设置独立的缓存区域,便于基于线程标识进行缓存数据的访问,提高数据访问效率;另外,为每个线程设置预设空间的缓存区域,并设置备用缓存区域,即能够节省存储空间,又能够解决已有缓存区域已满无法进行数据存储的问题。
114.在一个具体实施例中,子任务还包括线程标识,即子任务所在线程的线程标识;相应请参阅图4,其示出了一种子任务处理方法,该方法可包括:
115.s410.通过所述目标异构处理单元对所述处理所述子任务所需的数据进行处理,得到与所述子任务对应的已处理数据。
116.s420.基于所述子任务包括的所述线程标识,将所述已处理数据更新到与所述线程标识对应的缓存区域。
117.本公开实施例中的空闲状态可以是指已完成对上一批子任务的处理,准备处理下一批子任务的状态;任务队列中的各子任务会一次性进入处于空闲状态的异构处理单元,各子任务进入到异构处理单元中,相应的异构处理单元便获得了处理子任务所需的数据;其中从目标线程中取出子任务和异构处理单元处理子任务是异步实现的,互不影响。在对子任务处理完成时,将得到的数据更新到相应的缓存区域中。在缓存区域中,具体可采用键值的形式进行存储,例如key可以为任务标识,value可以为任务标识对应的数据,通过键值的方式进行数据存储,能够方便数据管理和数据访问。通过为每个线程设置独立的缓存区域,并将与相应线程对应的已处理数据存储至与线程标识对应的缓存区域,便于后续基于线程标识进行缓存数据的访问与获取,提高数据访问效率。
118.本公开实施例中同一目标任务的多个子任务可被拆分到同一个线程中;相应请参阅图5,其示出了一种任务处理结果确定方法,该方法可包括:
119.s510.当具有所述任务标识的子任务进入所述任务队列的次数为一时,基于所述子任务包括的所述线程标识,确定所述子任务所在的原线程。
120.s520.确定在所述原线程中所述子任务的前一个已处理子任务。
121.s530.获取与所述已处理子任务的任务标识对应的缓存数据。
122.s540.将所述已处理子任务的任务标识对应的缓存数据确定为对所述目标任务的处理结果;所述已处理子任务为所述目标任务包括的多个子任务中最后被处理的子任务。
123.当子任务a进入到任务队列的次数为一时,说明与子任务a处于同一线程且与子任务a相邻的前一子任务b,为子任务b所对应的目标任务a的多个子任务中最后被处理的子任务,即标志着对目标任务a的处理已完成,此时可根据子任务b的任务标识,从子任务b所在线程对应的缓存区域中获取与子任务b的任务标识对应的缓存数据,将该缓存数据确定为对目标任务进行处理得到的处理数据。通过对当前进入任务队列的子任务的任务标识进行判断,能够及时确定出已完成的目标任务,并提取出相应的任务处理数据,提高了任务处理结果的反馈效率。
124.本公开当不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务;检测多个异构处理单元的运行状态,当多个异构处理单元中存在处于空闲状态的异构处理单元时,基于处于空闲状态的异构处理单元对从目标线程中取出的多个子任务进行处理。本公开将从多个目标线程中取出的多个子任务作为待处理子任务,进入到处于空闲状态的异构处理单元进行处理,其中从目标线程中取出子任务和异构处理单元处理子任务是异步实现的,互不影响,即当不存在待处理子任务时,就会进行从多个目标线程中取出子任务的操作;当异构处理单元执行完当前的子任务时,便会继续对进入的待处理子任务进行处理,从而可根据异构处理单元的运行状态来对当前待处理子任务进行任务分配,使得异构处理单元能够实现对待处理子任务的连续处理,避免异构处理单元处于空闲状态而造成的资源浪费,提高异构处理单元的资源使用效率以及系统的吞吐量。
125.下面以一具体示例来说明本公开的具体实施流程,请参阅图6,其示出了任务处理流程示意图,属于同一个目标任务的多个子任务可来自同一用户,或者同一应用程序app;该流程可包括:
126.1.在前处理模块对多线程的数据进行汇总,基于先到先算的原则从所有线程中抽取出多个线程,这里以线程数6,异构处理单元数为2,同一目标任务的多个子任务来自同一用户进行说明,对于用户user0的目标任务可被拆分成user0 part0、user0 part1、user0part2
……
等多个子任务,其他用户以此类推。
127.2.分别从每个线程中取出一个user part,确定处理每个user part所需的输入数据和缓存数据;从缓存区域(backup buffers)中获取处理当前子任务所需的缓存数据,具体采用映射的方式,基于用户标识把计算得到的数据映射到有限的缓存区域(backup buffers)中。
128.3.将处理每个user part所需的输入数据和缓存数据一起打包传到先入先出队列(fifo queue)中。
129.4.异构处理单元(硬件instance 1&2)从先入先出队列(fifo queue)中获取待处理子任务以及处理子任务所需的数据,得到任务处理结果。
130.5.基于任务处理结果更新缓存区域(backup buffers),数据的一致性则靠共享的backup buffers来保证。
131.由于这几个模块都是异步的,所以一旦硬件instance 1或2计算完了,可以马上从fifo queue中获取新的待处理子任务,无需等待,以此将系统的多kernel instance调度时
间间隔大大降低。
132.本公开可以在cpu与其他异构计算平台共同计算的场景下减少总的计算时间,提高硬件计算资源的使用效率,提高系统整体吞吐量。尤其是对于线程数大于硬件计算单元的数目的时候,可以大大的提高硬件利用率,提高端到端的系统吞吐量。
133.图7是根据一示例性实施例示出的一种任务处理装置框图。参照图7,该装置包括:
134.子任务取出单元710,被配置为执行当任务队列中不存在待处理子任务时,从当前批次的多个目标线程中各取出一个子任务放入所述任务队列;所述多个目标线程为待处理线程的子集;
135.运行状态检测单元720,被配置为执行检测多个异构处理单元的运行状态;所述目标线程的数量大于所述异构处理单元的数量,所述异构处理单元为与所述子任务相适配的硬件单元;
136.子任务处理单元730,被配置为执行当所述多个异构处理单元中存在目标异构处理单元时,基于所述目标异构处理单元对所述任务队列中的多个子任务进行处理;所述目标异构处理单元的所述运行状态为空闲状态。
137.在一示例性实施例中,所述装置还包括:
138.第一抽取单元,被配置为执行基于待抽取的线程中子任务的属性信息,从所述待抽取的线程中抽取出所述当前批次的多个目标线程。
139.在一示例性实施例中,所述子任务的属性信息用于表征所述子任务进入线程的时间;
140.所述装置还包括:
141.线程排序单元,被配置为执行基于所述多个线程中首个子任务进入线程的时间信息,对所述多个线程进行排序,得到线程排序表;
142.其中,所述线程排序表中,排序在前的线程中首个子任务进入线程的时间早于排序在后的线程中首个子任务进入线程的时间。
143.在一示例性实施例中,所述第一抽取单元包括:
144.第二抽取单元,被配置为执行从所述待抽取的线程中抽取出在所述线程排序表中排序在前的多个线程;
145.第一确定单元,被配置为执行将抽取出的多个线程确定为所述当前批次的多个目标线程。
146.在一示例性实施例中,所述子任务取出单元包括:
147.子任务放入单元,被配置为执行基于取出的多个子任务进入线程的时间,将所述多个子任务依次放入所述任务队列;
148.其中,进入线程的时间在前的子任务进入所述任务队列的时间,早于进入线程的时间在后的子任务;进入线程的时间在前的子任务进入所述目标异构处理单元的时间,早于进入线程的时间在后的子任务。
149.在一示例性实施例中,所述子任务包括任务标识,所述任务标识用于表征所述子任务所属的目标任务,所述目标任务被拆分为多个具有相同任务标识的子任务;
150.所述装置还包括:
151.子任务放入单元,被配置为执行将从所述多个目标线程中取出的多个子任务放入
到任务队列中;
152.第二确定单元,被配置为执行基于所述子任务的任务标识,确定具有所述任务标识的子任务进入所述任务队列的次数;
153.第一获取单元,被配置为执行当具有所述任务标识的子任务进入所述任务队列的次数大于等于两次时,获取与所述任务标识对应的缓存数据;
154.第三确定单元,被配置为执行将所述子任务包含的待处理数据以及所述任务标识对应的缓存数据,确定为处理所述子任务所需的数据。
155.在一示例性实施例中,所述子任务还包括线程标识;
156.所述子任务处理单元730包括:
157.已处理数据生成单元,被配置为执行通过所述目标异构处理单元对所述处理所述子任务所需的数据进行处理,得到与所述子任务对应的已处理数据;
158.数据更新单元,被配置为执行基于所述子任务包括的所述线程标识,将所述已处理数据更新到与所述线程标识对应的缓存区域。
159.在一示例性实施例中,同一目标任务对应的多个子任务被拆分到同一线程中;
160.所述装置还包括:
161.原线程确定单元,被配置为执行当具有所述任务标识的子任务进入所述任务队列的次数为一时,基于所述子任务包括的所述线程标识,确定所述子任务所在的原线程;
162.已处理子任务确定单元,被配置为执行确定在所述原线程中所述子任务的前一个已处理子任务;
163.第二获取单元,被配置为执行获取与所述已处理子任务的任务标识对应的缓存数据;
164.第四确定单元,被配置为执行将所述已处理子任务的任务标识对应的缓存数据确定为对所述目标任务的处理结果;所述已处理子任务为所述目标任务包括的多个子任务中最后被处理的子任务。
165.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
166.在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,可选地,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等;当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上所述的任一方法。
167.在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行上述任一方法。
168.进一步地,图8示出了一种用于实现本公开实施例所提供的方法的设备的硬件结构示意图,所述设备可以参与构成或包含本公开实施例所提供的装置。如图8所示,设备10可以包括一个或多个(图中采用102a、102b,
……
,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接
口、电源和/或相机。本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。
169.应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
170.存储器104可用于存储应用软件的软件程序以及模块,如本公开实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种播放器预加载方法或一种播放器运行方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
171.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
172.显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
173.本实施例上述的任一方法均可基于图8所示的设备进行实施。
174.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
175.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献