CN115039121A - 混合卷积运算 - Google Patents
混合卷积运算 Download PDFInfo
- Publication number
- CN115039121A CN115039121A CN202180012476.5A CN202180012476A CN115039121A CN 115039121 A CN115039121 A CN 115039121A CN 202180012476 A CN202180012476 A CN 202180012476A CN 115039121 A CN115039121 A CN 115039121A
- Authority
- CN
- China
- Prior art keywords
- block
- accumulation
- data
- dimension
- processors
- 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
Links
- 238000009825 accumulation Methods 0.000 claims abstract description 193
- 238000000034 method Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 31
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000013527 convolutional neural network Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction 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/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
一种设备包括:一个或多个处理器,被配置为取回数据的第一块,该数据与至少沿着第一维度和第二维度排列的值的阵列相对应;提取该数据的第二块的至少部分;以及执行第一混合卷积运算,第一混合卷积运算在第一块上和第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块以及第二累加块的至少部分。一个或多个处理器还被配置为将第一累加块存储为第一输出数据。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
Description
优先权要求
本申请要求享有共同拥有的于2020年2月3日提交的美国临时专利申请第62/969594号和于2021年2月2日提交的美国非临时专利申请第17/165648号的优先权,这两个申请的内容都明确地以全文引用的方式并入本文。
技术领域
本公开总体上涉及用于执行卷积的计算设备和程序。
背景技术
技术的进步使得大量的数据处理能够由便携式电子设备(诸如智能电话)来执行。例如,传统的便携式电子设备通常具有足够的处理资源来执行数据处理,诸如对图像数据滤波。当通过在输入数据上“滑动”滤波器来处理输入数据集(诸如图像像素值的二维阵列)以生成每个输入值的输出值时,执行卷积。使用图像数据作为示例,可以基于输入图像中的像素值并且还基于输入图像中该像素的邻近像素的值来为输入图像的每个像素生成输出像素值。
然而,因为使用了邻近像素值,所以需要多个输入图像数据块来生成单个输出图像数据块。例如,生成输出图像块可能由于处理块边缘处的像素时滤波器在块之间重叠而需要从至少四个、至多九个输入图像块存取数据。结果,执行了相对大量的存储器存取,从而消耗了处理器资源和功率,引入了与计算存储器存取的地址相关联的复杂性,引入了可能导致额外的存储器传输的对齐问题,或其组合。
除了图像处理和类似的应用之外,卷积越来越多地用于机器学习应用,诸如卷积神经网络。在神经网络应用中,卷积层输入可以具有大量通道(例如,数千个),从而约束了可以用于提高效率的传统技术的益处,诸如将输入数据的部分维持在中间状态,使得其可以在处理循环的多次迭代中被重复使用,以减少单指令多数据(SIMD)型处理系统中的存储器传输。随着卷积神经网络的迅速普及,减少卷积期间的存储器传输量以及与存储器传输相关联的复杂性可以显著改善设备性能和用户体验。
发明内容
根据本公开的一个实现方式,一种设备包括存储器和一个或多个处理器。该存储器被配置为存储与至少沿着第一维度和第二维度排列的值的阵列相对应的数据。一个或多个处理器被配置为从存储器中取回数据的第一块和数据的第二块的至少部分,以及执行第一混合卷积运算,第一混合卷积运算在数据的第一块上和数据的第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块以及第二累加块的至少部分。一个或多个处理器还被配置为将第一累加块存储为第一输出数据。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
根据本公开的另一实现方式,一种执行卷积的方法包括在一个或多个处理器处从存储器中取回数据的第一块和数据的第二块的至少部分。该数据对应于至少沿着第一维度和第二维度排列的值的阵列。该方法包括执行第一混合卷积运算,第一混合卷积运算在第一块上和第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块以及第二累加块的至少部分。该方法还包括将第一累加块存储为第一输出数据。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
根据本公开的另一实现方式,一种计算机可读存储设备存储指令,当该指令由一个或多个处理器执行时,使一个或多个处理器从存储器中取回数据的第一块和数据的第二块的至少部分,该数据对应于至少沿着第一维度和第二维度排列的值的阵列。该指令还使一个或多个处理器执行第一混合卷积运算,第一混合卷积运算在第一块上和第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块以及第二累加块的至少部分。该指令还使一个或多个处理器将第一累加块存储为第一输出数据。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
根据本公开的另一实现方式,一种装置包括用于取回数据的第一块和数据的第二块的至少部分的部件,该数据对应于至少沿着第一维度和第二维度排列的值的阵列。该装置包括用于执行混合卷积运算的部件,该混合卷积运算在第一块上和第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块以及第二累加块的至少部分。该装置包括用于将第一累加块存储为第一输出数据的部件。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
在阅读了包括以下章节的整个申请之后,本公开的其他方面、优点和特征将变得显而易见:附图说明、具体实施方式和权利要求。
附图说明
图1是根据本公开的一些示例的包括可操作来执行混合卷积运算的设备的系统的特定说明性实现方式的图。
图2是示出根据本公开的一些示例的作为混合卷积运算的一部分、由图1的设备执行的操作的图。
图3是示出根据本公开的一些示例的由图1的设备结合混合卷积运算执行的操作的图。
图4是示出根据本公开的一些示例的由图1的设备执行的混合卷积运算序列的流水线执行的图。
图5是根据本公开的一些示例的可操作来进行混合卷积运算的设备的另一实现方式的图。
图6是根据本公开的一些示例的可以由图1的设备执行的执行卷积的方法的实现方式的流程图。
图7是根据本公开的一些示例的可操作来执行混合卷积运算的设备的特定说明性示例的框图。
具体实施方式
当处理从存储器中取回的输入数据块的边缘处的数据值以定位位于存储器中其他输入数据块中的数据值的邻近数据值时,传统的卷积运算可能需要相对大量的存储器存取和复杂性。存储器存取和复杂性可能导致设备的性能降低,可能损害用户体验(诸如由于运行这种应用时设备性能降低而导致损害用户体验),并且可能增加功率消耗(这可减少有用的电池寿命)。
提出了一种混合卷积运算,该混合卷积运算在一个维度(“第一”维度)上“滑动”输入数据,并且在另一维度(“第二”维度)上输出数据。结果,在一些实现方式中,每个输出数据块只需要在第一维度上对齐的两个输入存储器块。可以执行在第一维度上对输入数据的显式重叠读取,而不需要在第二维度上对输入数据的重叠读取。与传统技术相比,减少了总体的存储器存取和复杂性,从而导致设备性能增强。
两个累加器(例如,寄存器、专用存储器或其他电路)可以用来保存局部累加值,每个累加器的大小可以保存一个数据块。累加器在第二维度上对齐,使得当将一行数据值(例如,沿着第二维度延伸的数据值序列)写入累加器时,当其中一个累加器的一行已被填充时,随后的数据值被写入另一累加器的对应的行。在一些实现方式中,累加器在物理上对齐(例如,物理上相邻的寄存器)。在其他实现方式中,累加器不在物理上对齐,而是在逻辑上对齐(例如,对物理上不相邻的寄存器进行存取以供数据存储和取回,就好像这些寄存器在物理上相邻一样)。可以保存局部累加值直到完成,从而避免与存储局部累加值相关联的额外存储器存取。在一些实现方式中,乒乓(ping-pong)技术被用来在混合卷积运算的迭代之间交替使用累加器。
作为非限制性示例,混合卷积运算可以应用于二维卷积层,可以应用于具有两个或更多个维度的传统卷积(包括神经网络通道方式),并且可以应用于其他滤波运算,诸如最大/平均(池化)、绝对差、图像相关。作为说明性示例,本文描述的混合卷积技术可以应用于标量处理、单指令多数据(SIMD)向量处理和SIMD阵列处理。
如本文所使用的,“耦合”可以包括“通信耦合”、“电耦合”或“物理耦合”,并且还可以(或替代地)包括其任何组合。两个设备(或组件)可以经由一个或多个其他设备、组件、导线、总线、网络(例如,有线网络、无线网络或其组合)等直接地或间接地耦合(例如,通信耦合、电耦合或物理耦合)。作为说明性的非限制性示例,电耦合的两个设备(或组件)可以被包括在相同的设备或不同的设备中,并且可以经由电子器件、一个或多个连接器或电感耦合来连接。在一些实现方式中,(诸如以电通信的方式)通信耦合的两个设备(或组件)可以经由一个或多个导线、总线、网络等直接地或间接地发送和接收信号(例如,数字信号或模拟信号)。如本文所使用的,“直接地耦合”可以包括在没有中间组件的情况下耦合(例如,通信耦合、电耦合或物理耦合)的两个设备。
还可以理解,术语“包括(comprise;comprises;comprising)”可以与“包括(include;includes;including)”互换使用。此外,应当理解,术语“其中(wherein)”可以与“其中(where)”互换使用。如本文所使用的,“示例性”可以指示示例、实现方式和/或方面,并且不应被解释为限制或指示偏好或优选的实现方式。如本文所使用的,用于修饰诸如结构、组件、操作等元素的序数术语(例如,“第一”、“第二”、“第三”等)本身并不指示该元素相对于另一元素的任何优先级或次序,而是仅仅将该元素与具有相同名称(但使用序数术语)的另一元素区分开。如本文所使用的,术语“集合”是指一个或多个特定元素,并且术语“多个”是指多个(例如,两个或更多个)特定元素。
术语“配置”可以参考方法、装置、设备、系统或其任何组合来使用,如其特定上下文所指示的。在本说明书和权利要求中使用术语“包括”的情况下,其不排除其他元素或操作。术语“基于”(如在“A基于B”中的“基于”)用于指示其任何普通含义,包括(i)“至少基于”(例如,“A至少基于B”)和(ii)(如果在特定上下文中适当的话)“等于”(例如,“A等于B”)的情况。在“A基于B”包括“至少基于”的情况(i)下,这可以包括A耦合到B的配置。类似地,术语“响应于”用于指示其任何普通含义,包括“至少响应于”。术语“至少一个”用于指示其任何普通含义,包括“一个或多个”。术语“至少两个”用于指示其任何普通含义,包括“两个或更多个”。
在本公开中,诸如“生成”、“计算”、“估计”、“使用”、“选择”、“存取”和“确定”之类的术语可以互换使用。例如,“生成”、“计算”、“估计”或“确定”参数(或信号)可以是指主动地生成、估计、计算或确定参数(或信号),或者可以是指使用、选择或存取(诸如由另一组件或设备)已经生成的参数(或信号)。
图1描绘了包括被配置为执行第一混合卷积运算132的设备102的系统100,第一混合卷积运算132使用滤波器130处理输入数据110。在特定实现方式中,滤波器130是由一个或多个处理器190支持的多个滤波器中的代表性滤波器,诸如可作为卷积核操作的可编程权重的阵列。设备102包括耦合到一个或多个处理器126的存储器108(例如,动态随机存取存储器(DRAM))。作为说明性的非限制性示例,一个或多个处理器126被配置为根据图像处理操作150(例如,特征检测操作)或根据神经网络卷积层操作152(例如,使用卷积神经网络处理输入数据)将输入数据110与滤波器130进行卷积。
存储器108存储输入数据110。在一些实现方式中,输入数据110对应于图像数据,诸如由耦合到设备102或集成在设备102中的相机104捕获的图像数据。在一些实现方式中,输入数据110对应于音频数据,诸如由耦合到设备102或集成在设备102中的麦克风106捕获的音频数据。在一些实现方式中,输入数据110对应于将由卷积神经网络操作的一层或多层数据。
输入数据110对应于以行和列逻辑排列的值的阵列,其中每一列沿着第一维度134延伸并且每一行沿着第二维度136延伸。尽管输入数据110在本文中是按照行和列来描述的,但是输入数据110实际上不需要以复制逻辑排列的阵列的方式被存储在存储器108的物理的行和列中(例如,其中相邻的阵列值被存储在相邻的物理存储器位置中)。为了说明,存储器108可以被配置为根据由存储器108所支持的、用于由一个或多个处理器126来存储器存取的存储器存取数据大小148,向一个或多个处理器126提供对输入数据110的存取。在一些实现方式中,存储器存取数据大小148是存储在寄存器中的可以进行调整的配置值。在其他实现方式中,存储器存取数据大小148是基于一个或多个处理器126、存储器108或其组合的布局或设计的不可配置的固有值。在一些实现方式中,对输入数据110的每次存取取回从存储器108中的顺序存储器位置读取的值,诸如值的高速缓存行(cache line),但是可以表示与阵列的二维分段相对应的值。
如本文进一步描述的,输入数据110可以被排列在物理存储器位置中,使得取回输入数据110的部分的每次存储器存取取回值的阵列的相应的M×M分段(M是正整数)。为了说明,在M是4并且输入数据110表示与图像相对应的像素值的二维阵列的实现方式中,从存储器108读取输入数据110的每次存取可以对应于4×4的像素值块(例如,来自像素值的阵列的4个相邻行和4个相邻列的16个像素值),这些像素值被排列为存储器108中的连续物理位置中的16个像素值,以便作为单个高速缓存行可从存储器108中取回。
一个或多个处理器126被配置为从存储器108中取回输入数据110的第一块114和输入数据110的第二块116的至少部分144,以及执行第一混合卷积运算132,第一混合卷积运算132在第一块114上和第二块116的至少该部分144上应用滤波器130以生成输出数据。该输出数据包括输出到第一累加器140的数据的第一累加块128和输出到第二累加器142的数据的第二累加块138的至少部分146。在一些实现方式中,第一累加器140和第二累加器142中的每一个累加器对应于被配置为存储随着额外值与存储值累加(例如,相加)而更新的值的寄存器或其他数据存储电路。在一些实现方式中,第一累加器140和第二累加器142中的每一个累加器还包括被配置为接收输入值并将输入值与存储值累加的电路(例如,加法器)。一个或多个处理器126被配置为将第一累加块128从第一累加器140传输和存储到存储器108,作为第一输出数据122。
如参考图2-图3进一步描述的,第二块116的部分144沿着第一维度134与第一块114相邻,并且第二累加块138的部分146沿着第二维度136与第一累加块128相邻。在一些实现方式中,第一块114、第二块116、第一累加块128和第二累加块138中的每一个的大小根据存储器存取数据大小148来确定。
在一些实现方式中,第一混合卷积运算132沿着第二维度136使用零填充(或者执行数学上等同于使用零填充的操作),而不沿着第一维度134使用零填充,如参考图2-图3进一步示出的。沿着一个维度而不沿着另一维度使用零填充使得第一混合卷积运算132能够使用至多两次存储器存取来执行卷积以取回第一块114和第二块116的部分144,以及使用至多两次存储器存取来存储第一累加块128(例如,作为第一输出数据122)和第二累加块138的部分146(例如,作为第二输出数据124)。与对来自四个输入块的部分的数据进行存取以生成一个输出块或者对一个输入块进行存取以生成与四个输出块的部分相对应的输出数据的传统卷积运算相比,第一混合卷积运算132使用较少的总体存储器存取来取回输入数据和存储输出数据。
一个或多个处理器126还可以被配置为以流水线方式执行包括第一混合卷积运算132和第二混合卷积运算在内的混合卷积运算序列,其中第一累加块的存储和第二混合卷积运算的执行发生在同一流水线周期期间,如参考图4进一步详细描述的。在一个示例中,第二混合卷积运算顺序地跟在第一混合卷积运算132之后,并且对输入数据的第三块118和第四块120的部分进行操作,使用第二累加块138的部分146作为“种子”值来生成第二输出数据124。混合卷积运算序列的流水线执行通过使得存储器存取和计算能够并行执行而减少了总体时延,并且与一些传统技术相比,混合卷积运算的顺序执行能够减少关于跟踪和对齐局部卷积数据(例如,第二累加块138的部分146)的复杂性。
图2描绘了图示出根据第一混合卷积运算132的特定实现方式而执行的操作的第一组图200。第一图202示出了作为3×3阵列的滤波器130、作为4×4阵列的第一块114、作为4×4阵列的第二块116、作为4×4阵列的第一累加块128和作为4×4阵列的第二累加块138的示例。滤波器130、第一块114、第二块116、第一累加块128和第二累加块138中的每一个对应于数据结构,例如逻辑排列的值。
为了便于解释,描绘了数据结构的大小和排列,并且在其他实现方式中,滤波器130、第一块114、第二块116、第一累加块128和第二累加块138中的一个或多个具有不同的大小或排列。第一块114、第二块116、第一累加块128和第二累加块138中的每一个的大小(例如,元素的数量)与存储器存取数据大小148(例如,16个元素)相匹配,使得第一块114可经由第一存储器存取操作(例如,单高速缓存行读取或加载操作)从存储器108中取回,第二块116可经由第二存储器存取操作(例如,另一单高速缓存行读取或加载操作)从存储器108中取回,第一累加块128可经由第三存储器存取操作(例如,单高速缓存行写入或存储操作)存储到存储器108,并且第二累加块138可经由第四存储器存取操作(例如,另一单高速缓存行写入或存储操作)存储到存储器108。
滤波器130包括被排列成3行和3列的9个值,标记为k1、k2、……、k9。第一块114包括16个值,包括具有值a1、a2、a3和a4的第一行、具有值b1、b2、b3和b4的第二行、具有值c1、c2、c3和c4的第三行以及具有值d1、d2、d3和d4的第四行。第二块116的部分144包括8个值,排列为具有值e1、e2、e3和e4的第一行和具有值f1、f2、f3和f4的第二行。第一块114的第四行沿着第一维度134与第二块116的第一行相邻。第一块114和第二块116的部分144一起对应于输入数据110的阵列的N行和前M列,其中N和M是正整数,并且N大于M。滤波器130包括P行和P列的滤波器值,其中P=N-M+1。在图2的示例中,M=4,N=6,并且P=3。
一个或多个处理器126被配置为使用第一存储器存取操作154来存取第一块114以及使用第二存储器存取操作156来存取第二块116的部分144。第一存储器存取操作154和第二存储器存取操作156中的每一个存取操作被配置为至多取回输入数据110的M行和M列。在第一混合卷积运算132期间不对第二块116的第三行和第四行进行操作,因此将其示出为没有值。在一些实现方式中,在第二存储器存取操作156期间从存储器108中取回整个第二块116,尽管在第一混合卷积运算132期间不对第三行和第四行的值进行操作。在其他实现方式中,第二存储器存取操作156省略了从存储器108中取回第二块116的第三行和第四行。
在第一图202中,滤波器130的第三列(例如,最右侧的列)被示出为与第一块114的前三行(例如,行a、b和c)相乘。在第一累加块128的第一行第一列中生成累加值A1为:A1+=(k3*a1)+(k6*b1)+(k9*c1),其中“*”表示乘法运算,“+=”表示复合加法赋值运算符,如下面进一步描述的。在第一累加块128的第一行第二列中生成累加值A2为:A2+=(k3*a2)+(k6*b2)+(k9*c2)。在第一累加块128的第一行第三列中生成累加值A3为:A3+=(k3*a3)+(k6*b3)+(k9*c3),并且在第一累加块128的第一行第四列中生成累加值A4为:A4+=(k3*a4)+(k6*b4)+(k9*c4)。
第二图204示出了滤波器130的第二列(例如,中间列)与第一块114的前三行相乘。通过将A2的先前值(如参考第一图202所描述的)与值(k2*a1)+(k5*b1)+(k8*c1)相加,在第一累加块128的第一行第二列中生成更新的累加值A2。通过将A3的先前值与值(k2*a2)+(k5*b2)+(k8*c2)相加,在第一累加块128的第一行第三列中生成更新的累加值A3。通过将A4的先前值与值(k2*a3)+(k5*b3)+(k8*c3)相加,在第一累加块128的第一行第四列中生成更新的累加值A4。在第二累加块138的第一行第一列中生成累加值A5为:A5=(k2*a4)+(k5*b4)+(k8*c4)。
第三图206示出了滤波器130的第一列(例如,最左侧的列)与第一块114的前三行相乘。通过将A3的先前值与值(k1*a1)+(k4*b1)+(k7*c1)相加,在第一累加块128的第一行第三列中生成更新的累加值A3。通过将A4的先前值与值(k1*a2)+(k4*b2)+(k7*c2)相加,在第一累加块128的第一行第四列中生成更新的累加值A4。通过将A5的先前值与值(k1*a3)+(k4*b3)+(k7*c3)相加,在第二累加块138的第一行第一列中生成更新的累加值A5。在第二累加块138的第一行第二列中生成累加值A6为:A6=(k1*a4)+(k4*b4)+(k7*c4)。
继续图3,第四图302、第五图304和第六图306描绘了根据图2的第一混合卷积运算132的特定实现方式而执行的额外运算。第四图302示出了滤波器130与第一块114的第二行、第三行和第四行(b行、c行和d行)相乘,以类似于图2所述的方式生成第一累加块128中的累加值B1、B2、B3和B4以及第二累加块138中的累加值B5和B6。
第五图304示出了滤波器130与第一块114的第三行和第四行(行c和行d)以及第二块116的第一行(行e)相乘,以生成第一累加块128中的累加值C1、C2、C3和C4以及第二累加块138中的累加值C5和C6。第六图306示出了滤波器130与第一块114的第四行(行d)和第二块116的前两行(行e和行f)相乘,以生成第一累加块128中的累加值D1、D2、D3和D4以及第二累加块138中的累加值D5和D6。
在第一混合卷积运算132完成时,第一累加块128和第二累加块138具有如第六图306中所描绘的配置,其中第一累加块128具有表示滤波器130与第一块114和第二块116的部分144的卷积的累加值。第二块116包括部分146中可以被用作下一混合卷积运算的“种子”值的局部累加值。第一累加块128和第二累加块138一起对应于输出数据的M行和N列。在特定实现方式中,第一累加块128对应于第一累加器140中的累加值的M行和M列,并且第二累加块138的部分146对应于第二累加器142中M行和N-M列的局部累加值。
第七图308示出了第一混合卷积运算132之后的第二混合卷积运算的部分。一个或多个处理器126对第三块118和第四块120的部分执行第二混合卷积运算,以更新第二累加块138并生成沿着第二维度136与第二累加块138相邻的第三累加块338的至少部分。第三块118以及第四块120的至少部分一起对应于已经从存储器108取回的阵列的N行和第二M列(例如,列5、列6、列7和列8),并且第一累加块128已经经由第三存储器存取操作158被存储到存储器108作为第一输出数据122。第二累加块138的部分146中的局部累加值被用作种子值,并且滤波器130以与关于图202-206和302-206描述的类似方式被应用于第三块118的值和第四块120的值。例如,第七图308描绘了在将滤波器130应用于第三块118的前三行以在第二累加块138中生成累加值A5、A6、A7和A8以及在第三累加块338中生成累加值A9和A10之后的累加结果。在一些实现方式中,在第三累加器中生成第三累加块338,并且在其他实现方式中,根据乒乓技术来存取第一累加器140和第二累加器142,其中在第一累加块128已经被传输到存储器108之后,在第一累加器140中生成第三累加块338。
第二混合卷积运算以与第一混合卷积运算132类似的方式继续,并且基于输入数据110的第三块118和第四块120填充第二累加块138和第三累加块338的部分。在第二混合卷积运算完成之后,一个或多个处理器126可以将第二累加块138存储为第二输出数据124,并且取回输入数据110的额外的块以供在第三混合卷积运算期间进行处理,诸如参考图4进一步描述的。
将图2的图202-206和图3的图302-306中的第一混合卷积运算132实现为滑动卷积的图形描述是为了清楚理解而提供的并且不应被认为是限制性的,其中滤波器130被应用于第一维度134上的输入数据110的一个以上的块(例如,来自两个4×4块的一组6×4的值)以生成跨越第二维度136上的一个以上的累加块的累加数据(例如,两个4×4累加块中的一组4×6的累加值)。尽管第一混合卷积运算132在图2-图3中被描绘为在第二维度136上从左到右以及在第一维度134上从上到下“滑动”滤波器130,但是在其他实现方式中,第一混合卷积运算132可以包括在第二维度136上从右到左滑动滤波器130,在第一维度134上从下到上滑动滤波器130,或者两者兼有。尽管没有描绘零填充,但是图2-图3中描述的乘法在数学上可以等同于其中一列或多列零填充被添加到第一块114和第二块116的左侧、右侧或左侧和右侧两者(但不添加到顶部或底部)的卷积。输入数据110的块与累加数据的块的对齐,以及为了存储、取回和算术处理的效率而格式化这样的块,可以偏离图2-图3描绘的示例,并且可以根据特定实现方式而变化。
图4描绘了其中一个或多个处理器126被配置为在第一流水线周期406、第一流水线周期406之后的第二流水线周期414以及第二流水线周期414之后的第三流水线周期424期间执行混合卷积运算序列的实现方式。混合卷积运算序列包括以流水线方式执行的第一混合卷积运算132、第二混合卷积运算434和第三混合卷积运算436,其中第一累加块128的存储和第二混合卷积运算434的执行发生在同一流水线周期中,如下面进一步解释的。输入数据110的阵列的部分被图示为包括第一块114、第二块116、第三块118、第四块120、与第三块118相邻的第五块402以及与第五块402和第四块120相邻的第六块404。尽管出于示例的目的示出了输入数据110的六个块,但是在其他实现方式中,输入数据110可以包括任何数量(例如,数千)的块。
在第一流水线周期406期间,第一块114以及第二块116的至少部分144的数据经由第一乘法和累加运算408(诸如参考图2-图3描述的乘法和累加)进行处理,第一乘法和累加运算408生成累加数据410和局部数据412。第一块114以及第二块116的部分144分别由第一存储器存取操作154和第二存储器存取操作156取回,在一些实现方式中,第一存储器存取操作154和第二存储器存取操作156在第一流水线周期406期间执行,或者在其它实现方式中,第一存储器存取操作154和第二存储器存取操作156在第一流水线周期406之前执行。在说明性示例中,累加数据410对应于第一累加块128,并且局部数据412对应于第二累加块138的作为用于第二混合卷积运算434的种子值而保留的部分146(例如,如参考图3的第七图308所描述的)。
在第二流水线周期414期间,第三块118的数据和第四块120的至少部分的数据经由第二乘法和累加运算418进行处理,以生成累加数据420和局部数据422。以与第一块114和第二块116类似的方式经由两次存储器存取操作来取回第三块118和第四块120。与乘法和累加运算418并行(即,在第二流水线周期414期间),累加数据410经由输出数据存储操作416(例如,第三存储器存取操作158)被存储到存储器108中作为第一累加块128。
在第三流水线周期424期间,第五块402的数据和第六块404的至少部分的数据经由第三乘法和累加运算428进行处理,以生成累加数据430和局部数据432。与乘法和累加运算428并行,累加数据420经由输出数据存储操作426被存储到存储器108中作为第二累加块138。在第三流水线周期424之后(例如,在第四流水线周期期间),累加数据430经由输出数据存储操作438被存储。
尽管仅描绘了三个流水线周期,但是混合卷积运算序列可以继续,直到输入数据110的所有的块行和块列都已被处理。如本文所使用的,“块行(block row)”是与输入数据110的块中的多个行相匹配的相邻行的集合,并且“块列(block column)”是与输入数据110的块中的多个列相匹配的相邻列的集合。如图所示,输入数据110的第一块行包括第一块114、第三块118和第五块402;输入数据110的第二块行包括第二块116、第四块120和第六块404;输入数据110的第一块列包括第一块114和第二块116,并且输入数据110的第二块列包括第三块118和第四块120。在输入数据110的每个块的大小为4×4块(例如,4行4列)的实现方式中,每个块行跨越输入数据110的4行,并且每个块列跨越输入数据110的4列。
输入数据110的处理可以根据表1所示的伪代码来执行。
表1
图5描绘了包括被配置为执行混合卷积运算(诸如第一混合卷积运算132)的电路516的设备502的实现方式。电路516被集成在分立的组件(诸如集成电路(例如,专用集成电路(ASIC)))中。在一些实现方式中,设备502对应于参考图7进一步描述的半导体芯片或封装。在一些实现方式中,电路516包括被配置为执行存储的指令以执行关于第一混合卷积运算132描述的操作的一个或多个处理器126、执行关于第一混合卷积运算132描述的操作的专用电路(例如,硬件)、或其任何组合。
设备502包括输入510(诸如第一总线接口)以使得输入数据110(或输入数据110的一个或多个块)能够从设备502外部的一个或多个存储设备接收以作为输入数据504。设备502还包括输出512(诸如第二总线接口)以使得能够在混合卷积运算期间发送经计算的输出数据514,诸如输出数据112(或输出数据112的一个或多个块)。设备502使得能够将卷积处理实现为系统中的组件(诸如专用神经网络处理单元(例如,包括一个或多个图形处理单元(GPU)、数字信号处理器(DSP)或其任何组合))以用于基于云的服务器系统加速推断或其他机器学习应用。
参考图6,描绘了执行卷积的方法600的特定实现方式。在一些实现方式中,作为说明性的非限制性示例,方法600由设备102或设备502执行。
方法600包括,在602,在一个或多个处理器处从存储器中取回数据的第一块和数据的第二块的至少部分。该数据对应于至少沿着第一维度和第二维度排列的值的阵列。例如,一个或多个处理器126取回输入数据110的第一块114和输入数据110的第二块116的至少部分144。
方法600包括,在604,执行第一混合卷积运算,第一混合卷积运算在第一块和第二块的至少部分上应用滤波器以生成输出数据。该输出数据包括第一累加块和第二累加块的至少部分。例如,一个或多个处理器126执行第一混合卷积运算132,第一混合卷积运算132在第一块114上和第二块116的部分144上应用滤波器130,以生成第一累加块128以及第二累加块138的部分146。作为说明性示例,一个或多个处理器126被配置为根据图像处理操作150或神经网络卷积层操作152中的至少一个操作将输入数据110与滤波器130进行卷积。
方法600包括,在606,将第一累加块存储为第一输出数据。第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。例如,一个或多个处理器126将第一累加块128存储到存储器108中作为第一输出数据122。第二块116的部分144沿着第一维度134与第一块114相邻,并且第二累加块138的部分144沿着第二维度136与第一累加块128相邻。
在一些实现方式中,第一混合卷积运算沿着第二维度136使用零填充而不沿着第一维度134使用零填充,以实现使用至多两次存储器存取来取回第一块114和第二块116的部分144并使用至多两次存储器存取来存储第一累加块128以及第二累加块138的部分146的卷积。
在一些实现方式中,第一块、第二块、第一累加块和第二累加块中的每一者的大小根据由存储器支持的、用于由一个或多个处理器来存储器存取的存储器存取数据大小(诸如存储器存取数据大小148)而确定。在一些实现方式中,取回第一块包括使用第一存储器存取操作154;取回第二块116的部分144包括使用第二存储器存取操作156;第一存储器存取操作154和第二存储器存取操作156中的每一个被配置为至多取回输入数据110的M行和M列(其中M是正整数);并且第一累加块128和第二累加块138中的每一个对应于输出数据112的M行和M列。
在一些实现方式中,方法600还包括:取回沿着阵列的第一维度134与第一块114相邻的输入数据110的第三块118;取回沿着阵列的第一维度134与第二块116的部分144相邻的输入数据110的第四块120的至少部分;对第三块118以及第四块120的部分执行第二混合卷积运算(例如,第二混合卷积运算434),以更新第二累加块138并生成沿着第二维度136与第二累加块相邻的第三累加块的至少部分(例如,局部数据422);以及将第二累加块存储为第二输出数据124。
作为说明性示例,如图4所示,第一混合卷积运算132和第二混合卷积运算434是以流水线方式执行的混合卷积运算序列的一部分,其中第一累加块128的存储和第二混合卷积运算434的执行发生在同一流水线周期(例如,第二流水线周期414)期间。在一些实现方式中,方法600包括:在第一累加器140中生成第一累加块128;在第二累加器142中生成第二累加块138;以及在存储第一累加块128之后,在第一累加器140中生成第三累加块,诸如在参考图4描述的乒乓实现方式中。
方法600可以由现场可编程门阵列(FPGA)器件、专用集成电路(ASIC)、处理单元(诸如中央处理单元(CPU))、数字信号处理器(DSP)、控制器、另一硬件设备、固件设备或其任何组合来实现。作为示例,方法600可以由执行指令的处理器来执行,诸如本文所描述的。
图7描绘了包括一个或多个处理器126(诸如在无线通信设备实现方式(例如,智能电话)或数字助理设备实现方式中)的设备700的特定说明性实现方式的框图。在各种实现方式中,设备700可以具有比图7所示更多或更少的组件。在说明性实现方式中,设备700可以对应于设备102。在说明性实现方式中,设备700可以执行参考图1-图6描述的一个或多个操作。
在特定实现方式中,设备700包括耦合到一个或多个处理器126(例如,一个或多个DSP、GPU、其他处理器或其任何组合)的处理器706(例如,中央处理单元(CPU))。在一些实现方式中,设备700的一个或多个处理器包括语音和音乐译码器-解码器(编解码器(CODEC)),其可以包括语音译码器(“声码器(vocoder)”)编码器、声码器解码器或两者。
设备700可以包括存储器752和CODEC 734。存储器752可以对应于存储器108,并且可以包括可由一个或多个处理器126执行以实现参考第一混合卷积运算132描述的功能的指令756。例如,存储器752可以包括存储指令756的计算机可读存储设备,当指令756由一个或多个处理器126执行时,使一个或多个处理器126:从存储器中取回数据的第一块和数据的第二块的至少部分,该数据对应于至少沿着第一维度和第二维度排列的值的阵列;执行第一混合卷积运算,第一混合卷积运算在第一块和第二块的至少部分上应用滤波器以生成输出数据,其中该输出数据包括第一累加块以及第二累加块的至少部分;以及将第一累加块存储为第一输出数据,其中第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。
设备700可以包括经由收发器740耦合到一个或多个天线742的无线控制器738。在一些实现方式中,一个或多个天线742包括被配置为接收指示滤波器130、输入数据110或其组合的数据的一个或多个天线。
设备700可以包括耦合到显示控制器726的显示器728。CODEC734可以耦合到一个或多个麦克风746和一个或多个扬声器714,并且可以包括数模转换器(DAC)702和模数转换器(ADC)704。在特定实现方式中,CODEC 734可以从一个或多个麦克风746(例如,麦克风106)接收模拟信号,使用模数转换器704将模拟信号转换成数字信号,并且提供该数字信号以供存储为输入数据110,诸如用于语音处理(例如,基于卷积神经网络的语音识别、说话者识别、一种或多种其他类型的语音处理或其任何组合)。
在特定实现方式中,设备700包括一个或多个输入设备730。例如,(多个)输入设备730可以包括被配置为捕获视频输入以供存储为输入数据110的一个或多个相机(诸如相机104)。
在特定实现方式中,设备700可以被包括在系统级封装或芯片上系统设备722中。在特定实现方式中,存储器752、处理器706、(多个)处理器126、显示控制器726、CODEC 734、无线控制器738和收发器740被包括在系统级封装或芯片上系统设备722中。在特定实现方式中,输入设备730和电源744耦合到系统级封装或芯片上系统设备722。此外,在特定实现方式中,如图7所示,显示器728、输入设备730、(多个)麦克风746、(多个)扬声器748、天线742和电源744在系统级封装或芯片上系统设备722的外部。在特定实现方式中,显示器728、输入设备730、(多个)麦克风746、(多个)扬声器748、天线742和电源744中的每一个可以耦合到系统级封装或芯片上系统设备722的组件,诸如接口或控制器。
设备700可以包括语音激活的设备、音频设备、无线扬声器和语音激活的设备、便携式电子设备、汽车、交通工具、计算设备、通信设备、物联网(IoT)设备、虚拟现实(VR)设备、智能扬声器、移动通信设备、智能电话、蜂窝电话、膝上型计算机、计算机、平板电脑、个人数字助理、显示设备、电视、游戏控制台、音乐播放器、无线电设备、数字视频播放器、数字视频光盘(DVD)播放器、调谐器、相机、导航设备、家庭自动化系统、无线扬声器和语音激活的设备、基站或其任何组合。在特定方面,处理器716、(多个)处理器126或其组合被包括在集成电路中。
结合所描述的实现方式,一种用于执行卷积的装置包括用于取回数据的第一块和数据的第二块的至少部分的部件,该数据对应于至少沿着第一维度和第二维度排列的值的阵列。举例来说,用于取回第一块的部件可以包括一个或多个处理器126,设备502,电路516,处理器706,可由(多个)处理器706、126执行的指令756,一个或多个其它设备、模块、电路、组件,或其组合。
该装置包括用于执行混合卷积运算的部件,该混合卷积运算在第一块以及第二块的至少部分上应用滤波器以生成输出数据,其中该输出数据包括第一累加块以及第二累加块的至少部分。例如,用于执行混合卷积运算的部件可以包括一个或多个处理器126,设备502,电路516,处理器706,可由(多个)处理器706、126执行的指令756,一个或多个其他设备、模块、电路、组件,或其组合。
该装置还包括用于将第一累加块存储为第一输出数据的部件,其中第二块的该部分沿着第一维度与第一块相邻,并且第二累加块的该部分沿着第二维度与第一累加块相邻。例如,用于存储的部件可以包括一个或多个处理器126,设备502,电路516,处理器706,可由(多个)处理器706、126执行的指令756,一个或多个其他设备、模块、电路、组件,或其组合。
在一些实现方式中,一种非暂时性计算机可读介质存储指令,当该指令由一个或多个处理器执行时,使一个或多个处理器发起、执行或控制操作以执行如上所述的功能中的部分或全部功能。例如,该指令可执行来实现图1-图7的一个或多个操作或方法。在一些实现方式中,图1-图7的一个或多个操作或方法的部分或全部可以由执行指令的一个或多个处理器(例如,一个或多个中央处理单元(CPU)、一个或多个图形处理单元(GPU)、一个或多个数字信号处理器(DSP))来实现,可以由专用硬件电路来实现或其由任何组合来实现。
本文描述的示例的图示旨在提供对各种实现方式的结构的总体理解。这些图示并不旨在作为对利用本文描述的结构或方法的装置和系统的所有元素和特征的完整描述。对于本领域技术人员来说,在阅读本公开后,许多其他实现方式可能是显而易见的。可以利用和从本公开中推导出其他实现方式,使得可以在不脱离本公开的范围的情况下进行结构和逻辑的替换和改变。例如,可以以不同于图中所示的次序来执行方法操作,或者可以省略一个或多个方法操作。相应地,本公开和附图应被视为说明性的而非限制性的。
本领域技术人员将进一步认识到,结合本文公开的实现方式描述的各种说明性逻辑块、配置、模块、电路和算法步骤可以被实现为电子硬件、由处理器执行的计算机软件或两者的组合。各种说明性的组件、块、配置、模块、电路和步骤已经在上面根据它们的功能在总体上进行了描述。这种功能是被实现为硬件还是被实现为处理器可执行指令取决于特定的应用和对整个系统施加的设计约束。熟练的技术人员可以针对每个特定的应用以不同的方式实现所描述的功能,并且这种实现决策不应被解释为导致脱离本公开的范围。
结合本文公开的实现方式描述的方法或算法的步骤可以以硬件、以由处理器执行的软件模块或以两者的组合直接体现。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、光盘只读存储器(CD-ROM)或本领域已知的任何其他形式的非瞬态存储介质中。示例性存储介质耦合到处理器,使得处理器可以从存储介质读取信息以及向存储介质写入信息。在替代方案中,存储介质可以集成到处理器。处理器和存储介质可以驻留在专用集成电路(ASIC)中。ASIC可以驻留在计算设备或用户终端中。在替代方案中,处理器和存储介质可以作为分立的组件而驻留在计算设备或用户终端中。
提供对所公开的实现方式的前述描述是为了使本领域技术人员能够制造或使用所公开的实现方式。对这些实现方式的各种修改对于本领域技术人员来说将容易地显而易见的,并且本文定义的原理可以被应用于其它实现方式,而不脱离本公开的范围。提交本公开的摘要是基于这样的理解,即它将不用于解释或限制权利要求的范围或含义。此外,在前面的具体实施方式中,出于简化本公开的目的,各种特征可以被组合在一起或者在单个实现方式中被描述。如上所述的示例示出了本公开,但不限制本公开。还应理解,根据本公开的原理,许多修改和变化是可能的。因此,本公开不旨在限于本文所示的实现方式,而是符合与由所附权利要求定义的原理和新颖特征相一致的最大可能范围。
Claims (30)
1.一种设备,包括:
存储器,被配置为存储与至少沿着第一维度和第二维度排列的值的阵列相对应的数据;以及
一个或多个处理器,被配置为:
从所述存储器中取回所述数据的第一块和所述数据的第二块的至少部分;
执行第一混合卷积运算,所述第一混合卷积运算在所述第一块上和所述第二块的至少部分上应用滤波器以生成输出数据,
其中所述输出数据包括第一累加块以及第二累加块的至少部分;以及
将所述第一累加块存储为第一输出数据,其中所述第二块的部分沿着所述第一维度与所述第一块相邻,并且所述第二累加块的部分沿着所述第二维度与所述第一累加块相邻。
2.根据权利要求1所述的设备,其中所述第一块、所述第二块、所述第一累加块和所述第二累加块中的每一者的大小根据由所述存储器支持、用于由所述一个或多个处理器来存储器存取的存储器存取数据大小而确定。
3.根据权利要求2所述的设备,其中所述第一混合卷积运算沿着所述第二维度使用零填充而不沿着所述第一维度使用零填充,以使用至多两次存储器存取来取回所述第一块和所述第二块的部分并使用至多两次存储器存取来存储所述第一累加块和所述第二累加块的部分,来使能卷积。
4.根据权利要求1所述的设备,其中:
所述第一块以及所述第二块的部分一起对应于所述阵列的N行和前M列,N和M是正整数,并且N大于M;
所述第一累加块和所述第二累加块一起对应于输出数据的M行和N列;
所述第一累加块对应于第一累加器中的累加值的M行和M列;以及
所述第二累加块的部分对应于第二累加器中的局部累加值的M行和N-M列。
5.根据权利要求4所述的设备,其中所述一个或多个处理器还被配置为使用第一存储器存取操作来存取所述第一块以及使用第二存储器存取操作来存取所述第二块的部分,并且其中所述第一存储器存取操作和所述第二存储器存取操作中的每一个存取操作被配置为至多取回所述数据的M行和M列。
6.根据权利要求4所述的设备,其中所述滤波器包括P行和P列滤波器值,并且其中P=N-M+1。
7.根据权利要求4所述的设备,其中所述一个或多个处理器还被配置为:
取回一起对应于所述阵列的N行和第二M列的所述数据的第三块以及第四块的至少部分;
对所述第三块以及所述第四块的部分执行第二混合卷积运算,以更新所述第二累加块并生成第三累加块的至少部分,所述第三累加块的至少部分沿着所述第二维度与所述第二累加块相邻;以及
将所述第二累加块存储为第二输出数据。
8.根据权利要求7所述的设备,其中所述一个或多个处理器还被配置为以流水线方式执行包括所述第一混合卷积运算和第二所述混合卷积运算的混合卷积运算序列,其中所述第一累加块的存储和所述第二混合卷积运算的执行发生在相同的流水线周期期间。
9.根据权利要求7所述的设备,其中所述一个或多个处理器还被配置为:
在第一累加器中生成所述第一累加块;
在第二累加器中生成所述第二累加块;以及
在存储所述第一累加块之后,在所述第一累加器中生成所述第三累加块。
10.根据权利要求1所述的设备,其中所述一个或多个处理器被配置为根据图像处理操作将所述数据与所述滤波器进行卷积。
11.根据权利要求1所述的设备,其中所述一个或多个处理器被配置为根据神经网络卷积层操作将所述数据与所述滤波器进行卷积。
12.根据权利要求11所述的设备,其中所述存储器和所述一个或多个处理器被集成到交通工具中。
13.根据权利要求11所述的设备,其中所述存储器和所述一个或多个处理器被集成到家庭自动化系统中。
14.根据权利要求1所述的设备,其中所述存储器和所述一个或多个处理器被集成到移动设备中。
15.根据权利要求1所述的设备,其中所述一个或多个处理器被包括在集成电路中。
16.一种执行卷积的方法,包括:
在一个或多个处理器处从存储器中取回数据的第一块和所述数据的第二块的至少部分,所述数据对应于至少沿着第一维度和第二维度排列的值的阵列;
执行第一混合卷积运算,所述第一混合卷积运算在所述第一块上和所述第二块的至少部分上应用滤波器以生成输出数据,
其中所述输出数据包括第一累加块以及第二累加块的至少部分;以及
将所述第一累加块存储为第一输出数据,其中所述第二块的部分沿着所述第一维度与所述第一块相邻,并且所述第二累加块的部分沿着所述第二维度与所述第一累加块相邻。
17.根据权利要求16所述的方法,其中所述第一块、所述第二块、所述第一累加块和所述第二累加块中的每一者的大小根据由所述存储器支持、用于由所述一个或多个处理器来存储器存取的存储器存取数据大小而确定。
18.根据权利要求16所述的方法,其中,所述第一混合卷积运算沿着所述第二维度使用零填充而不沿着所述第一维度使用零填充,以使用至多两次存储器存取来取回所述第一块和所述第二块的部分并使用至多两次存储器存取来存储所述第一累加块和所述第二累加块的部分,来使能卷积。
19.根据权利要求16所述的方法,其中取回所述第一块包括使用第一存储器存取操作,其中取回所述第二块的部分包括使用第二存储器存取操作,其中所述第一存储器存取操作和所述第二存储器存取操作中的每一个存取操作被配置为至多提取所述数据的M行和M列,其中M为正整数,并且其中所述第一累加块和所述第二累加块中的每一个累加块对应于输出数据的M行和M列。
20.根据权利要求19所述的方法,还包括:
取回沿着所述阵列的第一维度与所述第一块相邻的所述数据的第三块;
取回沿着所述阵列的第一维度与所述第二块的部分相邻的所述数据的第四块的至少部分;
对所述第三块以及所述第四块的部分执行第二混合卷积运算,以更新所述第二累加块并生成第三累加块的至少部分,所述第三累加块的至少部分沿着所述第二维度与所述第二累加块相邻;以及
将所述第二累加块存储为第二输出数据。
21.根据权利要求20所述的方法,其中所述第一混合卷积运算和所述第二混合卷积运算为以流水线方式执行的混合卷积运算序列的一部分,其中所述第一累加块的存储和所述第二混合卷积运算的执行发生在相同的流水线周期期间。
22.根据权利要求20所述的方法,还包括:
在第一累加器中生成所述第一累加块;
在第二累加器中生成所述第二累加块;以及
在存储所述第一累加块之后,在所述第一累加器中生成所述第三累加块。
23.根据权利要求16所述的方法,其中所述一个或多个处理器被配置为根据图像处理操作或神经网络卷积层操作中的至少一个操作,将所述数据与所述滤波器进行卷积。
24.一种计算机可读存储设备,所述计算机可读存储设备存储指令,当所述指令由一个或多个处理器执行时,使所述一个或多个处理器:
从存储器中取回数据的第一块和所述数据的第二块的至少部分,所述数据对应于至少沿着第一维度和第二维度排列的值的阵列;
执行第一混合卷积运算,所述第一混合卷积运算在所述第一块上以及所述第二块的至少部分上应用滤波器以生成输出数据,
其中所述输出数据包括第一累加块以及第二累加块的至少部分;以及
将所述第一累加块存储为第一输出数据,其中所述第二块的部分沿着所述第一维度与所述第一块相邻,并且所述第二累加块的部分沿着所述第二维度与所述第一累加块相邻。
25.根据权利要求24所述的计算机可读存储设备,其中所述第一块、所述第二块、所述第一累加块和所述第二累加块中的每一个的大小根据由所述存储器支持、用于由所述一个或多个处理器来存储器存取的存储器存取数据大小而确定。
26.根据权利要求24所述的计算机可读存储设备,其中所述第一块、所述第二块、所述第一累加块和所述第二累加块中的每一个具有相同的大小。
27.根据权利要求24所述的计算机可读存储设备,其中所述指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器:
取回沿着所述阵列的所述第一维度与所述第一块相邻的所述数据的第三块;
取回沿着所述阵列的所述第一维度与所述第二块的部分相邻的所述数据的第四块的至少部分;
对所述第三块和所述第四块的部分执行第二混合卷积运算,以更新所述第二累加块并生成第三累加块的至少部分,所述第三累加块的至少部分沿着所述第二维度与所述第二累加块相邻;以及
将所述第二累加块存储为第二输出数据。
28.一种装置,包括:
用于取回数据的第一块和所述数据的第二块的至少部分的部件,所述数据对应于至少沿着第一维度和第二维度排列的值的阵列;
用于执行混合卷积运算的部件,所述混合卷积运算在所述第一块上和所述第二块的至少部分上应用滤波器以生成输出数据,
其中所述输出数据包括第一累加块和第二累加块的至少部分;以及
用于将所述第一累加块存储为第一输出数据的部件,其中所述第二块的部分沿着所述第一维度与所述第一块相邻,并且所述第二累加块的部分沿着所述第二维度与所述第一累加块相邻。
29.根据权利要求28所述的装置,其中所述用于取回的部件、所述用于执行所述混合卷积运算的部件和所述用于存储的部件被集成到以下各项中的至少一项中或其组合中:家庭自动化系统、语音激活设备、无线扬声器和语音激活设备、便携式电子设备、汽车、交通工具、计算设备、通信设备、物联网(IoT)设备、虚拟现实(VR)设备、基站、移动设备。
30.根据权利要求28所述的装置,其中用于执行所述混合卷积运算的所述部件被配置为根据图像处理操作或神经网络卷积层操作中的至少一个操作,将所述数据与所述滤波器进行卷积。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062969594P | 2020-02-03 | 2020-02-03 | |
US62/969,594 | 2020-02-03 | ||
US17/165,648 US12093800B2 (en) | 2020-02-03 | 2021-02-02 | Hybrid convolution operation |
US17/165,648 | 2021-02-02 | ||
PCT/US2021/016373 WO2021158631A1 (en) | 2020-02-03 | 2021-02-03 | Hybrid convolution operation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115039121A true CN115039121A (zh) | 2022-09-09 |
Family
ID=77062909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180012476.5A Pending CN115039121A (zh) | 2020-02-03 | 2021-02-03 | 混合卷积运算 |
Country Status (5)
Country | Link |
---|---|
US (1) | US12093800B2 (zh) |
EP (1) | EP4100913A1 (zh) |
CN (1) | CN115039121A (zh) |
TW (1) | TW202134908A (zh) |
WO (1) | WO2021158631A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11276463B2 (en) * | 2020-06-16 | 2022-03-15 | Micron Technology, Inc. | Matching patterns in memory arrays |
CN114462587B (zh) * | 2022-02-10 | 2023-04-07 | 电子科技大学 | 一种用于光电混合计算神经网络的fpga实现方法 |
CN114528526B (zh) * | 2022-04-24 | 2022-08-02 | 深圳思谋信息科技有限公司 | 卷积数据处理方法、装置、卷积运算加速器和存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7234040B2 (en) * | 2002-01-24 | 2007-06-19 | University Of Washington | Program-directed cache prefetching for media processors |
US9292476B2 (en) | 2012-10-10 | 2016-03-22 | Intel Corporation | Fourier transform computation for distributed processing environments |
US9741104B2 (en) | 2015-05-18 | 2017-08-22 | Toshiba Medical Systems Corporation | Apparatus, method, and computer-readable medium for quad reconstruction using hybrid filter convolution and high dynamic range tone-mapping |
US11216720B2 (en) | 2015-10-08 | 2022-01-04 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Neural network unit that manages power consumption based on memory accesses per period |
US11373266B2 (en) | 2017-05-05 | 2022-06-28 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
EP3557485B1 (en) * | 2018-04-19 | 2021-05-26 | Aimotive Kft. | Method for accelerating operations and accelerator apparatus |
US11429851B1 (en) * | 2018-12-13 | 2022-08-30 | Xilinx, Inc. | Neural network controller |
US11379555B2 (en) * | 2019-06-28 | 2022-07-05 | Amazon Technologies, Inc. | Dilated convolution using systolic array |
US11327690B2 (en) * | 2019-11-13 | 2022-05-10 | Google Llc | Enhanced input of machine-learning accelerator activations |
GB2589382B (en) * | 2019-11-29 | 2023-02-22 | Imagination Tech Ltd | Hardware implementation of a neural network |
-
2021
- 2021-02-02 US US17/165,648 patent/US12093800B2/en active Active
- 2021-02-03 TW TW110103998A patent/TW202134908A/zh unknown
- 2021-02-03 EP EP21708495.3A patent/EP4100913A1/en active Pending
- 2021-02-03 CN CN202180012476.5A patent/CN115039121A/zh active Pending
- 2021-02-03 WO PCT/US2021/016373 patent/WO2021158631A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP4100913A1 (en) | 2022-12-14 |
TW202134908A (zh) | 2021-09-16 |
WO2021158631A1 (en) | 2021-08-12 |
US12093800B2 (en) | 2024-09-17 |
US20210241070A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115039121A (zh) | 混合卷积运算 | |
CN112214726B (zh) | 运算加速器 | |
KR102148110B1 (ko) | 계산 장치 및 방법 | |
US9411726B2 (en) | Low power computation architecture | |
CN109032670B (zh) | 神经网络处理装置及其执行向量复制指令的方法 | |
US20170011288A1 (en) | Neural network processor | |
JP2019109896A (ja) | ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス | |
WO2020238843A1 (zh) | 神经网络计算设备、方法以及计算设备 | |
WO2023116314A1 (zh) | 一种神经网络加速装置、方法、设备和计算机存储介质 | |
US20230259743A1 (en) | Neural network accelerator with configurable pooling processing unit | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114970807A (zh) | Softmax和指数在硬件中的实施 | |
CN107871162B (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN109711538B (zh) | 运算方法、装置及相关产品 | |
CN114330669B (zh) | 一种面向向量处理器的半精度向量化conv1×1卷积方法及系统 | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
CN115545174A (zh) | 包括矩阵乘法的神经网络 | |
CN113610223B (zh) | 乘法电路、卷积运算方法、介质、片上系统和电子设备 | |
CN113031916A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111832714A (zh) | 运算方法及装置 | |
US11900111B2 (en) | Permutation instruction | |
JP7368512B2 (ja) | 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法 | |
US20220092409A1 (en) | Neural network processing | |
CN118229509A (zh) | 一种适用dsp的图像处理优化方法、系统、设备及介质 |
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 |