CN114489671A - 产生统一中介码的机器可读介质与计算机系统 - Google Patents

产生统一中介码的机器可读介质与计算机系统 Download PDF

Info

Publication number
CN114489671A
CN114489671A CN202210100291.6A CN202210100291A CN114489671A CN 114489671 A CN114489671 A CN 114489671A CN 202210100291 A CN202210100291 A CN 202210100291A CN 114489671 A CN114489671 A CN 114489671A
Authority
CN
China
Prior art keywords
tensor
parameter
primitive
tensors
sub
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.)
Pending
Application number
CN202210100291.6A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Biren Intelligent Technology Co Ltd
Original Assignee
Shanghai Biren Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202210100291.6A priority Critical patent/CN114489671A/zh
Publication of CN114489671A publication Critical patent/CN114489671A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种产生统一中介码的机器可读介质与计算机系统。在所述机器可读介质所存储的所述程序被执行时,所述程序使得计算机系统:接收源代码文件;以及将源代码文件编译成包含多个中介码基元的中介码文件。其中,这些中介码基元包含切分基元。所述切分基元具有至少一参数,以表述选择性地在时间或空间中沿张量的一个指定轴将所述张量切分为多个子张量。

Description

产生统一中介码的机器可读介质与计算机系统
技术领域
本发明涉及一种电子装置,且特别涉及产生统一中介码的机器可读介质与计算机系统。
背景技术
中介码(intermediate representation,IR)是一种指令,亦被称为基元(primitive)。编译程序可以将源代码文件(source code file)编译成中介码文件。中介码文件可以被进一步转换为不同架构系统的机器码(二进制代码)文件。
发明内容
本发明提供一种存储有程序的机器可读介质(non-transitory machine-readable medium)与计算机系统,以产生统一中介码(unified IR)。
在根据本发明的实施例中,在所述机器可读介质所存储的所述程序被执行时,所述程序使得计算机系统:接收源代码文件;以及将源代码文件编译成包含多个中介码基元(primitive)的中介码文件。其中,这些中介码基元包含切分(Slice)基元。所述切分基元具有至少一参数,以表述选择性地在时间或空间中依据张量(tensor)的一个指定轴将所述张量切分为多个子张量。
在根据本发明的实施例中,所述计算机系统包括机器可读介质以及计算处理器。机器可读介质存储有程序。计算处理器耦接至机器可读介质,以执行所述程序。在所述程序在被执行时,所述程序使得所述计算处理器接收源代码文件以及将所述源代码文件编译成包含多个中介码基元的中介码文件。其中,这些中介码基元包含切分基元。所述切分基元具有至少一参数,以表述选择性地在时间或空间中依据张量的指定轴将所述张量切分为多个子张量。
基于上述,本发明诸实施例所述的程序可以将源代码文件编译成中介码文件。在一些实施例中,统一中介码文件可以描述神经网络计算图(neural networking computinggraph)的空间和时间并行性(spatial and temporal parallelism)。在中介码文件中,切分基元具有至少一参数。基于所述至少一参数,切分基元可以表述选择性地在时间或空间中将所述张量沿指定轴切分为多个子张量。一个切分基元的使用可以替换一般的其他基元(例如“broadcast”、“replicate”、“partial_sum”、“shard”等基元)。根据本发明公开的技术内容,编程效率会提升。
附图说明
图1是依照本发明的一运算例所绘示,进行矩阵乘法运算的输入矩阵与输出矩阵的示意图。
图2是依照本发明的又一运算例所绘示,进行矩阵乘法运算的输入矩阵与输出矩阵的示意图。
图3是依照本发明的另一运算例所绘示,进行批处理到空间(batch to space)运算的运算相(operation phase)示意图。
附图标记说明
h:高度轴
Matrix_A、Matrix_B、Matrix_C:矩阵
SPC0、SPC1、SPC2、SPC3:计算核
w:宽度轴
具体实施方式
现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在附图和描述中用来表示相同或相似部分。
在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在附图及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
存储有程序的机器可读介质将以下述实施例加以说明。在一些实施例中,所述机器可读介质例如包括带(tape)、碟(disk)、卡(card)、半导体内存、可程序设计的逻辑电路以及(或是)存储装置。所述存储装置包括硬盘(hard disk drive,HDD)、固态硬盘(Solid-state drive,SSD)或是其他存储装置。计算机系统的计算处理器耦接至所述机器可读介质,以执行所述程序。在一些实际应用范例中,所述计算处理器可以包括中央处理器(Central Processing Unit,CPU)、控制器、微控制器或微处理器。在一些实际应用范例中,所述程序可以被实现为编译器软件、电子设计自动化(Electronic design automation,EDA)软件、计算机辅助设计(Computer Aided Design,CAD)软件或是其他设计软件。
所述程序在被执行时使得计算机系统的计算处理器接收源代码(source code)文件。在一些实际应用范例中,所述源代码文件可以包括处理张量的任何计算软件。在一些实际应用范例中,所述源代码文件可以包括卷积神经网络(Convolutional Neural Network,CNN)计算软件或是其他应用软件。执行所述程序的计算处理器可以将源代码文件编译成包含多个中介码(intermediate representation,IR)基元(primitive)的中介码文件。
中介码文件的这些中介码基元包含切分(Slice)基元。所述切分基元具有至少一参数。基于所述至少一参数,切分基元可以表述选择性地在时间或空间中沿张量(tensor)的指定轴将所述张量切分为多个子张量。切分基元的所述至少一参数(参数字段)可以依据实际设计来设置。举例来说(但不限于此),表1是所述切分基元的参数字段范例。
表1:切分基元(slice primitive)的参数字段
Figure BDA0003492111760000031
Figure BDA0003492111760000041
在表1所示实施例中,张量参数“tensor”用以指定欲切分的张量,而指定轴参数“axis”用以指定张量“tensor”的切分轴(指定轴)。举例来说,指定轴可以是张量“tensor_A”的取样轴“n”、通道轴“c”、高度轴“h”或宽度轴“w”。长度参数“length”用以指定沿所述指定轴切分的切分长度。映射参数“map_to”用以指定经切分后的多个子张量所对应的多个硬件核(或硬件模块),以在空间中沿所述指定轴将所述张量切分为所述多个子张量。在切分基元包含所述映射参数“map_to”的情况下,所述切分基元可以表示:在空间中所切分的多个子张量用于一对一地被拆分给所述多个硬件核。亦即,所述切分基元可以替换一般的基元“split”。
基于实际应用,所述切分基元可以被递归式调用。举例来说,假设slice()为所述切分基元,则所述切分基元的递归式调用方式可以表示为slice(slice())。这种递归式调用方式可以用来在不同的轴上切分成多个子张量。
在切分基元未包含映射参数“map_to”的情况下,所述切分基元可以用于在时间中依据指定轴“axis”将张量“tensor”切分为多个子张量。在切分基元未包含映射参数“map_to”的情况下,所述切分基元可以表示所切分的每一个子张量在时间中依序被硬件核执行。举例来说,在一些实施例中,切分基元可以表示在时间中所切分的每一个子张量用于被广播给多个硬件核。在另一些实施例中,切分基元可以表示在时间中所切分的这些子张量依序被提供给同一个硬件核。
中介码文件的这些中介码基元还可以包含张量基元。所述张量基元可以声明张量的内存架构模式(memory architecture mode)。所述张量基元的参数字段可以依据实际设计来设置。举例来说(但不限于此),表2是所述张量基元的参数字段范例。
表2:张量基元(tensor primitive)的参数字段
参数字段 说明 参数范例
shape 张量的轴与维度 (2,128,56,56)
layout 张量形式 Matrix
mem_arch_mode 内存架构模式 uma,uma8,numa
在表2所示实施例中,参数“shape”用以声明张量的轴与维度。举例来说,参数“shape=(2,128,56,56)”表示,此一张量的取样轴“n”的维度为2,通道轴“c”的维度为128,高度轴“h”的维度为56,而宽度轴“w”的维度为56。参数“layout”用以声明张量的形式。参数“mem_arch_mode”用以声明张量的内存架构模式,例如非统一内存存取(non-uniformmemory access,NUMA)架构模式、统一内存存取(uniform memory access,UMA)架构模式或是其他架构模式。在源代码文件表示“在空间中将张量切分为多个子张量”的情况下,所述张量基元可以声明张量的内存架构模式为“numa”,亦即NUMA架构。在源代码文件表示“在时间中将张量切分为多个子张量”的情况下,所述张量基元可以声明张量的内存架构模式为“uma”,亦即UMA架构。
中介码文件的这些中介码基元还可以包含至少一个运算基元。所述运算基元的参数字段可以依据实际设计来设置。举例来说(但不限于此),表3是所述运算基元的参数字段范例。在表3所示实施例中,参数“tensors”用以声明进行运算的张量。举例来说,参数“tensors”可以包含第一张量参数与第二张量参数。所述第一张量参数指示第一张量,而所述第二张量参数指示第二张量。所述运算基元可以对所述第一张量与所述第二张量进行运算。所述运算可以是任意运算,例如矩阵乘法运算或是其他运算。
表3:运算基元(operation primitive)的参数字段
Figure BDA0003492111760000051
假设op()为所述运算基元,则tensor_result=op(tensor1,tensor2)可以表示“所述运算基元对张量tensor1与张量tensor2进行运算以产生运算结果tensor_result”。假设对张量tensor1进行切分,则由切分方法推导partial_sum/all_reduce/broadcast的规则如表4所示。
表4:切分推导规则
Figure BDA0003492111760000061
图1是依照本发明的一运算例所绘示,进行矩阵乘法运算的输入矩阵与输出矩阵的示意图。在图1所示实施例中,中介码文件可以包含运算基元“MatrixMultiply()”,即矩阵乘法运算基元。图1所示矩阵Matrix_A与Matrix_B为矩阵乘法运算基元的输入矩阵,而矩阵Matrix_C为矩阵乘法运算基元的输出矩阵。为方便说明,作为示范性实施例,以下所述中介码文件的范例将以“tensor()”作为所述张量基元的具体范例,以及用“slice()”作为所述切分基元的具体范例。中介码文件的内容范例如下。
Figure BDA0003492111760000062
Figure BDA0003492111760000071
经过变换后,中介码的格式如下。
Figure BDA0003492111760000081
图2是依照本发明的又一运算例所绘示,进行矩阵乘法运算的输入矩阵与输出矩阵的示意图。在图2所示的实施例中,中介码文件可以包含矩阵乘法运算基元“MatrixMultiply()”。图2所示的矩阵Matrix_A与Matrix_B为矩阵乘法运算基元的输入矩阵,而矩阵Matrix_C为矩阵乘法运算基元的输出矩阵。为方便说明,作为示范性实施例,以下所述中介码文件的范例将以“tensor()”作为所述张量基元的具体范例,以及用“slice()”作为所述切分基元的具体范例。中介码文件的内容范例如下。
Figure BDA0003492111760000091
Figure BDA0003492111760000101
经过变换后,中介码的格式如下。
Figure BDA0003492111760000102
Figure BDA0003492111760000111
图3是依照本发明的另一运算例所绘示,进行批处理到空间轴扩展(batch tospace)运算的运算相(operation phase)示意图。批处理到空间运算又可称为轴扩展(axisexpansion,或称矩阵拼接)运算。图3所示轴扩展运算的中介码文件范例如下。
Figure BDA0003492111760000112
Figure BDA0003492111760000121
综上所述,诸实施例所述的程序可以将源代码文件编译成中介码文件。在一些应用例中,统一中介码文件可以描述神经网络计算图(neural networking computinggraph)的空间和时间并行性(spatial and temporal parallelism)。基于在中介码文件中切分基元的至少一参数,切分基元可以表述选择性地在时间或空间中将所述张量沿指定轴切分为多个子张量。举例来说,在切分基元包含映射参数“map_to”的情况下,所述切分基元可以表示:所切分的多个子张量在空间中一对一地被拆分给多个硬件核。反之在切分基元未包含映射参数“map_to”的情况下,所述切分基元可以表示所切分的每一个子张量在时间中依序被硬件核执行。举例来说,在一些实施例中,切分基元可以表示在时间中所切分的每一个子张量用于被广播给多个硬件核。在另一些实施例中,在时间中所切分的这些子张量可以依序被提供给同一个硬件核。因此,同一个切分基元的使用可以替换多个一般基元(例如“broadcast”、“replicate”、“partial_sum”、“shard”等基元)。如此,编程效率会比较高。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (22)

