CN106775905A - 基于fpga的高级综合实现拟牛顿算法加速的方法 - Google Patents
基于fpga的高级综合实现拟牛顿算法加速的方法 Download PDFInfo
- Publication number
- CN106775905A CN106775905A CN201611035499.5A CN201611035499A CN106775905A CN 106775905 A CN106775905 A CN 106775905A CN 201611035499 A CN201611035499 A CN 201611035499A CN 106775905 A CN106775905 A CN 106775905A
- Authority
- CN
- China
- Prior art keywords
- quasi
- algorithm
- fpga
- newton algorithm
- newton
- 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
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
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开一种基于现场可编程门阵列FPGA的高层次综合HLS工具优化加速拟牛顿算法的方法,步骤包括:(1)、分析拟牛顿算法的功能,划分出拟牛顿算法的主要计算模块;(2)、利用高级语言C,C++实现上述步骤(1)中的各个模块,并且验证算法功能的正确性;(3)、将上述步骤(2)功能验证正确的拟牛顿算法作为输入文件,利用高层次综合工具,将高级语言转化为RTL级语言,验证生成的RTL代码;(4)、将生成的RTL代码制作成比特流文件,下载配置到FPGA的可配置逻辑部分。本发明从加速拟牛顿算法出发,利用高层次综合实现拟牛顿算法,通过FPGA实现对拟牛顿算法加速,降低了FPGA的开发难度。
Description
技术领域
本发明涉及拟牛顿算法(Quasi-Newton,QN)加速技术,具体涉及一种基于现场可编程门阵列(Field Programmable Gate Arrays,FPGA)的高层次综合(High LevelSynthesis,HLS)工具优化加速拟牛顿算法的方法。
背景技术
拟牛顿算法是一种求解非线性优化最有效的方法,被广泛应用于各种领域,如:随机优化,集成电路布局和电力系统的加载频率控制。这些应用的关键性因素是在有限的时间内获得最优的解决方案。然而拟牛顿算法由于内部含有大量的迭代算法导致耗时严重。所以,对拟牛顿算法的加速是一个重要的研究方向。
随着FPGA的快速发展,现在的FPGA平台拥有更多的资源,操作频率能够达到上百MHz。FPGA器件具有可重配置,高并行度,设计灵活(相对与专用集成电路)的特性(见文献[1]),更适合应用于嵌入式场合,FPGA被认为是加速计算量大的应用的最佳选择,例如人工神经网络和图谱计算(见文献[2]及[3])。与其他普适性的计算架构相比,FPGA允许定制化的计算架构和针对特定应用算法的内存子系统。在FPGA内部进行复杂的时序设计一般需要状态机进行开发,这需要花费较多的时间进行分析与设计,而且软件工程师在利用高层次语言C,C++进行开发与硬件工程师利用RTL设计语言设计电路的背景知识存在一定的差距。这导致了FPGA的开发比传统的单片机开发有很大的不同,开发比较困难(见文献[4])。
高层次综合是一种将高层次语言有效地转化为满足设计约束的寄存器传输级(Register Transfer Level,RTL)描述的工具。HLS提高了硬件设计的抽象层次,具有以下突出优点(见文献[5]):1)硬件工程师可以减少设计时间,缩短产品上市周期;2)软件工程师能完成硬件系统设计;3)沟通了软件设计和硬件设计两个领域,展现了一种软硬件联合设计的方法,HLS被认为是下一代半导体工业中的核心角色,在企业界和学术界受到越来越多的关注。
发明内容
本发明的目的在于克服上述现有技术的不足,从加速拟牛顿算法出发,利用高层次综合实现拟牛顿算法,通过FPGA实现对拟牛顿算法加速,降低了FPGA的开发难度。
本发明的技术方案:基于FPGA的高级综合实现拟牛顿算法加速的方法,包括以下步骤:
(1)、分析拟牛顿算法的功能,划分出拟牛顿算法的主要计算模块;
(2)、利用高级语言C,C++实现上述步骤(1)中的各个模块,并且验证算法功能的正确性;
(3)、将上述步骤(2)功能验证正确的拟牛顿算法作为输入文件,利用高层次综合工具,将高级语言转化为RTL级语言,验证生成的RTL代码;
(4)、将生成的RTL代码制作成比特流文件,下载配置到FPGA的可配置逻辑部分。
所述步骤(1)分析拟牛顿算法的功能,将算法划分成三个主要计算模块,分别是梯度计算模块Compute_grad,矩阵更新模块QN_formula和线性搜索模块Line_search;矩阵更新模块以BFGS方式更新矩阵并决定搜索方向,线性搜索模块采用黄金分割法在搜索方向上确定搜索步长,梯度计算模块完成目标函数梯度的计算;另外目标函数Object_function是拟牛顿算法需要求解的目标函数;片外存储单元Off-chip DRAM是用来存储计算工程中需要的计算信息;计算控制单元Computation Scheduling controller是来安排上述几个模块的操作顺序及内存与相对应模块的数据传递。
所述步骤(2)设计的算法考虑到拟牛顿算法的通用性,将不同的算法结构参数化。
所述步骤(2)利用visual studio 2013运行实现的算法,以验证算法功能的正确性。
所述步骤(3)利用高层次综合工具的优化方法来对算法进行优化,优化结果满足设计约束,不仅RTL代码正确,而且运行速度达到预期,其中优化包括代码转换和指令优化,并利用高级综合工具自带的软硬件联合仿真验证生成的RTL代码的正确性。
所述步骤(4)FPGA型号为Net-FPGA SUME(xc7vx690t),对算法的资源利用和运行时间分别作性能测试。
本发明相对于现有技术有以下有益效果:本发明通过高层次综合工具将C,C++设计的拟牛顿算法转化为RTL代码,并在Net-FPGA SUME(xc7vx690t)开发板上综合实现。本发明可达到的有益效果为:
1)设计频率可以达到100MHz;2)三个计算模块Compute_grad,QN_formula和Line_search不受目标函数影响,通用性好;3)相对于软件实现,该方法的运行速度提高了36倍;4)降低了FPGA的开发难度。
附图说明
图1拟牛顿算法的实现模块组成框图。
图2本发明高层次综合HLS流程图。
图3不同优化方案优化结果运行时间的对比图。
具体实施方式
下面通过具体实施例和附图对本发明作进一步的说明。本发明的实施例是为了更好地使本领域的技术人员更好地理解本发明,并不对本发明作任何的限制。
本发明基于FPGA的高级综合实现拟牛顿算法加速的方法,包括以下步骤:
(1)、分析拟牛顿算法的功能,划分出拟牛顿算法的主要计算模块,拟牛顿算法的实现模块组成框图如图1所示。具体如下:将算法划分成三个主要计算模块,分别是梯度计算模块Compute_grad,矩阵更新模块QN_formula和线性搜索模块Line_search;矩阵更新模块以BFGS方式更新矩阵并决定搜索方向,线性搜索模块采用黄金分割法在搜索方向上确定搜索步长,梯度计算模块完成目标函数梯度的计算;另外目标函数Object_function是拟牛顿算法需要求解的目标函数;片外存储单元Off-chip DRAM是用来存储计算工程中需要的计算信息;计算控制单元Computation Scheduling controller是来安排上述几个模块的操作顺序及内存与相对应模块的数据传递。
(2)、利用高级语言C,C++实现上述步骤(1)中的各个模块,并且利用visualstudio 2013运行实现的算法,以验证算法功能的正确性。
验证算法功能的正确性,设计的算法考虑到拟牛顿算法的通用性,将不同的算法结构参数化。
(3)、将上述步骤(2)功能验证正确的拟牛顿算法作为输入文件,利用高层次综合工具,将高级语言转化为RTL级语言,验证生成的RTL代码;在这个过程中可以利用高层次综合工具的一些优化方法来对算法进行优化,优化结果满足设计约束,不仅RTL代码正确,而且运行速度达到预期,其中,优化包括代码转换和指令优化,并利用高级综合工具自带的软硬件联合仿真验证生成的RTL代码的正确性。
(4)、将生成的RTL代码制作成比特流文件,下载配置到FPGA的可配置逻辑部分。FPGA型号为Net-FPGA SUME(xc7vx690t),分别对算法的资源利用和运行时间作性能测试。本发明的高层次综合流程图如图2所示。
具体实施例:
本发明中将目标函数模块设定为人工神经网络,根据上述步骤(1)至步骤(4),下文将对各个步骤进行详细说明。
拟牛顿算法的实现模块组成框图如图1所示,由梯度计算模块(Compute_grad),矩阵更新模块(QN_formula),线性搜索模块(Line_search)和人工神经网络(Object_function)组成。首先梯度计算模块会根据人工神经网络的每组训练集输出梯度值,基于初始向量和梯度值计算搜寻方向,然后黄金分割法利用搜索方向寻找最佳搜索步长,计算目标函数,也就是人工神经网络的极值。矩阵更新模块中计算最密的操作是矩阵向量乘,利用最佳步长和目标函数极值对矩阵进行更新。
由于人工神经网络的架构是三层神经网络架构,每层有不同的输入和输出个数,那么针对不同的输入输出参数,本发明在设计之初就将这三层神经网络的架构进行了参数化设计,可以每次训练不同的架构时,只需要将参数对应的数字进行修改,不需要重新综合布局布线,方便了训练不同架构的神经网络。
如图2高层次综合流程图所示,HLS高层次综合工具对算法进行综合的过程中,针对拟牛顿算法的代码,本发明做的优化有四种方案:A)循环展开和数组拆分;B)循环融合;C)函数生成;D)循环流水线化。每个优化的方案本发明都同未优化的方案做了对比,运行时间对比结果如图3所示,可以看到优化方法对于方案的优化还是非常有效的。
将得到的RTL代码生成比特流文件,下载到Net-FPGA SUME(xc7vx690tffg1761-3)开发板上进行板级调试。该硬件设计最高时钟频率是100MHz,相对于软件运行速度,提高了36倍,表1示出拟牛顿算法的资源利用情况。
表1拟牛顿算法的资源利用
应当理解的是,这里所讨论的实施方案及实例只是为了说明,对本领域技术人员来说,可以加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
相关文献:
[1]E.Nurvitadhi,J.Sim,D.Sheffield,A.Mishra,S.Krishnan,and D.Marr,“Accelerating recurrent neural networks in analytics servers:Comparison offpga,cpu,gpu,and asic,”in 2016 26th International Conference on FieldProgrammable Logic and Applications(FPL),Aug 2016,pp.1–4.
[2]E.Nurvitadhi,J.Sim,D.Sheffield,A.Mishra,S.Krishnan,and D.Marr,“Accelerating recurrent neural networks in analytics servers:Comparison offpga,cpu,gpu,and asic,”in 2016 26th International Conference on FieldProgrammable Logic and Applications(FPL),Aug 2016,pp.1–4.
[3]F.Ortega-Zamorano,J.M.Jerez,and L.Franco,“FPGA implementation ofthe C-mantec neural network constructive algorithm,”IEEE Transactions onIndustrial Informatics,vol.10,no.2,pp.1154–1161,May 2014.
[4]党宏社,王黎,王晓倩.基于Vivado HLS的FPGA开发与应用研究[J].陕西科技大学学报,2015,33(1):155-159.
[5]Coussy P,Gajski D D,Meredith M,et al.An introduction to high-levelsynthesis[J].IEEE Design&Test of Computers,2009,26(4):8-17.
Claims (6)
1.基于FPGA的高级综合实现拟牛顿算法加速的方法,其特征在于,具体包括如下步骤:
(1)、分析拟牛顿算法的功能,划分出拟牛顿算法的主要计算模块;
(2)、利用高级语言C,C++实现上述步骤(1)中的各个模块,并且验证算法功能的正确性;
(3)、将上述步骤(2)功能验证正确的拟牛顿算法作为输入文件,利用高层次综合工具,将高级语言转化为RTL级语言,验证生成的RTL代码;
(4)、将生成的RTL代码制作成比特流文件,下载配置到FPGA的可配置逻辑部分。
2.根据权利要求1所述的方法,其特征在于,所述步骤(1)分析拟牛顿算法的功能,将算法划分成三个主要计算模块,分别是梯度计算模块Compute_grad,矩阵更新模块QN_formula和线性搜索模块Line_search;矩阵更新模块以BFGS方式更新矩阵并决定搜索方向,线性搜索模块采用黄金分割法在搜索方向上确定搜索步长,梯度计算模块完成目标函数梯度的计算;另外目标函数Object_function是拟牛顿算法需要求解的目标函数;片外存储单元Off-chip DRAM是用来存储计算工程中需要的计算信息;计算控制单元ComputationScheduling controller是来安排上述几个模块的操作顺序及内存与相对应模块的数据传递。
3.根据权利要求1所述的方法,其特征在于,所述步骤(2)设计的算法考虑到拟牛顿算法的通用性,将不同的算法结构参数化。
4.根据权利要求1所述的方法,其特征在于,所述步骤(2)利用visual studio2013运行实现的算法,以验证算法功能的正确性。
5.根据权利要求1所述的方法,其特征在于,所述步骤(3)利用高层次综合工具的优化方法来对算法进行优化,优化结果满足设计约束,不仅RTL代码正确,而且运行速度达到预期,其中优化包括代码转换和指令优化,并利用高级综合工具自带的软硬件联合仿真验证生成的RTL代码的正确性。
6.根据权利要求1所述的方法,其特征在于,所述步骤(4)FPGA型号为Net-FPGA SUME(xc7vx690t),对算法的资源利用和运行时间分别作性能测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611035499.5A CN106775905A (zh) | 2016-11-19 | 2016-11-19 | 基于fpga的高级综合实现拟牛顿算法加速的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611035499.5A CN106775905A (zh) | 2016-11-19 | 2016-11-19 | 基于fpga的高级综合实现拟牛顿算法加速的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106775905A true CN106775905A (zh) | 2017-05-31 |
Family
ID=58970930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611035499.5A Pending CN106775905A (zh) | 2016-11-19 | 2016-11-19 | 基于fpga的高级综合实现拟牛顿算法加速的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775905A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582511A (zh) * | 2017-09-29 | 2019-04-05 | 龙芯中科技术有限公司 | 控制器的生成方法、装置及存储介质 |
CN109816107A (zh) * | 2017-11-20 | 2019-05-28 | 天津大学 | 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法 |
CN109901884A (zh) * | 2019-01-17 | 2019-06-18 | 京微齐力(北京)科技有限公司 | 一种fpga的高层次综合和码流生成的方法和装置 |
CN110738311A (zh) * | 2019-10-14 | 2020-01-31 | 哈尔滨工业大学 | 基于高层次综合的lstm网络加速方法 |
CN111914307A (zh) * | 2020-08-11 | 2020-11-10 | 山东大学 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
CN112840316A (zh) * | 2018-08-09 | 2021-05-25 | 伊耐斯克泰克-计算机科学与技术系统工程研究所 | 用于优化现场可编程门阵列的代码的方法和装置 |
CN113780553A (zh) * | 2021-09-09 | 2021-12-10 | 中山大学 | 一种基于高层次综合工具的深度学习模型优化方法及系统 |
WO2024051035A1 (zh) * | 2022-09-07 | 2024-03-14 | 中山大学 | 一种高层次综合的锁相放大处理方法、系统、装置及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN104317577A (zh) * | 2014-10-08 | 2015-01-28 | 陕西高新实业有限公司 | 在FPGA开发中使用ViadoHLS实现openCV的设计方法 |
-
2016
- 2016-11-19 CN CN201611035499.5A patent/CN106775905A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102163248A (zh) * | 2011-04-02 | 2011-08-24 | 北京大学深圳研究生院 | 一种集成电路的高级综合方法 |
CN104317577A (zh) * | 2014-10-08 | 2015-01-28 | 陕西高新实业有限公司 | 在FPGA开发中使用ViadoHLS实现openCV的设计方法 |
Non-Patent Citations (2)
Title |
---|
LIU QIANG等: "FPGA-based Acceleration of Davidon-Fletcher-Powell Quasi-Newton Optimization Method", 《TRANSACTIONS OF TIANJIN UNIVERSITY》 * |
RUOYU SANG: "FPGA-based Acceleration of Neural Network Training", 《IEEE MTT-S INTERNATIONAL CONFERENCE ON NUMERICAL ELECTROMAGNETIC&MULTIPHYSICS MODELING &OPTIMIZATION》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582511A (zh) * | 2017-09-29 | 2019-04-05 | 龙芯中科技术有限公司 | 控制器的生成方法、装置及存储介质 |
CN109816107A (zh) * | 2017-11-20 | 2019-05-28 | 天津大学 | 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法 |
CN112840316A (zh) * | 2018-08-09 | 2021-05-25 | 伊耐斯克泰克-计算机科学与技术系统工程研究所 | 用于优化现场可编程门阵列的代码的方法和装置 |
CN109901884A (zh) * | 2019-01-17 | 2019-06-18 | 京微齐力(北京)科技有限公司 | 一种fpga的高层次综合和码流生成的方法和装置 |
CN109901884B (zh) * | 2019-01-17 | 2022-05-17 | 京微齐力(北京)科技有限公司 | 一种fpga的高层次综合和码流生成的方法和装置 |
CN110738311A (zh) * | 2019-10-14 | 2020-01-31 | 哈尔滨工业大学 | 基于高层次综合的lstm网络加速方法 |
CN111914307A (zh) * | 2020-08-11 | 2020-11-10 | 山东大学 | 基于高层次综合的国密算法sm4加速处理方法及系统 |
CN113780553A (zh) * | 2021-09-09 | 2021-12-10 | 中山大学 | 一种基于高层次综合工具的深度学习模型优化方法及系统 |
CN113780553B (zh) * | 2021-09-09 | 2023-11-07 | 中山大学 | 一种基于高层次综合工具的深度学习模型优化方法及系统 |
WO2024051035A1 (zh) * | 2022-09-07 | 2024-03-14 | 中山大学 | 一种高层次综合的锁相放大处理方法、系统、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775905A (zh) | 基于fpga的高级综合实现拟牛顿算法加速的方法 | |
CN105589736B (zh) | 基于网表分割和多线程并行的硬件描述语言仿真加速方法 | |
EP1964266B1 (en) | A method for multi-cycle clock gating | |
Azari et al. | An energy-efficient reconfigurable LSTM accelerator for natural language processing | |
CN114995823A (zh) | 一种面向cnn专用加速器的深度学习编译器优化方法 | |
BR112019027531A2 (pt) | processadores de alto rendimento | |
Fu et al. | Gpt4aigchip: Towards next-generation ai accelerator design automation via large language models | |
CN104615808B (zh) | 一种待测试硬件运算部件的测试方法及参考模型装置 | |
Muttillo et al. | Hepsycode-RT: A real-time extension for an ESL HW/SW co-design methodology | |
Alqudah et al. | Parallel implementation of genetic algorithm on FPGA using Vivado high level synthesis | |
Wang et al. | High-performance mixed-low-precision cnn inference accelerator on fpga | |
CN106844900B (zh) | 电磁暂态仿真系统的搭设方法 | |
Shahshahani et al. | An automated tool for implementing deep neural networks on fpga | |
He et al. | An asynchronous mesh NoC based booth multiplication | |
El-Shafei et al. | Implementation of harmony search on embedded platform | |
Afianah et al. | High-level synthesize of backpropagation artificial neural network algorithm on the fpga | |
Pisharody et al. | FPGA implementation and acceleration of convolutional neural networks | |
CN111143208A (zh) | 基于处理器技术辅助fpga实现ai算法的验证方法 | |
Jafri et al. | SPEED: Open-source framework to accelerate speech recognition on embedded GPUs | |
Klinefelter | How Software Can" Chip In" to the IC Design Process: A Multidisciplinary Approach May Attract New Talent and Accelerate Innovation | |
Wu et al. | Rapid prototyping for digital signal processing systems using parameterized synchronous dataflow graphs | |
Hou et al. | System level power consumption modeling and optimization for coarse-grained reconfigurable architectures | |
Rafiev et al. | ArchOn: Architecture-open resource-driven cross-layer modelling framework | |
US20240169135A1 (en) | Reinforcement learning (rl) based chip design optimization using trained graph convolutional networks (gcn) for ultra-fast cost function calculation | |
US20230072923A1 (en) | Supervised machine learning based memory and runtime prediction using design and auxiliary constructs |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170531 |