CN109543836B - 运算方法、装置及相关产品 - Google Patents
运算方法、装置及相关产品 Download PDFInfo
- Publication number
- CN109543836B CN109543836B CN201811456746.8A CN201811456746A CN109543836B CN 109543836 B CN109543836 B CN 109543836B CN 201811456746 A CN201811456746 A CN 201811456746A CN 109543836 B CN109543836 B CN 109543836B
- Authority
- CN
- China
- Prior art keywords
- data
- algorithm
- matrix
- segmented
- segment
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 364
- 239000011159 matrix material Substances 0.000 claims abstract description 214
- 230000014509 gene expression Effects 0.000 claims abstract description 158
- 230000011218 segmentation Effects 0.000 claims abstract description 131
- 238000013528 artificial neural network Methods 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 33
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 9
- 230000018109 developmental process Effects 0.000 abstract description 9
- 238000011176 pooling Methods 0.000 description 56
- 210000002364 input neuron Anatomy 0.000 description 27
- 210000004205 output neuron Anatomy 0.000 description 26
- 238000013519 translation Methods 0.000 description 15
- 230000014616 translation Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000015654 memory Effects 0.000 description 13
- 210000002569 neuron Anatomy 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及运算方法、装置及相关产品,所述方法包括:根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;根据所述数据的分段数据确定所述数据的第一中间表达;确定数据的第一中间表达在片上缓存中对应的存储空间;根据所述存储空间生成所述数据的第二中间表达;根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达。本公开实施例通过数据的中间表达和算子的中间表达得到算法的中间表达,不同的算法在不同的片上系统实现时,不需要设置特定的接口,提高了算法和片上系统之间的兼容性,降低了算法开发的难度。
Description
技术领域
本公开涉及信息处理技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
不同的片上系统可以设置不同的语言表达,即设置不同的可用于在片上系统执行的代码。而神经网络算法自身的复杂度高,一个算法可能需要拆分后在片上系统执行。用于实现神经网络算法的编程语言也复杂多变。当使用不同编程语言实现的神经网络算法,在不同类型的片上系统上执行时,需要为特定语言的算法和特定的片上系统设置特定的接口,使得神经网络算法在片上系统实现时的复杂度高。
发明内容
有鉴于此,本公开提出了一种运算方法、装置及相关产品,用以降低神经网络算法在芯片上实现的开发复杂度。
根据本公开的一方面,提供了一种运算方法,所述方法包括:
根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达。
在一种可能的实现方式中,所述方法还包括:
据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令,或
根据所述矩阵加算法的第二中间表达生成所述矩阵加算法的第二可执行指令。
在一种可能的实现方式中,所述分段信息根据片上缓存的大小确定。
在一种可能的实现方式中,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
根据本公开的一方面,提供了一种运算装置,所述装置包括:
分段数据获取模块,用于根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
数据中间表达确定模块,用于根据所述数据的分段数据确定所述数据的第一中间表达;
存储空间确定模块,用于确定数据的第一中间表达在片上缓存中对应的存储空间;
第二中间表达确定模块,用于根据所述存储空间生成所述数据的第二中间表达;
算法中间表达确定模块,用于根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达。
在一种可能的实现方式中,所述装置还包括:
第一可执行指令生成模块,用于根据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令,或
第二可执行指令生成模块,用于根据所述矩阵加算法的第二中间表达生成所述矩阵加算法的第二可执行指令。
在一种可能的实现方式中,所述分段信息根据片上缓存的大小确定。
在一种可能的实现方式中,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述任一项所述的运算装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述的运算装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的运算装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在本公开实施例中,根据分段信息将算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和算法算子的第一中间表达,生成算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到算法的第一中间表达,不同的算法在不同的片上系统实现时,不需要设置特定的接口,提高了算法和片上系统之间的兼容性,降低了算法开发的难度。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的运算方法的流程图;
图2示出根据本公开一实施例的运算方法的流程图;
图3示出根据本公开一实施例的运算方法的流程图;
图4示出根据本公开一实施例的运算装置的框图;
图5示出根据本公开一实施例的组合处理装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的运算方法的流程图,如图1所示,所述运算方法包括:
步骤S10,根据分段信息将算法的数据分段,得到所述数据的分段数据,所述数据包括所述算法的输入数据和输出数据。
在一种可能的实现方式中,神经网络的算法可以包括多个操作粒度,例如细粒度操作(具有有限尺度的操作指令)、粗粒度操作(卷积操作)和网络级别的操作。不同操作粒度对应的算法对应的数据的大小不同。由于用于完成神经网络算法的片上系统的缓存资源有限。各操作粒度对应的算法的输入数据和输出数据,可以在片上缓存中分段存储。
在一种可能的实现方式中,对于不同的输入数据和输出数据,可以根据数据自身的长度和片上缓存的大小,预设与各输入数据和输出数据对应的分段信息。各数据可以对应相同的分段信息,也可以对应不同的分段信息。可以根据分段信息将输入数据和输出数据进行分段后,得到输入数据的分段数据和输出数据的分段数据。
在一种可能的实现方式中,所述分段信息根据片上缓存的大小确定。所述分段信息包括分段长度和/或分段数量。例如,可以根据片上缓存的大小,确定分段信息为段的长度为B字节。卷积算法的输入数据包括输入神经元,输入神经元的长度为A字节(A>B),可以将输入神经元分为两段,一段为B字节,一段为(A-B)字节。则输入神经元对应的分段数据为输入神经元第一分段数据B字节和输入神经元第二分段数据(A-B)字节。
步骤S20,根据所述数据的分段数据生成所述数据的第一中间表达。
在一种可能的实现方式中,可以根据需求预设中间表达及预设中间代码。可以设置C语言的中间表达。中间表达的语言可以与算法和片上系统的语言均不同,也可以和算法或片上系统的语言相同。本公开对此不做限定。
在一种可能的实现方式中,可以将各输入数据和各输出数据的分段数据,分别编写各输入数据和输出数据的第一中间表达。在执行算法时,各数据可以分段执行,可以依次提取各数据的分段数据执行,各数据的分段数据可以共用相同的第一中间表达。例如,可以根据输入神经元的第一分段数据和第二分段数据,确定神经元数据的第一中间表达为Neuron input。输入神经元的第一分段数据和输入神经元的第二分段数据可以共用第一中间表达Neuron input。
步骤S30,根据所述数据的第一中间表达和所述算法算子的第一中间表达,生成所述算法的第一中间表达。
在一种可能的实现方式中,可以预设各算法的算子的第一中间表达。例如,卷积算法的算子的第一中间表达为ConvForward,池化算法的第一中间表达为MaxPoolForward。
在一种可能的实现方式中,可以将算法的各输入数据的第一中间表达、各输出数据的第一中间表达和算法算子的第一中间表达,按照设定的方式组合得到算法的第一中间表达。例如,卷积算法的数据可以包括输入神经元(第一中间表达为Neuron input)、权值(第一中间表达为weight)、偏置(第一中间表达为bias),输出数据可以包括卷积输出神经元(第一中间表达为Neuron input),卷积算法的算子为卷积算子(第一中间表达为ConvForward),则卷积算法的中间表达可以为ConvForward(Neuron input,Neuron in-put,weight,bias)。
在本实施例中,根据分段信息将算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和算法算子的第一中间表达,生成算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到算法的第一中间表达,不同的算法在不同的片上系统实现时,不需要设置特定的接口,提高了算法和片上系统之间的兼容性,降低了算法开发的难度。
图2示出根据本公开一实施例的运算方法的流程图,如图2所示,所述数据为多维数据,所述运算方法中步骤S10包括:
步骤S11,根据分段信息将各维度数据分别进行分段,得到各维度数据的维度分段数据。
步骤S12,根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,算法的输入数据和输出数据可以是多维数据。对于输入数据的各维度数据和输出数据的各维度数据可以分别进行分段。例如,卷积算法的输入数据中包括输入神经元Neuron input,输入神经元Neuron input的各维度数据包括特征输入通道input_channal、输入特征图高度input_spatial_H和输入特征图宽度input_spatial_W。可以对特征输入通道的数据、输入特征图高度的数据和输入特征图宽度的数据分别进行分段。
在一种可能的实现方式中,各维度数据可以对应不同的分段信息。可以根据与各维度数据对应的分段信息,得到各维度数据的维度分段数据。各维度数据的维度分度数据的长度可以不等。例如,特征输入通道input_channal的长度为C,对应的分段长度为A1,则特征输入通道的维度分段数据可以为input_channal(C,A1)。
在一种可能的实现法方式中,可以将各维度数据的维度分段数据按照设定的方式组合得到数据的分段数据。例如,输入神经元的分段数据为Neuron input(input_channal,input_spatial_H,input_spatial_W)。
在本实施例中,可以根据分段信息将各维度数据分别进行分段,得到各维度数据的维度分段数据。根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。将数据按照不同的维度进行分段后,可以使得数据的中间表达的使用范围更广,鲁棒性更强。
图3示出根据本公开一实施例的运算方法的流程图,如图3所示,所述运算方法中步骤S30包括:
步骤S31,确定数据的第一中间表达在片上缓存中对应的存储空间。
步骤S32,根据所述存储空间生成所述数据的第二中间表达。
步骤S33,根据所述数据的第二中间表达和所述算法算子的第二中间表达,生成所述算法的第二中间表达。
在一种可能的实现法方式中,在不同运算的算法中,可以将不同的数据存储在不同的存储器中。例如,在神经网络算法中,可以将输入神经元的数据、输出神经元的数据和权值的数据分别存储在片上块存储器上。
在一种可能的实现法方式中,可以将各数据的第一中间表达在片上缓存中对应不同的存储空间。例如,可以将输入神经元的第一中间表达对应至片上缓存的地址1、将权值的第一中间表达对应至片上缓存的地址2、将偏置的第一中间表达对应至片上缓存的地址3、将输出神经元的第一中间表达对应至片上缓存的地址4。可以为不同的数据的第一中间表达在片上缓存中确定不同大小的存储空间。
在一种可能的实现法方式中,可以根据个数据的第一中间表达对应的片上缓存的存储空间的地址,生成所述数据的第二中间表达。例如,输入神经元的第二中间表达可以为地址1、权值的第二中间表达可以为地址2、偏置的第二中间表达可以为地址3、输出神经元的第二中间表达可以为地址4。
在一种可能的实现方式中,可以预设各算法算子的第二中间表达。例如,卷积算子的第二中间表达为LConvForwar,池化算子的第二中间表达为LMaxPoolForward。各算子的第二中间表达可以直接调用片上缓存中的数据进行相应的运算。可以根据各数据的第二中间表达和算子的第二中间表达生成算法的第二中间表达。例如,卷积算法的第二中间表达可以为LConvForwar(地址1、地址2、地址3、地址4)。
在本实施例中,确定数据的第一中间表达在片上缓存中对应的存储空间,根据存储空间生成数据的第二中间表达,根据数据的第二中间表达和算法算子的第二中间表达,生成算法的第二中间表达。根据为数据分配的片上缓存中的存储空间得到算法的第二中间表达,在片上缓存中直接调用数据进行计算,能够提高算法的运算效率,以及提高算法中间表达的兼容性。
在一种可能的实现方式中,所述运算方法还包括:
根据所述算法的第一中间表达生成所述算法的第一可执行指令,或
根据所述算法的第二中间表达生成所述算法的第二可执行指令。
在一种可能的实现方式中,可以预设片上系统执行代码和算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以为算法的第一中间表达和第二中间表达设置不同的转换库。可以利用转换库将算法的第一中间表达转换为第一可执行指令,或利用转换库将算法的第二中间表达转换为第二可执行指令。
在本实施例中,可以根据算法的第一中间表达生成所述算法的第一可执行指令,或根据所述算法的第二中间表达生成所述算法的第二可执行指令。根据算法的中间表达生成的可执行指令可以在片上系统执行,能够提高算法中间表达的适用范围。
在一种可能的实现方式中,所述算法包括卷积算法、池化算法、矩阵乘算法和矩阵加算法中的其中一种或任意组合。
在一种可能的实现方式中,神经网络模型等各种运算装置中,可以用到的算法包括卷积算法、池化算法、矩阵乘算法和矩阵加算法等各种算法。可以将卷积算法、池化算法、矩阵乘算法和矩阵加算法中的其中一种或任意组合,按照本公开实施例中的运算方法转换为可执行指令后供片上系统执行。本公开对算法的类型和内容不做限定。
在本实施例中,算法包括卷积算法、池化算法、矩阵乘算法和矩阵加算法中的其中一种或任意组合。利用本公开实施例中的运算方法将算法转换为可执行指令后供片上系统执行,提高了算法和片上系统之间的兼容性,降低了算法开发的难度。
实施例1:
在一种可能的实现方式中,根据分段信息将卷积算法的数据分段,得到所述数据的分段数据,所述数据包括所述卷积算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述卷积算法算子的第二中间表达,生成所述卷积算法的第二中间表达。
在一种可能的实现方式中,所述卷积算法的输入数据包括输入神经元、权值、偏置,所述卷积算法的输出数据包括卷积输出神经元。
在一种可能的实现方式中,所述输入神经元的各维度数据包括:特征输入通道、输入特征图高度和输入特征图宽度;
所述卷积输出神经元的各维度数据包括:卷积通道、卷积特征图高度和卷积特征图宽度;
所述权值的各维度数据包括:特征输入通道、卷积通道、特征图高度卷积核和特征图宽度卷积核;
所述偏置的各维度数据包括:卷积通道。
在一种可能的实现方式中,可以根据分段信息将卷积算法的输入数据分段,得到输入数据的分段数据。即可以根据分段信息将输入神经元、权值、偏置分别进行分段,得到输入神经元分段数据、权值分段数据和偏置分段数据。可以根据分段信息将卷积算法的输出数据分段,得到输出数据的分段数据。即可以根据分段信息将卷积输出神经元进行分段,得到卷积输出神经元分段数据。在分段信息中,针对不同的输入数据和输出数据,分段长度和分段数量可以不同,本公开对此不做限定。
在一种可能的实现方式中,所述卷积算法的数据为多维数据,根据分段信息将卷积算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将所述数据各维度数据分别进行分段,得到所述数据各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,卷积算法的输入数据和输出数据为多维数据。可以根据分段信息,将卷积算法的输入数据和输出数据的各维度数据分别进行分段,得到输入数据和输出数据的各维度数据的维度分段数据。输入神经元的各维度数据包括:特征输入通道、输入特征图高度和输入特征图宽度。可以根据分段信息将特征输入通道的数据进行分段,得到特征输入通道的维度分段信息。可以根据分段信息将输入特征图高度的数据进行分段,得到输入特征图高度的维度分段信息。可以根据分段信息将输入特征图宽度的数据进行分段,得到输入特征图宽度的维度分段信息。同理,可以根据分段信息将卷积输出神经元的各维度数据进行分段,得到卷积通道的维度分段信息、卷积特征图高度的维度分段信息和卷积特征图宽度的维度分段信息。根据分段信息将权值的各维度数据进行分段,得到特征输入通道的维度分段信息、卷积通道的维度分段信息、特征图高度卷积核的维度分段信息和特征图宽度卷积核的维度分段信息。根据分段信息将偏置的各维度数据进行分段,得到卷积通道的维度分段信息。
在一种可能的实现方式中,可以根据需求预设中间表达及预设中间代码。可以设置C语言的中间表达。中间表达的语言可以与算法和片上系统的语言均不同,也可以和算法或片上系统的语言相同。本公开对此不做限定。
在一种可能的实现方式中,可以将卷积算法的各输入数据的分段数据和各输出数据的分段数据,分别编写各输入数据的第一中间表达和各输出数据的第一中间表达。在执行算法时,各数据可以分段执行,可以依次提取各数据的分段数据执行。
在一种可能的实现方式中,各数据的分段数据可以共用相同的第一中间表达。例如,可以根据输入神经元的第一分段数据和第二分段数据,确定神经元数据的第一中间表达为Neuron input。输入神经元的第一分段数据和输入神经元的第二分段数据可以共用第一中间表达Neuron input。
在一种可能的实现方式中,根据所述数据的第一中间表达和卷积算法算子的第一中间表达,生成卷积算法的第一中间表达。
在一种可能的实现方式中,可以预设各算法的算子的第一中间表达。例如,卷积算法的算子的第一中间表达为ConvForward。
在一种可能的实现方式中,可以将卷积算法的各输入数据的第一中间表达、各输出数据的第一中间表达和卷积算法算子的第一中间表达,按照设定的方式组合得到算法的第一中间表达。例如,卷积算法的数据可以包括输入神经元(第一中间表达为Neuroninput)、权值(第一中间表达为weight)、偏置(第一中间表达为bias),输出数据可以包括卷积输出神经元(第一中间表达为Neuron input),卷积算法的算子为卷积算子(第一中间表达为ConvForward),则卷积算法的中间表达可以为ConvForward(Neuron input,Neuron input,weight,bias)。
在一种可能的实现方式中,可以根据所述卷积算法的第一中间表达生成所述卷积算法的第一可执行指令,或根据所述卷积算法的第二中间表达生成所述卷积算法的第二可执行指令。
在一种可能的实现方式中,可以预设片上系统执行代码和卷积算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以为卷积算法的第一中间表达和第二中间表达设置不同的转换库。可以利用转换库将卷积算法的第一中间表达转换为第一可执行指令,或利用转换库将卷积算法的第二中间表达转换为第二可执行指令。
在本实施例中,根据分段信息将卷积算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和卷积算法算子的第一中间表达,生成卷积算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到卷积算法的第一中间表达,卷积算法在不同的片上系统实现时,不需要设置特定的接口,提高了卷积算法和片上系统之间的兼容性,降低了算法开发的难度。
实施例2:
在一种可能的实现方式中,根据分段信息将卷积算法的数据分段,得到所述数据的分段数据,所述数据包括所述卷积算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
根据所述数据的第一中间表达和所述卷积算法算子的第一中间表达,生成所述卷积算法的第一中间表达。
在一种可能的实现方式中,所述数据为多维数据,根据分段信息将卷积算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将所述数据各维度数据分别进行分段,得到所述数据各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,所述方法还包括:
根据所述卷积算法的第一中间表达生成所述卷积算法的第一可执行指令。
本实施例与实施例1的不同之处在于,只根据卷积算法的数据的第一中间表达和卷积算法算子的第一中间表法,生成卷积算法的第一中间表达,并根据卷积算法的第一中间表达生成卷积算法的第一可执行指令。没有根据卷积算法的第一中间表达在片上缓存中对应的存储空间生成所述卷积算法的第二中间表达,也没有根据卷积算法的第二中间表达生成卷积算法的第二可执行指令。
实施例3:
在一种可能的实现方式中,可以根据分段信息将池化算法的数据分段,得到所述数据的分段数据,所述数据包括所述池化算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述池化算法算子的第二中间表达,生成所述池化算法的第二中间表达。
在一种可能的实现方式中,所述池化算法的数据为多维数据,根据分段信息将池化算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将各维度数据分别进行分段,得到各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,所述池化算法的输入数据包括卷积输出神经元,所述池化算法的输出数据包括池化输出神经元。
在一种可能的实现方式中,可以根据分段信息将池化算法的输入数据分段,得到池化算法输入数据的分段数据。即可以根据分段信息将卷积输出神经元进行分段,得到卷积输出神经元分段数据。可以根据分段信息将池化算法的输出数据分段,得到池化算法输出数据的分段数据。即可以根据分段信息将池化输出神经元进行分段,得到池化输出神经元分段数据。在分段信息中,针对池化算法的输入数据和输出数据,分段长度和分段数量可以不同,本公开对此不做限定。
在一种可能的实现方式中,所述卷积输出神经元的各维度数据包括:卷积通道、卷积特征图高度和卷积特征图宽度;所述池化输出神经元的各维度数据包括:卷积通道、池化特征图高度和池化特征图宽度。
在一种可能的实现方式中,可以根据分段信息将池化算法中的卷积输出神经元的各维度数据进行分段,得到各维度数据的维度分段数据。即可以根据分段信息将卷积通道、卷积特征图高度和卷积特征图宽度分别进行分段,得到卷积通道的维度分段数据、卷积特征图高度的维度分段数据和卷积特征图宽度的维度分段数据。可以根据分段信息将池化算法中的池化输出神经元的各维度数据进行分段,得到各维度数据的维度分段数据。即可以根据分段信息将卷积通道、池化特征图高度和池化特征图宽度进行分段,得到卷积通道的维度分段数据、池化特征图高度的维度分段数据和池化特征图宽度的维度分段数据。
在一种可能的实现方式中,可以根据需求预设中间表达及预设中间代码。可以设置C语言的中间表达。中间表达的语言可以与算法和片上系统的语言均不同,也可以和算法或片上系统的语言相同。本公开对此不做限定。
在一种可能的实现方式中,可以将池化算法的各输入数据和各输出数据的分段数据,分别编写各输入数据和输出数据的第一中间表达。在执行池化算法时,各数据可以分段执行,可以依次提取各数据的分段数据执行,各数据的分段数据可以共用相同的第一中间表达。
在一种可能的实现方式中,所述方法还包括:
根据所述池化算法的第一中间表达生成所述池化算法的第一可执行指令,或
根据所述池化算法的第二中间表达生成所述池化算法的第二可执行指令。
在一种可能的实现方式中,可以预设片上系统执行代码和池化算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以为池化算法的第一中间表达和第二中间表达设置不同的转换库。可以利用转换库将池化算法的第一中间表达转换为第一可执行指令,或利用转换库将池化算法的第二中间表达转换为第二可执行指令。
在本实施例中,根据分段信息将池化算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和池化算法算子的第一中间表达,生成池化算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到池化算法的第一中间表达,池化算法在不同的片上系统实现时,不需要设置特定的接口,提高了池化算法和片上系统之间的兼容性,降低了算法开发的难度。
应用实例4:
在一种可能的实现方式中,根据分段信息将池化算法的数据分段,得到所述数据的分段数据,所述数据包括所述池化算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
根据所述数据的第一中间表达和所述池化算法算子的第一中间表达,生成所述池化算法的第一中间表达。
在一种可能的实现方式中,所述数据为多维数据,根据分段信息将池化算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将各维度数据分别进行分段,得到各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,所述方法还包括:
根据所述池化算法的第一中间表达生成所述池化算法的第一可执行指令。
本实施例与实施例3的不同之处在于,只根据池化算法的数据的第一中间表达和池化算法算子的第一中间表达,生成池化算法的第一中间表达,并根据池化算法的第一中间表达生成池化算法的第一可执行指令。没有根据池化算法的第一中间表达在片上缓存中对应的存储空间生成所述池化算法的第二中间表达,以及根据池化算法的第二中间表达生成池化算法的第二可执行指令。
实施例5:
在一种可能的实现方式中,根据分段信息将矩阵乘算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵乘算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述矩阵乘算法算子的第二中间表达,生成所述矩阵乘算法的第二中间表达。
在一种可能的实现方式中,所述矩阵乘算法的输入数据包括N行C列的第一矩阵数据,所述矩阵乘算法的输出数据包括N行M列的第二矩阵数据,根据分段信息将算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第一矩阵数据和第二矩阵数据分别分为N段,得到第一矩阵数据的分段数据和第二矩阵数据的分段数据,其中,第一矩阵数据的分段数据每段长度为C,第二矩阵数据的分段数据每段长度为M。
在一种可能的实现方式中,可以根据分段信息将矩阵乘算法的输入数据分段,得到矩阵乘算法输入数据的分段数据。即可以根据分段信息将第一矩阵数据进行分段,得到第一矩阵数据分段数据。可以根据分段信息将矩阵乘算法的输出数据分段,得到矩阵乘算法输出数据的分段数据。即可以根据分段信息将第二矩阵数据进行分段,得到第二矩阵数据分段数据。在分段信息中,针对矩阵乘算法的输入数据和输出数据,分段长度和分段数量可以不同,本公开对此不做限定。
在一种可能的实现方式中,可以根据需求预设中间表达及预设中间代码。可以设置C语言的中间表达。中间表达的语言可以与算法和片上系统的语言均不同,也可以和算法或片上系统的语言相同。本公开对此不做限定。
在一种可能的实现方式中,可以将矩阵乘算法的各输入数据和各输出数据的分段数据,分别编写各输入数据和输出数据的第一中间表达。在执行矩阵乘算法时,各数据可以分段执行,可以依次提取各数据的分段数据执行,各数据的分段数据可以共用相同的第一中间表达。
在一种可能的实现方式中,所述方法还包括:
据所述矩阵乘算法的第一中间表达生成所述矩阵乘算法的第一可执行指令,或
根据所述矩阵乘算法的第二中间表达生成所述矩阵乘算法的第二可执行指令。
在一种可能的实现方式中,可以预设片上系统执行代码和矩阵乘算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以为矩阵乘算法的第一中间表达和第二中间表达设置不同的转换库。可以利用转换库将矩阵乘算法的第一中间表达转换为第一可执行指令,或利用转换库将矩阵乘算法的第二中间表达转换为第二可执行指令。
在本实施例中,根据分段信息将矩阵乘算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和矩阵乘算法算子的第一中间表达,生成矩阵乘算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到矩阵乘算法的第一中间表达,矩阵乘算法在不同的片上系统实现时,不需要设置特定的接口,提高了矩阵乘算法和片上系统之间的兼容性,降低了算法开发的难度。
实施例6:
在一种可能的实现方式中,根据分段信息将矩阵乘算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵乘算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
根据所述数据的第一中间表达和所述矩阵乘算法算子的第一中间表达,生成所述矩阵乘算法的第一中间表达。
在一种可能的实现方式中,所述方法还包括:
根据所述矩阵乘算法的第一中间表达生成所述矩阵乘算法的第一可执行指令。
本实施例与实施例5的不同之处在于,只根据矩阵乘算法的数据的第一中间表达和矩阵乘算法算子的第一中间表达,生成矩阵乘算法的第一中间表达,并根据矩阵乘算法的第一中间表达生成矩阵乘算法的第一可执行指令。没有根据矩阵乘算法的第一中间表达在片上缓存中对应的存储空间生成所述矩阵乘算法的第二中间表达,以及根据矩阵乘算法的第二中间表达生成矩阵乘算法的第二可执行指令。
实施例7:
在一种可能的实现方式中,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达。
在一种可能的实现方式中,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,根据分段信息将算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
在一种可能的实现方式中,可以根据分段信息将矩阵加算法的输入数据分段,得到矩阵加算法输入数据的分段数据。即可以根据分段信息将第三矩阵数据进行分段,得到第三矩阵数据分段数据。可以根据分段信息将矩阵加算法的输出数据分段,得到矩阵加算法输出数据的分段数据。即可以根据分段信息将第四矩阵数据进行分段,得到第四矩阵数据分段数据。在分段信息中,针对矩阵加算法的输入数据和输出数据,分段长度和分段数量可以不同,本公开对此不做限定。
在一种可能的实现方式中,所述方法还包括:
据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令,或
根据所述矩阵加算法的第二中间表达生成所述矩阵加算法的第二可执行指令。
在一种可能的实现方式中,可以预设片上系统执行代码和矩阵加算法的中间表达之间的转换库。例如转换库可以利用汇编语言实现。可以为矩阵加算法的第一中间表达和第二中间表达设置不同的转换库。可以利用转换库将矩阵加算法的第一中间表达转换为第一可执行指令,或利用转换库将矩阵加算法的第二中间表达转换为第二可执行指令。
在本实施例中,根据分段信息将矩阵加算法的数据分段得到数据的分段数据,可以根据数据的分段数据确定数据的第一中间表达,可以根据数据的第一中间表达和矩阵加算法算子的第一中间表达,生成矩阵加算法的第一中间表达。通过数据的第一中间表达和算子的第一中间表达得到矩阵加算法的第一中间表达,矩阵加算法在不同的片上系统实现时,不需要设置特定的接口,提高了矩阵加算法和片上系统之间的兼容性,降低了算法开发的难度。
实施例8:
在一种可能的实现方式中,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
根据所述数据的第一中间表达和所述矩阵加算法算子的第一中间表达,生成所述矩阵加算法的第一中间表达。
在一种可能的实现方式中,所述方法还包括:
根据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令。
本实施例与实施例7的不同之处在于,只根据矩阵加算法的数据的第一中间表达和矩阵加算法算子的第一中间表达,生成矩阵加算法的第一中间表达,并根据矩阵加算法的第一中间表达生成矩阵加算法的第一可执行指令。没有根据矩阵加算法的第一中间表达在片上缓存中对应的存储空间生成所述矩阵加算法的第二中间表达,以及根据矩阵加算法的第二中间表达生成矩阵加算法的第二可执行指令。
图4示出根据本公开一实施例的运算装置的框图,如图4所示,所述运算装置包括:
分段数据获取模块10,用于根据分段信息将算法的数据分段,得到所述数据的分段数据,所述数据包括所述算法的输入数据和输出数据;
数据中间表达确定模块20,用于根据所述数据的分段数据生成所述数据的第一中间表达;
算法中间表达确定模块30,用于根据所述数据的第一中间表达和所述算法算子的第一中间表达,生成所述算法的第一中间表达。
在一种可能的实现方式中,所述数据为多维数据,所述分段数据获取模块,包括:
维度分段数据获取子模块,用于根据分段信息将各维度数据分别进行分段,得到各维度数据的维度分段数据;
分段数据获取子模块,用于根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据。
在一种可能的实现方式中,所述算法中间表达确定模块,包括:
存储空间确定子模块,用于确定数据的第一中间表达在片上缓存中对应的存储空间;
第二中间表达确定子模块,用于根据所述存储空间生成所述数据的第二中间表达;
算法中间表达确定子模块,用于根据所述数据的第二中间表达和所述算法算子的第二中间表达,生成所述算法的第二中间表达。
在一种可能的实现方式中,所述装置还包括:
第一可执行指令生成模块,用于根据所述算法的第一中间表达生成所述算法的第一可执行指令,或
第二可执行指令生成模块,用于根据所述算法的第二中间表达生成所述算法的第二可执行指令。
在一种可能的实现方式中,所述分段信息根据片上缓存的大小确定。
在一种可能的实现方式中,所述算法包括卷积算法、池化算法、矩阵乘算法和矩阵加算法中的其中一种或任意组合。
在一种可能的实现方式中,所述卷积算法的输入数据包括输入神经元、权值、偏置,所述卷积算法的输出数据包括卷积输出神经元。
在一种可能的实现方式中,所述输入神经元的各维度数据包括:特征输入通道、输入特征图高度和输入特征图宽度;
所述卷积输出神经元的各维度数据包括:卷积通道、卷积特征图高度和卷积特征图宽度;
所述权值的各维度数据包括:特征输入通道、卷积通道、特征图高度卷积核和特征图宽度卷积核;
所述偏置的各维度数据包括:卷积通道。
在一种可能的实现方式中,所述池化算法的输入数据包括卷积输出神经元,所述池化算法的输出数据包括池化输出神经元。
在一种可能的实现方式中,所述卷积输出神经元的各维度数据包括:卷积通道、卷积特征图高度和卷积特征图宽度;
所述池化输出神经元的各维度数据包括:卷积通道、池化特征图高度和池化特征图宽度。
在一种可能的实现方式中,所述矩阵乘算法的输入数据包括N行C列的第一矩阵数据,所述矩阵乘算法的输出数据包括N行M列的第二矩阵数据,所述分段数据获取模块,包括:
矩阵乘分段数据获取子模块,用于根据分段信息将第一矩阵数据和第二矩阵数据分别分为N段,得到第一矩阵数据的分段数据和第二矩阵数据的分段数据,其中,第一矩阵数据的分段数据每段长度为C,第二矩阵数据的分段数据每段长度为M。
在一种可能的实现方式中,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,所述分段数据获取模块,包括:
矩阵加分段数据获取子模块,用于根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
图5示出根据本公开一实施例的组合处理装置的框图,如图5所示,所述组合处理装置,包括上述的神经网络运算装置,通用互联接口,和其他处理装置。
神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
组合处理装置还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一种可能的实现方式中,本公开还提供神经网络芯片,其包括了上述神经网络运算装置或组合处理装置。
在一种可能的实现方式中,本公开还提供芯片封装结构,其包括了上述芯片。
在一种可能的实现方式中,本公开还提供板卡,其包括了上述芯片封装结构。
在一种可能的实现方式中,本公开还提供电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种运算方法,其特征在于,所述方法包括:
根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
根据所述数据的分段数据确定所述数据的第一中间表达;
确定数据的第一中间表达在片上缓存中对应的存储空间;
根据所述存储空间的地址生成所述数据的第二中间表达;
根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达,
所述数据为多维数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将所述数据各维度数据分别进行分段,得到所述数据各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据,
其中,所述数据的分段数据共用相同的第一中间表达。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令,或
根据所述矩阵加算法的第二中间表达生成所述矩阵加算法的第二可执行指令。
3.根据权利要求1所述的方法,其特征在于,所述分段信息根据片上缓存的大小确定。
4.根据权利要求1所述的方法,其特征在于,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
5.一种运算装置,其特征在于,所述装置包括:
分段数据获取模块,用于根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,所述数据包括所述矩阵加算法的输入数据和输出数据;
数据中间表达确定模块,用于根据所述数据的分段数据确定所述数据的第一中间表达;
存储空间确定模块,用于确定数据的第一中间表达在片上缓存中对应的存储空间;
第二中间表达确定模块,用于根据所述存储空间的地址生成所述数据的第二中间表达;
算法中间表达确定模块,用于根据所述数据的第二中间表达和所述矩阵加算法算子的第二中间表达,生成所述矩阵加算法的第二中间表达,
其中,所述数据为多维数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将所述数据各维度数据分别进行分段,得到所述数据各维度数据的维度分段数据;
根据所述数据的各维度数据的维度分段数据,得到所述数据的分段数据,
所述数据的分段数据共用相同的第一中间表达。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第一可执行指令生成模块,用于根据所述矩阵加算法的第一中间表达生成所述矩阵加算法的第一可执行指令,或
第二可执行指令生成模块,用于根据所述矩阵加算法的第二中间表达生成所述矩阵加算法的第二可执行指令。
7.根据权利要求5所述的装置,其特征在于,所述分段信息根据片上缓存的大小确定。
8.根据权利要求5所述的装置,其特征在于,所述矩阵加算法的输入数据包括N行C列的第三矩阵数据和N行C列的第四矩阵数据,根据分段信息将矩阵加算法的数据分段,得到所述数据的分段数据,包括:
根据分段信息将第三矩阵数据和第四矩阵数据分别分为N段,得到第三矩阵数据的分段数据和第四矩阵数据的分段数据,其中,第三矩阵数据的分段数据每段长度为C,第四矩阵数据的分段数据每段长度为C。
9.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求5-8中任一项所述的运算装置,所述神经网络运算装置用于完成设定的神经网络运算。
10.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求9所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
11.一种神经网络芯片,其特征在于,所述神经网络芯片包括:
如权利要求5-8任一项所述的运算装置;或
如权利要求9所述的神经网络运算装置;或
如权利要求10所述的组合处理装置。
12.一种电子设备,其特征在于,所述电子设备包括:
如权利要求5-8任一项所述的运算装置;或
如权利要求9所述的神经网络运算装置;或
如权利要求10所述的组合处理装置;或
如权利要求11所述的神经网络芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811456746.8A CN109543836B (zh) | 2018-11-30 | 2018-11-30 | 运算方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811456746.8A CN109543836B (zh) | 2018-11-30 | 2018-11-30 | 运算方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109543836A CN109543836A (zh) | 2019-03-29 |
CN109543836B true CN109543836B (zh) | 2021-08-03 |
Family
ID=65852539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811456746.8A Active CN109543836B (zh) | 2018-11-30 | 2018-11-30 | 运算方法、装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109543836B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975639A (zh) * | 2016-07-04 | 2016-09-28 | 北京百度网讯科技有限公司 | 搜索结果排序方法和装置 |
CN108875482A (zh) * | 2017-09-14 | 2018-11-23 | 北京旷视科技有限公司 | 物体检测方法和装置、神经网络训练方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529565B (zh) * | 2016-09-23 | 2019-09-13 | 北京市商汤科技开发有限公司 | 目标识别模型训练和目标识别方法及装置、计算设备 |
CN106611216A (zh) * | 2016-12-29 | 2017-05-03 | 北京旷视科技有限公司 | 基于神经网络的计算方法及装置 |
US11132599B2 (en) * | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
CN107168955B (zh) * | 2017-05-23 | 2019-06-04 | 南京大学 | 利用基于词上下文的字嵌入与神经网络的中文分词方法 |
-
2018
- 2018-11-30 CN CN201811456746.8A patent/CN109543836B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975639A (zh) * | 2016-07-04 | 2016-09-28 | 北京百度网讯科技有限公司 | 搜索结果排序方法和装置 |
CN108875482A (zh) * | 2017-09-14 | 2018-11-23 | 北京旷视科技有限公司 | 物体检测方法和装置、神经网络训练方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109543836A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096309B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN110096310B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN109284815B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
CN109543825B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN109543835B (zh) | 运算方法、装置及相关产品 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN109542837B (zh) | 运算方法、装置及相关产品 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN109543836B (zh) | 运算方法、装置及相关产品 | |
CN109583580B (zh) | 运算方法、装置及相关产品 | |
CN109558564B (zh) | 运算方法、装置及相关产品 | |
CN109543833B (zh) | 运算方法、装置及相关产品 | |
CN109543834B (zh) | 运算方法、装置及相关产品 | |
CN109558943B (zh) | 运算方法、装置及相关产品 | |
CN112052040A (zh) | 处理方法、装置、计算机设备和存储介质 | |
CN112395008A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395009A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353595A (zh) | 运算方法、装置及相关产品 | |
CN111290789B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111338694B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111124497B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111290788B (zh) | 运算方法、装置、计算机设备和存储介质 |
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 |