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

多任务程序编译方法及装置、多核芯片与流程

2022-06-01 14:44:33 来源:中国专利 TAG:


1.本公开属于程序编译技术领域,具体涉及一种多任务程序编译方法及装置、多核芯片。


背景技术:

2.整体同步并行计算模型(bulk synchronous parallel computing model,bsp计算模型)是一种并行计算模型,它可以用于系统级应用中,例如多服务器组成的计算机群进行并行计算,也可用于芯片级应用中,例如多(众)核芯片进行并行计算。
3.在进行神经网络计算时,使用bsp机制的多(众)核芯片有其独特的应用优势,这种多(众)核芯片,主要由以下三部分电路实现bsp计算:
4.1、一组具有局部内存,可独立运行的核;
5.2、核间通信的总线或者noc(片上网络);
6.3、实现核间同步的电路。
7.整个bsp任务中,一共有n个核工作,每一个核均有自己的存储电路和运算及控制电路,能独立运行,完成一定的工作。所有核在同步信号的同步下开始工作。先后两个同步信号的时间跨度,通常称为一个超步(superstep)。整个bsp计算,是以超步为单位,流水向前推进,工作过程如图1所示,具体工作流程如下:
8.1、当同步信号到来,也就代表着一个超步的开始,所有的核同时开始计算;
9.2、各个核计算完毕,进入通信阶段,将需要传输的数据发送出去,同时也会收到需要接收的数据;
10.3、各核完成本核的计算和通信后,进入等待状态;
11.4、任务中所有核都完成了计算和通信,代表本次超步的结束,可以开始下一个超步,即新的同步信号到来,开启下一次计算和传输。
12.在整个芯片中,按bsp任务,将所有的核,分为m个组(group)。每一个组有一个同步信号生成器core_ctrl统一管理本组所有核的同步信号的生成,此时,每一组中的所有的核,都共用同一个同步信号,不同组的同步信号不一定相同;核通过网络(或者总线)发送同步请求消息给同步信号生成器core_ctrl;同步信号生成器core_ctrl根据收到的消息,生成相应的同步信号,以消息的方式发送给各个核;同步信号生成器core_ctrl通常是核或者专门的电路。这里的网络是各核之间传输数据的网络。
13.整个bsp计算系统示意图如图2所示,一个组group的一个完整的bsp任务工作流程如下:
14.1、core_ctrl_g1给group1中所有的核发送同步信号消息,开始第一个超步,让此组中所有的核启动开始运行自身的程序段;
15.2、所有的核开始运行本时间段内的程序段,直到程序段运行完毕;
16.3、如果某一个核core_1_i程序段运行完毕,此核根据任务开始发送计算结果数据,直到所有的数据发送完毕;
17.4、数据发送完毕,此核发送消息给core_ctrl_g1,告诉core_ctrl_g1本核在本次超步中的运行和通信均已完成,可以进入下一个超步,然后此核进入等待下一次同步信号的状态;
18.5、core_ctrl_g1收到的消息后,会检查所有其他的核是不是也都已经完成运算和通信。如果core_ctrl_g1发现有部分核没有发送消息通知自己运算和通信完成,则等待;如果core_ctrl_g1发现所有的核均已经发送消息通知之间运算和通信完成,则发送下一个同步信号sync_x,进入下一个超步。
19.这种机制中,本组中的各核在运行完自身的程序段并将计算结果数据全部发送完毕后,才开始执行自身的程序段中插入的专门同步指令,通过片上网络(noc)或者总线(bus),通知同步信号生成器core_ctrl_g1,由同步信号生成器生成所有核共用的同步信号。
20.但是,上述方案有如下缺点:
21.1、同一组中的核,只能完成一个任务;
22.2、同一任务的程序中,是基于数据相关度来插入同步指令。即本同步时间段内,某个核需要完成一个完整的任务程序段,得到本时间段内需要发送给其他核的所有数据后,才插入同步指令。但是因为各个核得到所有的数据,所需要运行的时间差异可能很大,很不平衡,从而降低整个芯片或者系统的效率。


