CN114936633B - 用于转置运算的数据处理单元及图像转置运算方法 - Google Patents
用于转置运算的数据处理单元及图像转置运算方法 Download PDFInfo
- Publication number
- CN114936633B CN114936633B CN202210679605.2A CN202210679605A CN114936633B CN 114936633 B CN114936633 B CN 114936633B CN 202210679605 A CN202210679605 A CN 202210679605A CN 114936633 B CN114936633 B CN 114936633B
- Authority
- CN
- China
- Prior art keywords
- data
- bar data
- vertical bar
- module
- width
- 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
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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Image Processing (AREA)
Abstract
本申请提供一种用于转置运算的数据处理单元及图像转置运算方法,用于转置运算的数据处理单元包括纵向读入模块、转置模块和横向写出模块,利用纵向读入模块对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。在数据读取和写入的过程中都可以用满所有的总线位宽,充分利用宽总线的优势,宽总线读写全部是有效数据,没有垃圾数,不会浪费带宽。同时,由于内部在对数据进行转置前后,对第一竖条数据和第一横条数据两种模式的数据进行运算处理时,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
Description
技术领域
本申请涉及神经网络加速器技术领域,具体而言,涉及一种用于转置运算的数据处理单元及图像转置运算方法。
背景技术
在现在的神经网络计算主要包括三个阶段,从存储设备中读取数据、对数据进行处理和计算、将计算结果写出到存储设备中。一般情况下神经网络处理的数据都是四维张量数据,对神经网络来说,计算主要是卷积、池化、全连接等,数据处理主要包括图像的转置、切片等。目前的技术方案是对输入的四维数据进行顺序读取,在片内设计一个缓存模块缓存几行数据,然后对顺序读取的数据进行计算等。
目前的神经网络芯片处理的数据通常是按NHWC顺序排列的四维的张量(N:图像张数,H:高,W:宽,C:通道数),在芯片设计中通常会设计比较宽的总线位宽实现更高速的数据读写,但是神经网络处理的数据通道数通常是非常不确定的,因此可能总线上一个时钟周期传输的一笔数据(后面称之为1个cycle数据)可能包括多个像素(每个像素即C个输入数据),也可能只包括单个像素的部分通道,这要求后面的数据计算处理模块也同样支持这两种情况。例如简单的对输入数据进行累加的模块,如果输入一个像素数据刚好是1个cycle数据,那么直接设计C个加法器即可;如果输入一个像素只有0.5cycle数据,那么必须设计一个折半加的功能;0.25cycle数据的时候,就需要两个折半加的功能。总的来说,支持一个像素小于1个cycle数据将需要2C个加法器,还包括折半的逻辑等,消耗是只支持整cycle像素加法的两倍。
因此,现有技术对多个像素在1个cycle数据中的情况下进行计算时,需要设置更多的运算逻辑才能实现计算模块不卡读写吞吐,占用大量的运算资源,降低了运算资源的利用率。
发明内容
本申请实施例的目的在于提供一种用于转置运算的数据处理单元及图像转置运算方法,用以解决现有技术对多个像素在1个cycle数据中的情况下进行计算时,需要设置更多的运算逻辑才能实现计算模块不卡读写吞吐,占用大量的运算资源,降低了运算资源的利用率的问题。
本申请实施例提供的一种用于转置运算的数据处理单元,包括:
纵向读入模块,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
转置模块,用于:将第一竖条数据进行转置,得到第一横条数据;
横向写出模块,用于:将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置。
上述技术方案中,用于转置运算的数据处理单元包括纵向读入模块、转置模块和横向写出模块,利用纵向读入模块对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。第一竖条数据用四维NHWC坐标表示的话,就是第一cycle读取(0,0,0,0)到(0,0,w0,0)的数据,第二cycle读取(0,1,0,0)到(0,1,w0,0)的数据(即W方向第一个宽度为w0的一列数据);在纵向一列读完之后继续读取(0,0,w0,0)到(0,0,2×w0,0)的数据(即W方向第二个宽度为w0的一列数据),以此类推,这里w0就是满足总线带宽的输入子图宽度,也就是说,在数据读取和写入的过程中都可以用满所有的总线位宽,充分利用宽总线的优势,宽总线读写全部是有效数据,没有垃圾数,不会浪费带宽。同时,由于内部在对数据进行转置前后,对第一竖条数据和第一横条数据两种模式的数据进行运算处理时,只需设计cycle间计算的逻辑,无需cycle内计算逻辑,在不卡读写吞吐的前提下省掉一半的计算模块,即硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,还包括运算模块,运算模块用于在转置模块进行转置前后对数据进行计算。
在一些可选的实施方式中,运算模块包括累加器。
在一些可选的实施方式中,累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据;
转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;对第二横条数据纵向读入,并进行转置,得到第三横条数据;
横向写出模块,还用于:将第三横条数据横向写出。
上述技术方案中,数据处理单元在进行图像纵向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,之后只需使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据,再对第二竖条数据进行一次转置,二次转置,就得到完成了图像纵向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列(即本实施例的累加器),无需提供其他计算逻辑,即可完成图像纵向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据;
转置模块,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据;
横向写出模块,还用于:将第三横条数据横向写出。
上述技术方案中,数据处理单元在进行图像横向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,对第一竖条数据进行一次转置得到第一横条数据,再使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据中纵向相邻两个cycle相加,得到第二横条数据,再对进行二次转置,就得到完成了图像横向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列(即本实施例的累加器),无需提供其他计算逻辑,即可完成图像横向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块包括滑窗求和累加器和乘法器;
滑窗求和累加器,用于:将第一竖条数据滑窗求和,得到第二竖条数据;
转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;
纵向读入模块,还用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
滑窗求和累加器,还用于:对第三竖条数据进行滑窗求和,得到第四竖条数据;
乘法器,用于:将第四竖条数据乘池化核大小的倒数,得到第五竖条数据;
转置模块,还用于:将第五竖条数据进行转置,得到第三横条数据;
横向写出模块,还用于:将第三横条数据横向写出。
上述技术方案中,数据处理单元在进行图像平均池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和得到第四竖条数据,并将第四竖条数据乘池化核大小的倒数,二次转置后即得到完成了图像平均池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求和的滑窗求和累加器,以及一个乘法器,即可完成图像平均池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块包括滑窗求最大值模块;
滑窗求最大值模块,用于:将第一竖条数据滑窗求最大值,得到第二竖条数据;
转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;
纵向读入模块,还用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
滑窗求最大值模块,还用于:对第三竖条数据进行滑窗求最大值,得到第四竖条数据;
转置模块,还用于:将第四竖条数据进行转置,得到第三横条数据;
横向写出模块,还用于:将第三横条数据写出。
上述技术方案中,数据处理单元在进行图像最大池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值得到第四竖条数据,二次转置后即得到完成了图像最大池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求最大值的滑窗求最大值模块,即可完成图像最大池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块包括Nx1卷积模块和累加模块;
Nx1卷积模块,用于:将第一竖条数据进行Nx1卷积,得到第二竖条数据;
转置模块,还用于:将第二竖条数据进行转置,得到部分横条数据;
纵向读入模块、Nx1卷积模块和转置模块还用于:以每次读取的起始位置横向移动stride_w个像素,重复M次上述步骤,得到M个部分横条数据;
累加模块,用于:将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据;
转置模块,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据;
横向写出模块,还用于:将第三横条数据横向写出。
上述技术方案中,数据处理单元在涉及计算的部分,只需实现Nx1卷积的模块,以及一个宽度与总线宽度相同的累加模块,即可完成图像卷积运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
本申请实施例提供的一种图像转置运算方法,包括:
对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据。
上述技术方案中,对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。第一竖条数据用四维NHWC坐标表示的话,就是第一cycle读取(0,0,0,0)到(0,0,w0,0)的数据,第二cycle读取(0,1,0,0)到(0,1,w0,0)的数据;在纵向一列读完之后继续读取(0,0,w0,0)到(0,0,2×w0,0)的数据,以此类推,这里w0就是满足总线带宽的输入子图宽度,也就是说,在数据读取和写入的过程中都可以用满所有的总线位宽,充分利用宽总线的优势,宽总线读写全部是有效数据,没有垃圾数,不会浪费带宽。同时,由于内部在对数据进行转置前后,对第一竖条数据和第一横条数据两种模式的数据进行运算处理时,只需设计cycle间计算的逻辑,无需cycle内计算逻辑,在不卡读写吞吐的前提下省掉一半的计算模块,即硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行转置,得到第一横条数据;
将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置。
上述技术方案中,将前面的输入的第一竖条数据进行转置,该转置在HW方向上,不涉及C维,使第一竖条数据变成第一横条数据,将第一横条数据按照顺序一次写出,实现了一个NHWC四维图像在HW维度上的转置。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据;
将第二竖条数据进行转置,得到第二横条数据;
对第二横条数据纵向读入,并进行转置,得到第三横条数据;
将第三横条数据横向写出,完成图像纵向加法运算。
上述技术方案中,在进行图像纵向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,之后只需使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据,再对第二竖条数据进行一次转置,二次转置,就得到完成了图像纵向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列,无需提供其他计算逻辑,即可完成图像纵向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行转置,得到第一横条数据;
使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据;
对第二横条数据纵向读入,并进行转置,得到第三横条数据;
将第三横条数据横向写出,完成图像横向加法运算。
上述技术方案中,在进行图像横向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,对第一竖条数据进行一次转置得到第一横条数据,再使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据中纵向相邻两个cycle相加,得到第二横条数据,再对进行二次转置,就得到完成了图像横向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列,无需提供其他计算逻辑,即可完成图像横向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,得到第二竖条数据;
将第二竖条数据进行转置,得到第二横条数据;
对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和,得到第四竖条数据;
将第四竖条数据乘池化核大小的倒数,得到第五竖条数据;
将第五竖条数据进行转置,得到第三横条数据;
将第三横条数据横向写出,完成图像平均池化运算。
上述技术方案中,在进行图像平均池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和得到第四竖条数据,并将第四竖条数据乘池化核大小的倒数,二次转置后即得到完成了图像平均池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求和模块,以及一个乘法器,即可完成图像平均池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,得到第二竖条数据;
将第二竖条数据进行转置,得到第二横条数据;
对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值,得到第四竖条数据;
将第四竖条数据进行转置,得到第三横条数据;
将第三横条数据写出,完成图像最大池化运算。
上述技术方案中,在进行图像最大池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值得到第四竖条数据,二次转置后即得到完成了图像最大池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求最大值模块,即可完成图像最大池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行Nx1卷积,得到第二竖条数据;
将第二竖条数据进行转置,得到部分横条数据;
以每次读取的起始位置横向移动stride_w个像素,重复M次上述步骤,得到M个部分横条数据;
将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据;
对第二横条数据纵向读入,并进行转置,得到第三横条数据;
将第三横条数据写出,完成图像卷积运算。
上述技术方案中,在涉及计算的部分,只需实现Nx1卷积的模块,以及一个宽度与总线宽度相同的加法器阵列,即可完成图像卷积运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种用于转置运算的数据处理单元结构示意图;
图2为本申请的另一实施例提供的数据处理单元的结构示意图;
图3为本申请实施例提供的数据处理单元对数据的处理流程示意图;
图4为本申请实施例提供的一种图像转置方法步骤流程图;
图5为本申请实施例提供的一种图像纵向加法运算方法步骤流程图;
图6为本申请实施例提供的一种图像横向加法运算方法步骤流程图;
图7为本申请实施例提供的一种平均池化运算方法步骤流程图;
图8为本申请实施例提供的一种最大池化运算方法步骤流程图;
图9为本申请实施例提供的一种卷积运算方法步骤流程图。
图标:1-纵向读入模块,2-转置模块,3-横向写出模块,4-运算模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参照图1,图1为本申请实施例提供的一种用于转置运算的数据处理单元结构示意图,包括纵向读入模块1、转置模块2和横向写出模块3。
其中,纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。转置模块2,用于:将第一竖条数据进行转置,得到第一横条数据。横向写出模块3,用于:将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置。
本申请实施例中,用于转置运算的数据处理单元包括纵向读入模块1、转置模块2和横向写出模块3,利用纵向读入模块1对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。第一竖条数据用四维NHWC坐标表示的话,就是第一cycle读取(0,0,0,0)到(0,0,w0,0)的数据,第二cycle读取(0,1,0,0)到(0,1,w0,0)的数据;在纵向一列读完之后继续读取(0,0,w0,0)到(0,0,2×w0,0)的数据,以此类推,这里w0就是满足总线带宽的输入子图宽度,也就是说,在数据读取和写入的过程中都可以用满所有的总线位宽,充分利用宽总线的优势,宽总线读写全部是有效数据,没有垃圾数,不会浪费带宽。同时,由于内部在对数据进行转置前后,对第一竖条数据和第一横条数据两种模式的数据进行运算处理时,如图3所示的处理流程,只需设计cycle间计算的逻辑,无需cycle内计算逻辑,在不卡读写吞吐的前提下省掉一半的计算模块,即硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图2,图2为本申请的另一实施例提供的数据处理单元的结构示意图,在下面的一个或多个实施例中,数据处理单元还包括运算模块4,运算模块4设用于在转置模块2进行转置前后对数据进行计算。
在一些可选的实施方式中,运算模块4包括累加器。其中,纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据。转置模块2,用于:将第二竖条数据进行转置,得到第二横条数据。转置模块2,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据。横向写出模块3,用于:将第三横条数据横向写出。
本申请实施例中,数据处理单元在进行图像纵向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,之后只需使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据,再对第二竖条数据进行一次转置,二次转置,就得到完成了图像纵向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列(即本实施例的累加器),无需提供其他计算逻辑,即可完成图像纵向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块4包括累加器。其中,纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。转置模块2,用于:将第一竖条数据进行转置,得到第一横条数据。累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据。转置模块2,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据。横向写出模块3,用于:将第三横条数据横向写出。
本申请实施例中,数据处理单元在进行图像横向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,对第一竖条数据进行一次转置得到第一横条数据,再使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据中纵向相邻两个cycle相加,得到第二横条数据,再对进行二次转置,就得到完成了图像横向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列(即本实施例的累加器),无需提供其他计算逻辑,即可完成图像横向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块4还包括滑窗求和累加器和乘法器。其中,纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。滑窗求和累加器,用于:将第一竖条数据滑窗求和,得到第二竖条数据。转置模块2,用于:将第二竖条数据进行转置,得到第二横条数据。纵向读入模块1,还用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据。滑窗求和累加器,还用于:对第三竖条数据进行滑窗求和,得到第四竖条数据。乘法器,用于:将第四竖条数据乘池化核大小的倒数,得到第五竖条数据。转置模块2,用于:将第五竖条数据进行转置,得到第三横条数据。横向写出模块3,用于:将第三横条数据横向写出。
本申请实施例中,数据处理单元在进行图像平均池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和得到第四竖条数据,并将第四竖条数据乘池化核大小的倒数,二次转置后即得到完成了图像平均池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求和的滑窗求和累加器,以及一个乘法器,即可完成图像平均池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块4包括滑窗求最大值模块。纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。滑窗求最大值模块,用于:将第一竖条数据滑窗求最大值,得到第二竖条数据。转置模块2,用于:将第二竖条数据进行转置,得到第二横条数据。纵向读入模块1,用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据。滑窗求最大值模块,用于:对第三竖条数据进行滑窗求最大值,得到第四竖条数据。转置模块2,用于:将第四竖条数据进行转置,得到第三横条数据。横向写出模块3,用于:将第三横条数据写出。
本申请实施例中,数据处理单元在进行图像最大池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值得到第四竖条数据,二次转置后即得到完成了图像最大池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求最大值的滑窗求最大值模块,即可完成图像最大池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在一些可选的实施方式中,运算模块4包括Nx1卷积模块和累加模块。纵向读入模块1,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;Nx1卷积模块,用于:将第一竖条数据进行Nx1卷积,得到第二竖条数据。转置模块2,用于:将第二竖条数据进行转置,得到部分横条数据。纵向读入模块1、Nx1卷积模块和转置模块2还用于:以每次读取的起始位置横向移动stride_w个像素,重复M次上述步骤,得到M个部分横条数据。累加模块,用于:将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据。转置模块2,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据。横向写出模块3,用于:将第三横条数据写出。
本申请实施例中,数据处理单元在涉及计算的部分,只需实现Nx1卷积的模块,以及一个宽度与总线宽度相同的累加模块,即可完成图像卷积运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图4,图4为本申请实施例提供的一种图像转置方法步骤流程图,包括:
步骤S11、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S12、将第一竖条数据进行转置,得到第一横条数据;
步骤S13、将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置。
本申请实施例中,对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据。第一竖条数据用四维NHWC坐标表示的话,就是第一cycle读取(0,0,0,0)到(0,0,w0,0)的数据,第二cycle读取(0,1,0,0)到(0,1,w0,0)的数据;在纵向一列读完之后继续读取(0,0,w0,0)到(0,0,2×w0,0)的数据,以此类推,这里w0就是满足总线带宽的输入子图宽度,也就是说,在数据读取和写入的过程中都可以用满所有的总线位宽,充分利用宽总线的优势,宽总线读写全部是有效数据,没有垃圾数,不会浪费带宽。同时,由于内部在对数据进行转置前后,对第一竖条数据和第一横条数据两种模式的数据进行运算处理时,只需设计cycle间计算的逻辑,无需cycle内计算逻辑,在不卡读写吞吐的前提下省掉一半的计算模块,即硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图5,图5为本申请实施例提供的一种图像纵向加法运算方法步骤流程图,包括:
步骤S21、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S22、使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据;这里的,第二竖条数据即为NHWC四维图像在H方向进行了加法运算的输出结果;
步骤S23、将第二竖条数据进行转置,得到第二横条数据;
步骤S24、对第二横条数据纵向读入,并进行转置,得到第三横条数据;
步骤S25、将第三横条数据横向写出,完成图像纵向加法运算。
本申请实施例中,在进行图像纵向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,之后只需使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据,再对第二竖条数据进行一次转置,二次转置,就得到完成了图像纵向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列,无需提供其他计算逻辑,即可完成图像纵向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图6,图6为本申请实施例提供的一种图像横向加法运算方法步骤流程图,包括:
步骤S31、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S32、将第一竖条数据进行转置,得到第一横条数据;
步骤S33、使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据;这里的第二横条数据,即为NHWC四维图像在W方向进行了加法运算的输出结果;
步骤S34、对第二横条数据纵向读入,并进行转置,得到第三横条数据;
步骤S35、将第三横条数据横向写出,完成图像横向加法运算。
本申请实施例中,在进行图像横向加法运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,对第一竖条数据进行一次转置得到第一横条数据,再使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据中纵向相邻两个cycle相加,得到第二横条数据,再对进行二次转置,就得到完成了图像横向加法运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个宽度与总线宽度相同的加法器阵列,无需提供其他计算逻辑,即可完成图像横向的张量内部加法运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图7,图7为本申请实施例提供的一种平均池化运算方法步骤流程图,包括:
步骤S41、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S42、以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,得到第二竖条数据;这里的第二竖条数据,即为NHWC四维图像在H方向上滑窗求和的输出结果;
步骤S43、将第二竖条数据进行转置,得到第二横条数据;
步骤S44、对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
步骤S45、以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和,得到第四竖条数据;这里的第四竖条数据,即为H方向上的滑窗求和结果在W方向上的滑窗求和的输出结果;
步骤S46、将第四竖条数据乘池化核大小的倒数,得到第五竖条数据;这里的第五竖条数据,即为池化的均值;
步骤S47、将第五竖条数据进行转置,得到第三横条数据;
步骤S48、第三横条数据横向写出,完成图像平均池化运算。
本申请实施例中,在进行图像平均池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和得到第四竖条数据,并将第四竖条数据乘池化核大小的倒数,二次转置后即得到完成了图像平均池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求和模块,以及一个乘法器,即可完成图像平均池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图8,图8为本申请实施例提供的一种最大池化运算方法步骤流程图,包括:
步骤S51、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S52、以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,得到第二竖条数据;这里的第二竖条数据,即为NHWC四维图像在H方向上滑窗求最大值的输出结果;
步骤S53、将第二竖条数据进行转置,得到第二横条数据;
步骤S54、对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
步骤S55、以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值,得到第四竖条数据;这里的第四竖条数据,即为NHWC四维图像在H方向上滑窗求最大结果在W方向上滑窗求最大值的输出结果;
步骤S56、将第四竖条数据进行转置,得到第三横条数据;
步骤S57、将第三横条数据写出,完成图像最大池化运算。
本申请实施例中,在进行图像最大池化运算时,首先对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据,在一次转置前,以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,转置后的第二横条数据再按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据,并在二次转置前,以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值得到第四竖条数据,二次转置后即得到完成了图像最大池化运算的第三横条数据。也就是说,本实施例涉及计算的部分,只需一个实现宽度与总线宽度相同的滑窗的滑窗求最大值模块,即可完成图像最大池化运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
请参照图9,图9为本申请实施例提供的一种卷积运算方法步骤流程图,包括:
步骤S61、对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
步骤S62、将第一竖条数据进行Nx1卷积,得到第二竖条数据;
步骤S63、将第二竖条数据进行转置,得到部分横条数据;
步骤S64、以每次读取的起始位置横向移动stride_w个像素,重复M次上述步骤S61-S63,得到M个部分横条数据;
步骤S65、将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据;
步骤S66、对第二横条数据纵向读入,并进行转置,得到第三横条数据;
步骤S67、将第三横条数据写出,完成图像卷积运算。
本申请实施例中,在涉及计算的部分,只需实现Nx1卷积的模块,以及一个宽度与总线宽度相同的加法器阵列,即可完成图像卷积运算,硬件只需要实现总线宽度级别的计算单元,不需要实现小于总线宽度的数据之间的计算,节约了大量的运算资源,提高了运算资源的利用率。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种用于转置运算的数据处理单元,其特征在于,包括:
纵向读入模块,用于:对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
转置模块,用于:将第一竖条数据进行转置,得到第一横条数据;
横向写出模块,用于:将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置;
运算模块,用于:在所述转置模块进行转置前后对数据进行计算;
其中,所述运算模块包括累加器;所述累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据;所述转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;对第二横条数据纵向读入,并进行转置,得到第三横条数据;所述横向写出模块,还用于:将所述第三横条数据横向写出。
2.如权利要求1所述的数据处理单元,其特征在于,所述累加器,用于:使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据;
所述转置模块,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据;
所述横向写出模块,还用于:将所述第三横条数据横向写出。
3.如权利要求1所述的数据处理单元,其特征在于,所述运算模块包括滑窗求和累加器和乘法器;
所述滑窗求和累加器,用于:以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,得到第二竖条数据;
所述转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;
所述纵向读入模块,还用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
所述滑窗求和累加器,还用于:以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和,得到第四竖条数据;
所述乘法器,用于:将第四竖条数据乘池化核大小的倒数,得到第五竖条数据;
所述转置模块,还用于:将第五竖条数据进行转置,得到第三横条数据;
所述横向写出模块,还用于:将所述第三横条数据横向写出。
4.如权利要求1所述的数据处理单元,其特征在于,所述运算模块包括滑窗求最大值模块;
所述滑窗求最大值模块,用于:以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,得到第二竖条数据;
所述转置模块,还用于:将第二竖条数据进行转置,得到第二横条数据;
所述纵向读入模块,还用于:对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
所述滑窗求最大值模块,还用于:以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值,得到第四竖条数据;
所述转置模块,还用于:将第四竖条数据进行转置,得到第三横条数据;
所述横向写出模块,还用于:将所述第三横条数据写出。
5.如权利要求1所述的数据处理单元,其特征在于,所述运算模块包括Nx1卷积模块和累加模块;
所述Nx1卷积模块,用于:将第一竖条数据进行Nx1卷积,得到第二竖条数据;
所述转置模块,还用于:将第二竖条数据进行转置,得到部分横条数据;
所述纵向读入模块、Nx1卷积模块和转置模块还用于:以每次读取的起始位置横向移动stride_w个像素,重复M次,得到M个部分横条数据;
所述累加模块,用于:将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据;
所述转置模块,还用于:对第二横条数据纵向读入,并进行转置,得到第三横条数据;
所述横向写出模块,还用于:将所述第三横条数据横向写出。
6.一种图像转置运算方法,其特征在于,包括:
对NHWC四维图像,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第一竖条数据;
对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据;
其中,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
使用一个宽度与总线宽度相同的加法器阵列,将第一竖条数据中相邻两个cycle的数据相加,得到第二竖条数据;将第二竖条数据进行转置,得到第二横条数据;对第二横条数据纵向读入,并进行转置,得到第三横条数据;将所述第三横条数据横向写出,完成图像纵向加法运算。
7.如权利要求6所述的方法,其特征在于,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行转置,得到第一横条数据;
将第一横条数据横向写出,得到NHWC四维图像在HW维度上的转置。
8.如权利要求6所述的方法,其特征在于,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行转置,得到第一横条数据;
使用一个宽度与总线宽度相同的加法器阵列,将第一横条数据纵向相邻两个cycle相加,得到第二横条数据;
对第二横条数据纵向读入,并进行转置,得到第三横条数据;
将所述第三横条数据横向写出,完成图像横向加法运算。
9.如权利要求6所述的方法,其特征在于,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求和,得到第二竖条数据;
将第二竖条数据进行转置,得到第二横条数据;
对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求和,得到第四竖条数据;
将第四竖条数据乘池化核大小的倒数,得到第五竖条数据;
将第五竖条数据进行转置,得到第三横条数据;
将所述第三横条数据横向写出,完成图像平均池化运算。
10.如权利要求6所述的方法,其特征在于,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
以宽度与总线宽度相同的滑窗,将第一竖条数据滑窗求最大值,得到第二竖条数据;
将第二竖条数据进行转置,得到第二横条数据;
对第二横条数据,按照每个时钟周期读1个cycle的数据,得到宽度满足总线带宽的第三竖条数据;
以宽度与总线宽度相同的滑窗,对第三竖条数据进行滑窗求最大值,得到第四竖条数据;
将第四竖条数据进行转置,得到第三横条数据;
将所述第三横条数据写出,完成图像最大池化运算。
11.如权利要求6所述的方法,其特征在于,所述对第一竖条数据进行转置和/或运算后转置和/或转置后运算,得到并输出横条数据,包括:
将第一竖条数据进行Nx1卷积,得到第二竖条数据;
将第二竖条数据进行转置,得到部分横条数据;
以每次读取的起始位置横向移动stride_w个像素,重复M次,得到M个部分横条数据;
将M个部分横条数据对应的纵向相邻两个cycle的数据进行累加,得到第二横条数据;
对第二横条数据纵向读入,并进行转置,得到第三横条数据;
将所述第三横条数据写出,完成图像卷积运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210679605.2A CN114936633B (zh) | 2022-06-15 | 2022-06-15 | 用于转置运算的数据处理单元及图像转置运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210679605.2A CN114936633B (zh) | 2022-06-15 | 2022-06-15 | 用于转置运算的数据处理单元及图像转置运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114936633A CN114936633A (zh) | 2022-08-23 |
CN114936633B true CN114936633B (zh) | 2023-06-30 |
Family
ID=82867995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210679605.2A Active CN114936633B (zh) | 2022-06-15 | 2022-06-15 | 用于转置运算的数据处理单元及图像转置运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114936633B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117391149B (zh) * | 2023-11-30 | 2024-03-26 | 爱芯元智半导体(宁波)有限公司 | 神经网络输出数据的处理方法、装置及芯片 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3651031A1 (en) * | 2017-08-31 | 2020-05-13 | Cambricon Technologies Corporation Limited | Chip device and related products |
CN108763612B (zh) * | 2018-04-02 | 2022-11-18 | 复旦大学 | 一种神经网络的池化层加速运算的电路 |
CN109034373B (zh) * | 2018-07-02 | 2021-12-21 | 鼎视智慧(北京)科技有限公司 | 卷积神经网络的并行处理器及处理方法 |
WO2020061924A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 运算加速器和数据处理方法 |
CN112306555A (zh) * | 2019-07-30 | 2021-02-02 | 北京百度网讯科技有限公司 | 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质 |
CN111461311B (zh) * | 2020-03-26 | 2023-04-07 | 中国科学技术大学 | 基于众核处理器的卷积神经网络运算加速方法及装置 |
CN113971261B (zh) * | 2020-07-23 | 2024-09-20 | 中科亿海微电子科技(苏州)有限公司 | 卷积运算装置、方法、电子设备及介质 |
CN114330635A (zh) * | 2020-10-09 | 2022-04-12 | 嘉楠明芯(北京)科技有限公司 | 一种神经网络数据缩放加速的装置和方法 |
CN112465123A (zh) * | 2020-12-09 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 优化神经网络模型的处理装置及方法 |
CN113673701B (zh) * | 2021-08-24 | 2024-09-06 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
-
2022
- 2022-06-15 CN CN202210679605.2A patent/CN114936633B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114936633A (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11609968B2 (en) | Image recognition method, apparatus, electronic device and storage medium | |
JP7007488B2 (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
CN112991142B (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN114936633B (zh) | 用于转置运算的数据处理单元及图像转置运算方法 | |
CN102378978A (zh) | 变换的快速和存储有效实现的方法 | |
US9305394B2 (en) | System and process for improved sampling for parallel light transport simulation | |
CN112633470B (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN111476718A (zh) | 一种图像放大方法、装置、存储介质及终端设备 | |
Park et al. | Real-time stereo vision FPGA chip with low error rate | |
CN111724304A (zh) | 一种图像缩放方法、装置、终端设备及存储介质 | |
Zhang et al. | Recurrent interaction network for stereoscopic image super-resolution | |
CN112929300A (zh) | 一种数据处理装置、方法、基站和存储介质 | |
Song et al. | A direction-decoupled non-local attention network for single image super-resolution | |
US20230334685A1 (en) | Method and system for generating a depth map | |
CN112163612A (zh) | 基于fpga的大模板卷积图像匹配方法、装置及系统 | |
CN114758209B (zh) | 卷积结果获取方法、装置、计算机设备及存储介质 | |
CN116109481A (zh) | 缩放方法、芯片、存储介质及电子设备 | |
CN105894481B (zh) | 用于视频监控设备的直方图均衡化方法及装置 | |
CN204440489U (zh) | 一种用于红外图像处理的可配置多功能数据路径结构 | |
Xiang et al. | Temporal Kernel Consistency for Blind Video Super-Resolution | |
CN115828079B (zh) | 一种最大池化运算的方法及装置 | |
CN113905171B (zh) | 多路图像处理装置及方法 | |
CN113111891B (zh) | 一种图像重建方法、装置、终端设备和存储介质 | |
CN113658045B (zh) | 视频处理方法及装置 | |
CN112565652B (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 |