CN107491416B - 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 - Google Patents
适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 Download PDFInfo
- Publication number
- CN107491416B CN107491416B CN201710774074.4A CN201710774074A CN107491416B CN 107491416 B CN107491416 B CN 107491416B CN 201710774074 A CN201710774074 A CN 201710774074A CN 107491416 B CN107491416 B CN 107491416B
- Authority
- CN
- China
- Prior art keywords
- calculation
- computing
- convolution
- multiply
- processing unit
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置,可重构计算结构包含接口控制器和可重构计算模块,所述的可重构计算模块至少包含一个乘累加计算处理阵列,每个乘累加计算处理阵列中包含多个乘累加运算处理单元,每个乘累加运算处理单元配置有各自对应的内部总线,两两乘累加运算处理单元之间通过内部总线互连并与控制总线相连;接口控制器通过控制总线对乘累加运算处理单元之间互联方式及乘累加运算处理单元的分时复用次数进行调度管理。本发明针对任意维数卷积通过快速重构具有不同计算功能处理单元的方式实现卷积计算,提高可变维数卷积计算的灵活性,充分挖掘计算过程的并行性与流水性,大幅提高卷积计算效率。
Description
技术领域
本发明属于卷积可重构计算技术领域,特别涉及一种适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置。
背景技术
卷积是一种数学积分变换的方法,也是分析数学中一种重要的运算,在电子通信、物理学、统计学、地震预测、图像处理以及油田勘察等诸多方面有着十分广泛的应用。对于一维离散卷积,假设输入为N1点序列f(n1)与N2点序列h(n2),输出序列N1+N2-1点序列g(n),则有:
对于二维离散卷积,假设输入为M1×N1维矩阵f(m1,n1)与M2×N2维矩阵h(m2,n2),输出(M1+M2-1)×(N1+N2-1)维矩阵g(m,n),则有:
卷积的计算有两种方法:一是时域方法,计算过程直观清晰,主要涉及乘法和加法计算,时域卷积计算方法虽然计算量较大,但不同点之间的计算过程在时间和空间上均无耦合,可通过并行化计算结构设计加速;二是频域方法,将卷积序列通过FFT计算变换到频域,然后通过频域数据相乘并反变换得到卷积计算结果。
近年来,随着人工智能与机器学习的飞速发展,卷积神经网络(CNN)因其在图像处理中的巨大优势受到越来越大的关注。CNN中的卷积计算与一维或二维卷积计算过程有一定的不同,无法基于频域计算方法实现,只能在时域通过乘累加的方式计算。上述两种卷积计算过程存在大量可并行化设计的内在特点,因此需要通过设计合理的计算结构,多维度并行化实现计算过程来提高卷积的计算效率。
发明内容
针对现有技术中的不足,本发明提供一种适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置,针对任意维数卷积,通过快速重构具有不同计算功能处理单元的方式实现卷积计算,不仅能够使系统具有计算可变维数卷积的灵活性,同时能够充分挖掘计算过程中的并行性与流水性,大幅提高系统的计算效率。
按照本发明所提供的设计方案,一种适用于任意维数卷积需求的可重构计算结构,包含接口控制器,可重构计算模块,所述的可重构计算模块至少包含一个乘累加计算处理阵列,每个乘累加计算处理阵列中包含多个乘累加运算处理单元,每个乘累加运算处理单元配置有各自对应的内部总线,两两乘累加运算处理单元之间通过内部总线互连并与控制总线相连;接口控制器通过控制总线对乘累加运算处理单元之间互联方式及乘累加运算处理单元的分时复用次数进行调度管理。
上述的,所述的可重构计算模块还包含至少一个加法计算处理阵列,每个加法计算处理阵列中包含多个加法运算处理单元,每个加法运算处理单元配置有各自对应的内部总线;两两加法运算处理单元之间通过内部总线互联,并通过内部总线、控制总线与接口控制器相连。
一种适用于任意维数卷积需求的可重构计算调度方法,基于上述的适用于任意维数卷积需求的可重构计算结构实现,具体包含如下内容:根据卷积计算需求进行运算处理单元重构时,确定功能满足所述卷积计算需求的卷积结果矩阵;依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,选定当前可用计算资源中用于计算的单个运算处理单元,读取卷积结果矩阵中的元素并基于该单个运算处理单元的反复调用分时序贯对卷积结果矩阵中的各个元素进行计算,将元素计算结果反馈至外存主机进行存储,迭代循环,直至完成卷积结果矩阵中所有元素的计算。
进一步地,依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个运算处理单元的并行进行配置并选定用于计算的若干运算处理单元,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元之间的对应关系;选定的若干运算处理单元按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
优选地,所述的预设顺序为矩阵按行顺序或按列顺序。
一种适用于任意维数卷积需求的可重构计算方法,基于上述的适用于任意维数卷积需求的可重构计算结构实现,具体包含如下内容:根据卷积计算需求进行运算处理单元重构时,确定功能满足所述卷积计算需求的卷积结果矩阵;依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系;选定的若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
进一步地,所述的运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,将每个元素计算分组的计算数据划分为待并行计算若干部分数据单元,该若干部分数据单元中每个数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系。
一种适用于任意维数卷积需求的可重构计算装置,包含:
用于数据交互的通信接口及数据通道;
预设模块,用于根据卷积计算需求确定功能满足的卷积结果矩阵;
配置调度模块,用于配置当前可用计算资源中用于计算的运算处理单元,并将配置信息及待计算数据通过数据通道发送至接口控制器;
迭代计算模块,接口控制器将待计算数据发送至对应运算处理单元进行循环迭代计算,并将计算结果反馈至存储模块;
存储模块,用于存储待计算数据及运算处理单元反馈的计算结果。
上述的可重构计算装置中,所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于乘累加运算处理单元的分时复用配置当前可用计算资源中用于计算的运算处理单元。
上述的可重构计算装置中,所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于当前可用计算资源情况中各个运算处理单元的并行进行配置,选定用于计算的若干运算处理单元,确定卷积结果矩阵中各个元素并行化运算过程中的各个元素计算分组和各个元素计算分组与选定的若干运算处理单元之间的对应关系。
进一步地,所述的迭代计算模块,若干运算处理单元按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至存储模块进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
上述的可重构计算装置中,所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系。
进一步地,所述的配置调度模块还包含元素计算分组数据划分单元,用于将每个元素计算分组的计算数据划分为待并行计算的若干部分数据单元;所述的配置调度模块中每个运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,待并行计算的若干部分数据单元中的单部分数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系。
进一步地,所述的迭代计算模块,若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
本发明的有益效果:
1、本发明针对不同维数卷积的计算需求,基于可重构计算结构中的运算处理阵列,通过合理的计算资源调度,改变各个运算处理单元之间的互连关系与循环复用次数,构建出适应不同维数卷积的计算结构,实现不同维数卷积的计算;不仅能够使系统具有计算可变维数卷积的灵活性,同时能够充分挖掘计算过程中的并行性与流水性,大幅提高系统的计算效率,将卷积结果矩阵中的各个元素计算对应到每个固定的运算处理单元中,使得卷积计算更加具体化、并行化,有效缓解资源计算效率平衡,大大提高硬件资源平台利用率。
2、本发明以固定运算处理单元可重构的方式构建任意维数卷积计算结构,具有较大的灵活性;基于同一计算资源组合,通过合理的资源调度,重构实现不同维数卷积计算的计算结构,满足不同应用场景下,不同维数卷积计算的需求;基于不同规模的计算资源,通过合理的资源调度,以不同的计算效率实现同一维数卷积计算的计算结构,能够根据应用需求,实时调整资源占用量,在不影响整个系统处理性能的条件下,以合理的计算效率实现卷积计算,有效提高计算资源利用率;通过合理分割当前可用计算资源,并行实现多个不同维数卷积计算的计算结构重构,能够适应多任务并行化处理需求;充分利用卷积计算过程中可并行设计的特点,通过处理单元的合理调度,不仅能够实现不同维数卷积计算,而且能够有效提高卷积的计算效率;本发明中基本的运算处理单元实现较为简单,所需资源量较少,具有较好的可扩展性,可以通过配置信息和调度策略满足不同维数的性能需求;兼顾通用处理器(GPP)的灵活和专用集成电路(ASIC)的高效,针对任意维数卷积,通过快速重构具有不同计算功能处理单元的方式实现卷积的计算,提高计算过程中可变维数卷积的灵活性,大幅提高系统的计算效率,适用性强,对卷积可重构计算领域具有重要的指导意义。
附图说明:
图1为实施例中一维卷积计算过程示意图;
图2为实施例中二维卷积计算过程示意图;
图3为实施例中多维卷积计算过程示意图;
图4为实施例中的可重构计算结构示意图之一;
图5为实施例中的可重构计算结构示意图之二;
图6为实施例中计算调度流程示意图之一;
图7为实施例中计算调度流程示意图之二;
图8为实施例中计算调度流程示意图之三;
图9为实施例中可重构计算装置示意图;
具体实施方式:
下面结合附图和技术方案对本发明作进一步详细的说明,并通过优选的实施例详细说明本发明的实施方式,但本发明的实施方式并不限于此。
对于一维离散卷积,假设输入为N1点序列f(n1)与N2点序列h(n2),输出序列N1+N2-1点序列g(n),则有:
对于二维离散卷积,假设输入为M1×N1维矩阵f(m1,n1)与M2×N2维矩阵h(m2,n2),输出(M1+M2-1)×(N1+N2-1)维矩阵g(m,n),则有:
卷积的计算有两种方法:一是时域方法,计算过程直观清晰,主要涉及乘法和加法计算,假设N1=4,N2=6,则一维卷积计算过程参见图1所示;假设M1=3,M2=4,则二维卷积计算参见图2所示,即二维卷积可以转化为一维卷积计算。如上述,时域卷积计算方法虽然计算量较大,但不同点之间的计算过程在时间和空间上均无耦合,可通过并行化计算结构设计加速;二是频域方法,将卷积序列通过FFT计算变换到频域,然后通过频域数据相乘并反变换得到卷积计算结果。假设数据矩阵f维数为M1×N1,卷积核h维数为M2×N2,则卷积具体计算如图3所示,卷积计算输出g的维数为M×N维,其中M=M1-M2+1,N=N1-N2+1。该计算过程反映了利用卷积核h(m2,n2)以滑窗的形式逐步遍历数据矩阵f(m1,n1)各个元素,完成f(m1,n1)数据混合的过程。从计算过程来看,CNN中的卷积计算与一维或二维卷积计算过程有一定的不同,无法基于频域计算方法实现,只能在时域通过乘累加的方式计算。上述两种卷积计算过程存在大量可并行化设计的内在特点,因此通过设计合理的计算结构,多维度并行化实现计算过程,能够有效的提高卷积的计算效率。
从两种卷积计算过程中可以看出,计算的核心操作是乘累加。也就是说,不论是哪种卷积计算,其卷积结果所有元素g(m,n)的计算均可通过具有实(复)数乘累加功能的计算模块实现,为此,实施例提供一种适用于任意维数卷积需求的可重构计算结构,参见图4所示,包含接口控制器,可重构计算模块,所述的可重构计算模块至少包含一个乘累加计算处理阵列,每个乘累加计算处理阵列中包含多个乘累加运算处理单元,每个乘累加运算处理单元配置有各自对应的内部总线,两两乘累加运算处理单元之间通过内部总线互连并与控制总线相连;接口控制器通过控制总线对乘累加运算处理单元之间互联方式及乘累加运算处理单元的分时复用次数进行调度管理。本实施例中将实(复)数乘累加计算模块设计实现为固定的处理单元,表示为PE1。
另外,考虑到卷积结果g各个元素g(m,n)可以分解为多个部分并行计算结果的和值,卷积结果矩阵多个元素计算在同时并行实现的基础上,还可以基于更大规模的处理单元组合并行实现其中的每个元素的计算过程,为了进一步增大卷积的并行计算空间,提高计算效率,本发明中可重构计算结构的另一个实施例中,参见图5所示,可重构计算模块还包含至少一个加法计算处理阵列,每个加法计算处理阵列中包含多个加法运算处理单元,每个加法运算处理单元配置有各自对应的内部总线;两两加法运算处理单元之间通过内部总线互联,并通过内部总线、控制总线与接口控制器相连。将具有实(复)数加法计算功能的计算模块设计实现为固定的处理单元,表示为PE2。基于PE1和PE2两类处理单元,实现各个处理单元之间的互连互通,组成一个可重构处理阵列,如图5所示,该处理阵列是完成不同维数卷积计算结构重构的计算资源。针对不同维数卷积的计算需求,基于该可重构处理阵列,通过合理的计算资源调度,改变各个固定处理单元之间的互连关系与循环复用次数,构建出适应不同维数卷积的计算结构,实现不同维数卷积的计算。
基于上述的可重构计算结构,本发明的另一个实施例提供一种适用于任意维数卷积需求的可重构计算调度方法,包含如下内容:根据卷积计算需求进行运算处理单元重构时,确定功能满足所述卷积计算需求的卷积结果矩阵;依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,选定当前可用计算资源中用于计算的单个运算处理单元,读取卷积结果矩阵中的元素并基于该单个运算处理单元的反复调用分时序贯对卷积结果矩阵中的各个元素进行计算,将元素计算结果反馈至外存主机进行存储,迭代循环,直至完成卷积结果矩阵中所有元素的计算。
卷积结果矩阵g中各个元素的计算可以基于单个处理单元的反复调用分时序贯实现。例如,基于同一个实(复)数乘累加处理单元(PE1),按照一定的顺序(按行或按列)依次计算各个元素,直至计算完成g矩阵所有的元素,如图6所示。
进一步地,依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个运算处理单元的并行进行配置并选定用于计算的若干运算处理单元,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元之间的对应关系;选定的若干运算处理单元按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
卷积结果矩阵g中多个元素的计算还可以基于较大规模的处理单元组合同时并行实现。例如,基于M个实(复)数乘累加处理单元(PE1),并行计算g矩阵中M行中的各个元素,直至计算完成g矩阵所有的元素,如图7所示。
基于上述的可重构计算结构,本发明的另一个实施例提供一种适用于任意维数卷积需求的可重构计算方法,包含如下内容:根据卷积计算需求进行运算处理单元重构时,确定功能满足所述卷积计算需求的卷积结果矩阵;依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系;选定的若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
并行计算程度不同的卷积计算结构占用资源数量不同,计算效率也有所不同。占用资源越多,则可并行设计程度越高,计算效率越高;占用资源越少,则可并行设计程度越低,计算效率也越低。不同的卷积计算结构重构均基于由PE1与PE2组成的可重构处理阵列,通过合理的资源调度实现:计算资源可多可少,计算效率可高可低,需要根据系统的性能需求确定。
假设卷积的两个矩阵分别为f(M1×N1维)与h(M2×N2维),卷积结果矩阵g(M×N维)。根据卷积计算法则,矩阵g中所有元素g(m,n)具有相同的计算过程,由实(复)数乘累加及实(复)数加法完成,而且各个元素的计算不存在任何数据依赖性与时间相关性。因此,不仅不同元素计算之间完全可以进行并行化设计,而且同一个元素的计算过程也可以分解为多个并行部分同步完成,然后基于实(复)数加法将不同并行计算结果求和。可重构调度方法能够充分利用卷积计算计算过程中的可并行化设计特点,包括不同元素之间计算的可并行性与同一个元素内部计算的可并行性,实现计算结构的重构。基于上述可并行化设计特点,可重构调度方法首先设计g矩阵各个元素的计算顺序,包括多个元素进行并行化设计、同一个元素计算过程进行并行化设计以及不同元素之间的串行计算顺序等,确保计算结构的有序和完整;其次根据卷积维数大小、计算效率需求以及当前可用资源情况确定g矩阵计算资源占用量大小;最后基于选定的计算资源以并行或串行的方式实现不同元素的计算。
进一步地,所述的运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,将每个元素计算分组的计算数据划分为待并行计算若干部分数据单元,该若干部分数据单元中每个数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系。
卷积结果矩阵g中所有元素g(m,n)具有相同的计算过程,均可以通过实(复)数乘累加及实(复)数加法完成,而且各个元素的计算之间不存在任何数据依赖性与时间相关性。因此,首先不同元素计算之间完全可以进行并行化设计,即任意两个元素g(m1,n1)与g(m2,n2)(m1≠m2,n1≠n2)可以并行基于两个不同的实(复)数乘累加处理单元(PE1)同步计算完成;其次,同一个元素的计算过程也可以分解为M2(M2≥2)个并行部分,基于不同的实(复)数乘累加处理单元(PE1)同步计算,然后基于实(复)数加法(PE2)将不同并行计算结果求和。以CNN中定义的卷积为例,为方便表示,不妨假设元素g(m,n)的上述计算过程可以分解为M2个并行部分:
…
则元素g(m,n)的计算结果表示为
卷积结果矩阵g中多个元素的计算在同时并行实现的基础上,还可以基于更大规模的处理单元组合并行实现其中的每个元素的计算过程。例如,基于M×M2个实(复)数乘累加处理单元(PE1),并行计算g矩阵中M行中的各个元素,每个元素又分为M2个并行计算部分,然后将M2个并行计算结果通过实(复)数加法处理单元(PE2)求和,直至计算完成g矩阵所有的元素,如图8所示。
基于卷积计算可并行设计的特点以及可重构处理阵列高效灵活构建不同计算结构的优势,通过合理的资源调度,既能基于同一规模的处理单元组合重构实现不同维数卷积计算的计算结构,满足各类应用中不同维数卷积的计算需求;也能基于不同规模的处理单元组合重构实现具有不同计算效率的同一维数卷积的计算结构,满足各类应用中卷积计算性能要求不同的需求;还能通过合理的分割当前可用处理单元组合,并行实现多个不同维数卷积的计算结构,满足系统应用实时增加或减少时的计算需求。
与上述方法对应,本发明实施例还提供了一种基于漏洞指纹的脆弱性代码克隆的检测装置,参见图9所示,一种适用于任意维数卷积需求的可重构计算装置,包含:
用于数据交互的通信接口及数据通道;
预设模块201,用于根据卷积计算需求确定功能满足的卷积结果矩阵;
配置调度模块202,用于配置当前可用计算资源中用于计算的运算处理单元,并将配置信息及待计算数据通过数据通道发送至接口控制器;
迭代计算模块203,接口控制器将待计算数据发送至对应运算处理单元进行循环迭代计算,并将计算结果反馈至存储模块;
存储模块204,用于存储待计算数据及运算处理单元反馈的计算结果。
上述的可重构计算装置中,所述的配置调度模块202,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于乘累加运算处理单元的分时复用配置当前可用计算资源中用于计算的运算处理单元。
上述的可重构计算装置中,所述的配置调度模块202,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于当前可用计算资源情况中各个运算处理单元的并行进行配置,选定用于计算的若干运算处理单元,确定卷积结果矩阵中各个元素并行化运算过程中的各个元素计算分组和各个元素计算分组与选定的若干运算处理单元之间的对应关系。
进一步地,所述的迭代计算模块203,若干运算处理单元按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至存储模块进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
上述的可重构计算装置中,所述的配置调度模块202,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系。
进一步地,所述的配置调度模块202,还包含元素计算分组数据划分单元,用于将每个元素计算分组的计算数据划分为待并行计算的若干部分数据单元;所述的配置调度模块中每个运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,待并行计算的若干部分数据单元中的单部分数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系。
进一步地,所述的迭代计算模203,若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算。
以CNN中定义卷积计算过程为例,下面通过一个具体实例对本发明中任意维数卷积可重构计算结构、计算调度方法和计算装置进行详细的描述。
可重构处理阵列中处理单元设计为固定的计算模块,各运算单元之间互连互通,并通过控制模块进行计算资源调度与重构,实现卷积计算结构的灵活构建。根据卷积维数大小、当前可用处理单元数量以及系统计算性能需求,基于规模大小适中的处理单元组合,并依据卷积各个计算步骤中可并行化设计的内在特征以及数据输入输出的便利性,设计合理的串行或并行计算顺序,通过改变处理单元之间互连方式以及处理单元分时复用次数,重构实现不同维数卷积并行化计算结构生成。将可重构处理阵列中的各个处理单元作为基本运算单元,则基于不同规模的计算资源(处理单元个数),针对不同维数的卷积计算,具有不同计算效率的计算结构是以基本处理单元重构的方式实现的,即通过调度模块改变各个处理单元之间的互连关系实现的。基于同一规模的计算资源能够重构实现不同维数卷积计算的计算结构:若卷积维数较大,则增加处理单元的调用次数,分时复用完成计算过程;若卷积维数较小,则减少处理单元的调用次数。处理单元如何调用,调用次数多少有调度模块决定。某一确定维数卷积计算的计算结构可以基于不同规模的计算资源重构完成:若当前可用计算资源较多,则可以充分利用卷积过程中可并行计算的部分,以多个处理单元并行计算的方式提高卷积计算的执行效率;若当前可用计算资源较少,则针对卷积过程中可并行计算的部分,反复调度同一个处理单元分时完成计算过程。能够通过合理分割当前可用计算资源,并行实现多个不同维数卷积计算的计算结构重构。
假设数据矩阵f的维数为M1×N1=4×5,卷积核h维数为M2×N2=2×2,则卷积计算结果g的维数为M×N=3×4,步骤如下:
(1)构建一个全互连的可重构处理阵列,作为计算结构重构的基础。
任意维数卷积计算架构示意图如图4所示,将实(复)数乘累加、实(复)数加法等计算模块设计实现为相应的固定处理单元,每种处理单元部署若干个,通过互连互通形成一个可重构处理阵列。每一种运算单元都配有一条内部总线,实现某一种处理单元内部数据互通。而内部总线之间又是两两相连,以实现整个可重构阵列中每个处理单元都能实现数据的全互连。
(2)计算结构及其调度方法设计
在卷积计算结构重构过程中,计算资源调度的合理调度是关键。计算资源调度首先要依据卷积计算效率需求以及当前可用计算资源情况确定计算结构构建的资源规模大小,目标在于追求卷积计算性能与计算资源占用的有机平衡,既能满足系统对卷积计算的性能需求,又尽量减小计算资源占用量,提高计算资源利用效率;然后基于选定的计算资源规模大小,根据卷积维数大小,对数据矩阵与卷积核元素进行合理分组,并设计并行与序贯计算的顺序,确保卷积计算的有序性与完整性;最后将相关数据依序读入到处理单元中完成卷积计算。
对于上述维数卷积计算,如果可重构处理阵列中当前可用处理单元较少,可以基于1个单独的PE1按行g(1,n),g(2,n),g(3,n)(n=1,2,3,4)的顺序依次计算每一行中的各个元素,如图5所示。每个元素g(m,n)的计算
需要分时复用4次PE1才能完成,然后开始计算元素g(m,n+1)。假设PE1完成一次计算的时间定义为一个PE1计算周期,则完成该卷积计算共需M×N×4=48个PE1计算周期。虽然计算效率较低,但是通过合理调度,基于单个处理单元仍能完成卷积计算。
如果可重构处理阵列中当前可用处理单元较多,例如有3个PE1可用,则可以将这些PE1分配到卷积结果g的3行元素中,每个PE1负责一行4个元素的计算,3个PE1并行计算,如图6所示。则完成卷积计算共需的4×4=16个PE1计算周期,大大缩短了卷积的计算时间,提高了计算效率。如果有6个PE1可用,则可以将这些PE1平均分配到g的3行的元素中,每个PE1负责2个元素的计算,6个PE1并行计算,则完成该卷积计算仅需的8个PE1计算周期。
在可重构处理阵列可用处理单元数量(包括PE1与PE2)足够的情况下,如有24个PE1与12个PE2可用,则可以每2个PE1与1个PE2负责一个元素g(m,n)的计算,将g(m,n)的计算分成并行的两个部分,并将两个部分的计算结果由PE2求和并输出,如图7所示。则完成卷积计算仅需2个PE1计算周期与1个PE2计算周期。
其中,需要说明的问题:1)处理单元的数量与卷积维数不必具有整倍数关系,如基于4个PE1通过分时调度,重构合理的卷积计算结构,也能够快速完成卷积计算;2)计算资源调度与计算结构生成过程还可以具有更大的灵活性,如基于6个PE1处理单元完成上述卷积计算,可以每两个PE1负责一行4个元素的计算,也可以将6个PE1直接分配给第一行与第二行8个元素的计算,完成后再开始第三行4个元素的计算;3)基于相同的处理单元组合,通过重新调度与资源重构,能够实现不同维数卷积计算,如基于6个PE1处理单元完成上述卷积计算后,仍基于这8个PE1处理单元,通过分时调度次数的改变能够快速重构完成4×4维与3×3维的卷积计算;4)基于不同的处理单元组合,通过重新调度与资源重构,能够实现同一维数卷积计算,具有不同计算效率的卷积计算,例如在计算开始时,可用资源较少,基于单个PE1处理单元的分时复用构建上述维数的卷积计算结构,随着计算的进行,有较多计算资源释放出来,则可以基于多个PE1与PE2处理单元重构实现上述维数卷积的并行计算结构,以提高卷积计算的效率;5)通过合理分割处理单元组合,能够并行实现多个卷积的计算结构重构,例如当前基于24个PE1与12个PE2处理单元实现的上述4×5维与2×2维卷积计算结构正在计算,系统请求有新任务加入,则可以将这些处理单元根据卷积维数大小与计算性能需求分割为两部分,然后重构实现两个卷积计算的并行计算结构;6)计算资源的调度与计算结构的重构的最优化目标是实现计算性能与计算资源占用量有机平衡,即在满足系统计算性能需求的条件下,尽量减少计算资源占用量,提高计算资源利用效率。
(3)通过外部控制将配置信息与数据发送到可重构计算结构的处理阵列上,对资源进行重构配置,来灵活计算不同维数的卷积计算。
如图4和5所示,外部主机通过配置通路,外部主存通过数据通路分别将配置信息与数据下发到可重构阵列中的接口控制器,接口控制器根据一定的调度策略给处理单元分发计算数据,来进行并行计算。
(4)将计算得出的结果返回至外部主存。
如图4和5所示,每种运算单元对应的内部总线都与存储总线相连,用于外部主存将数据分发给运算单元,也可用于将运算单元计算好的结果传回主存,从而得出最终乘积结果。当多个运算单元访问存储总线时,按照轮转的仲裁方式取得访问权。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的各实例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已按照功能一般性地描述了各示例的组成及步骤。这些功能是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不认为超出本发明的范围。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如:只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (3)
1.一种适用于任意维数卷积需求的可重构计算方法,其特征在于,基于适用于任意维数卷积需求的可重构计算结构实现,具体包含如下内容:根据卷积计算需求进行运算处理单元重构时,确定功能满足所述卷积计算需求的卷积结果矩阵;依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系;选定的若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算;
适用于任意维数卷积需求的可重构计算结构,包含接口控制器,可重构计算模块,所述的可重构计算模块至少包含一个乘累加计算处理阵列,每个乘累加计算处理阵列中包含多个乘累加运算处理单元,每个乘累加运算处理单元配置有各自对应的内部总线,两两乘累加运算处理单元之间通过内部总线互连并与控制总线相连;接口控制器通过控制总线对乘累加运算处理单元之间互联方式及乘累加运算处理单元的分时复用次数进行调度管理;所述的可重构计算模块还包含至少一个加法计算处理阵列,每个加法计算处理阵列中包含多个加法运算处理单元,每个加法运算处理单元配置有各自对应的内部总线;两两加法运算处理单元之间通过内部总线互联,并通过内部总线、控制总线与接口控制器相连;
假设卷积的两个矩阵分别为f(M1×N1维)与h(M2×N2维),卷积结果矩阵g(M×N维),根据卷积计算法则,矩阵g中所有元素g(m,n)由实或复数乘累加及实或复数加法完成,而且各个元素的计算不存在任何数据依赖性与时间相关性;首先设计g矩阵各个元素的计算顺序,包括多个元素进行并行化设计、同一个元素计算过程进行并行化设计以及不同元素之间的串行计算顺序,确保可重构计算结构的有序和完整;其次,根据卷积维数大小、计算效率需求以及当前可用资源情况确定g矩阵计算资源占用量大小;最后,基于选定的计算资源以并行或串行的方式实现不同元素的计算,以利用卷积计算过程中不同元素之间计算的可并行性与同一个元素内部计算的可并行性的设计特点,来实现任意维数卷积需求的可重构计算。
2.根据权利要求1所述的适用于任意维数卷积需求的可重构计算方法,其特征在于,所述的运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,将每个元素计算分组的计算数据划分为待并行计算若干部分数据单元,该若干部分数据单元中每个数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系。
3.一种适用于任意维数卷积需求的可重构计算装置,其特征在于,基于权利要求1所述的适用于任意维数卷积需求的可重构计算方法实现,包含:
用于数据交互的通信接口及数据通道;
预设模块,用于根据卷积计算需求确定功能满足的卷积结果矩阵;
配置调度模块,用于配置当前可用计算资源中用于计算的运算处理单元,并将配置信息及待计算数据通过数据通道发送至接口控制器;
迭代计算模块,接口控制器将待计算数据发送至对应运算处理单元进行循环迭代计算,并将计算结果反馈至存储模块;
存储模块,用于存储待计算数据及运算处理单元反馈的计算结果;
所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于乘累加运算处理单元的分时复用配置当前可用计算资源中用于计算的运算处理单元;
所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,并基于当前可用计算资源情况中各个运算处理单元的并行进行配置,选定用于计算的若干运算处理单元,确定卷积结果矩阵中各个元素并行化运算过程中的各个元素计算分组和各个元素计算分组与选定的若干运算处理单元之间的对应关系;
所述的迭代计算模块,若干运算处理单元按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至存储模块进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算;
所述的配置调度模块,用于依据卷积计算效率需求及可重构计算结构中当前可用计算资源情况,基于当前可用计算资源情况中各个乘累加运算处理单元与加法运算处理单元之间的并行组合进行配置并选定用于计算的若干运算处理单元组,确定卷积结果矩阵中各个元素并行化运算过程中各个元素计算分组及各个元素计算分组与选定的若干运算处理单元组之间的对应关系;
所述的配置调度模块还包含元素计算分组数据划分单元,用于将每个元素计算分组的计算数据划分为待并行计算的若干部分数据单元;
所述的配置调度模块中每个运算处理单元组包含多个乘累加运算处理单元和至少一个互联的加法运算处理单元,待并行计算的若干部分数据单元中的单部分数据单元与多个乘累加运算处理单元中单个乘累加运算处理单元两者为一一对应关系;所述的迭代计算模块,若干运算处理单元组中按照预设顺序依次迭代计算相应元素计算分组中的元素并将计算结果反馈至外存主机进行存储,直至计算完该元素计算分组内所有元素,完成卷积结果矩阵中所有元素的计算;
假设卷积的两个矩阵分别为f(M1×N1维)与h(M2×N2维),卷积结果矩阵g(M×N维),根据卷积计算法则,矩阵g中所有元素g(m,n)由实或复数乘累加及实或复数加法完成,而且各个元素的计算不存在任何数据依赖性与时间相关性;首先设计g矩阵各个元素的计算顺序,包括多个元素进行并行化设计、同一个元素计算过程进行并行化设计以及不同元素之间的串行计算顺序,确保可重构计算结构的有序和完整;其次,根据卷积维数大小、计算效率需求以及当前可用资源情况确定g矩阵计算资源占用量大小;最后,基于选定的计算资源以并行或串行的方式实现不同元素的计算,以利用卷积计算过程中不同元素之间计算的可并行性与同一个元素内部计算的可并行性的设计特点,来实现任意维数卷积需求的可重构计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710774074.4A CN107491416B (zh) | 2017-08-31 | 2017-08-31 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710774074.4A CN107491416B (zh) | 2017-08-31 | 2017-08-31 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491416A CN107491416A (zh) | 2017-12-19 |
CN107491416B true CN107491416B (zh) | 2020-10-23 |
Family
ID=60646134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710774074.4A Active CN107491416B (zh) | 2017-08-31 | 2017-08-31 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491416B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108090029B (zh) * | 2018-01-04 | 2021-11-05 | 天津芯海创科技有限公司 | 矩阵求逆中的算粒调度装置 |
CN108230164A (zh) * | 2018-01-18 | 2018-06-29 | 中国平安人寿保险股份有限公司 | 一种产品利益项的显示方法、存储介质及终端设备 |
CN108182471B (zh) * | 2018-01-24 | 2022-02-15 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN108537330B (zh) * | 2018-03-09 | 2020-09-01 | 中国科学院自动化研究所 | 应用于神经网络的卷积计算装置及方法 |
CN109766515B (zh) * | 2018-12-26 | 2023-04-14 | 上海思朗科技有限公司 | 矩阵分解处理装置及方法 |
IN201911000737A (zh) | 2019-01-07 | 2019-09-22 | Hcl Technologies Limited | |
CN111158636B (zh) * | 2019-12-03 | 2022-04-05 | 中国人民解放军战略支援部队信息工程大学 | 可重构计算结构及计算处理阵列的路由寻址方法、装置 |
CN111625325A (zh) * | 2020-04-21 | 2020-09-04 | 上海天数智芯半导体有限公司 | 基于批数据的ai芯片片上网络调度方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970720A (zh) * | 2014-05-30 | 2014-08-06 | 东南大学 | 基于大规模粗粒度嵌入式可重构系统及其处理方法 |
CN106951961A (zh) * | 2017-02-24 | 2017-07-14 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理系统、处理数据的方法和装置 |
CN107368459B (zh) * | 2017-06-24 | 2021-01-22 | 中国人民解放军信息工程大学 | 基于任意维数矩阵乘法的可重构计算结构的调度方法 |
-
2017
- 2017-08-31 CN CN201710774074.4A patent/CN107491416B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970720A (zh) * | 2014-05-30 | 2014-08-06 | 东南大学 | 基于大规模粗粒度嵌入式可重构系统及其处理方法 |
CN106951961A (zh) * | 2017-02-24 | 2017-07-14 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107491416A (zh) | 2017-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491416B (zh) | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 | |
KR102443546B1 (ko) | 행렬 곱셈기 | |
Nurvitadhi et al. | GraphGen: An FPGA framework for vertex-centric graph computation | |
JP6715900B2 (ja) | ニューラルネットワークのパラメータを適応させるための方法および装置 | |
Gramacy et al. | Massively parallel approximate Gaussian process regression | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
JP2021509747A (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
WO2021190761A1 (en) | Parallel computing scheme generation for neural networks | |
CN107341133B (zh) | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 | |
Wu et al. | Compute-efficient neural-network acceleration | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
US20230259758A1 (en) | Adaptive tensor compute kernel for sparse neural network | |
Shrivastava et al. | A survey of hardware architectures for generative adversarial networks | |
Lee et al. | NP-CGRA: Extending CGRAs for efficient processing of light-weight deep neural networks | |
CN107368459B (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
CN112799852A (zh) | 逻辑节点的多维sbp分布式签名决策系统及其方法 | |
JP2009245381A (ja) | 積和演算回路、その設計装置、プログラム | |
CN113628093A (zh) | 一种加速图像处理的方法、系统、设备及存储介质 | |
Sedukhin et al. | In search of the performance-and energy-efficient CNN accelerators | |
Vishwanath | Time-frequency distributions: Complexity, algorithms and architectures | |
Sayehi et al. | Implementation of the RN method on FPGA using Xilinx system generator for nonlinear system regression | |
CN116805155B (zh) | 一种lstm网络处理方法、装置、设备及可读存储介质 | |
Chang et al. | Deep neural networks compiler for a trace-based accelerator | |
Woodhams et al. | Optimising accelerator for CAD workstation | |
US20230244484A1 (en) | Bit-parallel vector composability for neural acceleration |
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 |