1.一种存储有程序的机器可读介质,其特征在于,所述程序在被执行时使得计算机系统:
接收源代码文件;以及
将所述源代码文件编译成包含多个中介码基元的中介码文件,其中所述多个中介码基元包含切分基元,以及所述切分基元具有至少一参数以表述选择性地在时间或空间中沿张量的指定轴将所述张量切分为多个子张量。
2.根据权利要求1所述的机器可读介质,其特征在于,所述至少一参数包含指定轴参数,用以指定所述张量的所述指定轴。
3.根据权利要求1所述的机器可读介质,其特征在于,所述至少一参数包含长度参数,用以指定沿所述指定轴切分的切分长度。
4.根据权利要求1所述的机器可读介质,其特征在于,所述至少一参数包含映射参数,用以指定所述多个子张量所对应的多个硬件核,以在空间中依据所述指定轴将所述张量切分为所述多个子张量。
5.根据权利要求4所述的机器可读介质,其特征在于,在所述切分基元包含所述映射参数的情况下,所述切分基元表示在空间中所切分的所述多个子张量用于一对一地被拆分给所述多个硬件核。
6.根据权利要求1所述的机器可读介质,其特征在于,在所述至少一参数未包含映射参数的情况下,所述切分基元用于在时间中依据所述指定轴将所述张量切分为所述多个子张量。
7.根据权利要求6所述的机器可读介质,其特征在于,在所述切分基元未包含所述映射参数的情况下,所述切分基元表示在时间中所切分的所述多个子张量每一个用于被广播给多个硬件核。
8.根据权利要求1所述的机器可读介质,其特征在于,所述多个中介码基元还包含张量基元,以及所述张量基元用于声明所述张量的内存架构模式。
9.根据权利要求8所述的机器可读介质,其特征在于,在所述源代码文件表示在空间中将所述张量切分为所述多个子张量的情况下,所述张量基元声明所述张量的所述内存架构模式为非统一内存存取架构。
10.根据权利要求8所述的机器可读介质,其特征在于,在所述源代码文件表示在时间中将所述张量切分为所述多个子张量的情况下,所述张量基元声明所述张量的所述内存架构模式为统一内存存取架构。
11.根据权利要求1所述的机器可读介质,其特征在于,所述多个中介码基元还包含运算基元,所述运算基元包含第一张量参数与第二张量参数,所述第一张量参数指示第一张量,所述第二张量参数指示第二张量,以及所述运算基元用于对所述第一张量与所述第二张量进行运算。
12.一种计算机系统,包括:
机器可读介质,存储有程序;以及
计算处理器,耦接至所述机器可读介质以执行所述程序,其中所述程序在被执行时使得所述计算处理器接收源代码文件以及将所述源代码文件编译成包含多个中介码基元的中介码文件,
其中所述多个中介码基元包含切分基元,以及所述切分基元具有至少一参数以表述选择性地在时间或空间中沿张量的指定轴将所述张量切分为多个子张量。
13.根据权利要求12所述的计算机系统,其特征在于,所述至少一参数包含指定轴参数,用以指定所述张量的所述指定轴。
14.根据权利要求12所述的计算机系统,其特征在于,所述至少一参数包含长度参数,用以指定沿所述指定轴切分的切分长度。
15.根据权利要求12所述的计算机系统,其特征在于,所述至少一参数包含映射参数,用以指定所述多个子张量所对应的多个硬件核,以在空间中依据所述指定轴将所述张量切分为所述多个子张量。
16.根据权利要求15所述的计算机系统,其特征在于,在所述切分基元包含所述映射参数的情况下,所述切分基元表示在空间中所切分的所述多个子张量用于一对一地被拆分给所述多个硬件核。
17.根据权利要求12所述的计算机系统,其特征在于,在所述至少一参数未包含映射参数的情况下,所述切分基元用于在时间中依据所述指定轴将所述张量切分为所述多个子张量。
18.根据权利要求17所述的计算机系统,其特征在于,在所述切分基元未包含所述映射参数的情况下,所述切分基元表示在时间中所切分的所述多个子张量每一个用于被广播给多个硬件核。
19.根据权利要求12所述的计算机系统,其特征在于,所述多个中介码基元还包含张量基元,以及所述张量基元用于声明所述张量的内存架构模式。
20.根据权利要求19所述的计算机系统,其特征在于,在所述源代码文件表示在空间中将所述张量切分为所述多个子张量的情况下,所述张量基元声明所述张量的所述内存架构模式为非统一内存存取架构。
21.根据权利要求19所述的计算机系统,其特征在于,在所述源代码文件表示在时间中将所述张量切分为所述多个子张量的情况下,所述张量基元声明所述张量的所述内存架构模式为统一内存存取架构。
22.根据权利要求12所述的计算机系统,其特征在于,所述多个中介码基元还包含运算基元,所述运算基元包含第一张量参数与第二张量参数,所述第一张量参数指示第一张量,所述第二张量参数指示第二张量,以及所述运算基元用于对所述第一张量与所述第二张量进行运算。
CN202210100291.6A 2022-01-27 2022-01-27 产生统一中介码的机器可读介质与计算机系统 Pending CN114489671A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210100291.6A CN114489671A (zh) 2022-01-27 2022-01-27 产生统一中介码的机器可读介质与计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210100291.6A CN114489671A (zh) 2022-01-27 2022-01-27 产生统一中介码的机器可读介质与计算机系统

