Traitement en cours

Veuillez attendre...

Paramétrages

Paramétrages

Aller à Demande

1. CN111124626 - Many-core system and data processing method and device thereof

Note: Texte fondé sur des processus automatiques de reconnaissance optique de caractères. Seule la version PDF a une valeur juridique

[ ZH ]
一种众核系统及其数据处理方法和处理装置


技术领域
本发明涉及计算机技术领域,更具体地,涉及一种众核系统及其数据处理方法和处理装置。
背景技术
随着深度学习技术飞速发展,对数据处理速度的需求日益增加,因此,出现了各种采用硬件(例如众核系统)加速运行深度学习模型的装置。众核系统由一枚或多枚处理器组成,并且一枚处理器中通常集成多个完整的计算引擎(内核),一个处理器内或多枚处理器间的内核可以相互协同工作。这些内核可以分别独立运行程序指令,利用并行计算的能力,可以加快程序的运行速度,并可以提供多任务能力。但是,现有的众核系统还不能满足人们对存储需求和时延时间的要求。
发明内容
有鉴于此,本发明提供一种众核系统的数据处理方法、处理装置及众核系统,以提高数据处理的效率,减小数据处理时延,并降低存储需求节省存储空间。
第一方面,本发明实施例提供一种众核系统的数据处理方法,所述方法包括:
控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据,所述预定的数据粒度小于单位待处理数据的数据量,大于或等于执行所述第一处理任务的处理指令所需的最小数据量;
执行所述第一处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至所述处理任务流水线中的下一个处理任务。
由此,本发明实施例的数据处理方法可以提高数据处理的效率,减小数据处理时延,并降低存储需求节省存储空间
进一步地,执行所述第一处理任务的处理指令以处理所读取的待处理数据具体为:控制所述第一处理任务执行卷积运算以处理所读取的待处理数据;
所述最小数据量为执行所述卷积运算所需要的最少数据量。
进一步地,所述处理任务流水线包括多个分支,所述多个分支包括第一分支和第二分支;所述方法还包括:
根据所述第一分支的输出时间和所述第二分支的输出时间配置所述第二分支的最后一个处理任务的缓存队列深度,所述第一分支为所述多个分支中的最大时延分支,所述第二分支为所述多个分支中除最大时延分支之外的分支。
进一步地,所述处理任务的缓存空间根据对应的数据粒度配置。
进一步地,所述待处理数据为图像,所述处理结果为特征图数据。
进一步地,所述待处理数据为视频,所述处理结果为一帧视频的特征图数据。
进一步地,所述处理任务流水线包括多个处理任务,其中,至少一个处理任务被映射到所述众核系统的一个处理核或多个处理核;和/或所述多个处理任务中的至少两个处理任务被映射到所述众核系统的一个处理核。
第二方面,本发明实施例提供一种众核系统的数据处理装置,所述装置包括:
第一处理单元,被配置为控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据,所述预定的数据粒度小于单位待处理数据的数据量,大于或等于执行所述第一处理任务的处理指令所需的最小数据量;以及
第二处理单元,被配置为执行所述第一处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至所述处理任务流水线中的下一个处理任务。
进一步地,所述第二处理单元包括:
卷积处理子单元,被配置为控制所述第一处理任务执行卷积运算以处理所读取的待处理数据,
其中,所述最小数据量为执行所述卷积运算所需要的最少数据量。
进一步地,所述处理任务流水线包括多个分支;所述多个分支包括第一分支和第二分支;所述装置还包括:
缓存配置单元,被配置为根据所述第一分支的输出时间和所述第二分支的输出时间配置所述第二分支的最后一个处理任务的缓存队列深度,所述第一分支为所述多个分支中的最大时延分支,所述第二分支为所述多个分支中除最大时延分支之外的分支。
进一步地,所述处理任务的缓存空间根据对应的所述数据粒度配置。
进一步地,所述待处理数据为图像,所述处理结果为特征图数据。
进一步地,所述待处理数据为视频,所述处理结果为一帧视频的特征图数据。
进一步地,所述处理任务流水线包括多个处理任务,其中,至少一个处理任务被映射到所述众核系统的一个处理核或多个处理核;和/或所述多个处理任务中的至少两个处理任务被映射到所述众核系统的一个处理核。
第三方面,本发明实施例提供一种众核系统,所述众核系统包括:
多个处理核;以及
片上网络,被配置为交互所述多个处理核间的数据和外部数据;
所述多个处理核中的至少一个处理核执行如下操作:
控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据,所述预定的数据粒度小于单位待处理数据的数据量,大于或等于执行所述第一处理任务的处理指令所需的最小数据量;
执行所述第一处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至所述处理任务流水线中的下一个处理任务。
进一步地,所述处理核包括:
存储器,被配置为存储所述处理核对应的处理指令,并缓存按照预定的数据粒度所读取的待处理数据和所述处理核的处理结果;
运算器,被配置为调用所述指令存储单元中的指令以按照所述处理指令处理所读取的待处理数据;以及
控制器,被配置为通过片上网络将运算器的处理结果输出至任务流水线中的下一个处理核。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如上所述的方法。
第五方面,本发明实施例提供一种计算机程序产品,当该计算机产品在计算机上运行时,使得该计算机执行上述方法。
本发明实施例通过控制处理任务流水线中的第一处理任务按照预定的数据粒度来读取并处理待处理数据,所述预定的数据粒度小于单位待处理数据的数据量,大于或等于执行所述第一处理任务的处理指令对应的最小数据量,由此,可以提高数据处理的效率,减小数据处理时延,并降低存储需求节省存储空间。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的众核系统的数据处理方法的流程图;
图2是现有技术的一个深度学习模型的分支结构示意图;
图3是本发明实施例的众核系统的示意图;
图4是一幅204*204*3的图像的示意图;
图5是现有技术的处理任务缓存的图像数据的示意图;
图6是现有技术的众核系统运行深度学习模型的时序图;
图7是本发明实施例的处理任务中的数据处理方法的流程图;
图8和图9是本发明实施例的处理任务缓存的图像数据的示意图;
图10是本发明实施例的众核系统运行深度学习模型的时序图;
图11是本发明另一个实施例的众核系统运行深度学习模型时的时序图;
图12是本发明实施例的众核系统的数据处理装置的示意图;
图13是本发明实施例的众核系统的结构示意图。
具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,表示多个中的任意一个,而不能理解为指示或暗示相对重要性,也不代表顺序。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明实施例的众核系统包括一个或多个处理器,每个处理器中集成多个处理核。下文以一个处理核为例介绍本发明实施例的众核系统的数据处理方法。
图1是本发明实施例的众核系统的数据处理方法的流程图。如图1所示,本发明实施例的众核系统的数据处理方法包括以下步骤:
步骤S100,控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据。其中,预定的数据粒度小于单位待处理数据的数据量,大于或等于执行第一处理任务的处理指令所需的最小数据量。待处理数据可以为各种类型的图像、视频或其他类型的数据。在一种可选的实现方式中,单位待处理数据可以为一幅图像或一帧视频图像。如果待处理数据为图像,则单位待处理数据为一幅图像;如果待处理数据为视频,则单位待处理数据为一帧视频图像。
步骤S200,执行第一处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至处理任务流水线中的下一个处理任务。应理解,第一处理任务为处理任务流水线中的任意一个处理任务,处理任务流水线中的至少一个其他处理任务可能在同时工作。
其中,处理任务可以包括卷积运算、池化运算等。以处理任务为卷积运算为例,则最小数据量为执行该卷积运算所必需的最少数据量。本领域技术人员容易理解,卷积运算的最少输入数据量由其卷积核的大小决定。例如,一个图像数据大小为204*204*3,采用3*3*3卷积核对这个图像进行卷积运算,在不补零的情况下,需要读取到该图像的第三行第三个像素点才能够计算第一个图像数据(也即第二行第二个像素点)的卷积。也就是说,执行该处理任务的处理指令所需的最小数据量为(204*2+3)*3。
处理任务流水线包括多个处理任务,其中,至少一个处理任务被映射到众核系统的一个或多个处理核,和/或多个处理任务中的至少两个处理任务被映射到一个处理核。也就是说,一个处理任务可以被映射到一个处理核或多个处理核中,多个处理任务也可以被映射到一个处理核中。例如,在步骤“输出处理结果至处理任务流水线中的下一个处理任务”(步骤S200)中,下一个处理任务可以由执行第一处理任务的处理核处理,也可以由其他处理核处理。
需要说明的是,可以根据处理任务的运算量和时序需求调整该处理任务对应的处理核的数量。例如,处理任务1的运算量是处理任务2的运算量和处理任务3的运算量的总和。则可以将处理任务1映射到两个处理核,将处理任务2映射到一个处理核,将处理任务3映射到一个处理核。或者,将处理任务1映射到一个处理核,将处理任务2和处理任务3映射到同一个处理核,从而减小数据处理时延。
处理任务流水线可以包括多个分支,所述多个分支包括第一分支和第二分支。其中,第一分支为多个分支中的最大时延分支,第二分支为多个分支中除最大时延分支之外的分支。在一种可选的实现方式中,可以根据第一分支的输出时间和第二分支的输出时间来配置第二分支的最后一个处理任务的缓存队列深度,以减小数据处理时延,提高众核系统的效率。其中,缓存队列深度为对应的处理任务的缓存大小。最大时延分支为数据处理时间最长的分支。例如,处理任务流水线包括分支1和分支2,其中,分支1为最大时延分支(也即第一分支)。分支1的处理结果的输出时间比分支2(也即第二分支)的处理结果的输出时间迟到了20秒。若分支2的最后一个处理任务的时间为4秒。在一种可选的实现方式中,可以使得分支2的最后一个处理任务的缓存队列深度至少为对应的数据粒度的6倍。由此,可以减小时延,同时提高众核系统的资源利用率和效率。
也就是说,由于处理任务流水线中的各个分支中的处理任务数量和/或各个处理任务的处理时间可能不同,也即各个分支的数据处理时延可能不同,因此需要根据第一分支(也即最大时延分支)的输出时间和第二分支的输出时间来设计第二分支的最后一个处理任务的缓存队列深度,以使得一个单位待处理数据在每个分支的处理结果的输出时间基本保持一致,从而减少数据处理时延。
图2是现有技术的一个深度学习模型的分支结构示意图。如图2所示,深度学习模型2包括Poll层、Branch1层、Branch2层和Add层等4个处理任务。其中,Branch2层包括Branch2a层、Branch2b层、Branch2c三层。深度学习模型2包括两个分支Pool-Branch1和Pool-Branch2。其中,若Branch1层的数据处理时延与Branch2层的数据处理时延差相差不多时,可以将Pool层、Branch1层、Branch2层和Add层分别映射到四个处理核,此时,Branch2a层、Branch2b层、Branch2c层映射到一个处理核。若Branch1层的数据处理时延远小于Branch2层的数据处理时延差时,可以将Branch2层中的Branch2a层、Branch2b层和Branch2c层分别映射到3个处理核,以缩短Branch1层和Branch2层的数据处理时延,从而加快数据处理速度。
图3是本发明实施例的众核系统的示意图。如图3所示,本发明实施例的众核系统3对应于图2中的深度学习模型2。众核系统3包括处理核1-6。其中,深度学习模型2中的Pool层被映射到处理核1,Branch1层被映射到处理核2,Branch2层中的Branch2a层、Branch2b层、Branch2c层分别被映射到处理核3-5,Add层被映射到处理核6。处理核1按照预定的数据粒度读取并处理待处理数据,将处理结果输出至处理核2和处理核3。处理核2和处理核3分别按照对应预定的数据粒度读取处理核1的处理结果,并对所读取的数据进行处理,将处理结果分别输出至处理核6和处理核4。处理核4和处理核5依次对处理核3输出的处理结果进行处理并将处理结果输出至处理核6。处理核6接收处理核2的处理结果和处理核5的处理结果并执行相应的处理得到众核系统3的最终处理结果。由于处理核6需要基于处理核2的处理结果和处理核5的处理结果进行处理,因此,需要根据处理核2的处理结果的输出时间和处理核5的处理结果的输出时间配置处理核2(Branch1层)和处理核5(Branch2c层)的缓存队列深度,以使得处理核2和处理核5关于同一组数据的处理结果的输出时间基本相等,从而减小数据处理时延。
图4是一幅204*204*3的图像的示意图。图5是一个现有技术的众核系统中的处理任务缓存的图像数据的示意图。在采用现有技术的众核系统来处理图4中的图像时,其处理任务缓存的图像数据示意图如图5所示。为了便于理解和描述,图5中只画了图像4的一部分8*8*3,且采用的是平面图像。如图5所示,在现有技术的众核系统处理一个图像时,每次读取的图像数据粒度为单位待处理数据(也即一幅图像或一幅特征图)。也就是说,在处理任务读取数据的时候,需要将整幅图像或整幅特征图完全读取后才开始进行处理。因此,在现有技术中,每个处理任务缓存的数据量至少为一幅图像的数据量或一幅特征图的数据量以及处理结果的数据量,所需的存储需求较高。
图6是现有技术的众核系统运行深度学习模型的时序图。如图6所示,t1为现有技术的处理任务流水线的时间轴。在现有技术的处理任务流水线中,Pool层读入一整幅图(Pool0)之后执行对应的处理指令以对该图像数据进行处理,在处理完成后将处理结果(Pool层处理后的特征图)输出给Branch1层和Branch2a层。也就是说,在现有技术中,处理任务流水线中的每个处理任务均需要获取全部单位待处理数据的数据量才能够进行处理,因此,在现有技术中,深度学习模型的处理时延为多层整图处理时延(也即Pool层对整幅图的处理时延tp+Branch1层对整幅特征图的处理时延tb1+Add对整幅特征图的处理时延ta),数据处理时延较长。
图7是本发明实施例的处理任务中的数据处理方法的流程图。如图7所示,本实施例的处理任务中的数据处理方法的流程图包括以下步骤:
步骤S110,以预设方式读取待处理数据。若待处理数据为图像,则所述预设方式是指逐行读取图像的像素点;若待处理数据为视频,则所述预设方式是读取一帧视频图像,逐行读取该一帧视频图像的像素点。
步骤S120,判断所读取的像素点的数量是否达到预定的数据粒度。其中,预定的数据粒度小于单位待处理数据的数据量(如完整的一幅图像),大于或等于执行该处理任务的处理指令所需的最小数据量。例如,在处理任务为卷积运算时,则其对应的最小数据量为执行该卷积运算所需的最少数据量。此时,最少数据量由对应的卷积核确定。在所读取的像素点的数量达到预定的数据粒度时执行步骤S130,否则,执行步骤S110。
步骤S130,执行该处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至任务流水线中的下一个处理任务。
步骤S140,清除执行处理任务时的缓存中(包括缓存的像素点和处理结果等数据)与下一次数据处理无关的数据。也就是说,在一次数据处理完成后,需要清除缓存中与下次数据处理无关的数据以节约存储空间。然后,继续执行步骤S110以读取待处理数据。
以下以处理任务为卷积运算且采用的卷积核为fh*fw*ch_in*ch_out为例来对上述处理任务中的数据处理方法进行描述。其中ch_in为输入通道的维度,ch_out为输出通道的维度。假设待处理数据为图像,并且待处理的图像的像素为204*204*3,采用的卷积核为3*3*3*16,横纵向滑窗步长均为1。
图8和图9是本发明实施例的处理任务缓存的图像数据的示意图。在采用本实施例的众核系统来处理图4中的图像时,其处理任务缓存的图像数据示意图如图8和图9所示。为了便于理解和描述,图8和图9中只画了图像4的一部分8*8*3,且采用的是平面图像。当卷积核为3*3*3*16时,在卷积运算不补零的情况下,需要读取到图像的第3行第3个像素点时,才能进行第一次卷积运算。因此,该处理任务对应的最小数据量为(204*2+3)*3。预定的数据粒度可以大于或等于(204*2+3)*3。
本实施例以卷积运算不补零,并且数据粒度为(204*2+3)*3为例。如图8所示,在读取到该图像的第三行第三个像素点时(也即读取的数据量达到预定的数据粒度时),对像素点a的像素值进行卷积运算并将处理结果(一个特征数据1*1*16)输出给下一个处理任务。此时,对应的计算核的存储需求仅为(204*2+3)*3以及一个处理结果1*1*16。在本次数据处理完成后,清除缓存中无用的数据,即将缓存中的像素点a'的数据删除。应理解,也可以将本次的处理结果同时删除以节省缓存空间。该处理任务继续读取待处理图像的数据,如图9所示,在读取到第3行第4个像素点时,缓存中的数据量再次达到预定的数据粒度,对像素点b的像素值进行卷积运算并输出处理结果给下一个处理任务。因此,本次数据处理的缓存依旧为(204*2+3)*3以及一个处理结果1*1*16。由此,相对于现有技术中的数据处理方法的缓存需求为整幅图像数据以及其处理结果,本实施例的缓存需求大大减小。
在本实施例中,可以根据处理任务流水线中的各个处理任务所需的最小数据量设置预定的数据粒度,以减小处理核的存储需求,并加快数据处理速度。
图10是本发明实施例的众核系统运行深度学习模型的时序图。如图10所示,t2是本实施例中的计算任务流水线的时间轴。本实施例以深度学习模型2的一个分支Pool-Branch2a—Branch2b—Branch2c的处理任务流水线进行描述。其中,Pool0、Pool1和Pool2分别为Pool层的单位待处理数据。Branch2a0、Branch2a1和Branch2a2分别为Branch2a层的单位待处理数据。Branch2b0、Branch2b1和Branch2b2分别为Branch2b层的单位待处理数据。Branch2c0、Branch2c1和Branch2c2分别为Branch2c层的单位待处理数据。在Pool层读取到预定的数据粒度的数据量后开始按照其对应的处理指令进行处理,并将处理结果输出给Branch2a层。之后,Pool层按照预定的数据粒度继续读取单位待处理数据中的数据,并按照其对应的处理指令进行处理,将处理结果输出给Branch2a层。Branch2a层在读取到其对应的预定数据粒度的数据量后,按照其对应的处理指令进行处理,并将结果输出给Branch2b层。Branch2b层在读取到其对应的预定数据粒度的数据量后,按照其对应的处理指令进行处理,并将结果输出给Branch2c层。Branch2c层在读取到其对应的预定数据粒度的数据量后,按照其对应的处理指令进行处理,并将结果输出给处理任务流水线中的下一个处理任务。
图11是本发明另一个实施例的众核系统运行深度学习模型时的时序图。如图11所示,t3是本实施例的计算任务流水线的时间轴。本实施例以深度学习模型2的流水线(两个分支)进行描述,其与图10的原理类似,只是使得Pool层的处理结果输出给Branch1层和Branch2a层。在本实施例中,采用将Branch2a层、Branch2b层和Branch2c层映射到三个处理核以进一步减少时延。
如图10和图11所示,在本实施例中,对一幅完整图像的处理过程的时延为单层整图处理时延+多层多行时延,即第一层Pool层对整幅图的处理时延+其他层(Branch1层、Branch2b层、Branch2c层和Add层)每次读取处理预定的数据粒度的时延。由此,相对于如图6所示的现有技术中的多层整图处理时延:tp+tb1+ta,本实施例的数据处理过程中的时延大大缩短,提高了众核系统中数据处理的效率。
由此,本实施例在减少存储需求及数据处理时延的同时,还能够减少硬件设备提高数据处理的效率。
在另一种可选的实现方式中,也可以将Branch2a层、Branch2b层和Branch2c层映射到1个处理核以降低成本。
本发明实施例通过控制处理任务流水线中的每个处理任务按照预定的数据粒度来读取并处理待处理数据,由此,可以提高数据处理的效率,减小数据处理时延,并降低存储需求节省存储空间。
图12是本发明实施例的众核系统的数据处理装置的示意图。如图12所示,本实施例的数据处理装置10包括第一处理单元101和第二处理单元102。其中,第一处理单元101被配置为控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据。其中,预定的数据粒度小于单位待处理数据的数据量,大于或等于执行第一处理任务的处理指令所需的最小数据量。第二控制单元102被配置为执行第一处理任务的处理指令以处理所读取的待处理数据,并输出处理结果至处理任务流水线中的下一个处理任务。其中,第一处理任务的缓存空间根据对应的预定数据粒度配置。在一种可选的实现方式中,待处理数据为图像或视频,处理结果为图像的特征图数据或一帧视频的特征图数据。
优选地,第二控制单元102包括卷积处理单元102a。卷积处理单元102a被配置为控制第一处理任务执行卷积运算以处理所读取的待处理数据,最小数据量为执行所述卷积运算所需要的最少数据量。
优选地,处理任务流水线包括多个分支。所述多个分支包括第一分支和第二分支。其中,第一分支为多个分支中的最大时延分支,第二分支为多个分支中除最大时延分支之外的分支。数据处理装置10还包括缓存配置单元,被配置为根据第一分支的输出时间和第二分支的输出时间来配置第二分支的最后一个处理任务的缓存队列深度,以使得各个分支末端的处理任务的输出时间近似相等,从而减小数据处理时延。
优选地,处理任务流水线包括多个处理任务,其中,至少一个处理任务被映射到所述众核系统的一个处理核或多个处理核;和/或所述多个处理任务中的至少两个处理任务被映射到所述众核系统的一个处理核。并且,可以根据处理任务的计算量和时序需求调整该处理任务对应的处理核的数量。由此,可以提高众核系统的效率,减小数据处理的时延时间。
图13是本发明实施例的众核系统的结构示意图。如图13所示,本实施例的众核系统包括处理核11-1N以及片上网络14。处理核11-1N均与片上网络14连接。片上网络14用于交互所述N个处理核间的数据和外部数据。所述N个处理核中的至少一个处理核执行以下操作:控制处理任务流水线中的第一处理任务按照预定的数据粒度读取待处理数据,所述预定的数据粒度小于单位待处理数据的数据量,大于或等于执行该处理任务的处理指令所需的最小数据量,并执行第一处理任务的处理指令以处理所读取的待处理数据,然后通过片上网络输出处理结果至下一个处理核。
如图13所示,处理核11包括存储器111、运算器113和控制器114。其中,存储器111用于存储处理核11所对应的处理指令和按照预定的数据粒度读取的待处理数据。在另一种可选的实现方式中,存储器111可以包括第一存储器和第二存储器,第一存储器用于存储处理核11所对应的处理指令,第二存储器用于存储按照预定的数据粒度读取的待处理数据。运算器113被配置为调用指令存储单元111中的指令以按照对应的处理指令处理所读取的待处理数据。控制器114,被配置为通过片上网络14将运算器113的处理结果输出至任务流水线中的下一个处理核。
本发明实施例通过控制处理任务流水线中的处理任务按照预定的数据粒度来读取并处理待处理数据,由此,可以提高数据处理的效率,减小数据处理时延,并降低存储需求节省存储空间。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。