技术实现要素:

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.图1为传统地bsp任务各核的工作过程示意图;
62.图2为传统地bsp计算系统的结构示意图;
63.图3为本公开一实施例的电子设备的组成示意框图;
64.图4为本公开另一实施例的多任务程序编译方法的流程图;
65.图5为本公开另一实施例的多任务程序编译方法的流程图;
66.图6为本公开另一实施例的芯片架构图;
67.图7为本公开另一实施例各神经网络各层需要的程序存储区大小示意图;
68.图8为本公开另一实施例各神经网络的初始同步指令插入点示意图;
69.图9为本公开另一实施例各神经网络的初始程序段示意图;
70.图10为本公开另一实施例各计算核上的程序段分配示意图;
71.图11为本公开另一实施例最终的计算核分配方案以及最终同步指令插入点示意图;
72.图12为本公开另一实施例神经网络计算流水的时域图;
73.图13为本公开另一实施例多任务程序编译装置的结构示意图。
具体实施方式
74.为使本领域技术人员更好地理解本公开的技术方案,下面结合附图和具体实施方式对本公开作进一步详细描述。
75.首先,参照图3来描述用于实现本公开实施例的多任务程序编译方法及装置的示例电子设备。
76.如图3所示,电子设备200包括一个或多个处理器210、一个或多个存储装置220、一个或多个输入装置230、一个或多个输出装置240等,这些组件通过总线系统250和/或其他形式的连接机构互连。应当注意,图3所示的电子设备的组件和结构只是示例性的,而非限制性的,根据需要,电子设备也可以具有其他组件和结构。
77.处理器210可以是中央处理单元(cpu)、或者可以是由多个处理核构成、或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备200中的其他组件以执行期望的功能。
78.存储装置220可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现下文所述的本公开实施例中(由处理器实现)的客户端功能以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如,所述应用程序使用和/或产生的各种数据等。
79.输入装置230可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
80.输出装置240可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
81.下面,将参考图4描述根据本公开一实施例的多任务程序编译方法。
82.本公开一实施例的多任务程序编译方法,可以适用于bsp同步架构多核芯片中,可以利用本实施例所公开的编译方法,将多个任务按照最优的策略,生成程序段分配给多个计算核进行计算。
83.如图4所示,一种多任务程序编译方法s100,所述方法包括:
84.s110、分别确定每个任务的初始同步指令插入点。
85.具体地,可以一并结合图5,在本步骤中,任务可以为神经网络nn,也即每个任务代表一个神经网络,当然,除此以外,任务也可以为其他一些网络结构,本实施例对此并不限制。在任务为神经网络时,可以根据每个神经网络的数据流,确定该神经网络的初始同步指
令插入点,即神经网络的某一层的完整的结果数据输出点,是初始同步指令插入点,如图5所示,n个神经网络(nn1至nnn),可以得到n组独立的初始同步指令插入点。
86.s120、对应每个所述初始同步指令插入点,分别生成各同步段内的初始程序段。
87.具体地,在本步骤中,一并结合图5,对每个神经网络,根据该神经网络的初始同步指令插入点,划分多个初始同步段,并生成每个初始同步段内的程序段作为初始程序段,n个神经网络得到n组独立的初始程序段。
88.s130、分别计算每个所述初始程序段所需的程序存储区大小,根据每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在计算核组的各个计算核中重新分配,使得各个所述计算核的存储空间在所述重新分配后,被占用的空间彼此均衡,基于所述重新分配的结果生成每个所述计算核的新程序段和最终同步指令插入点。
89.具体地,在本步骤中,一并结合图5,可以将每个神经网络的各初始程序段大小统计出来,得到每个初始程序段所需的程序存储区大小,可以将各个初始程序段所需的程序存储区大小以表格的形式作出,生成存储区需求表,如图5所示,n个神经网络得到n组独立的存储区需求表。
90.继续结合图5,从多个计算核中找出多个空闲计算核,将该多个空闲计算核组成一个计算核组,然后根据每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在该计算核组的各个计算核中重新分配,目的是使得各个所述计算核的存储空间被占用的情况彼此均衡,也即将各个所述初始程序段分配到各个计算核之后,每个计算核中的存储空间占用情况相近或相同,每个所述计算核的存储区均可以均衡地装满程序段,避免了计算核存储空间的浪费。在重新分配各所述初始程序段后,生成每个所述计算核的新程序段和最终同步指令插入点。
91.需要说明的是,对于如何将所有所述初始程序段在计算核组的各个计算核中重新分配并没有作出限定,只要使得在重新分配后,各个计算核被占用的空间彼此均衡即可,例如,可以通过不同任务之间初始程序段的组合、合并或者拆分,用最优化的方式,重新分配给计算核组内的计算核,生成一个最终的核分配表,确定每一个计算核运行时的最终同步指令插入点。
92.s140、根据每个所述最终同步指令插入点,分别在对应的所述新程序段中插入同步指令,生成所述计算核组的最终程序段。
93.具体地,在本步骤中,如上述步骤s130,在对所有所述初始程序段进行重新分配以后,可能会删除一些初始同步指令插入点,或合并一些初始同步指令插入点,或者增加一些同步点,从而获得最终同步指令插入点,每个新程序段插入对应的最终同步指令插入点即为一个计算核的最终程序段。
94.本公开实施例的多任务程序编译方法,可以在同一计算核组中运行多个任务,这样能够节省多任务系统中的芯片数量,降低成本。另外,还能够优化核的存储资源,最大限度的利用芯片的片内存储区,节省神经网络计算所需要的核的数量,节省系统中芯片的数量,进一步降低成本。最后,可以利用自动编译器自动完成整个同步插入的过程,大大降低了用户的编程难度。
95.在一些可选地实施方式中,所述根据每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在计算核组的各个计算核中重新分配,包括:
96.根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配。
97.示例性的,例如,一个计算核组包括两个计算核,分别为第一计算核和第二计算核,第一计算核和第二计算核的程序存储区大小均为100k。假设该计算核组供执行两个任务,每个任务均包括两个初始程序段,第一个任务两个初始程序段所需的程序存储区大小分别为25k和100k,第二个任务两个初始程序段所需的程序存储区大小分别为25k和50k。则可以将第一个任务的100k的初始程序段分配给第一计算核,将第一个任务的25k初始程序段、第二个任务的两个初始程序段均分配给第二计算核,从而可以使得第一计算核和第二计算核被占用的空间彼此均衡。
98.在一些可选地实施方式中,所述根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配,包括:
99.根据所述计算核的程序存储区大小,将属于不同任务的所述初始程序段,分配给同一个所述计算核,从而可以合并一些初始同步指令插入点。或者,将其中一个所述任务的多个所述初始程序段分配给同一个所述计算核,从而会删除一些初始同步指令插入点。再或者,也可以将其中至少一个所述任务的至少一个所述初始程序段拆分为子初始程序段,并将所述拆分的所述子初始程序段分配给不同的所述计算核,从而会增加一些同步指令插入点。
100.为了详细说明上述分配过程,下文以一具体示例进行说明。
101.以一个包含6个100kb程序存储区大小的计算核的芯片,在只有3个计算核空闲的情况下,计算两个三层的神经网络为例。芯片如图6所示。其中,计算核c1、计算核c2和计算核c3处于空闲可用状态,且它们在同一组,有共同的同步信号生成电路core_ctrl_g1。另外的计算核c4、计算核c5和计算核c6处于忙状态,属于另外一组,不可用。
102.需要计算的神经网络n1和n2分别都是三层,其结构和各层需要的程序存储区大小如图7所示。对于神经网络n1的三层,每一层分别需要的程序存储区大小是:25kb、25kb和50kb;对于神经网络n2的三层,每一层分别需要的程序存储区大小是:50kb、50kb和100kb,分别在图7中有标识。
103.具体编译过程如下:
104.1、对每一个神经网络,根据其中的数据流,确定初始同步指令插入点sp(sync point),即神经网络算法的某一层的完整的结果数据输出点,作为一个初始同步指令插入点。由于本例中有两个神经网络,从而得到两组独立的初始同步指令插入点,如图8所示。
105.2、对两个神经网络,根据初始同步指令插入点,生成每一个同步段内的神经网络算法的程序段p,作为初始程序段。两个神经网络算法,得到两组独立的初始程序段,如图9所示。
106.3、将每一个神经网络算法的各初始程序段所需的程序存储区大小计算出来,得到两个程序存储区表,如下表1和表2所示:
107.表1cnn1各初始程序段的程序存储区表
[0108][0109]
表2cnn2各初始程序段的程序存储区表
[0110][0111]
4、将cnn1和cnn2分配给计算核c1、计算核c2和计算核c3进行计算。
[0112]
具体地,在进行分配时,优先将一个完整的初始程序段分配给一个计算核,避免数据和程序段的分拆。从各初始程序段中,找到需要程序存储区最大的程序段,此例中是cnn2的第三个程序段p
2_3
,其要求的程序存储区最大,为100kb,所以将它分配给计算核c3,剩下的可以有多种组合方式,如按下述表3的方式进行组合:
[0113]
表3
[0114]
计算核初始程序段c1p
1_1
,p
1_2
,p
2_1
c2p
1_3
,p
2_2
c3p
2_3
[0115]
如上述表3所示,cnn1的初始程序段p
1_1
和p
1_2
与cnn2的初始程序段p
2_1
分配给计算核c1,cnn1的初始程序段p
1_3
和cnn2的初始程序段p
2_2
分配给计算核c2,cnn2的初始程序段p
2_3
分配给计算核c3。这样使得每一个计算核的100kb的程序存储空间,都正好装满了程序,从而最大限度的利用了计算核内的存储区。此时,各计算核上的程序段分配示意图如图10所示。
[0116]
由于cnn1的初始程序段p
1_1
和p
1_2
现在都分配了计算核c1,它们之间的数据传递可以在一个同步段中进行,所以原来的初始同步指令插入点sp
1_1
可以删除;而初始同步指令插入点sp
1_0
和sp
2_0
可以合并成最终同步指令插入点sp0,初始同步指令插入点sp
1_2
和sp
2_1
可以合并成最终同步指令插入点sp1,初始同步指令插入点sp
1_3
和sp
2_2
可以合并成最终同步指令插入点sp2,初始同步指令插入点sp
2_3
则变成最终同步指令插入点sp3。这是最终的核分配方案和最终同步插入点方案,如图11所示。
[0117]
cnn1的结果out1将由计算核c2输出,cnn2的结果out2将由计算核c3输出,当两个cnn计算流水起来,在时域上的示意如图12所示。由图12可以看到,所有的计算核都运行自身存储的程序段,程序段运行结束的时间点可能各不相同。
[0118]
5、根据最终同步指令插入点,给各程序段插入同步指令;
[0119]
6、根据最新的同步指令,更新优化各程序段,生成最终所有计算核的最终程序段。
[0120]
下面,将参考图13描述根据本公开另一实施例的多任务程序段生成装置,该装置可以应用于前文记载的生成方法,下述未提及的内容可以参考前文相关记载,在此不作赘述。
[0121]
如图13所示,一种多任务程序编译装置100,所述装置100包括确定模块110、生成模块120、分配模块130以及插入模块140。所述确定模块110用于分别确定每个任务的初始同步指令插入点。所述生成模块120用于对应每个所述初始同步指令插入点,分别生成各同步段内的初始程序段。所述分配模块130用于分别计算每个所述初始程序段所需的程序存储区大小,根据每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在计算核组的各个计算核中重新分配,使得各个所述计算核的存储空间在所述重新分配后,被占用的空间彼此均衡,基于所述重新分配的结果生成每个所述计算核的新程序段和最终同步指令插入点。所述插入模块140用于根据每个所述最终同步指令插入点,分别在对应的所述新程序段中插入同步指令,生成所述计算核组的最终程序段。
[0122]
本公开实施例的多任务程序编译装置,可以在同一计算核组中运行多个任务,这样能够节省多任务系统中的芯片数量,降低成本。另外,还能够优化核的存储资源,最大限度的利用芯片的片内存储区,节省神经网络计算所需要的核的数量,节省系统中芯片的数量,进一步降低成本。最后,可以利用自动编译器自动完成整个同步插入的过程,大大降低了用户的编程难度。
[0123]
在一些可选地实施方式中,所述分配模块130,用于根据每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在计算核组的各个计算核中重新分配,包括:
[0124]
所述分配模块130,还用于根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配。
[0125]
在一些可选地实施方式中,所述分配模块130,用于根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配,包括:
[0126]
所述分配模块130,用于根据所述计算核的程序存储区大小,将属于不同任务的所述初始程序段,分配给同一个所述计算核。
[0127]
在一些可选地实施方式中,所述分配模块130,用于根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段所需的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配,包括:
[0128]
所述分配模块130,用于根据所述计算核的程序存储区大小,将其中一个所述任务的多个所述初始程序段分配给同一个所述计算核。
[0129]
在一些可选地实施方式中,所述分配模块130,用于根据所述计算核组中每个计算核的程序存储区大小以及每个所述初始程序段的程序存储区大小,将所有所述初始程序段在所述计算核组的各个所述计算核中重新分配,包括:
[0130]
所述分配模块130,用于根据所述计算核的程序存储区大小,将其中至少一个所述任务的至少一个所述初始程序段拆分为子初始程序段,并将所述拆分的所述子初始程序段
分配给不同的所述计算核。
[0131]
在一些可选地实施方式中,所述任务为神经网络,所述确定模块110,用于分别确定每个任务的初始同步指令插入点,包括:
[0132]
所述确定模块110,用于根据每个所述神经网络中的数据流,分别确定每个所述神经网络的所述初始同步指令插入点。
[0133]
本公开的另一方面,提供一种多核芯片,所述多核芯片包括至少一个计算核组,至少一个所述计算核组用于执行前文记载的所述的方法;或,至少一个所述计算核组包括前文记载的装置。
[0134]
本公开的另一个方面,提供一种电子设备,包括:
[0135]
一个或多个处理器;
[0136]
一个存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的方法。
[0137]
本公开的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的方法。
[0138]
其中,计算机可读介质可以是本公开的装置、设备、系统中所包含的,也可以是单独存在。
[0139]
其中,计算机可读存储介质可是任何包含或存储程序的有形介质,其可以是电、磁、光、电磁、红外线、半导体的系统、装置、设备,更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、光纤、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件,或它们任意合适的组合。
[0140]
其中,计算机可读存储介质也可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,其具体的例子包括但不限于电磁信号、光信号,或它们任意合适的组合。
[0141]
本公开的另一个方面,提供一种计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的方法。
[0142]
可以理解的是,计算机程序可以存储于计算机存储介质中,如前文记载的随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)等等。
[0143]
可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。
再多了解一些

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

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

相关文献