Publications (1)

Publication Number Publication Date
CN114489671A true CN114489671A (zh) 2022-05-13

Family

ID=81477459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210100291.6A Pending CN114489671A (zh) 2022-01-27 2022-01-27 产生统一中介码的机器可读介质与计算机系统

Country Status (1)

Country Link
CN (1) CN114489671A (zh)

Similar Documents

Publication Publication Date Title
EP3407203B1 (en) Statically schedulable feed and drain structure for systolic array architecture
US20190179635A1 (en) Method and apparatus for tensor and convolution operations
US20170206089A1 (en) Information processing apparatus and computational method
US20160378568A1 (en) Scriptable Dynamic Load Balancing in Computer Systems
Peng et al. GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation
CN113994350A (zh) 为神经网络生成并行计算方案
Kugler Is" good enough" computing good enough?
US11630986B2 (en) Graph conversion method
CN113641952B (zh) 卷积设备、卷积方法、矩阵拆聚装置以及矩阵拆聚方法
CN112181522A (zh) 数据处理的方法、装置以及电子设备
Duff Multiprocessing a sparse matrix code on the Alliant FX/8
CN115525287A (zh) 多阶段编译器架构
CN112446007A (zh) 一种矩阵运算方法、运算装置以及处理器
Shah et al. Accelerating revised simplex method using GPU-based basis update
CN114489671A (zh) 产生统一中介码的机器可读介质与计算机系统
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
CN110362387B (zh) 分布式任务的处理方法、装置、系统和存储介质
Jung et al. Accelerating implicit integration in multi-body dynamics using GPU computing
Yan et al. Memory bandwidth optimization of SpMV on GPGPUs
JPH1185826A (ja) 描画データ処理システムおよび描画データの処理方法
Anand et al. Scaling computation on GPUs using powerlists
US20240126617A1 (en) Deep fusion of kernel execution
Venieris et al. Towards heterogeneous solvers for large-scale linear systems
US20240184750A1 (en) Adaptive aggregation and compression of metadata
Pinhao et al. Sparse matrix multiplication on a reconfigurable many-core architecture

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
CB02 Change of applicant information

Country or region after: China

Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Applicant after: Shanghai Bi Ren Technology Co.,Ltd.

Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai

Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CB02 Change of applicant information