CN113220630B - 一种硬件加速器的可重构阵列优化方法及自动调优方法 - Google Patents
一种硬件加速器的可重构阵列优化方法及自动调优方法 Download PDFInfo
- Publication number
- CN113220630B CN113220630B CN202110548117.3A CN202110548117A CN113220630B CN 113220630 B CN113220630 B CN 113220630B CN 202110548117 A CN202110548117 A CN 202110548117A CN 113220630 B CN113220630 B CN 113220630B
- Authority
- CN
- China
- Prior art keywords
- instruction
- hardware
- parameters
- logic core
- mask
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000005457 optimization Methods 0.000 title claims abstract description 47
- 230000008859 change Effects 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 51
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000002347 injection Methods 0.000 claims description 5
- 239000007924 injection Substances 0.000 claims description 5
- 230000008707 rearrangement Effects 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 abstract description 6
- 238000013461 design Methods 0.000 abstract description 5
- 238000003062 neural network model Methods 0.000 abstract description 3
- 239000000872 buffer Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 239000000243 solution Substances 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- 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/08—Learning methods
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种硬件加速器的可重构阵列优化方法及自动调优方法,属于神经网络张量加速器设计工程技术领域。所述优化方法包括适用于被动改变的硬件参数作为外层参数,适用于主动改变的硬件参数作为内层参数;外层参数为输入通道、输出通道和整数位宽;内层参数为逻辑核、模式掩码和单元掩码。所述自动调优方法包括以:针对外层参数,通过应用级切换中设置对应寄存器位置,完成各个应用的最佳硬件配置;针对内层参数,采用编译器+解释器的方式,通过设置逻辑核数和模式掩码完成零填充优化,通过设置单元掩码完成分组并行优化。本发明为对功耗和效率敏感的特殊领域系统中的深度神经网络模型部署提供一种高效的解决方案。
Description
技术领域
本发明属于神经网络张量加速器设计工程技术领域,涉及一种硬件加速器的可重构阵列优化方法及自动调优方法。
背景技术
近年来机器学习技术和无线通信技术的高速发展和广阔应用掀起了智能终端、万物互联的热潮,基于深度学习的人工智能应用已经和人们的生产生活密不可分。同时基于深度神经网络的前沿AI技术对于军工等特殊领域具有重大战略意义,然而现有的基于通用处理器和图形处理器的部署方案出于能效比和稳定性等方面的考量,不能作为对功耗和效率敏感的特殊领域中的解决方案。
通用张量硬件加速器一般具有以下特点:
1)采用两层指令集架构(Instruction Set Architecture,ISA),顶层ISA——宏指令(Insn)中区分了数据拷贝和数据计算,底层ISA——微指令(Uop)嵌套在宏指令中定义了运算的细节。通过宏指令中的微指令循环,可以利用计算模块中的基础计算单元完成不同模式计算任务。在一组卷积运算中微指令循环是不变的,可以被缓存,微指令循环定义了计算的模式(Schema)。
2)采用GEMM(General Matrix Multiplication)算法为矩阵运算加速,GEMM算法核心的思想是利用硬件的寄存器存储计算中重复使用的数据,通过矩阵分块提升访存的局部性,提升访存和计算的效率。
目前存在的固定阵列的硬件加速器有以下缺点:
1)GEMM核的参数是固定不变的,一般可以表示为(BATCH,BLOCK_IN)*(BLOCK_IN,BLOCK_OUT)。硬件在计算时取出对应大小的输入和权重矩阵进行一次计算得到(BATCH,BLOCK_OUT)的输出矩阵。固定不变的,这就要求了输入、输出张量的通道数必须是BLOCK_IN、BLOCK_OUT的整数倍。而当输入张量通道较少或输入张量通道对BLOCK_IN参数取余得到的通道较少时,硬件计算预先进行大量的通道填充直至使输入张量和权重张量通道等于BLOCK_IN参数,这就需要带来额外的访存和计算开销。例如对于图片帧输入层的三通道卷积(RGB,三通道),使用ARM计算的方案低效且会加重CPU的负载和异构系统的带宽压力,而使用硬件加速器则需要将输入张量和对应权重参数填充到以前的32/3倍,造成不必要的参数膨胀和额外的性能浪费。
2)目前流行的自动机器学习AutoML可以用于复杂模型的超参数自动调优,然而在固定阵列下,很多与模型部署性能相关的参数是不可以在运行时动态改变的,而只能是在硬件设计中就被静态的确定下来,这样就只能选择对某一种或者某一领域应用下的模型部署特殊优化的参数,而不能在更新或者切换应用模型时通过切换参数以高效的利用硬件的性能。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种硬件加速器的可重构阵列优化方法及自动调优方法,为对功耗和效率敏感的特殊领域系统中的深度神经网络模型部署提供一种高效的解决方案。
为了达到上述目的,本发明采用以下技术方案予以实现:
本发明公开了一种硬件加速器的可重构阵列优化方法,包括适用于被动改变的硬件参数作为外层参数,适用于主动改变的硬件参数作为内层参数;
其中,外层参数为输入通道、输出通道和整数位宽;内层参数为逻辑核、模式掩码和单元掩码。
优选地,异构系统运行时通过CPU访问硬件加速器的寄存器地址改写寄存器的值,实现硬件参数的被动改变。
优选地,根据硬件加速器执行时解析当前所需要的硬件模式并切换,实现硬件参数的主动改变。
优选地,输入通道和输出通道设定为相同或者不同。
本发明公开了一种硬件加速器可重构阵列的自动调优方法,基于上述的一种硬件加速器的可重构阵列优化方法进行,包括以下步骤:
针对外层参数,通过应用级切换中设置对应寄存器位置,完成各个应用的最佳硬件配置;针对内层参数,采用编译器+解释器的方式,通过设置逻辑核数和模式掩码完成零填充优化,通过设置单元掩码完成分组并行优化。
优选地,具体包括以下步骤:
1)初始时采用随机设置,设置外层参数;
2)解释器读取步骤1)设置的外层参数,获得输入通道和输出通道;
3)设置逻辑核数为当前张量通道数与输入通道数的最大公约数,设置模式掩码为当前张量通道数与逻辑核数的商,按照顺序分别设置单元掩码,单元掩码的组数为当前张量通道与输入通道的商;每组单元掩码对应的逻辑核位置标记为1,其余位置为0;
4)使用指令重排和广播完成各个逻辑核计算模式的确定;
5)使用指令模拟器估计预计执行的周期数,将计算周期相近的指令块注入到逻辑核中,完成指令派发;
6)当完成规定次数的搜索时,结束自动调优。
进一步优选地,步骤6)中,当未完成规定次数的搜索时,返回计算的用时和卷积实际的算力,并根据历史算力统计推测调优的外层参数,然后重复上述步骤1)~步骤6)。
进一步优选地,步骤4)中,使用指令重排和广播完成各个逻辑核计算模式的确定,包括:通过增加逻辑核运算单元的取指模块,通过计算单元掩码和计算模式掩码确定参与运算的单元,并将所需合并的各个单元的输出结果存储。
其中,进一步优选地,使用绝对地址实现逻辑核运算单元的取指,包括:
在指令集架构上增加顶层指令集架构,保留每个逻辑核运算单元的取指模块;运算时通过最上层指令向运算单元输入其运算所需的指令绝对地址和指令长度,由逻辑核运算单元直接访问DDR完成取指。
其中,进一步优选地,使用或相对地址实现逻辑核运算单元的取指,包括:
通过扩展宏指令,将逻辑核运算单元需要访问的起始地址偏移和指令长度进行编码,通过指令注入,将起始地址偏移和指令长度注入到解耦的指令组之前;
运算时将宏指令预取到逻辑核运算单元级模块的片内SRAM中,再由硬件解析计算单元掩码确定参与单元,最后由逻辑核运算单元根据相对偏移消费SRAM中的指令。
与现有技术相比,本发明具有以下有益效果:
本发明公开了一种硬件加速器的可重构阵列优化方法,所述优化方法中的可重构阵列动态改变方式既包括异构系统运行时通过CPU访问硬件加速器的寄存器地址改写寄存器的值,即模型升级或应用切换时硬件的被动改变;也包括硬件加速器根据指令解析出当前所需要的硬件模式并主动切换;同时针对硬件加速器实现的复杂度,使用两种方式对硬件参数进行优化划分,节省了运行内存资源。因此,本发明所述硬件加速器的可重构阵列优化方法,考虑到硬件加速器实现的复杂度和编译期对可重构参数的支持度下,满足了卷积中对可重构阵列优化使用需求。
本发明还公开了一种硬件加速器可重构阵列的自动调优方法,基于上述一种硬件加速器的可重构阵列优化方法实现,所述自动调优方法包括含有逻辑核数、模式掩码、单元掩码的三层指令集架构、指令重排序和微指令广播、分组解耦和指令派发、应用层级的粗粒度可重构参数的模板自动调优。其中,通过运行时访问寄存器的方法设置调优好的外层参数,能够在模型升级和应用切换时变更硬件结构,提高模型的运行效率;经过所述动调优方法能够实现系统优化,包括零填充优化、分组并行优化、应用模型下的硬件参数精细优化。本发明所述自动调优方法适用于神经网络部署对功耗和效率敏感的场合,可以满足各模型网络部署时的高效运算和访存的需求,提供了软件编译和参数自动调优的工具链支持对应模型应用下硬件结构的精细调优。
进一步地,通过指令注入的方式根据工作负载和外层参数的关系设置内层参数,利用可变的输入通道和可分组累加的逻辑核单元,完成卷积计算的零填充和分组并行优化。
综上所述,本发明通过以上可重构结构设计和软件支持,完成任意输入通道卷积无需填充优化的方法自动调优;通过以上可重构结构设计和软件支持,完成任意输入通道卷积分组并行优化的方法。本发明利用可重构阵列和基于超长指令字的两层指令集架构,实现对张量卷积计算的零填充和分组并行优化,同时使用了基于模板参数的自动调优方法,使模型更新和应用切换时能够动态的重构硬件阵列使硬件的计算资源和访存带宽得到充分利用。对模型网络的支持度高,通用性强、方便系统集成和快速开发快速迭代,为对功耗性能、开发时间敏感的特殊领域系统中的深度神经网络模型部署提供一种高效的解决方案。
附图说明
图1为本发明实施例中逻辑核数为8、模式掩码为1的可重构阵列的示意图;
图2为本发明实施例中逻辑核数为32、模式掩码为3的可重构阵列的示意图;
图3为本发明实施例中逻辑核数为8、模式掩码为1、每组对应的单元掩码为对应核编号置1的可重构阵列的示意图;
图4为本发明实施例中逻辑核数为32、模式掩码为3、每组对应的单元掩码为对应核组编号分别置1的可重构阵列的示意图;
图5为本发明实施例中指令重排序和Uop广播的示意图;
图6为本发明实施例中分组解耦和指令派发的示意图;
图7为本发明的流程框架图;
图8为卷积的调优和执行过程的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合附图对本发明做进一步详细描述:
参见图7为本发明公开的一种通用张量硬件加速器的可重构阵列的优化方法及自动调优方法,包括:
根据指令扩展和设置寄存器,分为两部分硬件参数:适用于被动改变的硬件参数为外层参数,适用于主动改变的硬件参数为内层参数;
其中,硬件参数的被动改变:异构系统运行时通过CPU访问硬件加速器的寄存器地址改写寄存器的值;
其中,硬件参数的主动改变:根据硬件加速器执行时解析当前所需要的硬件模式并切换。
具体地,外层参数为输入通道、输出通道和整数位宽;内层参数为逻辑核、模式掩码和单元掩码。
具体地,指令扩展的部分硬件参数中,通过设置逻辑核数和模式掩码完成零填充优化、通过设置单元掩码完成分组并行优化;设置寄存器的部分硬件参数通过应用级切换中设置寄存器的方式完成各个应用的最佳硬件配置。
外层通过改变输入输出通道和整数位宽进行应用级别的调优,内层通过输入卷积的形状参数和外层设置的输入输出通道,进行模式掩码和单元掩码的设置完成计算,并返回运行时间。具体参见图8,为基于上述硬件加速器的可重构阵列优化方法,进行的一种硬件加速器可重构阵列的自动调优方法,包括以下步骤:
1)初始时采用随机设置,设置外层参数;
2)解释器读取步骤1)设置的外层参数,获得输入通道和输出通道;
3)设置逻辑核数为当前张量通道数与输入通道数的最大公约数,设置模式掩码为当前张量通道数与逻辑核数的商,按照顺序分别设置单元掩码,单元掩码的组数为当前张量通道与输入通道的商;每组单元掩码对应的逻辑核位置标记为1,其余位置为0;
4)使用指令重排和广播完成各个逻辑核计算模式的确定;
5)使用指令模拟器估计预计执行的周期数,将计算周期相近的指令块注入到逻辑核中,完成指令派发;
6)判断是否完成规定次数的搜索;
当完成规定次数的搜索时,结束调优;
当未完成规定次数的搜索时,返回计算的用时和卷积实际的算力,并根据历史算力统计推测调优的外层参数,然后重复上述步骤1)~步骤6)。
下面结合具体实施例对本发明作进一步说明:
本发明公开了一种硬件加速器的可重构阵列优化方法和基于其的自动调优方法,具体包括以下内容:
1)自动调优的硬件参数和根据指令变换的硬件参数
可重构阵列的硬件参数的改变有两种途径,一种是异构系统运行时通过CPU访问硬件加速器的寄存器地址改写寄存器的值,也就是硬件的被动改变;另一种是根据硬件加速器执行时解析当前所需要的硬件模式并切换,也就是硬件的主动改变。本发明在考虑到硬件加速器实现的复杂度和编译期对可重构参数的支持度下,针对卷积的可重构阵列优化中同时使用了这两种方式。各参数、范围和说明如表1所示。
表1可重构参数、范围及说明
考虑到硬件加速器实现的复杂度,参数列表中前两个参数BLOCK_IN和BLOCK_OUT被限定为有限的几组选择(仅为2的幂次)。相比固定阵列,可重构阵列下这两个参数可以不相同。以Xilinx的ZCU104异构平台为例,考虑到最大限度利用片上DSP计算单元,在固定阵列下GEMM核参数只能为(1,32)*(32,32),而可重构阵列下这两个参数可以有更多的组合,从而构造出(1,16)*(16,64)或者(1,8)*(8,128)等参数。
对于参数列表中前三个参数,本发明使用异构系统运行时配置寄存器的方式对硬件进行重构。并将这三个参数集成到了自动调优框架中,从而通过机器的不断尝试,选择出兼顾推理速度与模型准确率的硬件加速器参数,并将调优得到的参数写入配置文件,从而在后续进行任务(模型)切换时通过运行时重构加速器阵列,高效的完成模型网络的前向推理任务。
对于参数列表的后三个参数,本发明主要使用硬件加速器解析指令的方式对硬件进行重构。为将编译时和运行时解耦,本发明采用编译器+解释器的方式,编译器首先将指令编译为适用于单固定阵列的宏指令和微指令;解释器在运行时对编译器编译的宏指令和微指令行进行解释执行,根据输入通道或者输出通道数的特征,通过扩展硬件加速器指令集架构以调整GEMM核的计算调度和输出缓冲的累加策略,进行指令重排和分组后派发,实现可重构阵列张量加速器的零填充和分组并行优化。
将编译过程解耦的好处是可以在运行时根据参数列表中前三个参数(即当前硬件的实际阵列结构),在第一步编译的基础上进行硬件实际指令的最终生成和派发,避免了重复编译,将指令的特化和生成交给运行时解释器完成。这使得运行时改变硬件结构无需提前注入对应硬件结构的指令,同时也节省了内存资源。
2)零填充优化和分组并行优化
在原有的指令集架构上进行扩充,通过指令设置GEMM核需要拆分的逻辑核数(LOGIC_CORE)和计算模式掩码(MODE_MASK),使硬件根据其模式进行访存模式的切换,再选择使用合适的通道数进行硬件计算,而不依赖于通道的填充。
以BLOCK_IN和BLOCK_OUT都取32即GEMM核参数(1,32)*(32,32)为例,对于输入张量通道少于32的卷积运算,固定阵列的方案首先通过将输入张量通道填充至32,先通过DDR猝发读取内存块中排布变换后NCHW1n32c的输入数据以及OCHW32o32c的权重数据到硬件的BRAM中,再从而每次从BRAM中取出32个输入数据进行计算。固定阵列的方案需要进行(32*N*H*W*填充数+32*32*O*H*W*填充数)的多余填充(由CPU完成)和访存(由硬件加速器加载)操作,浪费了异构系统宝贵的计算资源和访存带宽。
可重构阵列的零填充优化可以避免上述计算资源和访存带宽的浪费情况,具体计算过程举例如下:
输入张量通道为4的卷积运算模式如图1所示:首先将逻辑核数设为8,使的单个逻辑核的输入通道数等于4,模式掩码取默认值1,即单个核对应一个输出缓冲,然后通过DDR猝发读取排布变换后NCHW1n4c的输入张量以及OCHW32o4c的权重张量到硬件的BRAM中,再每次从RAM中取出4个输入数据进行计算,最后对这4个通道的数据进行累加,即可实现硬件卷积的零填充计算。
在本发明的某一具体实施例中,输入张量通道为3的卷积运算模式如图2所示:首先将逻辑核数设为32,使的单个逻辑核的输入通道数等于1,模式掩码设为3,即3个核对应一个输出缓冲,然后通过DDR猝发读取排布变换后NCHW1n3c的输入张量以及OCHW32o3c的权重张量到硬件的BRAM中,再每次从RAM中取出3个输入数据进行计算,最后对这3个核输出的数据进行累加,即可实现硬件卷积的零填充计算。目标检测类模型网络第一层输入图片帧为RGB三通道,故图中通道数以RGB代替。
同时,本发明考虑到零填充优化在计算中存在逻辑核处于空闲状态,并且输出缓冲位置不同的卷积可以同时进行计算,本发明又引入了分组并行优化以充分利用硬件的计算资源。这是因为如果只是对卷积进行零填充优化,就只能减少填充带来的计算和访存的开销,GEMM核运算周期与输入张量的通道数无关,意味着可重构阵列的零填充优化与固定阵列的通道填充方案相比,并没有缩短卷积计算的周期。
因此,本发明在原有的指令集架构上进行扩充,添加了计算单元掩码UNIT_MASK,通过增加输出缓冲个数,将每组零填充优化的同步关系利用位掩码表征,以便对于输出缓冲对应不同位置的卷积进行并行计算。对两种掩码进行比较:
其中,针对计算模式掩码(MODE_MASK):计算模式掩码确定每个输出缓冲区对应逻辑核的数目,与张量的排布和硬件加速器的访存模式相关。
其中,针对计算单元掩码(UNIT_MASK):每组的计算单元掩码标记了参与该组运算的阵列单元(全部运算单元参与可以提高资源利用率,但随着运算的进行会出现个别情况剩余的运算无法占满全部的运算单元),与硬件加速器的同步相关,标记的单元全部标记为完成后,才可以执行带有该位掩码的下一条指令。
在本发明的某一具体实施例中,以BLOCK_IN和BLOCK_OUT都取32即GEMM核参数(1,32)*(32,32)为例,分组并行优化的具体过程举例如下:
输入张量通道为4的卷积运算模式如图3所示:首先将逻辑核数设为8,使的单个逻辑核的输入通道数等于4,模式掩码取默认值1,即单个核对应一个输出缓冲,每组对应的单元掩码为对应核编号置1,即各组进行计算时仅需要考虑单个核对应的输出,不需要进行同步和累加,然后通过DDR猝发读取排布变换后NCHW1n4c的输入张量以及OCHW32o4c的权重张量到硬件的BRAM中,再每次从RAM中取出32个输入数据分为8批同时处理,8个输出缓冲中的输出结果是输入4通道卷积的累加值(即单个运算单元的输出值,并非多个计算单元输出的累加),这样可以使8个逻辑核可以同时进行工作而避免空闲状态,即可在零填充的基础上充分利用硬件资源从而进行更加高效的计算。
输入张量通道为3的卷积运算模式如图4所示:首先将逻辑核数设为32,使的单个逻辑核的输入通道数等于1,模式掩码设为3,即3个核对应一个输出缓冲,每组对应的单元掩码为对应核组编号分别置1,即各组进行计算时仅需要考虑每组对应的三个核对应的累加和同步。单元掩码用二进制表示如下(0b开头代表二进制数,掩码位数等于逻辑核数32,中间连续的零使用…省略):第一组掩码为0b1110000…0,第二组掩码为0b0001110…0,后面每组掩码值等于其前组掩码右移3位,第十组(最后一组)掩码为0b0…011100。然后通过DDR猝发读取排布变换后NCHW1n3c的输入张量以及OCHW32o3c的权重张量到硬件的BRAM中,再每次从RAM中取出30个输入数据分10批同时处理,10个输出缓冲的输出结果是每组3个核输出的累加值。整个计算中只有两个逻辑核空闲,极大的提升了硬件资源的利用率。目标检测类模型(包括FasterR-CNN)第一层输入图片帧为RGB三通道,故图中通道数以RGB代替。使用可重构阵列可使FasterR-CNN的第一层卷积的理论性能提升至原固定阵列下性能的10倍。
3)指令重排
Uop是原有指令集架构中的底层微码,即两级指令架构下的微码,用来确定计算的模式(Schema),在一次计算中可将Uop提到最前端广播给各逻辑核计算单元。指令重排序利用此特性将静态编译生成的同一计算模式下的宏指令和微指令解耦,为后续静态分析指令输出依赖进行分组并行优化打好基础。
在本发明的某一具体实施例中,指令重排和Uop广播的过程如图5所示,首先将指令按照算子级别(即保证卷积计算模式的一致性,每个conv2d算子对应的卷积核形状以及步长等参数不同)进行划分,将同一算子内部的LoadUop相关的指令流通过重排,然后在不影响单比特队列依赖关系的前提下,移至每一算子指令流的最前端,最后通过广播机制让所有参与本单元计算的阵列在执行具体计算前缓存Uop循环,确定本次计算的模式。
4)分组解耦和指令派发
在本发明的某一具体实施例中,分组解耦和指令派发的过程如图6所示。首先根据卷积通道信息和当前使用的可重构阵列的参数对输出依赖关系进行分组,使得每组计算所需周期数尽可能相等,随后通过指令注入将分组后的指令流同时输入到可重构阵列中的多个逻辑核计算模块中实现并行计算。
其中,针对分组解耦:神经网络中的模块运算由于低比特卷积计算后为防止溢出需要进行CAST转换,通常由GEMM(矩阵相乘,卷积运算),ALU(标量乘矩阵),CAST(截断)等构成。首先将运算分为多个GEMM、ALU、CAST组成的运算组,在分析最终输出缓冲区是否具有相同的位置,优先将具有相同输出位置缓冲区的指令放在一个大组中(因为硬件片上的累加效率较高,且合并后再存储可以减少访存次数,提高计算效率),并标记对应的计算模式和计算单元掩码。
其中,针对指令派发:硬件上增加逻辑核运算单元级的取指模块,指令上首先通过计算单元掩码和计算模式掩码确定参与运算的单元,以及是否需要合并各个单元的输出结果统一存储到内存中,阵列单元的取指通过利用绝对地址和相对地址有两种实现方法。
其中,针对使用绝对地址,具体为:将两层指令集架构(ISA)扩展为三层,增加顶层ISA,保留每个逻辑核运算单元的取指模块。运算时通过最上层指令向运算单元输入其运算所需的指令绝对地址和指令长度,由各个逻辑核运算单元直接访问DDR完成取指。
其中,针对使用相对地址,具体为:通过扩展宏指令,编码本次运算中参与的将逻辑核运算单元需要访问的起始地址偏移和指令长度,通过指令注入,将起始地址偏移和指令长度注入到解耦的指令组之前。运算时将宏指令预取到逻辑核运算单元级模块的片内SRAM中,再由硬件解析计算单元掩码确定本次运算的参与单元,最后由逻辑核运算单元根据相对偏移消费SRAM中的指令。
使用绝对地址的方法结构更加整洁清晰,三层微码结构,层层嵌套,将各个模块对应的指令位置和长度发送给每个逻辑核运算单元的取指模块,使其直接访问DDR取得宏指令,优点是不需要更改原有宏指令,避免了修改和插入时可能的内存再分配(realloc)问题,保持了指令缓存阶段各个节点的指令的对应关系,减少了内存碎片。
使用相对地址的方法有两个优点:首先是使指令具有了可移植性,不需要每次进行批量推理业务前进行指令缓存和分析处理的工作,即业务结束时可以将内存中的二进制指令编码导出为转储文件,下次业务开始时可以直接装载转储文件,由于使用了相对地址,即使内存中的装载的指令地址发生变化也可以顺利完成神经网络的推理业务;其次将宏指令整体预取指到片内SRAM(双缓冲区切换,工作区和预取区相互分离),利用了局部性原理,访存上更加高效。
本发明了同时提出了这两种实现方法,并根据实际的应用需要进行切换。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (6)
1.一种硬件加速器可重构阵列的自动调优方法,其特征在于,包括适用于被动改变的硬件参数作为外层参数,适用于主动改变的硬件参数作为内层参数;
其中,外层参数为输入通道、输出通道和整数位宽;内层参数为逻辑核、模式掩码和单元掩码,异构系统运行时通过CPU访问硬件加速器的寄存器地址改写寄存器的值,实现硬件参数的被动改变,根据硬件加速器执行时解析当前所需要的硬件模式并切换,实现硬件参数的主动改变,输入通道和输出通道设定为相同或者不同;
针对外层参数,通过应用级切换中设置对应寄存器位置,完成各个应用的最佳硬件配置;
针对内层参数,采用编译器+解释器的方式,通过设置逻辑核数和模式掩码完成零填充优化,通过设置单元掩码完成分组并行优化。
2.根据权利要求1所述的一种硬件加速器可重构阵列的自动调优方法,其特征在于,具体包括以下步骤:
1)初始时采用随机设置,设置外层参数;
2)解释器读取步骤1)设置的外层参数,获得输入通道和输出通道;
3)设置逻辑核数为当前张量通道数与输入通道数的最大公约数,设置模式掩码为当前张量通道数与逻辑核数的商,按照顺序分别设置单元掩码,单元掩码的组数为当前张量通道与输入通道的商;每组单元掩码对应的逻辑核位置标记为1,其余位置为0;
4)使用指令重排和广播完成各个逻辑核计算模式的确定;
5)使用指令模拟器估计预计执行的周期数,将计算周期相近的指令块注入到逻辑核中,完成指令派发;
6)当完成规定次数的搜索时,结束自动调优。
3.根据权利要求2所述的一种硬件加速器可重构阵列的自动调优方法,其特征在于,步骤6)中,当未完成规定次数的搜索时,返回计算的用时和卷积实际的算力,并根据历史算力统计推测调优的外层参数,然后重复上述步骤1)~步骤6)。
4.根据权利要求2所述的一种硬件加速器可重构阵列的自动调优方法,其特征在于,步骤4)中,使用指令重排和广播完成各个逻辑核计算模式的确定,包括:通过增加逻辑核运算单元的取指模块,通过计算单元掩码和计算模式掩码确定参与运算的单元,并将所需合并的各个单元的输出结果存储。
5.根据权利要求4所述的一种硬件加速器可重构阵列的自动调优方法,其特征在于,使用绝对地址实现逻辑核运算单元的取指,包括:
在指令集架构上增加顶层指令集架构,保留每个逻辑核运算单元的取指模块;运算时通过最上层指令向运算单元输入其运算所需的指令绝对地址和指令长度,由逻辑核运算单元直接访问DDR完成取指。
6.根据权利要求4所述的一种硬件加速器可重构阵列的自动调优方法,其特征在于,使用或相对地址实现逻辑核运算单元的取指,包括:
通过扩展宏指令,将逻辑核运算单元需要访问的起始地址偏移和指令长度进行编码,通过指令注入,将起始地址偏移和指令长度注入到解耦的指令组之前;
运算时将宏指令预取到逻辑核运算单元级模块的片内SRAM中,再由硬件解析计算单元掩码确定参与单元,最后由逻辑核运算单元根据相对偏移消费SRAM中的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110548117.3A CN113220630B (zh) | 2021-05-19 | 2021-05-19 | 一种硬件加速器的可重构阵列优化方法及自动调优方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110548117.3A CN113220630B (zh) | 2021-05-19 | 2021-05-19 | 一种硬件加速器的可重构阵列优化方法及自动调优方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220630A CN113220630A (zh) | 2021-08-06 |
CN113220630B true CN113220630B (zh) | 2024-05-10 |
Family
ID=77093521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110548117.3A Active CN113220630B (zh) | 2021-05-19 | 2021-05-19 | 一种硬件加速器的可重构阵列优化方法及自动调优方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220630B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114462340B (zh) * | 2022-04-12 | 2022-07-01 | 北京大学 | 用于硬件加速器的存储—计算模块互联电路自动设计方法 |
CN114610288B (zh) * | 2022-05-12 | 2022-09-16 | 之江实验室 | 基于阵列式解析基元结构的后端编译器实现方法及装置 |
CN114970849B (zh) * | 2022-06-28 | 2024-08-13 | 西安交通大学 | 一种硬件加速器多阵列并行计算方法及系统 |
CN115393174B (zh) * | 2022-10-27 | 2023-03-24 | 之江实验室 | 一种粗粒度的图像神经网络加速器指令集架构方法及装置 |
CN117236187B (zh) * | 2023-09-28 | 2024-03-19 | 中国科学院大学 | 一种深度学习加速器芯片的参数化设计方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340201A (zh) * | 2018-12-19 | 2020-06-26 | 北京地平线机器人技术研发有限公司 | 卷积神经网络加速器及其执行卷积运算操作的方法 |
CN111783966A (zh) * | 2019-04-04 | 2020-10-16 | 北京芯启科技有限公司 | 一种深度卷积神经网络硬件并行加速器的硬件装置及方法 |
WO2020224516A1 (zh) * | 2019-05-09 | 2020-11-12 | 深圳大普微电子科技有限公司 | 一种神经网络硬件加速器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60334494D1 (de) * | 2002-12-09 | 2010-11-18 | Rockwell Automation Inc | System und verfahren zur adaptiven steuerung von prozessen mit veränderlicher dynamik |
-
2021
- 2021-05-19 CN CN202110548117.3A patent/CN113220630B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340201A (zh) * | 2018-12-19 | 2020-06-26 | 北京地平线机器人技术研发有限公司 | 卷积神经网络加速器及其执行卷积运算操作的方法 |
CN111783966A (zh) * | 2019-04-04 | 2020-10-16 | 北京芯启科技有限公司 | 一种深度卷积神经网络硬件并行加速器的硬件装置及方法 |
WO2020224516A1 (zh) * | 2019-05-09 | 2020-11-12 | 深圳大普微电子科技有限公司 | 一种神经网络硬件加速器 |
Non-Patent Citations (3)
Title |
---|
基于多级关联信号树的高效可重构网包分类方法研究;肖玮;陈性元;包义保;杜学绘;朱雨雯;;高技术通讯(09);全文 * |
基于改进动态配置的FPGA卷积神经网络加速器的优化方法;陈朋;陈庆清;王海霞;张怡龙;刘义鹏;梁荣华;;高技术通讯(03);全文 * |
应用于车载工业CT系统的驻波电子直线加速器设计;尹政;王斐;郭姝;陈岩;江海;;制造业自动化(08);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113220630A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113220630B (zh) | 一种硬件加速器的可重构阵列优化方法及自动调优方法 | |
Song et al. | C-Brain: A deep learning accelerator that tames the diversity of CNNs through adaptive data-level parallelization | |
Yin et al. | A high energy efficient reconfigurable hybrid neural network processor for deep learning applications | |
Guan et al. | FP-DNN: An automated framework for mapping deep neural networks onto FPGAs with RTL-HLS hybrid templates | |
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
US6732354B2 (en) | Method, system and software for programming reconfigurable hardware | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN114995823A (zh) | 一种面向cnn专用加速器的深度学习编译器优化方法 | |
CN114995822B (zh) | 专用于cnn加速器的深度学习编译器优化方法 | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
CN114356836A (zh) | 基于risc-v的三维互联众核处理器架构及其工作方法 | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
CN113157638B (zh) | 一种低功耗存储器内计算处理器和处理运算方法 | |
CN117610626A (zh) | 基于fpga实现卷积神经网络的软硬件协同加速方法 | |
CN111522776B (zh) | 一种计算架构 | |
CN102054107B (zh) | 集成电路下层硬件映射方法、时空图生成方法及装置 | |
Lei et al. | Toward matrix multiplication for deep learning inference on the Xilinx Versal | |
CN112613598A (zh) | 一种基于fpga模拟的阻变神经网络加速器评估方法 | |
CN115878188A (zh) | 一种基于sve指令集的池化层函数的高性能实现方法 | |
CN113469326B (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN115081608A (zh) | 基于自适应分配的神经网络加速器实现系统和方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN109597619A (zh) | 一种面向异构多核架构的自适应编译框架 | |
CN113469327B (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 |