CN115840571A - 任务编译的方法、编译器、计算机可读介质 - Google Patents
任务编译的方法、编译器、计算机可读介质 Download PDFInfo
- Publication number
- CN115840571A CN115840571A CN202310160001.1A CN202310160001A CN115840571A CN 115840571 A CN115840571 A CN 115840571A CN 202310160001 A CN202310160001 A CN 202310160001A CN 115840571 A CN115840571 A CN 115840571A
- Authority
- CN
- China
- Prior art keywords
- sub
- data
- processing unit
- processing
- result file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本公开提供了一种任务编译的方法,用于编译由众核系统运行的任务,所述众核系统包括多个处理核,所述方法包括:将所述任务分为多个子部分;分别独立的确定每个所述子部分的子编译结果文件,确定每个所述子编译结果文件对应的处理单元;每个所述处理单元包括至少一个所述处理核;根据所述子编译结果文件,确定所述处理单元间的数据关系;每条所述数据关系表征一份目标数据从一个源处理单元传输至一个目的处理单元的方式。本公开还提供了一种编译器、计算机可读介质。
Description
技术领域
本公开涉及众核技术领域,特别涉及一种任务编译的方法、编译器、计算机可读介质。
背景技术
在计算设备中运行的任务(如神经网络)需先进行编译,得到可供处理单元(如处理器)执行的编译结果文件,之后再将编译结果文件加载至处理单元中运行。
但当任务要在包括多个处理核(Core)的众核系统中运行时,其编译过程的资源(如算力、内存等)和时间消耗大,可扩展性差。
发明内容
本公开提供一种任务编译的方法、编译器、计算机可读介质。
第一方面,本公开实施例提供一种任务编译的方法,用于编译由众核系统运行的任务,所述众核系统包括多个处理核,所述方法包括:
将所述任务分为多个子部分;
分别独立的确定每个所述子部分的子编译结果文件,确定每个所述子编译结果文件对应的处理单元;每个所述处理单元包括至少一个所述处理核;
根据所述子编译结果文件,确定所述处理单元间的数据关系;每条所述数据关系表征一份目标数据从一个源处理单元传输至一个目的处理单元的方式。
在一些实施例中,在所述确定所述处理单元间的数据关系之后,还包括:
获取所述任务的扩展子部分;
独立的确定所述扩展子部分的子编译结果文件,确定所述扩展子部分的子编译结果文件对应的处理单元;
根据所述扩展子部分的子编译结果文件,确定所述扩展子部分的子编译结果文件对应的处理单元与其它所述处理单元间的数据关系。
在一些实施例中,至少部分所述子编译结果文件是通过编译得到的;
和/或,
至少部分所述子编译结果文件为预置的库文件。
在一些实施例中,至少部分所述数据关系还表征所述源处理单元仅发送所述目标数据的一部分;
和/或,
至少部分所述数据关系还表征所述目的处理单元仅接收所述目标数据的一部分。
在一些实施例中,至少部分所述数据关系表征所述源处理单元将所述目标数据直接发送至所述目的处理单元。
在一些实施例中,至少部分所述数据关系表征所述源处理单元将所述目标数据存储至中间存储,所述目的处理单元从所述中间存储读取所述目标数据。
在一些实施例中,至少部分所述数据关系表征在附加单元中对所述目标数据进行附加处理,所述目的处理单元从所述附加单元中获取附加处理后的所述目标数据。
在一些实施例中,在所述确定每个所述子编译结果文件对应的处理单元之后,还包括:将所述子编译结果文件加载至其对应的所述处理单元;
在所述确定所述处理单元间的数据关系之后,还包括:根据所述数据关系配置所述处理单元间的通信方式。
在一些实施例中,所述众核系统包括多个芯片,每个所述芯片包括至少一个所述处理核;
每个所述处理单元为一个所述芯片。
在一些实施例中,所述任务包括计算图任务。
第二方面,本公开实施例提供一种编译器,包括:
处理器;
存储器,其上存储有计算机程序:
I/O接口,其连接在所述处理器与存储器之间,配置为实现所述处理器与所述存储器的信息交互;
当所述计算机程序被所述处理器执行时能实现本公开实施例任意一项所述的任务编译的方法。
第三方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现本公开实施例任意一项所述的任务编译的方法。
本公开实施例先将任务分割为多个子部分,并确定各子部分的子编译结果文件以及处理每个子编译结果文件的处理单元,并通过设置数据关系,保证任务的不同子部分之间可正确的进行数据传输;由此,每个子部分都相当于一个规模更小的任务,且在规模更小的众核系统(甚至可能为一个的处理核)中运行,其编译难度大大降低,从而可节约编译过程的资源(如算力、内存等)和时间消耗。
而且,当任务有扩展时,可将扩展的部分单独编译并对应到新的处理单元,之后只要设置该新处理单元与已有处理单元间的数据关系,就相当于将扩展部分“加入”原有任务中,而不必对任务整体重新进行编译,其可扩展性好。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与详细实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细实施例进行描述,以上和其它特征和优点对本领域技术人员将变得更加显而易见,在附图中。附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与详细实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细实施例进行描述,以上和其它特征和优点对本领域技术人员将变得更加显而易见,在附图中。
图1为本公开实施例适用的一种众核系统的结构示意图。
图2为本公开实施例适用的另一种众核系统的结构示意图。
图3为本公开实施例提供的一种任务编译的方法的流程图。
图4为本公开实施例提供的另一种任务编译的方法的流程图。
图5为本公开实施例提供的一种任务编译的方法的过程示意图。
图6为本公开实施例提供的一种任务编译的方法中任务扩展时的过程示意图。
图7为本公开实施例提供的一种任务编译的方法中高维数据部分传输的示意图。
图8为本公开实施例提供的另一种任务编译的方法中一种数据关系的示意图。
图9为本公开实施例提供的另一种任务编译的方法中另一种数据关系的示意图。
图10为本公开实施例提供的另一种任务编译的方法中另一种数据关系的示意图。
图11为本公开实施例适用的一种众核系统中的芯片间传输数据的方式示意图。
图12为本公开实施例适用的另一种众核系统中的芯片间传输数据的方式示意图。
图13为本公开实施例提供的一种编译器的组成框图。
图14为本公开实施例提供的一种计算机可读介质的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的任务编译的方法、编译器、计算机可读介质进行详细描述。
在下文中将参考附图更充分地描述本公开,但是所示的实施例可以以不同形式来体现,且不应当被解释为限于本公开阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
本公开所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本公开所使用的术语“和/或”包括一个或多个相关列举条目的任何和所有组合。如本公开所使用的单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。如本公开所使用的术语“包括”、“由……制成”,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本公开所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本公开明确如此限定。
本公开不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不是旨在限制性的。
众核系统包括多个可独立进行运算的处理核(Core),不同处理核之间可通过片上网络相互连接,从而多个处理核可相互协同的进行运算。
在一些相关技术中,当任务(如神经网络)要在众核系统的处理核中运行时,可将众核系统整体看作一个处理单元并将任务映射至其中,再编译任务得到可执行的编译结果文件,并将编译结果文件加载至众核系统中运行。
但是,众核系统包括多个处理核,即,任务不同部分的运算实际是在不同处理核中进行的,故其编译过程更加复杂(要考虑与处理核的对应关系),编译过程的资源(如算力、内存等)和时间消耗大,尤其随着任务规模和众核系统规模的增大,该问题就更加严重。
而且,当任务有扩展(如神经网络增加一个层)时,相当于增加了新的运算,故运算与处理核间的对应关系会发生变化,相应的编译结果文件也会变化,因此只能对扩展后的任务重新进行映射、编译,过程麻烦,可扩展性差。
第一方面,本公开实施例提供一种任务编译的方法,其用于编译由众核系统运行的任务,众核系统包括多个处理核。
本公开实施例的方法用于对待运行的任务(如神经网络)进行编译,得到可供众核系统执行的编译结果文件,以便由众核系统运行任务(即本公开实施例的任务编译的方法本身不一定由众核系统执行)。
例如,本公开实施例的方法可由“编译器”执行,其对映射后的任务进行编译(包括链接),以将其加载至众核系统。
参照图1和图2,众核系统包括多个处理核(Core),各处理核可相对独立的进行运算;而不同处理核之间可通过片上网络(图中用连线示意性的代表)相互连接。
作为本公开实施例的一种方式,众核系统可参照图1,为一个独立封装的芯片(众核芯片),该芯片内包括多个处理核。
作为本公开实施例的另一种方式,众核系统也可参照图2,包括多个芯片,每个芯片内有一个或多个处理核,而各芯片之间再通过片间通信协议(如SerDes)互联相互连接,且多个芯片还可被封装到一个芯粒(Chiplet)中。
其中,以上众核芯片包括但不限于神经网络加速芯片、神经形态芯片、类脑芯片、图形处理芯片(GPU)等,且其中还可带有片外存储、向量加速单元、矩阵加速单元等其它结构。
在一些实施例中,任务包括计算图任务。
作为本公开实施例的一种方式,其编译的任务可以是以计算图形式表达的任务,例如是神经网络、图形学任务等形式。
其中,神经网络是用于实现一定功能的深度学习模型,其具体可用于语音识别、图像处理、文本生成、搜索排序等。
其中,神经网络的形式包括但不限于人工神经网络(ANN)、脉冲神经网络(SNN)、混合神经网络(HNN)、动态神经网络、多神经网络等,且可包括前向推理过程、反向训练过程、架构搜索过程等。
应当理解,本公开实施例的任务的具体形式不限于此,其也可以是其它任何能在众核系统中执行的运算任务。
参照图3,本公开实施例的任务编译的方法包括:
S101、将任务分为多个子部分。
S102、分别独立的确定每个子部分的子编译结果文件,确定每个子编译结果文件对应的处理单元。
其中,每个处理单元包括至少一个处理核。
S103、根据子编译结果文件,确定处理单元间的数据关系。
其中,每条数据关系表征一份目标数据从一个源处理单元传输至一个目的处理单元的方式。
在确定待运行的任务后,先根据各处理单元(可预先设置,也可划分得到)的运算能力、存储能力等,将任务分割为多份(子部分),按照负载均衡等考虑,每个子部分包括任务的一部分运算。
例如,参照图5,任务可包括多个节点(图中用圆圈表示),每个节点代表一定的运算,而节点运算产生的结果可输出(图中用箭头表示)至其它的节点,而分割出的每个子部分包括其中的一个或多个节点。
参照图5,对分割得到的每个子部分,将其作为一个“任务”,独立的确定出(如单独编译)其编译结果文件(子编译结果文件),即,可供处理单元执行的、能实现该子部分的运算的文件。
“分别独立的确定每个子部分的子编译结果文件”是指,在确定每个子部分的子编译结果文件时,都认为该子部分是与其它子部分无关的独立的任务,从而得到的每个子编译结果文件实际可独立的在不同时间、不同器件上运行(当然要有正确的输入)。
由于子编译结果文件是分别独立确定的,故它们各自的运行不会直接相互影响,只要确定了它们之间的数据传输关系即可保证任务的正确运行。
对每个子编译结果文件,参照图5,进一步确定其对应的处理单元,而不同子编译结果文件对应不同的处理单元。
其中,每个处理单元包括一个或多个处理核,可执行一定的运算;从而每个子编译结果文件应加载至其对应的处理单元中运行;即,各处理单元分别运行任务的不同部分,而多个处理单元共同实现任务整体的运行。
在一些实施例中,众核系统包括多个芯片,每个芯片包括至少一个处理核;每个处理单元为一个芯片。
参照图2,作为本公开实施例的一种方式,当众核系统包括多个芯片(如众核芯片)时,可以是每个芯片为一个处理单元,即,每个子编译结果文件加载至一个芯片中运行。
在一些实施例中,芯片包括芯片级路由器,至少部分芯片的芯片级路由器之间通过片间通信协议连接;或者,至少部分不同芯片的处理核之间通过片间通信协议连接。
作为本公开实施例的一种方式,参照图11,每个芯片内有一个或多个芯片级路由器,而不同芯片的芯片级路由器之间通过片间通信协议(如SerDes)相互连接,从而可通过芯片级路由器实现芯片(处理单元)间的数据传输(后续详细说明)。
作为本公开实施例的另一种方式,参照图12,也可以时不同芯片的处理核之间直接通过片间通信协议(如SerDes)相互连接,从而可通过处理核之间的连接实现芯片(处理单元)间的数据传输(后续详细说明)。
应当理解,本公开实施例中处理单元的形式不限于此。例如,也可参照图1,当众核系统仅有一个芯片(包括多个处理核)时,则每个处理单元为该芯片中的一个或多个处理核;或者,当众核系统包括多个芯片时,每个处理单元也可为一个芯片中的部分处理核,或为多个不同芯片中的处理核。
任务的不同子部分之间需要传输数据,即,一个子部分可能将自身运算得到的结果数据传输给其它一个或多个子部分,作为这些子部分的输入数据。例如,神经网络中一个层的输出可作为下一个层的输入。
当不同子部分的子编译结果文件位于不同处理单元中时,子部分间的数据传输实际通过处理单元间的数据传输实现。因此,确定每个子编译结果文件对应的处理单元后,可通过编译器中的链接器分析子编译结果文件,以确定相应子部分需要输入、输出哪些数据,也就是确定这些数据实际来自哪些处理单元、要传输至哪些处理单元;从而,可根据以上数据传输的需求,设定不同处理单元(子部分)间传输数据的方式,即,确定每一份数据(目标数据)应以什么方式从一个处理单元(源处理单元)传输至另一个处理单元(目的处理单元),也就是确定每一条数据关系(或称“链接原语”)。
其中,每数据关系表征一份确定的数据从一个确定的处理单元传输至另一个确定的处理单元的方式。例如,若一个处理单元要将两份数据发给同一个处理单元,则其对应两条数据关系(当然若将两份数据合并为一份一起发送,则其就是一条数据关系);而若一份数据要从一个处理单元发送至多个不同处理单元,则其是多条数据关系。
其中,“数据关系”可以是在将任务在众核系统中运行之前就完全确定好的,在运行过程中不再改变,即数据关系可为“静态”的;或者,也可以是在任务在众核系统中运行的过程中,临时增加或改变数据关系,即数据关系也可为“动态”的。
本公开实施例先将任务分割为多个子部分,并确定各子部分的子编译结果文件以及处理每个子编译结果文件的处理单元,并通过设置数据关系,保证任务的不同子部分之间可正确的进行数据传输;由此,每个子部分都相当于一个规模更小的任务,且在规模更小的众核系统(甚至可能为一个处理核)中运行,其编译难度大大降低,从而可节约编译过程的资源(如算力、内存等)和时间消耗。
而且,当任务有扩展时,可将扩展的部分单独编译并对应到新的处理单元,之后只要设置该新处理单元与已有处理单元间的数据关系,就相当于将扩展部分“加入”原有任务中,而不必对任务整体重新进行编译,其可扩展性好。
在一些实施例中,至少部分子编译结果文件是通过编译得到的;
和/或,
至少部分子编译结果文件为预置的库文件。
作为本公开实施例的一种方式,参照图5,可以是对任务的子部分直接进行编译(单独编译),得到对应的子编译结果文件。
由于各子部分是单独编译(或称独立编译)的,故每个子部分的编译实际是对一个“小规模”任务的编译,其易于实现,可提高编译效率。
或者,作为本公开实施例的另一种方式,当某个子部分是已有的功能模块时,也可参照图5,直接选用预设的库文件(如第三方库中的文件)作为其子编译结果文件。
应当理解,为保证每个子部分的子编译结果文件(库文件)是独立确定的,故选用的库文件本身也应是单独编译的。
在一些实施例中,参照图4,在确定每个子编译结果文件对应的处理单元(S102)之后,还包括:
S1021、将子编译结果文件加载至其对应的处理单元。
在确定处理单元间的数据关系(S103)之后,还包括:
S1031、根据数据关系配置处理单元间的通信方式。
作为本公开实施例的一种方式,在确定子编译结果文件对应的处理单元后,还可实际将子编译结果文件加载至相应的处理单元中;在确定处理单元间的数据关系后,还可根据数据关系实际对处理单元间的通信方式进行配置;从而,使任务实际加载到众核系统上,可由众核系统直接运行。
例如,可以是在确定子编译结果文件和数据关系配置之后,使用链接器将它们链接为一个可执行程序(即总的“编译结果文件”),并将该可执行程序送入众核系统运行。
在一些实施例中,参照图4,在确定处理单元间的数据关系(S103)之后,还包括:
S104、获取任务的扩展子部分。
S105、独立的确定扩展子部分的子编译结果文件,确定扩展子部分的子编译结果文件对应的处理单元。
S106、根据扩展子部分的子编译结果文件,确定扩展子部分的子编译结果文件对应的处理单元与其它处理单元间的数据关系。
作为本公开实施例的一种方式,参照图6,在一个任务(原任务)已部署后,若要对其(原任务)进行扩展(如神经网络新增一些层,或是另一个任务要与原任务交互,或是要将部分第三方库文件链接入原任务),则可将新增的部分视为原任务的“扩展(扩展子部分)”,并将扩展子部分作为一个独立的任务,得到该扩展子部分的子编译结果文件,确定该新的子编译结果文件对应的处理单元(当然是原本未被使用的新处理单元),进而确定该新处理单元与其它处理单元间的数据关系,并将扩展子部分对应的子编译结果文件加载至新处理单元中运行。
其中,“扩展子部分”就是一个“子部分”,故可采用确定子部分的子编译结果文件的方式确定其子编译结果文件。
例如,可参照图6,对新增部分进行编译得到子编译结果文件,或者,也可以是直接用预设的库文件作为新增部分的子编译结果文件。
应当理解,由于扩展子部分也是子部分的一种,故其子编译结果文件也是独立确定的(如单独编译,或采用单独编译的库文件)。
由此,任务扩展时,本公开实施例只用对新增部分进行编译即可,而不用对扩展后的任务整体进行重新编译。
在一些实施例中,至少部分数据关系还表征源处理单元仅发送目标数据的一部分;
和/或,
至少部分数据关系还表征目的处理单元仅接收目标数据的一部分。
任务中产生的数据经常是“高维”的,如参照图7,一份数据为一个三维向量,其在三个维度的尺寸分别为12、5、4。但在一些情况下,接收数据的目的处理单元(任务的子部分)可能并不需要使用“整份”数据,而是可能只需要使用其中的一部分,由此,可参照图7,数据关系还可规定只发送、接收整份数据(目标数据)的一部分,如仅发送以上三维向量中三个维度的范围分别为[1-6][1-5][1-4]的部分。
其中,同一份目标数据发送给多个目的处理单元时,不同的目的处理单元可分别使用其中的不同部分,也可以是多个目的处理单元都要使用其中的相同部分;而当一个目的处理单元接收到多份目标数据时,可分别使用多份目标数据(或目标数据的一部分),也可将多份目标数据(或目标数据的一部分)再“拼接”为一份数据进行使用。
在编译结果文件(包括子编译结果文件)中每个变量(数据)是用“符号”代表的,当多个子编译结果文件要加载至一个众核系统中时,则需要保证其中“符号-变量”的对应关系是统一的,即,保证每个符号在所有的子编译结果文件都能找到唯一的定义,且一个变量只被定义为唯一的符号。
例如,在编译过程中,可为每个子编译结果文件生成一个对应的“符号表”,记录本子编译结果文件中各符号的意义;而后续链接器可对子编译结果文件中的符号关系(如符号表)进行检查和记录(即符号决议),若发现符号决议不通过,可退出并报错,或可修改子编译结果文件。
由此,当仅发送、接收数据的一部分时,则每个输出符号可对应有一个或多个输入符号,而每个输入符号可对应有一个或多个输出符号。
其中,一份数据的不同部分可用同一个符号加上不同标识代表。例如,参照以下符号表,以上三维向量数据的符号为S1(即附图中的S1数据),而其中的一部分([1-6][1-5][1-4]范围的数据)可用S1-1表示。
表1、符号表示例
表1、符号表示例
上表中,数据范围表示数据在三维向量的三个维度上覆盖的范围,数据类型表示数据是从处理单元输出或是输入到处理单元,而相关处理核表示处理单元中与该数据有关(产生该数据或使用该数据)的处理核的编号。
在一些实施例中,至少部分数据关系表征源处理单元将目标数据直接发送至目的处理单元。
作为本公开实施例的一种方式,参照图8,一些数据关系代表的数据传输方式可以是直接将目标数据从源处理单元发送至目的处理单元。例如,当处理单元为芯片时,以上数据传输方式就是芯片通过片间通信协议(如SerDes)直接数据传输。
由此,目标数据可通过最简单的、最直接的方式传输,其效率高、速度快。
应当理解,以上“直接发送”并不代表源处理单元和目的处理单元之间必须“直接连接”,通过包括多个节点的路由将传输目标数据也在其范围内,只要该传输过程不经过中间存储(后续描述)或附加单元处理(后续描述)即可。
例如,以上数据关系可称为“Chip_route”,其具体的参数可包括:
触发条件,其表示什么情况下触发执行此数据关系进行数据传输;
同步标识,其表示采用异步或同步传输;若为同步,则芯片间的数据传输需要同步收发核(处理核);若为异步,则采用异步传输协议实现芯片通信;
片间传输类型,其表示选择何种协议传输数据,如PCIE协议、AXI协议等;
缓冲设置,其表示收发数据时是否需要缓冲核暂存数据,如果需要还应设置哪些核作为缓冲核(即数据可先暂时存储在缓冲核,而在适当时机再由缓冲核实际发送给目的处理单元);
路由包设置,若根据所选的数据传输协议需要配置路由包,则还应给出如单播/多播、路由策略(如为序路由、动态路由)、大小包(大包表示一个包带的数据更多)等配置。
在一些实施例中,至少部分数据关系表征源处理单元将目标数据存储至中间存储,目的处理单元从中间存储读取目标数据。
作为本公开实施例的另一种方式,参照图9,一些数据关系代表的数据传输方式可以是源处理单元先将目标数据存储到中间存储(如芯片内的内存,或芯片外的片外存储)中,而目的处理单元再从中间存储的相应地址读取目标数据,从而以中间存储为中介间接的完成数据传输。
由此,可借用中间存储实现对更大量的目标数据的传输,并可允许源处理单元产生目标数据和目的单元接收目标数据之间存在时间差,提高灵活性。
例如,以上数据关系可称为“Memory_access”,其具体的参数可包括:
触发条件,其表示什么情况下触发执行此数据关系进行数据传输;
同步标识,其表示采用异步或同步传输;若为同步,则芯片间的数据传输需要同步收发核(处理核);若为异步,则采用异步传输协议实现芯片通信;
存储选择,若有多个中间存储时,其表示选择哪个中间存储;
存储地址,其表示目标数据存储在中间存储中的地址(若中间存储是动态内存就不需要);
缓冲设置,其表示收发数据时是否需要缓冲核暂存数据,如果需要还应设置哪些核作为缓冲核。
在一些实施例中,至少部分数据关系表征在附加单元中对目标数据进行附加处理,目的处理单元从附加单元中获取附加处理后的目标数据。
作为本公开实施例的另一种方式,参照图10,一些数据关系代表的数据传输方式可以是,目的处理单元也可不直接处理目标数据,而是先将目标数据在其它的运算单元(即附加单元,如外界的处理器或空闲的处理核等)中进行额外的处理(即附加处理,如数据筛选、数据拼接等),而目的处理单元获取附加处理后的目标数据,以用于相应运算。
其中,附加处理是指由处理单元之外的其它器件(附加单元)对目标数据进行的、可实质改变目标数据的处理(故若只路由经过其它器件则不是附加处理)。
通过使用其它的其它器件(附加单元)对目标数据进行附加处理,可以在对目标数据进行传输的同时,完成部分处理过程,从而节约处理单元的算力。
其中,附加单元当然先要获取到原始的目标数据才能对其进行附加处理,而其获取目标数据的具体方式是多样的。例如,目标数据可以是由源处理单元直接发给附加单元的;或者,也可以是目的处理单元先接收到源处理单元的目标数据后再将其发给附加单元,并待附加处理完成后再次获取目标数据。
例如,以上数据关系可称为“General_process”,其具体的参数可包括:
触发条件,其表示什么情况下触发执行此数据关系进行数据传输;
同步标识,其表示采用异步或同步传输;若为同步,则芯片间的数据传输需要同步收发核(处理核);若为异步,则采用异步传输协议实现芯片通信;
处理器选择,当有多个处理器作为附加单元时,其表示选择哪个处理器进行附加处理;
处理流程,其表示具体需要进行什么附加处理,如可通过数据处理代码表示不同的处理操作;
缓冲设置,其表示收发数据时是否需要缓冲核暂存数据,如果需要还应设置哪些核作为缓冲核。
其中,根据采用的数据关系的不同,处理单元间的通信方式可进行相应的配置(S1031)。
例如,参照图11,众核系统包括多个芯片,且采用芯片级路由器实现芯片间数据交互的众核架构,而每个芯片为一个处理单元;则在采用以上Chip_route数据关系,源芯片(处理单元)发送的数据要先交给相应的芯片级路由器,芯片级路由器将数据打包发给片间通信协议(若片间通信协议采用SerDes,则芯片级路由器还要完成并口转串口操作),片间通信协议将数据传输到目的芯片的芯片级路由器,并由其完成解包(还可有串口转并口等)和分发给各个处理核等操作;这种情况下,链接器需要对芯片级路由器、SerDes逻辑等进行配置。
再如,参照图12,若众核系统采用支持芯片的处理核间直接收发数据的众核架构时,则芯片间的数据通信协议允许对应处理核间直接通信;这种情况下,链接要需要对路由逻辑、SerDes逻辑等进行配置。
再如,若采用以上Memory_access数据关系时,则链接器需要配置相应的中间存储,如采用静态内存作为中间存储时,需要配置好指定的存储空间。
再如,若采用以上General_process数据关系时,则链接器需要配置相应的附加单元(如外部的处理器),以及附加单元与各处理单元间的通信方式。
再如,当需要进行同步时,链接器还要进行同步组配置,即,对相应的数据关系,为源处理单元与目的处理单元配置一个同步点,只有双方都到达了同步点时数据传输才开始。
再如,当需要使用缓冲核时,链接器还要进行缓冲配置,即,目标数据可先发送(或接收)至缓冲核,缓冲核将目标数据暂时存储在本地,待需要时再向外发送,从而只要缓冲核的存储空间足够就不会发生路由阻塞,源处理单元将数据交给缓冲核后即可处理其它的任务,而目的处理单元也可先将数据放在缓冲核,等空闲时才实际进行处理。
第二方面,参照图13,本公开实施例提供一种编译器,包括:
处理器;
存储器,其上存储有计算机程序:
I/O接口,其连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互;
当计算机程序被处理器执行时能实现本公开实施例任意一项的任务编译的方法。
第三方面,参照图14,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,计算机程序被处理器执行时能实现本公开实施例任意一项的任务编译的方法。
本公开实施例中,处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)连接在处理器与存储器间,能实现存储器与处理器的信息交互,其包括但不限于数据总线(Bus)等。
本领域普通技术人员可以理解,上文中所公开的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。
某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器(CPU)、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机可读介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机可读介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读介质包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH)或其它磁盘存储器;只读光盘(CD-ROM)、数字多功能盘(DVD)或其它光盘存储器;磁盒、磁带、磁盘存储或其它磁存储器;可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本公开已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (13)
1.一种任务编译的方法,用于编译由众核系统运行的任务,所述众核系统包括多个处理核,所述方法包括:
将所述任务分为多个子部分;
分别独立的确定每个所述子部分的子编译结果文件,确定每个所述子编译结果文件对应的处理单元;每个所述处理单元包括至少一个所述处理核;
根据所述子编译结果文件,确定所述处理单元间的数据关系;每条所述数据关系表征一份目标数据从一个源处理单元传输至一个目的处理单元的方式。
2.根据权利要求1所述的方法,其中,在所述确定所述处理单元间的数据关系之后,还包括:
获取所述任务的扩展子部分;
独立的确定所述扩展子部分的子编译结果文件,确定所述扩展子部分的子编译结果文件对应的处理单元;
根据所述扩展子部分的子编译结果文件,确定所述扩展子部分的子编译结果文件对应的处理单元与其它所述处理单元间的数据关系。
3.根据权利要求1或2所述的方法,其中,
至少部分所述子编译结果文件是通过编译得到的;
和/或,
至少部分所述子编译结果文件为预置的库文件。
4.根据权利要求1所述的方法,其中,
至少部分所述数据关系还表征所述源处理单元仅发送所述目标数据的一部分;
和/或,
至少部分所述数据关系还表征所述目的处理单元仅接收所述目标数据的一部分。
5.根据权利要求1所述的方法,其中,
至少部分所述数据关系表征所述源处理单元将所述目标数据直接发送至所述目的处理单元。
6.根据权利要求1所述的方法,其中,
至少部分所述数据关系表征所述源处理单元将所述目标数据存储至中间存储,所述目的处理单元从所述中间存储读取所述目标数据。
7.根据权利要求1所述的方法,其中,
至少部分所述数据关系表征在附加单元中对所述目标数据进行附加处理,所述目的处理单元从所述附加单元中获取附加处理后的所述目标数据。
8.根据权利要求1所述的方法,其中,
在所述确定每个所述子编译结果文件对应的处理单元之后,还包括:将所述子编译结果文件加载至其对应的所述处理单元;
在所述确定所述处理单元间的数据关系之后,还包括:根据所述数据关系配置所述处理单元间的通信方式。
9.根据权利要求1所述的方法,其中,
所述众核系统包括多个芯片,每个所述芯片包括至少一个所述处理核;
每个所述处理单元为一个所述芯片。
10.根据权利要求9所述的方法,其中,
所述芯片包括芯片级路由器,至少部分所述芯片的芯片级路由器之间通过片间通信协议连接;
或者,
至少部分不同所述芯片的所述处理核之间通过片间通信协议连接。
11.根据权利要求1所述的方法,其中,
所述任务包括计算图任务。
12.一种编译器,包括:
处理器;
存储器,其上存储有计算机程序:
I/O接口,其连接在所述处理器与存储器之间,配置为实现所述处理器与所述存储器的信息交互;
当所述计算机程序被所述处理器执行时能实现权利要求1至11中任意一项所述的任务编译的方法。
13.一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现权利要求1至11中任意一项所述的任务编译的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310160001.1A CN115840571B (zh) | 2023-02-21 | 2023-02-21 | 任务编译的方法、编译器、计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310160001.1A CN115840571B (zh) | 2023-02-21 | 2023-02-21 | 任务编译的方法、编译器、计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840571A true CN115840571A (zh) | 2023-03-24 |
CN115840571B CN115840571B (zh) | 2023-06-23 |
Family
ID=85580145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310160001.1A Active CN115840571B (zh) | 2023-02-21 | 2023-02-21 | 任务编译的方法、编译器、计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840571B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161325A1 (en) * | 2009-12-31 | 2011-06-30 | Ego7 Llc | System, method and computer-readable storage medium for generation and remote content management of compiled files |
CN112711478A (zh) * | 2019-10-24 | 2021-04-27 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
CN113094122A (zh) * | 2021-05-07 | 2021-07-09 | 中国建设银行股份有限公司 | 数据处理脚本的执行方法和装置 |
CN115391356A (zh) * | 2022-04-26 | 2022-11-25 | 中国建设银行股份有限公司 | 数据处理方法、装置、设备、介质和计算机程序产品 |
-
2023
- 2023-02-21 CN CN202310160001.1A patent/CN115840571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161325A1 (en) * | 2009-12-31 | 2011-06-30 | Ego7 Llc | System, method and computer-readable storage medium for generation and remote content management of compiled files |
CN112711478A (zh) * | 2019-10-24 | 2021-04-27 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
CN113094122A (zh) * | 2021-05-07 | 2021-07-09 | 中国建设银行股份有限公司 | 数据处理脚本的执行方法和装置 |
CN115391356A (zh) * | 2022-04-26 | 2022-11-25 | 中国建设银行股份有限公司 | 数据处理方法、装置、设备、介质和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN115840571B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11928512B2 (en) | Quiesce reconfigurable data processor | |
US11237880B1 (en) | Dataflow all-reduce for reconfigurable processor systems | |
KR101640295B1 (ko) | 정규 표현을 컴파일하기 위한 방법 및 장치 | |
US20180095738A1 (en) | Method, device, and system for creating a massively parallilized executable object | |
US11182221B1 (en) | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
US11847395B2 (en) | Executing a neural network graph using a non-homogenous set of reconfigurable processors | |
US8839057B2 (en) | Integrated circuit and method for testing memory on the integrated circuit | |
US20110307734A1 (en) | Biologically inspired hardware cell architecture | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
CN114580653A (zh) | 机器学习计算优化方法和编译器 | |
US11556756B2 (en) | Computation graph mapping in heterogeneous computer system | |
US20210073625A1 (en) | Partitioning control dependency edge in computation graph | |
US20080222303A1 (en) | Latency hiding message passing protocol | |
WO2022133047A1 (en) | Dataflow function offload to reconfigurable processors | |
US9852807B1 (en) | Content addressable memory in an emulation system | |
US20030188278A1 (en) | Method and apparatus for accelerating digital logic simulations | |
CN112631955A (zh) | 数据处理方法、装置、电子设备以及介质 | |
US11983141B2 (en) | System for executing an application on heterogeneous reconfigurable processors | |
CN115840571A (zh) | 任务编译的方法、编译器、计算机可读介质 | |
CN115563050A (zh) | 众核计算芯片及数据访问方法 | |
CN111832714A (zh) | 运算方法及装置 | |
US20240184552A1 (en) | Compilers and compiling methods field | |
US20220253583A1 (en) | Message passing multi processor network for simulation vector processing | |
Fisher | A multi‐processor implementation of occam |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |