CN115221102A - 用于优化片上***的卷积运算操作的方法和相关产品 - Google Patents
用于优化片上***的卷积运算操作的方法和相关产品 Download PDFInfo
- Publication number
- CN115221102A CN115221102A CN202110414138.6A CN202110414138A CN115221102A CN 115221102 A CN115221102 A CN 115221102A CN 202110414138 A CN202110414138 A CN 202110414138A CN 115221102 A CN115221102 A CN 115221102A
- Authority
- CN
- China
- Prior art keywords
- tensor
- convolution
- chip
- input
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 66
- 238000003860 storage Methods 0.000 claims abstract description 52
- 230000006870 function Effects 0.000 claims description 52
- 229910052739 hydrogen Inorganic materials 0.000 claims description 13
- 238000010845 search algorithm Methods 0.000 claims description 5
- 108010001267 Protein Subunits Proteins 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 23
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000003062 neural network model Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 125000004429 atom Chemical group 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000007789 gas Substances 0.000 description 1
- 239000001257 hydrogen Substances 0.000 description 1
- 125000004435 hydrogen atom Chemical class [H]* 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
- 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
-
- 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Evolutionary Computation (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Complex Calculations (AREA)
Abstract
本披露公开了用于优化片上***的卷积运算操作的方法和相关产品。该片上***可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个集成电路装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。本披露的方案可以降低内部设备与外部存储装置之间的数据传输量,由此最大程度地减少了由于带宽限制而导致的I/O瓶颈问题,从而可以提高集成电路装置的整体性能。
Description
技术领域
本披露一般地涉及数据计算领域。更具体地,本披露涉及一种用于优化片上***的卷积运算操作的方法、设备和计算机可读存储介质。
背景技术
当下高速发展的人工智能领域通常涉及大量的卷积运算操作。在人工智能领域的研究热点——深度学***台(特别对片上***)的计算能力和访存性能要求就越高。
在现有的卷积运算中,通常会利用中央处理器(“CPU”)或者图像处理单元(“GPU”)等处理器进行运算。然而,由于受处理器内部存储器资源的容量限制,大规模的卷积运算操作带来的庞大数据运算量会导致处理器的片上***与片外***(包括外部存储设备)之间产生频繁的、大量的数据交互。由于处理器与外部存储器之间的输入/输出(“I/O”)总线的带宽有限,这就会导致严重的I/O瓶颈问题,由此造成的数据传输延迟也会极大地降低并行运算时的运算效率。进一步,不仅I/O总线的带宽限制会成为***性能的瓶颈,而且处理器与外部存储设备间大量的I/O访存量也会对计算和功耗开销带来非常不利的影响。因此,优化卷积运算时的数据访存成为提高卷积运算性能的一个非常重要的手段。
发明内容
为了至少解决在上文中所提到的技术问题,本披露提供了一种能够优化片上***的卷积运算操作的解决方案。具体来说,本披露提出了用于确定卷积运算操作中对输入特征图张量数据和卷积核张量数据进行拆分的一种最优方式。通过利用最优的拆分方式对前述两种类型的张量数据进行拆分,本披露的卷积运算显著减少与外部存储设备的数据传输量,从而最大程度地降低总线带宽限制带来的I/O瓶颈问题,进而提高了卷积运算的运算效率。鉴于此,本披露在如下的多个方面中提供前述的解决方案。
在第一方面中,本披露公开了一种用于优化片上***的卷积运算操作的方法,所述方法由一个或多个处理器实现,并且包括:接收待拆分以便执行所述卷积运算操作的输入特征图张量和卷积核张量的张量信息,其中所述输入特征图张量和卷积核张量是多维张量数据,所述张量信息至少包括所述输入特征图张量在其每个维度上的尺寸信息、所述卷积核张量在其每个维度上的尺寸信息以及输入特征图张量和卷积核张量各自的数据规模大小;至少基于所述张量信息和拆分系数来构建代价函数,其中所述代价函数用于确定在所述片上***和片外***之间传递张量数据对在所述片上***执行所述卷积运算操作所产生的代价,并且所述拆分系数用于在所述输入特征图张量和卷积核张量各自的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分;以及通过最小化所述代价函数来确定所述拆分系数的系数值,以便利用所述系数值在所述输入特征图张量和卷积核张量各自的一个或多个维度上进行拆分。
在第二方面中,本披露公开了一种用于优化片上***的卷积运算操作的设备,包括:处理器;存储器,其存储有用于优化片上***的卷积运算操作的程序指令,当所述程序指令由所述处理器执行时,使得所述设备执行上述的方法。
在第三方面中,本披露公开了一种计算机可读存储介质,其上存储有用于优化片上***的卷积运算操作的程序指令,当所述程序指令由处理器执行时,实现上述方法。
在第四方面中,本披露公开了一种用于执行卷积运算的片上***,包括:多个主处理单元,其中每个主处理单元包括多个处理子单元,其中每个处理子单元用于执行对应的张量数据的卷积运算;多个高速缓存,用于缓存张量数据和与卷积运算相关联的结果,其中所述片上***配置成执行输入特征图张量块和卷积核张量块之间的卷积操作,并且所述输入特征图张量块和卷积核张量块是根据上述方法的拆分系数的系数值来进行拆分而获得的。
在第五方面中,本披露公开了一种集成电路装置,包括上述的片上***。
在第六方面中,本披露公开了一种板卡,包括上述的集成电路装置。
通过利用本披露上述的方法、相关设备和计算机可读存储介质,可以确定对参与卷积操作的张量数据的最优拆分方式,从而显著优化卷积运算操作。具体而言,本披露的方案通过构建片上***与片外***间传递张量数据所造成代价的代价函数,并且以最小化该代价函数为目标来选择拆分两种类型张量数据的最优拆分系数。由此,通过基于最优拆分系数执行的卷积运算操作,本披露的方案可以充分利用片上***的片内资源、减少与片外***的外部存储器之间的I/O数据交互,从而实现数据传送和卷积操作的高效并行执行。
进一步,通过结合硬件架构来对大的张量数据进行多个维度的拆分,本披露的方案也简化了卷积运算操作的复杂度并且支持超大张量数据的卷积操作。在一些实施例中,通过上述的代价函数,本披露的方案还可以从多个候选的卷积算法中选择最优的卷积算法,从而实现对卷积运算操作的高效执行。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出神经网络模型中卷积层执行的卷积运算的原理示意图;
图2是示出根据本披露实施例的卷积运算中多维张量拆分的示意框图。
图3是示出根据本披露实施例的用于优化片上***的卷积运算操作的方法的流程图;
图4a-图4c是示出根据本披露多个实施例的输入特征图张量和卷积核张量拆分的示意图;
图5是示出根据本披露实施例的卷积运算中访存操作的架构图;
图6是图5中所示L2高速缓存的示意架构图;
图7是图5中所示L1高速缓存的示意架构图;
图8是示出根据本披露多个实施例的张量块的示意图;
图9是示出根据本披露实施例的执行卷积运算操作的片上***的示意结构框图;
图10是示出根据本披露实施例的用于选择最优卷积运算的方法的流程图;以及
图11是示出根据本披露实施例的一种组合处理装置的结构图;以及
图12是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例附图,对本披露实施例中的技术方案进行清楚和完整地描述。可以理解的是,下文的描述旨在讨论本披露方案的多个示例性实施例,而并非意图对本披露方案的实施例进行穷举式的描述。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露公开的方案保护的范围。另外,尽管本披露在多个实施例中分别描述一个或多个不同的方案,但本领域技术人员根据本披露的教导可以想到将前述的一个或多个方案进行适当的组合,以形成新的方案从而实现进一步的技术效果,而这些新的方案依然落入到本披露公开的保护范围内。
经本披露的发明人研究发现,输入特征图张量和卷积核张量无论按照何种形式拆分以执行卷积操作,并不会显著改变乘法和加法的总计算量。然而,当以特定的形式来拆分上述的张量数据时,会显著改变执行卷积操作的片上***和片外***之间的I/O量。鉴于此,通过优化片上***和片外***之间的I/O量,确定最佳的拆分方式,成为降低卷积运算操作的时延,提高卷积性能的关键所在。
考虑到上述情形,为了改善卷积运算操作(特别是神经网络模型中卷积层中的卷积操作)中的I/O访存性能,提升卷积运算操作的运算效率并显著减小运算的成本,本披露提出了一种用于优化卷积运算操作的方案,其中涉及确定用于对尺寸较大的多维张量数据进行拆分的拆分系数值。在本披露的示例场景中,该多维张量数据可以是执行卷积运算的输入特征图和卷积核。在一个实施场景中,该输入特征图和卷积核可以是四维张量数据。在另一个实施场景中,该输入特征图和卷积核可以是三维张量数据。
就数据规模大且维数多的卷积运算操作而言,本披露提出将大的输入特征图张量和卷积核张量在多个不同维度上分别进行分拆,并将拆分后获得的每个分块(即本披露上下文中的“张量块”)视为该多维张量的一个元素,从而以该元素为基础来进行卷积运算。通过这样的拆分操作,可以将大尺寸卷积运算操作转换成相对小的张量块间的卷积运算问题。由此,本披露的方案可以令大尺寸高维度的卷积运算操作变得更为清晰和明确,从而可以大幅简化卷积运算。进一步,考虑到计算设备的片上***的存储资源和计算资源都相对有限,分块(即“张量块”)卷积也是片上***解决卷积运算问题的一项重要手段。例如,通过预先根据片上***的片上资源(例如存储资源和计算资源)对大尺寸多维度张量进行拆分,片上***就可以每次只进行拆分后得到的两个张量块的卷积操作,从而令卷积运算操作适配于有限的运算资源。为了便于理解本披露的卷积操作,下面首先以图1为例来对神经网络中卷积层执行的卷积运算进行说明性的描述。
图1是示出神经网络模型中例如卷积层处执行的卷积运算的原理示意图。如图所示,神经网络模型的卷积层可以通过对输入特征图应用卷积核来做卷积处理,从而进行特征提取而获得输出特征图。
图中示例性示出了大小为6×6×3的输入特征图,其可以表示3个6×6大小的特征图(即6×6×3的三维张量),分别表示三个不同的特征。此示例中输入特征图的宽度W为6,高度H也为6。输入特征图的数量也可以称为输入通道数C。例如,图中示例输入有3个特征图,也称为3个特征通道。
图1中还示例性示出了大小为2×3×3×3的卷积核(或称滤波器),其可以表示2个3×3×3大小的卷积核(即2个3×3×3的三维张量),每个卷积核又具有3个不同的3×3大小的卷积核,对应输入特征图的3个不同的特征图。立体卷积核的数量可以称为输出通道数Co,在此示例中为2。每个立体卷积核中,二维卷积核的数量可以称为输入通道数C,其与输入特征图的通道数一致。每个二维卷积核具有相应的宽度Kw和高度Kh,在此示例中Kw和Kh均为3。
进一步如图中所示,输入特征图与卷积核的卷积结果输出为2个4×4大小的特征图。此处,输入特征图与下方的立体卷积核的卷积结果得到下方的1个4×4的输出特征图。输出特征图中每个位置上的值由每个输入特征图的对应区块与对应卷积核做二维卷积运算之后再加和得到。例如,图中示出了下方的输出特征图上(0,0)位置的值由输入特征图中黑色立方体框出的区块与下方的立体卷积核进行二维卷积运算得到3个值,再加和得到最终值。为了得到其他位置的输出,可以在输入特征图上移动卷积核的位置,也即卷积核沿输入特征图的滑动操作。在图中示例中,卷积步长(Sx,Sy)为(1,1),由此当横向(即宽度方向)向右或纵向(即高度方向)向下移动一格后做卷积运算,就可以分别得到下方的输出特征图上(0,1)或(1,0)位置的值。
从上面的描述可知,在神经网络模型的一个卷积层中,有一组输入特征图,共包含H×W×C个信息,其中H和W分别是输入特征图的高度和宽度,C是输入特征图的个数,也称为输入通道数。卷积层有C×Co个Kh×Kw大小的卷积核,其中C是输入通道数,Co是输出特征图的个数(或输出通道数),Kh和Kw分别是卷积核的高度和宽度。输出特征图包含Ho×Wo×Co个信息,其中Ho和Wo分别是输出特征图的高度和宽度,Co是输出通道数。此外,在卷积运算中,还会涉及到卷积步长(Sx,Sy),卷积步长的大小会影响输出特征图的尺寸。
以上结合图1对神经网络模型中的卷积运算进行了示例性的描述。应当理解的是图中仅为了示例性的目的将输入特征图和卷积核示为三维张量数据。然而,在本披露方案可应用的场景中,张量数据可以具有更高的维度,例如四维(例如稍后将讨论的N维度)或四维以上,并且张量数据的尺寸更大,例如相对更大的高度和宽度。进一步,为了加速神经网络模型的卷积运算,本披露还提出在片上***布置多个运算单元来进行并行运算,其中每个运算单元可以执行拆分后的张量块(即本披露上下文中的张量子块)之间的卷积运算。在一个实施场景中,前述的运算单元可以包括例如图5中所示出的计算子单元“Core”或图9中所示出的主计算单元和计算子单元。作为示例,每个主计算单元内可以包括多个(例如图9中的4个)卷积专用计算单元(或称卷积单元)来对进一步拆分后的张量子块(即本披露上下文中的原子张量块)的卷积运算,从而可以提升卷积运算的计算速度和效率。下面将结合图2对本披露的拆分操作进行详细描述。
图2是示出根据本披露实施例的卷积运算中多维张量拆分的示意框图。当考虑多个输入特征图时,上述结合图1所描述的卷积运算可以以下面的计算公式(1)来表达:
与图1中所示出的符号具有类似的含义,在公式(1)中,X表示输入特征图张量,其格式可以为N*C*H*W或者N*H*W*C的四维张量,其中N维度表示输入特征图的数目或批尺寸(“batchsize”),H维度为输入特征图的高度,W维度为输入特征图的宽度,C维度为输入特征图的通道总数。进一步,公式(1)中W(非前文的宽度“W”)表示卷积核,其格式可以为Co*C*Kh*Kw或者Co*Kh*Kw*C,其中Kh维度为卷积核高度,Kw维度为卷积核宽度,C维度为输入特征图的通道数,Co维度为输出特征图的通道数。与X相类似,式(1)中Y表示输出特征图张量,其格式可以为N*Co*H*W或者N*H*W*Co的四维张量。除非明确相反地指出,否则下文所使用的与此处相同的符号将具有与此处描述的相同物理含义。
从上述公式(1)可以看出,卷积运算可以视为输入特征图和卷积核的两个张量数据的相乘操作,并且弱化C维度(即在C维度上进行缩并),从而最终将卷积核的Co维度“赋予”到输入。这样的操作是一个解耦与耦合的过程,而卷积核的作用更接近于在输入特征图张量的某些维度上做的一个变换或者映射。
如前所述,对于任意大的输入特征图和卷积核来说,由于片上存储资源的限制,本披露提出对输入特征图和卷积核在一个或多个维度上分别进行拆分,从而令拆分后的输入特征图和卷积核张量块恰好能在片上***进行运算,并且显著提高张量数据在片上和片外的访存性能。如图2左部所示,对于一个输入特征图张量,可以将其沿W、H和C维度拆分成图中下标b所示的输入特征图张量块。类似地,如图2右部所示,对于一个卷积核张量,可以将其沿C、Co和卷积核(即图中的K)维度拆分成图中下标“b”所示的卷积核张量块。通过这样针对于输入特征图张量和卷积核张量在不同维度上的拆分,可以得到图2左部和右部灰色分块所表示的输入特征图张量块和卷积核张量块,也即在考虑了片上***的资源后适于在片上***进行卷积操作的张量数据的基本形状(“base shape”)。为了确定这样的基本形状,本披露提出了如图3中所示出的方法流程。
图3是示出根据本披露实施例的用于优化片上***的卷积运算操作的方法300的流程图。如本领域技术人员,片上***通常是在单个芯片上集成一个完整的***。该***一般可以包括***级芯片控制逻辑模块、微处理器/微控制器CPU内核模块、嵌入的存储器模块以及与片外***进行通信的接口模块等各种模块。在本披露的上下文,片上***可以是支持卷积运算操作的***级芯片,其中包括有执行卷积运算的多个主计算单元和用于存储卷积张量数据和卷积运算结果的存储器。在一个实施场景中,前述的多个主计算单元可以依次连接形成数据传递的回路并且每个主计算单元可以包括多个计算子单元,从而可以实现主计算单元级的一次张量块拆分和计算子单元级的二次张量子块拆分,即多级的张量拆分操作。基于此,可以理解的是本披露的拆分系数也与片上***的主计算单元的数目和每个主单元所包含的计算子单元的数目相关。关于主计算单元和计算子单元的示例性连接和布置,稍后将结合附图进行详细地描述。
进一步,根据不同的应用场景,可以由不同的动作主体来执行方法300。在一个场景中,方法300可以由一个或多个处理器来实现。在具有通用CPU和图形专用处理器GPU的异构***中,方法300也可以由通用CPU来执行,并且获得的结果(即本披露的拆分系数的系数值)可以接着由GPU来用于片上***的张量数据的拆分和卷积操作。
如图3中所示,在步骤S302处,接收待拆分以便执行卷积运算操作的输入特征图张量和卷积核张量的张量信息。如前所述,输入特征图张量和卷积核张量可以是多维张量数据,例如前面结合图1和图2所讨论的三维或四维张量数据。鉴于此,前述的张量信息可以至少包括输入特征图张量在其每个维度上的尺寸信息、卷积核张量在其每个维度上的尺寸信息以及输入特征图张量和卷积核张量各自的数据规模大小。根据不同的场景,这里的尺寸信息可以以比特或字节计。
接着,在步骤S304处,可以至少基于张量信息和拆分系数来构建代价函数。如前所述,在片上***执行卷积操作需要考虑数据在片外和片上的访存性能。鉴于此,本披露提出了用于确定在片上***和片外***之间传递张量数据对在所述片上***执行所述卷积运算操作所产生的代价的代价函数,以便通过最小化该代价函数来找到用于拆分张量数据的拆分系数。这里,拆分系数可以用于在输入特征图张量和卷积核张量各自的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分。在一个实施场景中,当所述输入特征图张量和卷积核张量是三维张量数据时,拆分系数用于在三个维度中的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分。在另一个实施场景中,当输入特征图张量和卷积核张量是四维张量数据时,拆分系数用于在四个维度中的一个或多个维度上对输入特征图张量和卷积核张量进行拆分。
在一个实施场景中,输入特征图张量和卷积核张量的拆分系数可以分别为Nb*Hb*Wb*Cb和Cb*Kh*Kw*Cob,其中所述Nb、Hb、Wb、Cb和Cob分别表示与N、H、W、C和Co维度相对应的拆分系数。基于此,本披露的方法还可以包括至少基于张量信息和拆分系数Nb、Hb、Wb、Cb和Cob来构建代价函数。应当理解的是本披露此处的拆分系数仅仅是示例性的而非限制性的,并且可以根据张量数据的规模和尺寸来进行适当地调整。例如,在一些场景中,当N维度已经通过合理设置而无需进行拆分时,则也可以不必再确定N维度的拆分系数Nb。在例如,当C维度过小时,则也可以忽略在C维度上的拆分。
在又一个实施场景中,构建本披露的代价函数还包括基于输入特征图张量和卷积核张量的主维度的带宽利用率系数来构建代价函数,其中输入特征图张量的主维度是Hb、Wb和Cb中的一个并且输入特征图张量以其主维度来排布(或布局)于片外***上,并且卷积核张量的主维度是Cb或Cob中的一个并且卷积核张量以其主维度来排布于片外***上。这里,带宽利用率系数等于按预定数据长度从片外***加载张量块时的等效带宽与片上***和片外***之间的总带宽之间的比值。
基于上文的描述,本披露的最小化(以“min”表示)代价函数可以根据不同的应用场景和要求来表达为如下的多种形式:
在上面的式(2)~式(5)中,相同的符号具有相同的物理含义。进一步,其中表示向上取整操作,Weightsize表示卷积核的数据规模大小,Inputsize表示输入特征图的数据规模大小。此处,数据规模可以以字节或比特计。另外,γ()表示带宽利用率系数,其等于按预定数据长度从所述片外***加载张量块时的等效带宽与片上***和片外***之间的总带宽之间的比值。以式中的γ(Cb)为例,其表示作为主维度的Cb的等效带宽与全带宽(“full bandwidth”)之间的比值,其中Cb的等效带宽是指以Cb的数据长度逐段加载完待运算的张量数据所用时间的倒数。进一步,全带宽可以指片上***和片外***之间数据传输的总带宽,它近似等于一次性连续地将前述待运算的张量数据从片外***加载到片上***时所用时间的倒数。
在上述的式(2)中,等式项 是当沿H和W维度构成的平面进行拆分时由于边界数据的重叠所造成的代价项。具体来说,在拆分H和W维度构成的平面时,拆分后针对边界处加载数据会产生重叠(“overlap”)现象,其是由于卷积核在HW平面上进行滑动执行卷积运算时造成的。鉴于此,每次加载输入特征图张量数据时,需要在H维度和W维度上多加载一部分数据。此处加载张量数据的大小与卷积核的尺寸相关联。例如,当输入特征图张量具有结合图2所描述的基本形状(Hb,Wb,Cb)时,则需要加载的张量数据大小为(Hb+kh-1,Wb+kw-1,Cb)。这里,kh和kw分别表示卷积核的高度和宽度,并且基本形状也即本披露旨在将张量数据拆分成的形状,即张量块。
当忽略上式(2)中的代价项时,则可以得到如式(3)中所表达的代价函数。进一步,当考虑在N维度上进行拆分时,则式(3)中的代价项可以引入从而得到如式(4)中所表达的代价函数。在一个实施场景中,当进一步考虑前述的带宽利用率系数时,则可以在代价项中引入“γ(Cb)”,从而得到如式(5)中所表达的代价函数。
在如上构建代价函数后,在步骤S306处,通过最小化所述代价函数来确定所述拆分系数的系数值,以便利用所述系数值在所述输入特征图张量和卷积核张量各自的一个或多个维度上进行拆分。
在一个实施例中,可以通过最小化代价函数来确定如上所述的拆分系数Nb、Hb、Wb、Cb和Cob的系数值,以便基于所述系数值将所述输入特征图张量和卷积核张量分别拆分成对应的多个张量块。
在一个实施例中,在通过最小化代价函数来确定拆分系数的系数值中,本披露的方法还可以包括构建用于最小化代价函数的搜索空间,以便利用所述搜索空间来确定所述拆分系数的系数值。在一个实现场景中,构建用于最小化所述代价函数的搜索空间可以包括对片上***的高速缓存(又称高速缓冲存储器或cache,如图5中504和506所示出的)进行划分;以及根据划分结果来构建所述搜索空间。在本披露的方案中,高速缓存被布置用于存储拆分后的张量块和对拆分后的张量块执行卷积操作所获得的卷积结果。与之相对应,片外***可以布置有全局存储器,该全局存储器可以通过I/O接口与片上高速缓存传递包括张量块在内的各种类型数据。在一个场景中,此处的全局存储器可以是动态随机存储器(如图5中502所示出的“DRAM”),例如双倍速率同步动态随机存储器(“DDR”)。
在一个实施场景中,上述片上***可以包括多级高速缓存,并且本披露的方法可以包括:根据用于执行卷积操作的预定卷积算法,建立与每一级高速缓存关联的搜索子空间。在一个实施例中,此处的预定卷积算法可以包括多级加农(“cannon”)算法。鉴于此,在一个场景中,前述的多级高速缓存包括一级高速缓存和二级高速缓存,从而搜索空间可以包括与一级和二级高速缓存分别关联的第一和第二搜索子空间。在该情形下,本披露的方法还可以包括:根据一级高速缓存中的多个第一高速缓冲区(“buffer”)的设置来建立第一搜索子空间,其中多个第一高速缓冲区用于存储拆分所述张量块所获得的张量子块和对所述张量子块执行卷积操作所获得的中间运算结果。
进一步,本披露的方法还可以根据二级高速缓存的多个第二高速缓冲区的设置来建立第二搜索子空间,其中多个第二高速缓冲区用于存储拆分张量子块所获得的原子张量块和对原子张量块执行卷积操作所获得的中间运算结果。由此,在使用“两级”加农算法的场景中,“第一级”加农算法涉及张量子块并且通过对使用本披露的拆分系数的系数值所拆分的张量块进行进一步拆分可以获得该张量子块。相对应地,“第二级”加农算法涉及原子张量块,并且其可以通过对张量子块进行进一步拆分而获得。
在一个实施例中,确定前述的拆分系数的系数值可以包括确定用于对搜索空间进行搜索的搜索步长。在一个实施场景中,搜索步长可以包括分别与N、H、W、C和Co维度相关联的搜索步长Δn、Δh、Δw、Δc和Δco。在确定前述的搜索步长后,可以利用搜索算法在前文建立的搜索空间中以搜索步长进行搜索,以便最终确定最小化代价函数的拆分系数的具体系数值。
在一个实施例中,为了确定上文的搜索步长的具体值,本披露前文的张量信息中还可以包括参与卷积操作的片上***的主计算单元(如图9中所示出的)的数目、每个主计算单元内的处理子单元(如图5中所示出的“Core”)的数目和从所述片外***加载达到最高带宽利用率的数据量大小。通过利用张量信息中包括的前述信息项,本披露的方法提出至少根据主计算单元的数目、处理子单元的数目和前述数据量大小来确定搜索步长。
附加地或替代地,在一个实施例中,为了确定上文的搜索步长的具体值,本披露前文的张量信息中还可以包括输入特征图张量和卷积核张量在片外***中的存储格式和数据布局信息,其中所述存储格式包括以对应的主维度来进行数据存储并且所述数据布局信息包括张量在各个维度上的摆放信息。例如,在本披露的实施例中,输入特征图张量的维度在四维时可以表征为N*H*W*C,该维度也代表了数据在存储器中的存储或摆放顺序。可以理解,虽然多维数据具有多个维度,但是因为存储器的布局始终是一维的,因此多维数据与存储器上的存储顺序之间存在对应关系。多维数据通常被分配在连续的存储空间中,也即可以将多维数据进行一维展开,按顺序存储在存储器上。例如,可以按照低维度(例如N*H*W*C中的C维度)优先方式,进行顺序存储。相邻的维度是指多维数据的维度信息表示中相互紧挨着的维度,例如,W和C相邻,相邻的维度也可以称为连续的维度。
以上结合图3对本披露的用于优化片上***的卷积运算操作的方法进行了详细了描述。利用本披露的方法,可以简化片上***的卷积运算的复杂度,克服片上***与片外***之间IO交互的瓶颈,从而提升片上***执行卷积运算的整体性能。
图4a~图4c是示出根据本披露多个实施例的输入特征图张量和卷积核张量拆分的示意图。在对张量数据进行拆分的过程中,当不考虑对卷积核进行拆分时,则可以将卷积核看作是一个维度,C维度作为一个维度,Co维度作为一个维度,并且输入的H维度和W维度分别作为单独的一个维度。基于这样的设定,图4a~图4c中分别示出拆分后的基本形状。具体来说,图中所示出的拆分维度为H*W*C和Co*K*C,K表示卷积核。这里,输入特征图张量仅用H*W*C三个维度来表示,即默认N维度不需要拆分或已经进行了适当的拆分。当片上***存在四个主计算单元时,此时拆分主要考虑将卷积核张量在Co和C维度上进行拆分(如图4c所示)。对于输入特征图张量,在考虑了在主计算单元上执行拆分后的卷积运算,可以在H或W维度之一上进行拆分,例如图4a示出的固定H维度而在W维度上进行拆分,或者图4b示出的固定W维度,在H维度上进行拆分。
图5是示出根据本披露实施例的卷积运算中访存操作的架构图。如图5中所示,本披露所公开的硬件架构可以包括片上***和片外***。图中为了简化的目的,片外***中仅示例性示出全局存储器DRAM502。在执行卷积运算中的张量块的加载过程中,DRAM可以通过DDR接口来与L2高速缓存504进行数据传递,例如将待执行卷积运算操作的张量块拆分成张量子块,并且加载到L2高速缓存504中。在一个实施例中,L2高速缓存504可以是片上***的共享存储器(“Shared Memory”),其可以由多个主计算单元来共享。
进一步,L2高速缓存504可以与多个L1高速缓存506进行数据传递,以便将张量子块再次拆分后得到的原子张量块相应地传输到L1高速缓存506。在本披露的上下文中,原子张量块可以视为计算子单元所支持的卷积运算操作的最小张量块单元。此后,计算核(“Core”)508(也即本披露上下文中的计算子单元)可以从L1高速缓存506获取原子张量块,以便执行原子张量块的卷积运算操作。在该场景下,L1高速缓存506可以视为各个计算核508的私有存储器。根据本披露的方案,多个计算子单元可以形成一个计算主单元,例如图5中的四个计算核508就可以构成本披露的一个计算主单元。
基于前文描述和图5所示,本领域技术人员可以理解本披露的片上***可以包括多级高速缓存。由此,例如图5中示出的L2高速缓存504可以视为一级高速缓存,并且L1高速缓存506可以视为二级高速缓存。基于此,如前所述,可以根据用于执行卷积运算操作的预定卷积算法,建立与每一级高速缓存关联的搜索子空间。就本例而言,可以根据一级高速缓存(例如L2高速缓存504)和二级高速缓存(例如L1高速缓存506)来建立对应的第一搜索子空间和第二搜索子空间。如前所述,通过建立与存储空间相关联的搜索空间(也即针对于拆分系数的一种或多种限制条件),本披露的方案可以在该搜索空间内以搜索步长进行搜索,直至确定拆分系数的最优值。
为了更好的理解本披露的搜索空间,下面将以图6和图7为例来讨论基于两级高速缓存来构建本披露的搜索空间。如图6和图7所示,两级高速缓存分别为L2高速缓存和L1高速缓存(也即图5中所示出的L2高速缓存和L1高速缓存),并且以下以采用两级加农(“cannon”)算法来加速卷积运算操作。
首先,可以在L2高速缓存504上针对输入特征图张量和卷积核张量分别设立三块独立的高速缓冲区(“buffer”),即图6中所示出的buffer1、buffer2和buffer3。就使用目的而言,buffer1可以用于接收其它主计算单元发送来的张量数据(如张量子块),buffer2可以从全局存储器(例如图3中所示出的DRAM)加载张量数据,而buffer3提供给主计算单元以用于向L1高速缓存传递张量数据(如原子张量块),以便由计算子单元进行实时计算并且在L1高速缓存处保存卷积操作的中间结果。基于前述的布置,并且考虑将张量数据按基本形状和一级加农算法分别在HW平面(由H维度和W维度构成)、C和Co维度上做P1份的拆分,从而拆分成P1个张量子块,则在该情形下L2高速缓存上的限制条件(也即与式(3)中的代价函数相对应的搜索空间)可以通过下式(6)来表达:
其中dw(X)表示X中最小数据元素的大小(以比特或字节计)Spacesmemory表示L2高速缓存504的存储容量。根据不同的实施方式,式(6)中可以表示在HW平面中沿H维度或W维度之一进行P1份的拆分。上述式(6)表达的即是前述的第一搜索子空间,并且本披露在满足式(6)不等式的条件下搜索合适的Hb、Wb、Cb和Cob,即拆分系数的系数值。另外,需要注意的是上述“P1”还可以与片上***的主计算单元的设置相关。例如,当片上***包括4个主计算单元时,则此时“P1”取值为2,即在HW平面、C和Co维度上分别将每个张量块拆分成2份,从而将一个张量块拆分成四个张量子块。类似地,当片上***包括9个主计算单元时,则此时“P1”取值为3,即在前述多个维度上分别将每个张量块拆分成3份,从而将一个张量块拆分成九个张量子块。
在如上操作以确定第一搜索子空间后,本披露根据“两级”加农算法在L1高速缓存上设置多个buffer,以确定本披露的第二搜索子空间。为此,本披露的方案提出在L1高速缓存上,可以为输入特征图张量和卷积核张量分别设立两块独立的buffer,即图7中所示出的buffer1和buffer2,以用于原子张量块(其经由对张量子块进行拆分而获得)的卷积运算操作的流水运算。就流水运算而言,buffer1和buffer2二者可以交替执行接收原子张量块和参与卷积运算操作。接着,为驻留在L1高速缓存上的卷积结果设置一块独立的buffer,即图7中所示出的buffer3,以用于存储执行原子张量块间的卷积运算操作所获得的中间结果。
与前述第一搜索子空间的确定类似,在第一级加农算法的基础上(即在不同的维度上将张量块拆分成张量子块),此处再根据第二级加农算法分别在HW平面、C和Co维度上将前述拆分后的张量子块中的每块进一步拆分P0份,以得到本披露的原子张量块。基于此,L1高速缓存上的限制条件可以通过下式(7)来表达:
上式(7)中,dw(C)表示卷积运算结果中最小数据元素的大小(以比特或字节计,Spacepmemory表示L1高速缓存506的存储容量。进一步,当前述的(6)式中的表示在HW平面中沿H维度进行P1份的拆分,则上式(7)中表示在HW平面中沿W维度进行P0份拆分。相对应地,当前述的(6)式中的表示在HW平面中沿W维度进行P1份的拆分,则上式(7)中表示在HW平面中沿H维度进行P0份拆分。
可以理解的是上式(7)即本披露所描述的第二搜索子空间,并且本披露在满足式(6)和式(7)的不等式条件下搜索合适的Hb、Wb、Cb和Cob,从而获得合适的拆分系数值。另外,需要注意的是与前述的“P1”相类似,“P0”也可以与片上***的计算子单元的设置相关。例如,当片上***的每个主计算单元包括4个计算子单元时,则此时“P0”取值为2,即在HW平面、C和Co维度上分别将每个张量子块拆分成2份,从而将一个张量子块拆分成四个原子张量块。类似地,当每个主计算单元包括9个计算子单元时,则此时“P0”取值为3,即在HW平面、C和Co维度上分别将每个张量子块拆分成3份,从而将一个张量子块拆分成九个原子张量。
上面结合图6和图7对本披露的搜索空间进行了详细地描述。需要理解的是上述的描述仅仅是示例性的而非限制的,本领域技术人员根据本披露的教导也可以想到根据片上***的存储布置和数据量规模大小来建立相适配的搜索空间。例如,以式(5)所表示的代价函数为例,可以根据片上***存储布置来设置如下的搜索空间:
NbxHbxWbx(Cobxbwoutput+Cbbwinput)<MAX_NRAM_SIZE (8)
KhKwCobxCbbwfilter<MAX_WRAM_SIZE (9)
上式中,bwinput/bwfilter/bwoutput分别表示输入特征图张量/卷积核张量/输出特征图张量的位宽(例如以比特或字节计)。进一步,上式中MAX_NRAM_SIZE表示神经元存储单元(Neuron RAM,NRAM)上可用的最大存储空间,这里NRAM可以用于存储输入特征图张量和输出特征图张量;MAX_WRAM-SIZE表示权重存储单元(Weight RAM,WRAM)上可用的最大存储空间,这里WRAM可以用于存储卷积核张量;MAX_SRAM_SIZE表示片上存储张量子块的最大存储空间。
可以看出,上式(8)、(9)和(10)分别表示NRAM、WRAM和SRAM上的限制条件(也即本披露所描述的搜索空间),其中式(10)相当于前述针对L2高速缓存所建立的第一搜索空间,而“式(8)+式(9)”相当于前述针对L1高速缓存所建立的第二搜索空间。式(10)中分母上的“2”由考虑主计算单元间的加农算法后的拆分方式所确定。对应地,式(8)和(9)中Cb没有除以2是旨在为计算子单元输入特征图和卷积核的原子张量做乒乓(ping-pang)流水而设计的。具体来说,当主计算单元内仅拆分Cob或者HW平面而没有拆分Cb时,经加农算法拆分之后在主计算单元内可以是Cb/2。为了实现计算子单元上的流水,还需要有“(Cb/2)×2”的存储空间,因此就变成式(8)和(9)中的Cb。
上式中下标“bx”表示单个计算子单元上的可计算维度。该可计算维度与主计算单元下的任务拆分有关。例如,当在主计算单元内对Co维度进行拆分,则Cobx表示为(Cob/2)的四分之一,而其他维度和主计算单元内的基本形状保持不变;而当在主计算单元内对N维度进行拆分,则Nbx为Nb的四分之一。同理,对Hb和Wb也可以采用同样的处理。可以看出,对于单个主计算单元内部的划分,本领域技术人员可以根据实际应用来进行,例如可以在N维度或者Co维度上进行拆分,以避免H和W维度上再次被拆分。需要注意的是如果在Co维度再次进行拆分的话,则此时需要Cob尺寸尽量的大。
下面将对本披露的用于在搜索空间内执行搜索的搜索步长进行描述。如前所述,本披露的搜索步长可以与输入特征图张量和卷积核张量在片外***中的存储格式和数据布局、片上***的主计算单元和主计算单元内的计算子单元的数目、从所述片外***加载达到最高带宽利用率的数据量大小相关。
就本披露的输入特征图张量和卷积核张量的存储和数据布局来说,其可以分别布置成具有如前所述的N*C*H*W(N维度为最高维度而W维度为最低维度)和Co*KH*KW*C(Co维度为最高维度而C维度为最低维度)的数据布局格式。替代地,输入特征图张量和卷积核张量还可以布置成N*H*W*C(N为最高维度而C为最低维度)和C*KH*KW*Co(C为最高维度而Co为最低维度)的数据布局格式。进一步,张量数据在片外的存储可以是按行优先存储(即行主序)。以N=1,C=64,H=5和W=4且行主序为例,由于W维度为最低维度,因此首先沿W维度逐行存储4个元素,并且在存储5行元素后完成C=0的数据布局。按此方式进行元素存储,直到完成C=63的数据布局。
当考虑L2高速缓存或者L1高速缓存每次从DDR加载数据时,假定一次加载的数据规模大小为“L”时能达到最高的带宽利用率(即前述的逐段加载)。在一个实施场景中,该“L”可以具有等于一个缓存行(“cacheline”)或该缓存行整数倍的数据长度(例如以字节计)。
综合考虑以上所描述的内容和各维度在片上的拆分情况,在一个应用场景中,当使用两级加农算法来执行卷积运算时,可以得到如下N、H、W、C和Co各维度上的搜索步长Δn、Δh、Δw、Δc和Δco的示例求解表达式,其中scm(X,Y)表示求X和Y的最小公倍数:
在行主序,输入特征图张量内存布局(“Memory Layout”)为N*C*H*W(N维度为最高维度),卷积核张量内存布局为Co*KH*KW*C(Co为最高维度):
Δn=1(考虑在片上***没有对N维度进行拆分)
Δh=P1(考虑在第一级加农算法时H维度上拆分P1份)
Δw=scm(P0,L)(考虑在第二级加农算法时W维度上拆分P0份)
Δc=scm(P1×P0,L)(考虑到卷积核张量中的C维度在最低维度,因此搜索步长是L的倍数;并且C维度有拆分,因此搜索步长还是P1×P0的倍数)
Δco=P1×P0(考虑到卷积核张量中Co维度在最高维度,并且有拆分)
在一个实施场景中,当本例中上述的卷积核张量内存布局为C*KH*KW*Co(Co为最低维度),则此时由于Co维度在最低维度,因此Δco=L,而C维度在最高维度,因此Δc=P1×P0。
在行主序、内存布局(“Memory Layout”)为N*H*W*C(N为最高维度),卷积核张量内存布局为C*KH*KW*Co(Co为最低维度):
Δn=1(考虑在片上***没有对N维度进行拆分)
Δh=P0(考虑在第二级加农算法时H维度上拆分P0份)
Δw=P1(考虑在第一级加农算法时W维度上拆分P1份)
Δc=scm(P1×P0,L)(考虑到输入特征图张量中的C维度在最低维度,搜索步长是L的倍数;并且C维度有拆分,因此搜索步长还是P1×P0的倍数)
Δco=P1×P0(考虑到卷积核张量中的Co在最低维度,并且有拆分);
在一个实施场景中,当本例上述的卷积核张量内存布局为Co*KH*KW*C,此时C为最低维度而Co维度在最高维度,因此Δc=scm(P1×P0,L),Δco=P1×P0。
上文以两级加农算法为例,示例性地描述了本披露确定搜索步长的过程。可以理解的是上述的描述仅仅是示例性的而非限制性的,本领域技术人员根据上述的描述也可以选择使用不同的卷积算法,从而获得相对应的搜索步长。该不同的卷积算法例如可以通过不同的拆分方式来获得。以上文中的加农算法为例,当本领域技术人员仅在主计算单元层级执行加农算法而在计算子单元层级不执行加农算法时(即仅执行一级的加农算法),则形成不同于本例中二级加农算法的新的卷积算法,从而可以建立新的搜索空间并且基于此确定新的搜索步长。当存在前述多个新的卷积算法时,本披露还提出算法择优方案,稍后将结合图10来进行详细描述。
进一步,基于上面的描述,本领域技术人员也可以理解本披露可以基于以下因素中的一项或多项来确定搜索长步,该因素例如可以包括参与卷积运算操作的主计算单元的数目(其例如可以与上述“P1”值的大小相关)、每个所述主计算单元内的计算子单元的数目(其例如可以与上述“P0”值的大小相关)和从所述片外***(例如“DDR”)加载达到最高带宽利用率的数据规模大小(其例如与上述的“L”的值相关)以及张量数据的存储格式和数据布局。
在获取上述的搜索步长后,本披露的方法可以采用合适的搜索算法,以上述确定的搜索步长在搜索空间中搜索最优的拆分系数Nb、Hb、Wb、Cb和Cob,以便令本披露的代价函数的函数值最小(也即本披露上下文所述的“最小化”)。关于本披露可使用的搜索算法,其可以包括但不限于全局搜索、邻域搜索和遗传算法等各种最优化算法。
仅为了示例的目的,下面以伪代码的形式示出通过全局搜索(“GlobalSearch”)算法来获得最终的张量块的拆分系数:
GlobalSearch:
其中上面示例性伪代码中的U1为满足L1高速缓存限制条件的集合(即本披露上下文中的第二搜索子空间,如式(7)所示)并且U2为满足L2高速缓存限制条件的集合(即本披露上下文中的第一搜索子空间,如式(6)所示)。
图8是示出根据本披露多个实施例的张量块的示意图。如图中所示,在如上确定本披露的最优拆分系数Nb、Hb、Wb、Cb和Cob后,可以将输入特征图张量拆分成如801所示出的输入特征图张量块。进一步,可以将卷积核张量拆分成如图802所示出的卷积核张量块。基于输入特征图张量块和卷积核张量块之间的卷积操作,如图中的所指代的,则可以获得如803所示出的输出特征图张量块。需要注意的是此处为了简化图示和说明,并没有示出张量数据在N维度上的拆分。如前所述,根据本披露的方案,还可以以Nb来在N维度上进行拆分,以便进一步优化片上和片外的数据交互。进一步,在确定了张量块的大小后,本领域技术人员可以根据选择的卷积算法来对张量块进行额外的拆分,以适于片上***的卷积操作。例如,在本披露的例子中,当使用根据两级加农算法所确定的拆分系数值来获得张量块之后,可以根据两级加农算法的拆分规则对张量块进行进一步的拆分,以得到本披露在前所描述的张量子块和原子张量块,从而可以在计算子单元处执行原子张量块间的卷积操作。
上文结合图1-图8对本披露的用于优化片上***的卷积运算操作的方法进行了描述。通过利用本披露的方法,可以确定用于拆分输入特征图张量和卷积核张量的最优拆分系数。由此,当使用最优的拆分系数对前述的两类张量数据进行拆分以用于卷积操作时,其所造成的数据传输方面(例如I/O开销)的代价最小。基于此,执行卷积运算操作的硬件平台将以更为高效和计算成本更低的方式来进行卷积运算。
图9是示出根据本披露实施例的执行卷积运算操作的片上***的示意结构框图。可以理解的是,图9中所示片上***900可以是图5中所示片上***的一种具体实现,因此关于图5中片上***所做描述也同样适用于此处的描述。
如图9中所示,片上***900可以包括多个主计算单元(“Cluster”)901,如图中示例性示出的四个。该四个主计算单元901可以通过交叉开关(Crossbar)902互连。在一个实施例中,如图中所示,每个主计算单元可以包括多个计算子单元903(也即图5中所示出的“Core”),如图中示例性示出的四个。进一步示出的是L2高速缓存904和L1高速缓存905,其中L2高速缓存904可以由片上***的多个主计算单元来共享,并且可以用于与片外***进行数据交互;其中L1高速缓存905可以视为每个计算子单元的私有存储器。在卷积运算的场景中,所示片上***的计算子单元可以对拆分后的张量数据(例如本披露上下文中的原子张量块)执行卷积运算操作,从而可以获得卷积运算结果。在一个实施场景中,计算子单元执行原子张量块所获得的中间运算结果可以作为部分和驻留于L1高速缓存上,并且例如可以在C维度上循环运算完成得到最终的计算结果后,将最终计算结果传递到片外的存储器,例如DDR上。
上面结合附图对本披露的优化方案及其结合硬件架构的应用进行了详细地描述,下面将讨论本披露的算法择优方案。这里,算法择优方案即是指从多个适用于卷积运算操作的算法中选择出最优的算法来执行卷积运算操作。具体来说,假定存在多个候选的、实现卷积运算操作的算法。这些算法个数是有限的,从而可以构成一个有限的算法空间F={f0,f1,f2,……,fn}。接着,可以在该算法空间内设置全局的优化目标为下式:
其中N,H,W,C,Co;Nb,Hb,Wb,Cb,Cob具有与前文多个表达式中的对应各项相同的含义。基于上述场景,下面结合图10来对如何选取最优的卷积算法进行详细地描述。
图10是示出根据本披露实施例的用于选择最优卷积算法的方法1000的流程图。如图10中所示,在步骤S1002处,可以确定代价函数,该代价函数的确定方式可以是前文结合图3描述的方式,此处不再赘述。
接着,在步骤S1004处,可以确定多个卷积算法(即上文的多个“候选算法”)中的每个卷积算法的搜索空间,并且在步骤S1006处,确定该搜索空间的搜索步长。该搜索空间和搜索步长的确定方式可以参照前文,此处不再赘述。接着,在步骤S1008处,利用搜索算法(例如前述的全局搜索、邻域搜索或遗传算法),并且以确定的搜索步长进行搜索,从而在步骤S1010处可以确定每个卷积算法所对应的拆分系数(例如针对于第i个算法的拆分系数Nbi,Hbi,Wbi,Cbi和Cobi)。接着,可以在步骤S1012处计算该每个卷积算法的代价函数值,并且在S1014步骤处确定具有最小代价函数值的卷积算法。由此,在步骤S1016处,选择具有最小代价函数值的卷积算法为最优的卷积算法,并且使用其对应的拆分系数来对多维的张量数据进行拆分操作。
通过本披露的上述算法择优方案,可以从多个用于卷积操作的算法中选择出最优的一个算法。该选择出的算法能够以最小的运算代价来实现对张量块的卷积操作,从而提高了卷积操作的运算效率并减小了计算成本。进一步,当在片上***利用前述的最优算法进行卷积操作时,也最大化片上***的资源使用,从而充分发挥片上***的运算能力。
图11是示出根据本披露实施例的一种组合处理装置1100的结构图。如图11中所示,该组合处理装置1100包括计算处理装置1102、接口装置1104、其他处理装置1106和存储装置1108。根据不同的应用场景,计算处理装置中可以包括一个或多个集成电路装置1110,该集成电路装置可以包括本披露上下文中描述的片上***,该片上***用于执行张量数据的卷积运算操作。在一个实施场景中,该张量数据可以包括输入特征图张量和卷积核张量。进一步,通过本披露上下文中所讨论的优化方案,前述的输入特征图张量和卷积核张量可以经由拆分系数进行拆分,从而获得适用于片上***执行卷积操作的张量块。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作,例如本披露的卷积操作。在示例性的应用中,该计算处理装置可以实现为(或包括)单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图12中示出的芯片1202)。在一种实现中,该芯片是一种***级芯片(System on Chip,SoC),并且集成有一个或多个如图11中所示的组合处理装置,并且其可以配置成执行多维张量数据间的卷积运算操作。该芯片可以通过对外接口装置(如图12中示出的对外接口装置1206)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图12对该板卡进行详细地描述。
图12是示出根据本披露实施例的一种板卡1200的结构示意图。如图12中所示,该板卡包括用于存储数据的存储器件1204,其包括一个或多个存储单元1210。该存储器件可以通过例如总线等方式与控制器件1208和上文所述的芯片1202进行连接和数据传输。进一步,该板卡还包括对外接口装置1206,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1212(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图11和图12的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。在一个实施场景中,该电子设备或装置可以配置成执行本披露上下文所讨论的卷积运算操作,并且参与卷积运算的张量数据是经本披露的最优拆分系数拆分后所得到的张量块数据。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
还应当理解,本披露示例的执行指令的任何模块、单元、组件、服务器、计算机、终端或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除的和/或不可移除的)例如磁盘、光盘或磁带。计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性,可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
虽然本发明的实施方式如上,但所述内容只是为便于理解本发明而采用的实施例,并非用以限定本发明的范围和应用场景。任何本发明所述技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (18)
1.一种用于优化片上***的卷积运算操作的方法,所述方法由一个或多个处理器实现,并且包括:
接收待拆分以便执行所述卷积运算操作的输入特征图张量和卷积核张量的张量信息,其中所述输入特征图张量和卷积核张量是多维张量数据,所述张量信息至少包括所述输入特征图张量在其每个维度上的尺寸信息、所述卷积核张量在其每个维度上的尺寸信息以及输入特征图张量和卷积核张量各自的数据规模大小;
至少基于所述张量信息和拆分系数来构建代价函数,其中所述代价函数用于确定在所述片上***和片外***之间传递张量数据对在所述片上***执行所述卷积运算操作所产生的代价,并且所述拆分系数用于在所述输入特征图张量和卷积核张量各自的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分;以及
通过最小化所述代价函数来确定所述拆分系数的系数值,以便利用所述系数值在所述输入特征图张量和卷积核张量各自的一个或多个维度上进行拆分。
2.根据权利要求1所述的方法,其中所述输入特征图张量和卷积核张量是三维张量数据,或所述输入特征图张量和卷积核张量是四维张量数据,其中当所述输入特征图张量和卷积核张量是三维张量数据时,所述拆分系数用于在三个维度中的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分,并且当所述输入特征图张量和卷积核张量是四维张量数据时,所述拆分系数用于在四个维度中的一个或多个维度上对所述输入特征图张量和卷积核张量进行拆分。
3.根据权利要求2所述的方法,其中所述输入特征图张量和卷积核张量是四维张量数据,其中所述输入特征图张量为N*H*W*C的四维张量并且卷积核张量为C*Kh*Kw*Co的四维张量,其中N维度表示输入特征图的数目、H维度表示输入特征图的高度、W维度表示输入特征图的宽度、C维度表示输入特征图的通道数、Kh维度表示卷积核的高度、Kw维度表示卷积核的宽度,并且Co维度表示输出特征图的通道数。
4.根据权利要求3所述的方法,其中所述输入特征图张量和卷积核张量的拆分系数为Nb*Hb*Wb*Cb和Cb*Kh*Kw*Cob,其中所述Nb、Hb、Wb、Cb和Cob分别表示与N、H、W、C和Co维度相对应的拆分系数,所述方法包括:
至少基于所述张量信息和拆分系数Nb、Hb、Wb、Cb和Cob来构建所述代价函数;以及
通过最小化所述代价函数来确定所述拆分系数Nb、Hb、Wb、Cb和Cob的系数值,以便基于所述系数值将所述输入特征图张量和卷积核张量分别拆分成对应的多个张量块。
5.根据权利要求4所述的方法,其中构建所述代价函数还包括基于所述输入特征图张量和卷积核张量的主维度的带宽利用率系数来构建所述代价函数,其中所述输入特征图张量的主维度是Hb、Wb和Cb中的一个并且所述输入特征图张量以其主维度来排布于片外***上,并且所述卷积核张量的主维度是Cb或Cob中的一个并且卷积核张量以其主维度来排布于片外***上,所述带宽利用率系数等于按预定数据长度从所述片外***加载张量块时的等效带宽与片上***和片外***之间的总带宽之间的比值。
6.根据权利要求1-5的任意一项所述的方法,其中在通过最小化代价函数来确定所述拆分系数的系数值中,所述方法包括构建用于最小化所述代价函数的搜索空间,以便利用所述搜索空间来确定所述拆分系数的系数值。
7.根据权利要求6所述的方法,其中构建用于最小化所述代价函数的搜索空间包括:
对所述片上***的高速缓存进行划分;以及
根据划分结果构建所述搜索空间,其中所述高速缓冲区被布置用于存储拆分后的张量块和对所述拆分后的张量块执行卷积操作所获得的卷积结果。
8.根据权利要求7所述的方法,其中所述片上***包括多级高速缓存,并且所述方法包括:
根据用于执行卷积操作的预定卷积算法,建立与每一级高速缓存关联的搜索子空间。
9.根据权利要求8所述的方法,其中所述多级高速缓存包括一级高速缓存和二级高速缓存,并且所述搜索空间包括第一搜索子空间和第二搜索子空间,所述方法包括:
根据所述一级高速缓存中的多个第一高速缓冲区的设置来建立所述第一搜索子空间,其中所述多个第一高速缓冲区用于存储拆分所述张量块所获得的张量子块和对所述张量子块执行卷积操作所获得的中间运算结果;以及
根据所述二级高速缓存的多个第二高速缓冲区的设置来建立所述第二搜索子空间,其中所述多个第二高速缓冲区用于存储拆分所述张量子块所获得的原子张量块和对所述原子张量块执行卷积操作所获得的中间运算结果。
10.根据权利要求6所述的方法,其中通过最小化代价函数来确定所述拆分系数的系数值包括:
确定用于对所述搜索空间进行搜索的搜索步长,其中所述搜索步长包括分别与N、H、W、C和Co维度相关联的搜索步长Δn、Δh、Δw、Δc和Δco;以及
利用搜索算法在所述搜索空间中以所述搜索步长进行搜索,以确定最小化所述代价函数的拆分系数的所述系数值。
11.根据权利要求10所述的方法,其中所述张量信息包括参与所述卷积操作的片上***的主计算单元的数目、每个所述主计算单元内的处理子单元的数目和从所述片外***加载达到最高带宽利用率的数据量大小,在确定所述搜索步长中,所述方法包括:
至少根据所述主计算单元的数目、处理子单元的数目和所述数据量大小来确定所述搜索步长。
12.根据权利要求11所述的方法,其中所述张量信息还包括所述输入特征图张量和卷积核张量在所述片外***中的存储格式和数据布局信息,其中所述存储格式包括以对应的主维度来进行数据存储并且所述数据布局信息包括张量在各个维度上的摆放信息,其中在确定所述搜索步长中,所述方法还包括:
根据所述输入特征图张量和卷积核张量的所述存储格式和布局信息来确定所述搜索步长。
13.根据权利要求7-12的任意一项所述的方法,还包括:
利用多个候选卷积算法来获得多个搜索空间,其中每个候选卷积算法与其对应的搜索空间相关联;
根据所述多个搜索空间和所述代价函数来获得与每个所述候选卷积算法关联的代价函数值;以及
根据多个所述代价函数值的比较,从所述多个候选卷积算法中选择具有最小代价函数值的候选卷积算法作为所述预定卷积算法。
14.一种用于优化片上***的卷积运算操作的设备,包括:
处理器;
存储器,其存储有用于优化片上***的卷积运算操作的程序指令,当所述程序指令由所述处理器执行时,使得所述设备执行根据权利要求1-13的任意一项所述的方法。
15.一种计算机可读存储介质,其上存储有用于优化片上***的卷积运算操作的程序指令,当所述程序指令由处理器执行时,实现根据权利要求1-13的任意一项所述的方法。
16.一种用于执行卷积运算的片上***,包括:
多个主处理单元,其中每个主处理单元包括多个处理子单元,其中每个处理子单元用于执行对应的张量数据的卷积运算;
多个高速缓存,用于缓存张量数据和与卷积运算相关联的结果,
其中所述片上***配置成执行输入特征图张量块和卷积核张量块之间的卷积操作,并且所述输入特征图张量块和卷积核张量块是根据权利要求1-13中任意一项所述方法的拆分系数的系数值来进行拆分而获得的。
17.一种集成电路装置,包括根据权利要求16所述的片上***。
18.一种板卡,包括根据权利要求17所述的集成电路装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110414138.6A CN115221102B (zh) | 2021-04-16 | 2021-04-16 | 用于优化片上***的卷积运算操作的方法和相关产品 |
PCT/CN2022/086814 WO2022218373A1 (zh) | 2021-04-16 | 2022-04-14 | 用于优化片上***的卷积运算操作的方法和相关产品 |
US18/284,694 US20240160689A1 (en) | 2021-04-16 | 2022-04-14 | Method for optimizing convolution operation of system on chip and related product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110414138.6A CN115221102B (zh) | 2021-04-16 | 2021-04-16 | 用于优化片上***的卷积运算操作的方法和相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115221102A true CN115221102A (zh) | 2022-10-21 |
CN115221102B CN115221102B (zh) | 2024-01-19 |
Family
ID=83604738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110414138.6A Active CN115221102B (zh) | 2021-04-16 | 2021-04-16 | 用于优化片上***的卷积运算操作的方法和相关产品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240160689A1 (zh) |
CN (1) | CN115221102B (zh) |
WO (1) | WO2022218373A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN117170588A (zh) * | 2023-11-01 | 2023-12-05 | 北京壁仞科技开发有限公司 | 用于对张量数据的布局进行转换的方法、设备和介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978156A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110059796A (zh) * | 2018-01-19 | 2019-07-26 | 杭州海康威视数字技术股份有限公司 | 卷积神经网络的生成方法及装置 |
CN111311629A (zh) * | 2020-02-21 | 2020-06-19 | 京东方科技集团股份有限公司 | 图像处理方法、图像处理装置及设备 |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN111985617A (zh) * | 2020-08-14 | 2020-11-24 | 杭州海康威视数字技术股份有限公司 | 3d卷积神经网络在神经网络处理器上的处理方法和装置 |
CN112236779A (zh) * | 2019-03-20 | 2021-01-15 | 华为技术有限公司 | 基于卷积神经网络的图像处理方法和图像处理装置 |
US20210064987A1 (en) * | 2019-09-03 | 2021-03-04 | Nvidia Corporation | Processor and system to convert tensor operations in machine learning |
WO2021054990A1 (en) * | 2019-09-16 | 2021-03-25 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
CN112633490A (zh) * | 2020-12-31 | 2021-04-09 | 上海寒武纪信息科技有限公司 | 执行神经网络模型的数据处理装置、方法及相关产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IN201911000739A (zh) * | 2019-01-07 | 2019-02-22 | ||
CN111563587B (zh) * | 2019-02-14 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 一种神经网络模型的拆分方法及相关产品 |
CN112200295B (zh) * | 2020-07-31 | 2023-07-18 | 星宸科技股份有限公司 | 稀疏化卷积神经网络的排序方法、运算方法、装置及设备 |
CN112116071A (zh) * | 2020-09-07 | 2020-12-22 | 地平线(上海)人工智能技术有限公司 | 神经网络计算方法、装置、可读存储介质以及电子设备 |
-
2021
- 2021-04-16 CN CN202110414138.6A patent/CN115221102B/zh active Active
-
2022
- 2022-04-14 US US18/284,694 patent/US20240160689A1/en active Pending
- 2022-04-14 WO PCT/CN2022/086814 patent/WO2022218373A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978156A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110059796A (zh) * | 2018-01-19 | 2019-07-26 | 杭州海康威视数字技术股份有限公司 | 卷积神经网络的生成方法及装置 |
CN112236779A (zh) * | 2019-03-20 | 2021-01-15 | 华为技术有限公司 | 基于卷积神经网络的图像处理方法和图像处理装置 |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
US20210064987A1 (en) * | 2019-09-03 | 2021-03-04 | Nvidia Corporation | Processor and system to convert tensor operations in machine learning |
WO2021054990A1 (en) * | 2019-09-16 | 2021-03-25 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
CN111311629A (zh) * | 2020-02-21 | 2020-06-19 | 京东方科技集团股份有限公司 | 图像处理方法、图像处理装置及设备 |
CN111985617A (zh) * | 2020-08-14 | 2020-11-24 | 杭州海康威视数字技术股份有限公司 | 3d卷积神经网络在神经网络处理器上的处理方法和装置 |
CN112633490A (zh) * | 2020-12-31 | 2021-04-09 | 上海寒武纪信息科技有限公司 | 执行神经网络模型的数据处理装置、方法及相关产品 |
Non-Patent Citations (1)
Title |
---|
朱虎明;李佩;焦李成;杨淑媛;侯彪;: "深度神经网络并行化研究综述", 计算机学报, no. 08, pages 171 - 191 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858178A (zh) * | 2023-02-21 | 2023-03-28 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN115858178B (zh) * | 2023-02-21 | 2023-06-06 | 芯砺智能科技(上海)有限公司 | 一种卷积计算中资源共享的方法、装置、介质及设备 |
CN117170588A (zh) * | 2023-11-01 | 2023-12-05 | 北京壁仞科技开发有限公司 | 用于对张量数据的布局进行转换的方法、设备和介质 |
CN117170588B (zh) * | 2023-11-01 | 2024-01-26 | 北京壁仞科技开发有限公司 | 用于对张量数据的布局进行转换的方法、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115221102B (zh) | 2024-01-19 |
WO2022218373A1 (zh) | 2022-10-20 |
US20240160689A1 (en) | 2024-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN112416433B (zh) | 一种数据处理装置、数据处理方法及相关产品 | |
WO2022218373A1 (zh) | 用于优化片上***的卷积运算操作的方法和相关产品 | |
CN111028136B (zh) | 一种人工智能处理器处理二维复数矩阵的方法和设备 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN111124995A (zh) | 通过人工智能处理器处理一维复数数组的方法和设备 | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN113010845A (zh) | 执行矩阵乘法的计算装置、方法及相关产品 | |
CN111143766A (zh) | 人工智能处理器处理二维复数矩阵的方法和设备 | |
CN114358261A (zh) | 融合神经网络的装置、板卡、方法及可读存储介质 | |
CN115221101B (zh) | 用于优化片上***的矩阵乘操作的方法和相关产品 | |
CN111125627A (zh) | 用于池化多维矩阵的方法及相关产品 | |
WO2023087698A1 (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
WO2022257980A1 (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
WO2022143799A1 (zh) | 用于矩阵乘操作的集成电路装置、计算设备、***和方法 | |
CN113111997B (zh) | 用于神经网络数据量化的方法、装置和相关产品 | |
WO2022135599A1 (zh) | 融合分支结构的装置、板卡、方法及可读存储介质 | |
CN118277305A (zh) | 降低运算耗时的设备与方法 | |
CN113469365A (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN115469827A (zh) | 卷积运算装置、方法及相关产品 | |
CN116484926A (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 |