CN110069284A - 一种基于opu指令集的编译方法及编译器 - Google Patents
一种基于opu指令集的编译方法及编译器 Download PDFInfo
- Publication number
- CN110069284A CN110069284A CN201910196087.7A CN201910196087A CN110069284A CN 110069284 A CN110069284 A CN 110069284A CN 201910196087 A CN201910196087 A CN 201910196087A CN 110069284 A CN110069284 A CN 110069284A
- Authority
- CN
- China
- Prior art keywords
- instruction
- layer
- opu
- mapping
- granularity
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013507 mapping Methods 0.000 claims abstract description 69
- 238000006243 chemical reaction Methods 0.000 claims abstract description 23
- 230000006798 recombination Effects 0.000 claims abstract description 17
- 238000005215 recombination Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 35
- 230000001133 acceleration Effects 0.000 claims description 26
- 238000013139 quantization Methods 0.000 claims description 20
- 238000012805 post-processing Methods 0.000 claims description 11
- 238000011176 pooling Methods 0.000 claims description 8
- 230000004913 activation Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000008521 reorganization Effects 0.000 claims description 6
- 238000013481 data capture Methods 0.000 claims description 4
- 238000005520 cutting process Methods 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 9
- 239000010410 layer Substances 0.000 description 106
- 238000013527 convolutional neural network Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 12
- 238000005457 optimization Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
-
- 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
-
- 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)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于OPU指令集的编译方法及编译器,涉及基于CNN加速的编译方法领域;方法包括步骤:将不同目标网络的CNN定义文件进行转换,并根据定义的OPU指令集选择最优加速器配置映射,生成不同目标网络的指令完成映射;其中,所述转换包括文件转换、网络的图层重组和生成统一中间表示IR;所述映射包括解析IR、根据解析信息搜索解空间获得保证最大吞吐量的映射方式和根据定义的OPU指令集基于求解到的映射方式生成不同目标网络的指令;本发明克服片外存储器通信延迟问题和寻找不同的目标网络最优的加速器配置问题,输出OPU可执行的不同目标网络的指令,实现依靠指令配置完成CNN加速,不重构FPGA加速器。
Description
技术领域
本发明涉及基于CNN加速的编译方法领域,尤其是一种基于OPU指令集的编译方法及编译器。
背景技术
深度卷积神经网络(CNNs)在各种应用中表现出很高的准确性,如视觉对象识别,语音识别和物体检测等。然而,它在准确性上的突破在于高计算成本的代价,需要通过计算集群,GPU和FPGA来推动加速。其中,FPGA加速器具有能量效率高,灵活性好,计算能力强等优点,特别是在智能手机上的语音识别和视觉对象识别等边缘设备上的CNN深度应用中脱颖而出;其通常涉及架构探索和优化,RTL编程,硬件实现和软件-硬件接口开发,随着发展人们对FPGA CNN(卷积神经网络)加速的自动编译器进行了深入的研究,其可配置平台提供丰富的并行计算资源和高能效,使其成为边缘计算和数据中心CNN加速的理想选择。但随着DNN(深度神经网络)算法在各种更复杂的计算机视觉任务中的发展,如人脸识别,车牌识别,姿态识别等,多种DNN的级联结构被广泛应用以获得更好的性能,这些新的应用场景要求不同网络的顺序执行,因此需要不断重新配置FPGA器件,带来耗时长的问题;另一方面,客户网络架构中的每次新的更新都可以导致RTL代码的再生和整个实现过程,耗时更长。
近年来,能够快速将CNN部署到FPGA的自动加速器发生器成为另一个焦点,现有技术中有研究者开发了Deep weaver,它根据设计规划者提供的资源分配和硬件组织将CNN算法映射到手工优化设计模板;还有人提出了一个基于RTL模块库的编译器,它由多个优化的手工编码Verilog模板组成,描述了不同类型层的计算和数据流;与定制设计的加速器相比,这两项工作都获得了可比的性能;还有研究者提供了一个基于HLS的编译器,主要关注通过内存访问重组进行的带宽优化;还有研究者提出了一种收缩阵列架构,以实现更高的FPGA运行频率。但是现有的FPGA加速工作旨在为不同的CNN生成特定的单独加速器,这保证了基于RTL或基于HLS-RTL的模板的合理高性能,但在调整目标网络的情况下硬件升级复杂度高。因此,为实现不需要对单独网络产生特定硬件描述代码,不涉及对FPGA进行重新烧录,全部部署流程依靠指令配置完成,通过指令配置不同目标网络配置,不重构FPGA加速器,需要定义指令集,编译器编译定义的指令集产生指令序列,但在编译过程中,面临片外存储器通信延迟问题和不同的目标网络如何解决最优的性能配置的普适性问题。
发明内容
本发明的目的在于:本发明提供了一种基于OPU指令集的编译方法及编译器,克服片外存储器通信延迟问题和寻找最优的性能配置的普适性问题,输出OPU可执行的不同目标网络的指令,实现依靠指令配置完成CNN加速,不重构FPGA加速器。
本发明采用的技术方案如下:
一种基于OPU指令集的编译方法,包括如下步骤:
将不同目标网络的CNN定义文件进行转换,并根据定义的OPU指令集选择最优加速器配置映射,生成不同目标网络的指令完成映射;
其中,所述转换包括文件转换、网络的图层重组和生成统一中间表示IR;
所述映射包括解析IR、根据解析信息搜索解空间获得保证最大吞吐量的映射方式和根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
优选地,所述转换步骤细节如下:
分析CNN定义文件的形式后转换文件,压缩并提取其中的网络信息;
将网络进行运算重组为多个图层组,所述图层组包括一个主要层和多个附属层,所述图层组间的结果保存至DRAM,所述主要层和附属层之间数据流通由片上流水完成;所述主要层包括卷积层和完全连接层,所述附属层包括池化层、激活层和残差层;
根据网络信息和重组信息生成IR。
优选地,所述映射中搜索解空间获得最大吞吐量的映射方式包括如下步骤:
步骤a1:计算峰值理论值,计算如以下公式所示:
T=f*TNPE
其中,T表示吞吐量(每秒操作次数),f表示工作频率,TNPE表示芯片上可用的PE总数;
步骤a2:定义整个网络计算所需的时间L的最小值,计算如以下公式所示:
其中,αi表示第i层的PE效率,Ci表示完成第i层所需的操作量;
步骤a3:计算完成第i层所需的操作量Ci,计算如以下公式所示:
其中,表示对应层整体输出大小,表示输入层深度,表示该层权重尺寸;
步骤a4:定义αi,计算如以下公式所示:
其中,ti表示计算第i层所需的时间;
步骤a5:计算ti,计算如以下公式所示:
其中,Kx×Ky表示该层的权重尺寸,ONi×OMi表示输出块大小,ICi×OCi表示片上内核块大小,表示输入层深度,表示输出层深度,表示输入层的大小,INi,IMi表示输入层的输入块的大小;
步骤a6:设定αi相关参数的约束条件,遍历参数的各种取值求解αi最大值,计算如以下公式所示:
INi*IMi≤depththres
ICi*OCi≤NPE
ICi,OCi≤widththres
其中,depththres、widththres表示片上BRAM深度和宽度资源约束。
优选地,所述定义的OPU指令集包括有条件指令和无条件指令,
有条件指令定义细节为:有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;有条件指令的寄存器包括参数寄存器和触发条件寄存器,执行方式为满足硬件写入的触发条件后执行;有条件指令的参数配置方式为根据无条件指令进行参数配置;
无条件指令定义细节为:条件指令参数的执行方式为被读取后直接执行。
优选地,所述OPU指令集还包括指令颗粒度,指令颗粒度设置细节为:所述读存储指令的颗粒度为每次读入n个数,n>1;所述写存储指令的颗粒度为每次写出n个数,n>1;所述数据抓取指令的颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令的颗粒度为每次操作64的倍数个数据;所述计算指令的颗粒度为32。
优选地,所述转换还包括CNN训练数据进行8bit量化,细节如下:
重组后的网络选择8位作为特征映射和内核权重的数据量化标准,即进行8bit量化,所述量化为动态量化,所述动态量化包括为每一层特征映射和内核权重数据中心寻找误差最小定点表示,细节如以下公式所示:
其中,float表示内核权重或特征映射的原始单精度,fix(floc)表示基于某个分数长度floc将float切割为定点后的值。
一种基于OPU指令集的编译器,包括
转换单元,用于分析CNN定义文件后进行文件转换、网络图层重组和生成IR;
指令定义单元,用于定义指令后获取OPU指令集,定义指令包括定义有条件指令、定义无条件指令和根据CNN网络和加速需求设置指令颗粒度;
映射单元,用于获取最优加速器配置对应的映射方式后,根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
优选地,所述转换单元包括
操作单元,用于分析CNN定义文件后,转换CNN定义文件的形式和压缩CNN定义文件中的网络信息;
重组单元,用于将网络所有层重组为多个图层组,并将图层组分为主要层和附属层;
IR生成单元,用于组合网络信息和图层重组信息;
所述映射单元包括
映射方式获取单元,用于解析IR后,根据解析信息搜索解空间获得保证最大吞吐量的映射方式;
指令生成单元,用于根据OPU指令集将最大吞吐量对应的映射解表达为指令序列,生成不同目标网络的指令后完成映射。
优选地,所述指令定义单元中包括
指令分类单元,用于将指令分为有条件指令和无条件指令,并设置指令的执行方式和参数/类型,细节为:无条件指令直接执行并为有条件指令提供配置参数,有条件指令满足触发条件后执行;有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;
颗粒度设置单元,用于根据CNN网络和加速需求设置指令颗粒度,具体设置为:所述读存储指令的颗粒度为每次读入n个数,n>1;所述写存储指令的颗粒度为每次写出n个数,n>1;所述数据抓取指令的颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令的颗粒度为每次操作64的倍数个数据;所述计算指令的颗粒度为32。
优选地,所述无条件指令的参数包括片上存储特征图模块长,宽,通道数、当前层输入长,宽、当前层输入通道数,输出通道数、读存储操作起始地址、读操作模式选择、写存储操作起始地址、写操作模式选择、数据抓取模式及约束、设置计算模式操作、设置池化操作相关参数操作、设置激活操作相关参数操作和设置数据移位,剪切取整操作。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.本发明基于OPU指令集进行编译,编译过程中将不同目标网络的CNN定义文件进行转换、映射生成不同目标网络的OPU可执行指令,通过进行网络重组优化、搜索解空间获得保证最大吞吐量的映射方式分别克服如何减少与片外的数据沟通、如何解决最优的性能配置的普适性问题,达到了OPU根据开始信号读取编译后的指令并运行指令,实现通用CNN加速,不需要对网络产生特定硬件描述代码,不需要对FPGA进行重新烧录,通过指令快速实现不同网络配置的加速的效果;
2.本发明编译过程中对网络进行优化和重组,将多层计算合并定义以实现流水线作业,以适应硬件结构,减少与片外的数据沟通以实现计算单元的最大利用效率;比如图层组包括一个主要层和多个附属层,将卷积层设置为主层,池化层、激活层和残差层等设为副层,副层和主层之间数据流通直接由片上流水完成,不设计片外存储数据交换,节约数据传输时间;
3.本发明在映射时,在搜索空间内寻找最大化吞吐量解,找到性能最优的加速器配置,输出OPU可执行的指令,为不同目标网络找到最佳的加速器配置,进一步促进实现快速加速;
4.本发明编译过程中根据定义的OPU指令集生成指令序列,定义的指令包括需要满足触发条件才执行的有条件指令和直接执行并为有条件指令提供配置参数的无条件指令,克服现有FPGA时钟周期的不确定性带来的指令暂停问题,确保指令运行的效率和准确度,根据网络结构和加速需求设置指令颗粒度,实现将不同结构的网络映射重组到具体结构,解决了指令集对应处理器的普适性,同时设计的指令在保证解空间的情况下简化编译,提高了加速速度;
5.本发明进行在转换时对网络做8bit量化,节约运算资源和存储资源。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的编译方法流程图;
图2为本发明的图层重组示意图;
图3为本发明的实施例中CNN加速方法流程图;
图4为本发明的实施例中CNN加速方法中并行计算模式示意图;
图5为本发明的OPU结构示意图;
图6为本发明的指令序列示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以下结合实施例对本发明的特征和性能作进一步的详细描述。
实施例1
一种基于OPU指令集的编译方法,包括如下步骤:
将不同目标网络的CNN定义文件进行转换,并根据定义的OPU指令集选择最优加速器配置映射,生成不同目标网络的指令完成映射;
其中,所述转换包括文件转换、网络的图层重组和生成统一中间表示IR;
所述映射包括解析IR、根据解析信息搜索解空间获得保证最大吞吐量的映射方式和根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
一种基于OPU指令集的编译器,包括
转换单元,用于分析CNN定义文件后进行文件转换、网络图层重组和生成IR;
指令定义单元,用于定义指令后获取OPU指令集,定义指令包括定义有条件指令、定义无条件指令和根据CNN网络和加速需求设置指令颗粒度;
映射单元,用于获取最优加速器配置对应的映射方式后,根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
所述转换单元包括
操作单元,用于分析CNN定义文件后,转换CNN定义文件的形式和压缩CNN定义文件中的网络信息;
重组单元,用于将网络所有层重组为多个图层组,并将图层组分为主要层和附属层;
IR生成单元,用于组合网络信息和图层重组信息;
映射单元包括映射方式获取单元,用于解析IR后,根据解析信息搜索解空间获得保证最大吞吐量的映射方式;
指令生成单元,用于根据OPU指令集将最大吞吐量对应的映射解表达为指令序列,生成不同目标网络的指令后完成映射。
指令定义单元中包括
指令分类单元,用于将指令分为有条件指令和无条件指令,并设置指令的执行方式和参数/类型,细节为:无条件指令直接执行并为有条件指令提供配置参数,有条件指令满足触发条件后执行;有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;
颗粒度设置单元,用于根据CNN网络和加速需求设置指令颗粒度。
无条件指令的参数包括片上存储特征图模块长,宽,通道数、当前层输入长,宽、当前层输入通道数,输出通道数、读存储操作起始地址、读操作模式选择、写存储操作起始地址、写操作模式选择、数据抓取模式及约束、设置计算模式操作、设置池化操作相关参数操作、设置激活操作相关参数操作和设置数据移位,剪切取整操作。
编译方法流程图如图1所示,基于OPU指令集进行编译,根据OPU指令集生成指令序列,OPU指令集包括需要满足触发条件才执行的有条件指令和直接执行并为有条件指令提供配置参数的无条件指令,生成的指令序列如图6所示(有条件指令即C型指令和无条件指令即U型指令),编译过程中将不同目标网络的CNN定义文件进行转换、映射生成不同目标网络的OPU可执行指令,通过进行网络重组优化、搜索解空间获得保证最大吞吐量的映射方式分别克服如何减少与片外的数据沟通、如何找到最优的性能配置的普适性问题,OPU根据开始信号读取编译后的指令并运行指令,比如数据读存储、写存储、数据抓取、数据后处理和计算,运行指令时采用指令定义的如图4所示的计算模式,适应不同尺寸的网络的内核的大小,定义指令时定义指令颗粒度,所述读存储指令的颗粒度为每次读入n个数,n>1;所述写存储指令的颗粒度为每次写出n个数,n>1;所述数据抓取指令的颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令的颗粒度为每次操作64的倍数个数据;所述计算指令的颗粒度为32(32即为向量的长度,包含32个8bit数据);实现将不同结构的网络映射重组到具体结构,实现通用CNN加速,加速方法流程图如图3所示,OPU结构示意图如图5所示,达到了不需要对网络产生特定硬件描述代码,不需要对FPGA进行重新烧录,通过指令快速实现不同网络配置的加速的效果,解决了现有的FPGA加速工作旨在为不同的CNN生成特定的单独加速器,目标网络改变时硬件升级复杂度高、通用性差的问题。
实施例2
基于实施例1,常规CNN定义包含从上到下连接以形成完整流的各种类型的层,层之间传递的中间数据称为特征映射,通常需要大的存储空间,并且只能在片外存储器中处理。由于片外存储器通信延迟是主要的优化因素,因此需要克服如何减少与片外的数据沟通问题,通过图层重组,定义主要层和附属层以减少片外DRAM访问并避免不必要的写/读回操作,技术手段细节如下:
分析CNN定义文件的形式后转换文件,压缩并提取其中的网络信息;
将网络进行运算重组为多个图层组,图层组包括一个主要层和多个附属层,图层组间的结果保存至DRAM,主要层和附属层之间数据流通由片上流水完成;如图2所示,主要层包括卷积层和完全连接层,附属层包括池化层、激活层和残差层;
根据网络信息和重组信息生成IR;IR包含当前图层组中包含的所有操作,图层索引是分配给每个常规图层的序列号,在初始情况下,单层组可以具有用于输入的多层索引,其中各种先前输出的FM被连接以形成输入;同时,在层组计算期间生成的多个中间FM可以用作其他层组剩余或正常输入源,转出位置特定的FM集以转储到DRAM。
转换还包括CNN训练数据进行8bit量化,考虑到一般网络精度冗余和硬件架构复杂性,选择8位作为我们的特征映射和内核权重的数据量化标准,细节如下:
重组后的网络选择8位作为特征映射和内核权重的数据量化标准,即进行8bit量化,所述量化为动态量化,所述动态量化包括为每一层特征映射和内核权重数据中心寻找误差最小定点表示,细节如以下公式所示:
其中,float表示内核权重或特征映射的原始单精度,fix(floc)表示基于某个分数长度floc将float切割为定点后的值。
本发明编译过程中对网络进行优化和重组,将多层计算合并定义以实现流水线作业,以适应硬件结构,减少与片外的数据沟通以实现计算单元的最大利用效率;比如图层组包括一个主要层和多个附属层,将卷积层设置为主层,池化层、激活层和残差层等设为副层,副层和主层之间数据流通直接由片上流水完成,不设计片外存储数据交换,节约数据传输时间。
实施例3
基于实施例1或者2,为解决如何找到最优的性能配置问题/如何解决最优的性能配置的普适性问题,映射过程中搜索解空间获得保证最大吞吐量的映射方式,通过所述的映射方式进行映射,包括如下步骤:
步骤a1:计算峰值理论值,计算如以下公式所示:
T=f*TNPE
其中,T表示吞吐量(每秒操作次数),f表示工作频率,TNPE表示芯片上可用的PE总数;
步骤a2:定义整个网络计算所需的时间L的最小值,计算如以下公式所示:
其中,αi表示第i层的PE效率,Ci表示完成第i层所需的操作量;
步骤a3:计算完成第i层所需的操作量Ci,计算如以下公式所示:
其中,表示对应层整体输出大小,表示输入层深度,表示该层权重尺寸;
步骤a4:定义αi,计算如以下公式所示:
其中,ti表示计算第i层所需的时间;
步骤a5:计算ti,计算如以下公式所示:
其中,Kx×Ky表示该层的权重尺寸,ONi×OMi表示输出块大小,ICi×OCi表示片上内核块大小.表示输入层深度,表示输出层深度,表示输入层的大小,INi,IMi表示输入层的输入块的大小;
步骤a6:设定αi相关参数的约束条件,遍历参数的各种取值求解αi最大值,计算如以下公式所示:
INi*IMi≤depththres
ICi*OCi≤NPE
ICi,OCi≤widththres
其中,depththres、widththres表示片上BRAM深度和宽度资源约束。
本发明在映射时,在搜索空间内寻找最大化吞吐量解,找到性能最优的加速器配置,输出OPU可执行的指令,根据定义的OPU指令集将最佳映射方式转化为指令序列,生成不同目标网络的指令,指令执行如下:步骤1:读取指令块;步骤2:获取指令块中的无条件指令直接执行,解码出无条件指令中包含的参数写入相应寄存器;获取指令块中的有条件指令,根据有条件指令硬写入触发条件后跳至步骤3;步骤3:判断触发条件是否满足,若满足,则执行有条件指令;若不满足,则不执行指令,继续等待;步骤4:判断指令中包含的下一个指令块的读取触发条件是否被满足,若满足,则返回步骤1读取下一个指令块,然后执行指令;否则寄存器参数和当前条件指令设置的触发条件保持不变,直至满足触发条件;步骤5:选择最佳性能配置对应的映射方式后,根据指令定义生成指令,重复步骤1-4生成对应的指令序列;生成指令的过程就是得到最优映射方式后,根据指令和指令运行逻辑将指令模板进行排列;根据CNN网络、加速需求和选择的并行输入及输出通道决定计算模式,并设置指令颗粒度,实现将不同结构的网络映射重组到具体结构,采用并行计算模式适应不同尺寸的网络的内核的大小。为CNN加速处理器根据指令完成不同目标网络的配置,加快通用CNN加速速度提供适用的OPU指令集,基于定义的OPU指令集,将不同目标网络的CNN定义文件进行转换、映射生成不同目标网络的OPU可执行指令,其中在搜索空间内寻找最大化吞吐量解,为不同目标网络找到最佳的加速器配置,解决最优的性能配置的普适性问题,进一步促进实现快速加速。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于OPU指令集的编译方法,其特征在于:包括如下步骤:
将不同目标网络的CNN定义文件进行转换,并根据定义的OPU指令集选择最优加速器配置映射,生成不同目标网络的指令完成映射;
其中,所述转换包括文件转换、网络的图层重组和生成统一中间表示IR;
所述映射包括解析IR、根据解析信息搜索解空间获得保证最大吞吐量的映射方式和根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
2.根据权利要求1所述的一种基于OPU指令集的编译方法,其特征在于:所述转换步骤细节如下:
分析CNN定义文件的形式后转换文件,压缩并提取其中的网络信息;
将网络进行运算重组为多个图层组,所述图层组包括一个主要层和多个附属层,所述图层组间的结果保存至DRAM,所述主要层和附属层之间数据流通由片上流水完成;所述主要层包括卷积层和完全连接层,所述附属层包括池化层、激活层和残差层;
根据网络信息和重组信息生成IR。
3.根据权利要求1所述的一种基于OPU指令集的编译方法,其特征在于:所述映射中搜索解空间获得最大吞吐量的映射方式包括如下步骤:
步骤a1:计算峰值理论值,计算如以下公式所示:
T=f*TNPE
其中,T表示吞吐量(每秒操作次数),f表示工作频率,TNPE表示芯片上可用的PE总数;
步骤a2:定义整个网络计算所需的时间L的最小值,计算如以下公式所示:
其中,αi表示第i层的PE效率,Ci表示完成第i层所需的操作量;
步骤a3:计算完成第i层所需的操作量Ci,计算如以下公式所示:
其中,表示对应层整体输出大小,表示输入层深度,表示该层权重尺寸;
步骤a4:定义αi,计算如以下公式所示:
其中,ti表示计算第i层所需的时间;
步骤a5:计算ti,计算如以下公式所示:
其中,Kx×Ky表示该层的权重尺寸,ONi×OMi表示输出块大小,ICi×OCi表示片上内核块大小,表示输入层深度,表示输出层深度,表示输入层的大小,INi,IMi表示输入层的输入块的大小;
步骤a6:设定αi相关参数的约束条件,遍历参数的各种取值求解αi最大值,计算如以下公式所示:
INi*IMi≤depththres
ICi*OCi≤NPE
ICi,OCi≤widththres
其中,depththres、widththres表示片上BRAM深度和宽度资源约束。
4.根据权利要求1所述的一种基于OPU指令集的编译方法,其特征在于:所述定义的OPU指令集包括有条件指令和无条件指令,
有条件指令定义细节为:有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;有条件指令的寄存器包括参数寄存器和触发条件寄存器,执行方式为满足硬件写入的触发条件后执行;有条件指令的参数配置方式为根据无条件指令进行参数配置;
无条件指令定义细节为:条件指令参数的执行方式为被读取后直接执行。
5.根据权利要求4所述的一种基于OPU指令集的编译方法,其特征在于:所述OPU指令集还包括指令颗粒度,指令颗粒度设置细节为:所述读存储指令的颗粒度为每次读入n个数,n>1;所述写存储指令的颗粒度为每次写出n个数,n>1;所述数据抓取指令的颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令的颗粒度为每次操作64的倍数个数据;所述计算指令的颗粒度为32。
6.根据权利要求2所述的一种基于OPU指令集的编译方法,其特征在于:所述转换还包括CNN训练数据进行8bit量化,细节如下:
重组后的网络选择8位作为特征映射和内核权重的数据量化标准,即进行8bit量化,所述量化为动态量化,所述动态量化包括为每一层特征映射和内核权重数据中心寻找误差最小定点表示,细节如以下公式所示:
其中,float表示内核权重或特征映射的原始单精度,fix(floc)表示基于某个分数长度floc将float切割为定点后的值。
7.一种基于权利要求1-6任一项所述方法的编译器,其特征在于:包括
转换单元,用于分析CNN定义文件后进行文件转换、网络图层重组和生成IR;
指令定义单元,用于定义指令后获取OPU指令集,定义指令包括定义有条件指令、定义无条件指令和根据CNN网络和加速需求设置指令颗粒度;
映射单元,用于获取最优加速器配置对应的映射方式后,根据定义的OPU指令集将上述映射解表达为指令序列,生成不同目标网络的指令。
8.根据权利要求7所述的一种编译器,其特征在于:
所述转换单元包括
操作单元,用于分析CNN定义文件后,转换CNN定义文件的形式和压缩CNN定义文件中的网络信息;
重组单元,用于将网络所有层重组为多个图层组,并将图层组分为主要层和附属层;
IR生成单元,用于组合网络信息和图层重组信息;
所述映射单元包括
映射方式获取单元,用于解析IR后,根据解析信息搜索解空间获得保证最大吞吐量的映射方式;
指令生成单元,用于根据OPU指令集将最大吞吐量对应的映射解表达为指令序列,生成不同目标网络的指令后完成映射。
9.根据权利要求7所述的一种编译器,其特征在于:所述指令定义单元中包括
指令分类单元,用于将指令分为有条件指令和无条件指令,并设置指令的执行方式和参数/类型,细节为:无条件指令直接执行并为有条件指令提供配置参数,有条件指令满足触发条件后执行;有条件指令包括读存储指令、写存储指令、数据抓取指令、数据后处理指令和计算指令;
颗粒度设置单元,用于根据CNN网络和加速需求设置指令颗粒度,具体设置为:所述读存储指令的颗粒度为每次读入n个数,n>1;所述写存储指令的颗粒度为每次写出n个数,n>1;所述数据抓取指令的颗粒度为64的倍数,即同时操作64个输入数据;所述数据后处理指令的颗粒度为每次操作64的倍数个数据;所述计算指令的颗粒度为32。
10.根据权利要求9所述的一种编译器,其特征在于:所述无条件指令的参数包括片上存储特征图模块长,宽,通道数、当前层输入长,宽、当前层输入通道数,输出通道数、读存储操作起始地址、读操作模式选择、写存储操作起始地址、写操作模式选择、数据抓取模式及约束、设置计算模式操作、设置池化操作相关参数操作、设置激活操作相关参数操作和设置数据移位,剪切取整操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910196087.7A CN110069284B (zh) | 2019-03-14 | 2019-03-14 | 一种基于opu指令集的编译方法及编译器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910196087.7A CN110069284B (zh) | 2019-03-14 | 2019-03-14 | 一种基于opu指令集的编译方法及编译器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110069284A true CN110069284A (zh) | 2019-07-30 |
CN110069284B CN110069284B (zh) | 2023-05-05 |
Family
ID=67366170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910196087.7A Active CN110069284B (zh) | 2019-03-14 | 2019-03-14 | 一种基于opu指令集的编译方法及编译器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110069284B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516790A (zh) * | 2019-08-16 | 2019-11-29 | 浪潮电子信息产业股份有限公司 | 一种卷积网络加速方法、装置及系统 |
CN111353979A (zh) * | 2020-02-27 | 2020-06-30 | 成都恒创新星科技有限公司 | 一种移动式计算机视觉光斑探测定位方法 |
CN114546624A (zh) * | 2022-03-01 | 2022-05-27 | 清华大学 | 任务处理方法及装置、电子设备和存储介质 |
CN117076098A (zh) * | 2023-05-11 | 2023-11-17 | 北京航空航天大学杭州创新研究院 | 一种动态张量编译优化方法、装置、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054869A1 (en) * | 2001-07-19 | 2004-03-18 | Masahiro Igarashi | Calculation apparatus and image processing apparatus |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
US20180046894A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Method for optimizing an artificial neural network (ann) |
CN108734272A (zh) * | 2017-04-17 | 2018-11-02 | 英特尔公司 | 卷积神经网络优化机构 |
CN108875956A (zh) * | 2017-05-11 | 2018-11-23 | 广州异构智能科技有限公司 | 原生张量处理器 |
US20190012170A1 (en) * | 2017-07-05 | 2019-01-10 | Deep Vision, Inc. | Deep vision processor |
-
2019
- 2019-03-14 CN CN201910196087.7A patent/CN110069284B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054869A1 (en) * | 2001-07-19 | 2004-03-18 | Masahiro Igarashi | Calculation apparatus and image processing apparatus |
CN101034361A (zh) * | 2007-01-18 | 2007-09-12 | 浙江大学 | 一种基于指令代价的编译器优化代码生成方法 |
US20180046894A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Method for optimizing an artificial neural network (ann) |
CN108734272A (zh) * | 2017-04-17 | 2018-11-02 | 英特尔公司 | 卷积神经网络优化机构 |
CN108875956A (zh) * | 2017-05-11 | 2018-11-23 | 广州异构智能科技有限公司 | 原生张量处理器 |
US20190012170A1 (en) * | 2017-07-05 | 2019-01-10 | Deep Vision, Inc. | Deep vision processor |
Non-Patent Citations (3)
Title |
---|
PUNARJAY CHAKRAVARTY ET AL: "CNN-based single image obstacle avoidance on a quadrotor", 《2017 IEEE INTERNATIONAL CONFERENCE ON ROBOTICS AND AUTOMATION (ICRA)》 * |
熊毅等: "基于OpenCL框架的并行编译系统设计", 《信息技术》 * |
蔡瑞初等: "面向云端FPGA的卷积神经网络加速器的设计及其调度", 《计算机应用研究》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516790A (zh) * | 2019-08-16 | 2019-11-29 | 浪潮电子信息产业股份有限公司 | 一种卷积网络加速方法、装置及系统 |
CN110516790B (zh) * | 2019-08-16 | 2023-08-22 | 浪潮电子信息产业股份有限公司 | 一种卷积网络加速方法、装置及系统 |
CN111353979A (zh) * | 2020-02-27 | 2020-06-30 | 成都恒创新星科技有限公司 | 一种移动式计算机视觉光斑探测定位方法 |
CN111353979B (zh) * | 2020-02-27 | 2023-10-17 | 成都恒创新星科技有限公司 | 一种移动式计算机视觉光斑探测定位方法 |
CN114546624A (zh) * | 2022-03-01 | 2022-05-27 | 清华大学 | 任务处理方法及装置、电子设备和存储介质 |
CN114546624B (zh) * | 2022-03-01 | 2024-04-09 | 清华大学 | 任务处理方法及装置、电子设备和存储介质 |
CN117076098A (zh) * | 2023-05-11 | 2023-11-17 | 北京航空航天大学杭州创新研究院 | 一种动态张量编译优化方法、装置、电子设备及介质 |
CN117076098B (zh) * | 2023-05-11 | 2024-07-30 | 北京航空航天大学杭州创新研究院 | 一种动态张量编译优化方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110069284B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110058883B (zh) | 一种基于opu的cnn加速方法及系统 | |
Hao et al. | FPGA/DNN co-design: An efficient design methodology for IoT intelligence on the edge | |
CN110069284B (zh) | 一种基于opu指令集的编译方法及编译器 | |
US20180204110A1 (en) | Compressed neural network system using sparse parameters and design method thereof | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN107612886B (zh) | 一种Spark平台Shuffle过程压缩算法决策方法 | |
CN111427681A (zh) | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 | |
JP7461344B2 (ja) | 畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体 | |
US20230004775A1 (en) | Method for implementing a hardware accelerator of a neural network | |
US20240126611A1 (en) | Workload-Aware Hardware Architecture Recommendations | |
CN116521380A (zh) | 一种资源自适应协同的模型训练加速方法、装置及设备 | |
CN114915630A (zh) | 基于物联网设备的任务分配方法、网络训练方法及装置 | |
CN114723033A (zh) | 数据处理方法、装置、ai芯片、电子设备及存储介质 | |
Reggiani et al. | Pareto optimal design space exploration for accelerated CNN on FPGA | |
Niu et al. | Reuse kernels or activations? A flexible dataflow for low-latency spectral CNN acceleration | |
CN112115667B (zh) | Fpga布局方法、装置、电子设备和计算机可读介质 | |
CN112488287A (zh) | 卷积神经网络压缩方法、系统、设备及介质 | |
CN114897133A (zh) | 一种通用可配置的Transformer硬件加速器及其实现方法 | |
CN112115668A (zh) | Fpga布局方法、装置、电子设备和计算机可读介质 | |
Liu et al. | Ace-Sniper: Cloud-Edge Collaborative Scheduling Framework With DNN Inference Latency Modeling on Heterogeneous Devices | |
CN115640851A (zh) | 一种适用于测试仪器的神经网络高效推理方法 | |
Voss et al. | Convolutional neural networks on dataflow engines | |
Qian et al. | Elasticai-creator: Optimizing neural networks for time-series-analysis for on-device machine learning in iot systems | |
Shahshahani et al. | An automated tool for implementing deep neural networks on fpga | |
Biggs et al. | ATHEENA: A Toolflow for Hardware Early-Exit Network Automation |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200609 Address after: Room 305, building 9, meizhuang new village, 25 Yangzi Jiangbei Road, Weiyang District, Yangzhou City, Jiangsu Province 225000 Applicant after: Liang Lei Address before: 610094 China (Sichuan) Free Trade Pilot Area, Chengdu City, Sichuan Province, 1402, Block 199, Tianfu Fourth Street, Chengdu High-tech Zone Applicant before: Chengdu Star Innovation Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |