CN114218521A - 一种异构众核架构上基于膨胀取数的卷积运算方法 - Google Patents
一种异构众核架构上基于膨胀取数的卷积运算方法 Download PDFInfo
- Publication number
- CN114218521A CN114218521A CN202110452546.0A CN202110452546A CN114218521A CN 114218521 A CN114218521 A CN 114218521A CN 202110452546 A CN202110452546 A CN 202110452546A CN 114218521 A CN114218521 A CN 114218521A
- Authority
- CN
- China
- Prior art keywords
- block
- input
- weight
- calculation
- convolution operation
- 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
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/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种异构众核架构上基于膨胀取数的卷积运算方法,包括以下步骤:S1、输入input、权重weight、跨步stride,其中input为Hi*Wi,weight为K*K,根据input和weight的形状计算输出output的形状,得到Ho*Wo;S2、根据output的形状,在Ho、Wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核;S3、每个核根据自己任务大小;S4、每个核通过得到的input(Hi_BLOCK*Wo_BLOCK)和weight,进行卷积计算;S5、重复S3和S4,直到计算完毕。本发明节约了内存带宽资源,同时能够充分运用众核的计算资源。
Description
技术领域
本发明涉及一种异构众核架构上基于膨胀取数的卷积运算方法,属于深度学习技术领域。
背景技术
卷积是深度学习中最重要的概念之一,整个卷积神经网络的训练和推理过程中,卷积操作占据了绝大部份的计算量,高性能计算平台通常要针对这类核心运算提供专门的解决方案。对于计算密集型的函数,比如深度学习中的卷积,如何及时地为强大的计算内核提供足够多的数据,并提高数据的复用性,是需要解决的问题。
卷积运算是人工智能CNN网络的核心运算,卷积运算每K次的数据有交叠但不重复,运算时取数规律不强(K为卷积运算核大小),这导致卷积运算取数频繁,如果不能巧妙利用卷积本身的特点,依照传统算法在异构众核处理器实例化,不仅不能充分发挥处理器的计算资源,还会对访存造成很大的压力。因此,卷积运算在充分利用异构众核处理器计算资源的同时,如何减小对系统访存的压力,也是需要解决的问题。
目前存在一些优化的卷积运算方法,例如im2col,是将卷积运算转化为矩阵乘,利用优化后的矩阵乘对卷积运算进行优化,但此方法需要将输入扩充为原来的K*K倍,会对系统内存造成额外的压力。异构众核处理器包含数量众多的从核,计算能力强大,访存带宽是系统的瓶颈,对于这种计算密集型的运算,这样的方法不仅不能发挥处理器的计算资源,反而会给系统带宽造成巨大的压力,优化效果不佳,因此,如何高效利用访存带宽并减小访存压力是充分发挥处理器性能的关键。
发明内容
本发明的目的是提供一种异构众核架构上基于膨胀取数的卷积运算方法,其。
为达到上述目的,本发明采用的技术方案是:提供一种异构众核架构上基于膨胀取数的卷积运算方法,包括以下步骤:
S1、输入input、权重weight、跨步stride,其中input为Hi*Wi,weight为K*K,根据input和weight的形状计算输出output的形状,得到Ho*Wo;
S2、根据output的形状,在Ho、Wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核,每个核处理大小为Ho_BLOCK*Wo_BLOCK的计算任务;
S3、每个核根据自己任务大小,计算所需的输入大小Hi_BLOCK* Wo_BLOCK,Hi_BLOCK=Ho_BLOCK*stride+K-1,Wi_BLOCK= Wo_BLOCK*stride+K-1;
S4、每个核通过得到的input(Hi_BLOCK* Wo_BLOCK)和weight,进行卷积计算;
S5、重复步骤S3和S4,直到每个核自身分配到的任务计算完毕,输出output。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明一种异构众核架构上基于膨胀取数的卷积运算方法,在不增加额外系统内存占用的前提下,通过膨胀取数,不但减小了系统的访存压力,而且提高了数据的复用性,显著降低卷积计算在异构众核处理器上的内存访存需求,节约了内存带宽资源,同时能够充分运用众核的计算资源,充分发挥系统性能,切合了卷积计算密集型的特点,显著提高了卷积运算的性能。
附图说明
附图1为二维卷积示意图;
附图2为卷积输出所需数据来源示意图;
附图3为三维卷积示意图;
附图4为膨胀取数示意图;
附图5为运算原理框图。
具体实施方式
实施例:本发明提供一种异构众核架构上基于膨胀取数的卷积运算方法,具体包括以下步骤:
S1、输入input、权重weight、跨步stride,其中input为Hi*Wi,weight为K*K,根据input和weight的形状计算输出output的形状,得到Ho*Wo;
S2、根据output的形状,在Ho、Wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核,每个核处理大小为Ho_BLOCK*Wo_BLOCK的计算任务;
S3、每个核根据自己任务大小,计算所需的输入大小Hi_BLOCK* Wo_BLOCK,Hi_BLOCK=Ho_BLOCK*stride+K-1,Wi_BLOCK= Wo_BLOCK*stride+K-1;
S4、每个核通过得到的input(Hi_BLOCK* Wo_BLOCK)和weight,进行卷积计算;
S5、重复步骤S3和S4,直到每个核自身分配到的任务计算完毕,输出output。
对上述实施例的进一步解释如下:
卷积运算如图1所示:
CPU通过输入数据块A和权重数据块B,完成输出数据块C的计算,C=AXB,其中X表示卷积操作。
各个输出元素所需的输入数据来源如图2所示:
卷积计算的输出有四个元素,分别用不同的颜色来表示,这四个元素分别由输入矩阵对应相同颜色区域的元素和权重计算而来,输出的元素由输入矩阵对应颜色区域的元素和权重计算得出,其他三色同理。
如图3所示:
卷积运算的输入input:N*Hi*Wi*Ci,权重weight:K*K*Ci*Co,输出output:N*Ho*Wo*Co;NHWC格式的卷积运算,是以Hi、Wi二维卷积为基础,在Ci维度上进行累加求和的过程。
本发明结合异构众核处理器的系统架构和卷积运算本身的特点,在不增加额外内存占用的前提下,通过冗余读取K个数据,一次访存,可进行K次计算,实现了将K次访存降低为1次访存,同时计算结果从1个增加为多个,提高了数据的复用性,大大减小卷积运算对系统的访存压力,同时充分发挥了处理器的计算资源,提高了卷积运算在异构众核处理器上的性能。
具体说明如下:
1、膨胀取数:通常一个(Ho_BLOCK=1且Wo_BLOCK=1)计算结果需要取得K*K个输入数据(Hi_BLOCK=Wi_BLOCK=K),为了同时计算多个输出结果,令Hi和Wi维度分别多取1个数,此时Hi_BLOCK=Wi_BLOCK=K+1,这样就可以通过一次访存,得到2*2=4个计算结果,此时Ho_BLOCK=Wo_BLOCK=2;
一般地,令Hi和Wi维度分别多取K-1个数,此时Hi_BLOCK=Wi_BLOCK=2K-1,这样就可以通过一次访存,得到K*K个计算结果,此时Ho_BLOCK=Wo_BLOCK=K;可见,只要增大Hi_BLOCK和Wi_BLOCK,就可以保证一次访存,得到更多的计算结果。
因此,本发明在保证内存空间够用的前提下,通过冗余获取数据,从而得到更大的Hi_BLOCK和Wi_BLOCK,来确保一次访存能够计算出更多的结果。
由图2可知,通过两次访存获取数据块1和数据块2,分别计算出两个结果,两个数据块之间存在6个数据的交叠,两次访存重复读取了6个相同的元素,对有限的带宽资源造成了浪费,如果能够一次性读取两个数据块(比读取一个数据块只多了3个元素),则减少了一次访存。
基于此种思想,本发明提出了膨胀取数的思想,膨胀取数示意图如下图4所示,将图2中两次访存获取的数据块1和数据块2合并为1次访存操作,数据块3和数据块4同理,这样,一次访存就可以计算出两个结果,原来需要四次访存,现在只需要两次访存,相比于之前一次访存计算一个结果,大大提升了计算的性能。
2、数据复用性:每个CPU取得的输入数据块Hi_BLOCK*Wi_BLOCK都具有如下特性:Hi_BLOCK>K且Wi_BLOCK>K,由于K*K个输入数据得到一个输出结果,此次计算所需要的数据有(K-1)*(K-1)个与前一次计算所需要的数据相同,因此,理论上Hi_BLOCK和Wi_BLOCK只要分别多取1个数,就能多得到多个计算输出。
因此,本发明在保证内存空间充足的情况下,尽可能多的保证Hi_BLOCK*Wi_BLOCK趋于更大,这样数据复用性就会更高,从而为卷积计算提供充分的数据,提高卷积运算的效率。
3、卷积运算:每个CPU根据自身取得的输入数据块A,权重数据块B,进行卷积计算,得到输出数据块C,并将数据块C写回主存。
4、重复上述步骤,直到所有的数据块计算完毕。
上述步骤1和步骤2是本发明的核心思想,通过膨胀取数和最大化数据的复用性这两种策略,来减小卷积运算对访存的现实需求,减少访存次数并缓解了访存压力,同时又保证卷积运算能够得到充足的数据进行计算,充分发挥了众核的计算能力,提高卷积运算的效率。
采用上述一种异构众核架构上基于膨胀取数的卷积运算方法时,其在不增加额外系统内存占用的前提下,通过膨胀取数,不但减小了系统的访存压力,而且提高了数据的复用性,显著降低卷积计算在异构众核处理器上的内存访存需求,节约了内存带宽资源,同时能够充分运用众核的计算资源,充分发挥系统性能,切合了卷积计算密集型的特点,显著提高了卷积运算的性能。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
卷积:数学上,两个变量在某范围内相乘后求和的结果;在深度学习中,则指输入和卷积核滑动相乘求和得到输出的数学运算。
卷积核:卷积运算时的滑动窗口,本质上是一个矩阵。
CNN:卷积神经网络,一类包含卷积计算且具有深度结构的前馈神经网络。
膨胀取数:冗余的从内存中获取数据。
im2col:图片转存的一种算子。
逻辑编号:CPU自身的id(一个整数)。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种异构众核架构上基于膨胀取数的卷积运算方法,其特征在于,包括以下步骤:
S1、输入input、权重weight、跨步stride,其中input为Hi*Wi,weight为K*K,根据input和weight的形状计算输出output的形状,得到Ho*Wo;
S2、根据output的形状,在Ho、Wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核,每个核处理大小为Ho_BLOCK*Wo_BLOCK的计算任务;
S3、每个核根据自己任务大小,计算所需的输入大小Hi_BLOCK* Wo_BLOCK,Hi_BLOCK=Ho_BLOCK*stride+K-1,Wi_BLOCK= Wo_BLOCK*stride+K-1;
S4、每个核通过得到的input(Hi_BLOCK* Wo_BLOCK)和weight,进行卷积计算;
S5、重复步骤S3和S4,直到每个核自身分配到的任务计算完毕,输出output。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110452546.0A CN114218521A (zh) | 2021-04-26 | 2021-04-26 | 一种异构众核架构上基于膨胀取数的卷积运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110452546.0A CN114218521A (zh) | 2021-04-26 | 2021-04-26 | 一种异构众核架构上基于膨胀取数的卷积运算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114218521A true CN114218521A (zh) | 2022-03-22 |
Family
ID=80695824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110452546.0A Pending CN114218521A (zh) | 2021-04-26 | 2021-04-26 | 一种异构众核架构上基于膨胀取数的卷积运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114218521A (zh) |
-
2021
- 2021-04-26 CN CN202110452546.0A patent/CN114218521A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
US11989638B2 (en) | Convolutional neural network accelerating device and method with input data conversion | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN107085562B (zh) | 一种基于高效复用数据流的神经网络处理器及设计方法 | |
US11734007B2 (en) | Address generation method, related apparatus, and storage medium | |
CN105824974B (zh) | 数据分析处理的方法和系统 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
CN113222150A (zh) | 一种量子态的变换方法及装置 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN112446471A (zh) | 基于异构众核处理器的卷积加速方法 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN112149047A (zh) | 数据的处理方法及装置、存储介质和电子装置 | |
CN117786412A (zh) | 大型语言模型的弹性训练方法、集群系统、产品及介质 | |
CN113553031A (zh) | 软件定义变结构计算架构及利用其实现的左右脑一体化资源联合分配方法 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
US20230128421A1 (en) | Neural network accelerator | |
CN114218521A (zh) | 一种异构众核架构上基于膨胀取数的卷积运算方法 | |
CN110766136A (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
Wu et al. | Skeletongcn: a simple yet effective accelerator for gcn training | |
CN115170381A (zh) | 一种基于深度学习的视觉slam加速系统及方法 |
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 |