CN102135951B - 基于运行时重构的ls-svm算法fpga实现方法 - Google Patents
基于运行时重构的ls-svm算法fpga实现方法 Download PDFInfo
- Publication number
- CN102135951B CN102135951B CN 201110053247 CN201110053247A CN102135951B CN 102135951 B CN102135951 B CN 102135951B CN 201110053247 CN201110053247 CN 201110053247 CN 201110053247 A CN201110053247 A CN 201110053247A CN 102135951 B CN102135951 B CN 102135951B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- random access
- access memory
- memory ram
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 56
- 238000012706 support-vector machine Methods 0.000 title abstract description 5
- 230000006870 function Effects 0.000 claims abstract description 91
- 230000008569 process Effects 0.000 claims abstract description 73
- 238000012549 training Methods 0.000 claims abstract description 42
- 230000015654 memory Effects 0.000 claims abstract description 11
- 230000003068 static effect Effects 0.000 claims abstract description 8
- 230000003993 interaction Effects 0.000 claims abstract description 6
- 239000011159 matrix material Substances 0.000 claims description 139
- 238000004364 calculation method Methods 0.000 claims description 70
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 claims description 16
- 230000015572 biosynthetic process Effects 0.000 claims description 10
- 230000008676 import Effects 0.000 claims description 8
- 241001269238 Data Species 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 3
- WCJYTPVNMWIZCG-UHFFFAOYSA-N xylylcarb Chemical compound CNC(=O)OC1=CC=C(C)C(C)=C1 WCJYTPVNMWIZCG-UHFFFAOYSA-N 0.000 claims 8
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000001514 detection method Methods 0.000 abstract description 2
- 230000006978 adaptation Effects 0.000 abstract 1
- 238000000354 decomposition reaction Methods 0.000 description 20
- 230000008901 benefit Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 238000000714 time series forecasting Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 8
- 239000013598 vector Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000010606 normalization Methods 0.000 description 6
- 241000208340 Araliaceae Species 0.000 description 4
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 4
- 235000003140 Panax quinquefolius Nutrition 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 235000008434 ginseng Nutrition 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 3
- 230000001932 seasonal effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012731 temporal analysis Methods 0.000 description 2
- 238000000700 time series analysis Methods 0.000 description 2
- UHLRPXXFPYMCAE-UHFFFAOYSA-N 4-isopropylcalix[4]arene Chemical compound C1C(C=2O)=CC(C(C)C)=CC=2CC(C=2O)=CC(C(C)C)=CC=2CC(C=2O)=CC(C(C)C)=CC=2CC2=CC(C(C)C)=CC1=C2O UHLRPXXFPYMCAE-UHFFFAOYSA-N 0.000 description 1
- 206010064127 Solar lentigo Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012843 least square support vector machine Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004793 poor memory Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000001556 precipitation Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
基于运行时重构的LS-SVM算法FPGA实现方法,涉及到时间预测和FPGA的应用技术领域。该方法在FPGA内设置静态逻辑区和重构区,在静态逻辑区采用PowerPC440作为系统主控器,采用例化为PLB设备的ICAP接口作为配置接口,采用内部的block RAM作为PowerPC440的程序和数据存储区;PowerPC440通过MPMC接口与DDR2RAM连接,用于控制DDR2RAM的数据的读写;重构区通过MPMC的NPI接口与DDR2RAM的连接,PowerPC440与重构区的命令和数据交互通过DDR2RAM进行;将LS-SVM算法训练过程中的核函数矩阵形成过程采用核函数矩阵计算IP模块实现,将最小二乘问题的求解过程采用最小二乘求解IP模块实现,所述两个模块通过重构技术分时载入FPGA进行运算,实现LS-SVM算法。本发明在FPGA的平台上实现了LS-SVM算法的硬件加速,能够实现任意规模样本的LS-SVM算法训练过程。
Description
技术领域
本发明涉及到时间预测技术领域,还涉及到FPGA的应用技术领域。
背景技术
在自然界、工程技术、科学以及经济社会等领域广泛存在着一类重要的数据-时间序列数据。时间序列指的是按时间次序排列且相互关联的随机变量序列。例如气象上的降水量序列、天文上的太阳黑子序列、医学上脑电波序列、般票日收盘价序列、电信行业上的节点流量序列、飞机发动机的状态检测数据序列等。随着计算机技术的不断发展及存储设备存储容量的日益增大,时间序列数据库也越来越大,对这些海量的时间序列进行分析处理并挖掘其背后蕴涵的有价值信息,能够揭示事物发展变化的内部规律,发现不同的事物之间的相互作用关系,从而为人们正确认识事物和科学决策提供理论依据。因此有关时间序列分析的研究一直受到了许多研究人员的广泛重视,成为一个具有重要理论和实用价值的热点研究课题。
时间序列预测是时间序列分析中的主要研究任务,其目的是根据系统的时间序列较精确地找出相应系统的内在特性和发展规律,尽可能多地从中提取出所需要的准确信息。其基本思想是根据系统有限长度的运行记录(观察数据)建立能够比较精确地反映时间序列中所包含的动态依存关系的数学模型,并以此对系统的未来行为进行预报。时间序列预测在工业自动化、水文、地质、气象、经济以及军事科学等领域都有着广泛的应用价值。
预测精度和预测效率是时间序列预测关注的两个最主要问题。大部分的学者都对预测的精度给予了充分的重视,并且采用各种方法(传统统计学,人工神经网络,支持向量机等)努力提高预测的精度;然而在实际应用中,预测效率的重要性并不亚于预测精度,时间序列的动态或实时预测是很多领域的关键技术。例如基于船舶姿态实时预报的舰载火控稳定跟踪系统,航空装备故障实时预测,飞行器飞行动态控制,军用柴油发动机剩余寿命实时预测,机动目标未来运动趋势的实时预测,电力系统负载的动态预测,探井地层压力的实时预测,板材成型过程智能控制的帽型件弯曲参数的实时预测,城市交通流量的动态预测,移动通信话务量的动态预测等,其他工程应用中,类似的问题还有很多。这些应用都对时间序列的预测效率提出了很高的要求。虽然时间序列预测已经经过了长时间的发展,并且取得了一定的成就,但目前能够在实际工程中应用的时间序列快速预测方法多数使用的是传统的统计学方法和人工神经网络的方法,在很多应用中还难以满足对预测效率的要求,所以研究时间序列的快速预测方法是一个非常有理论难度和实用价值的课题。
在时间序列的预测中,支持向量机方法采用结构风险最小化原则,成功地解决了高维和局部极值问题,得到全局最优解,且结构简单,适用于解决非线性问题,是时间序列预测的有效方法。但由于支持向量机的训练过程涉及二次规划问题,导致其计算复杂度较高,影响了其在大规模时间序列上的应用。基于标准的SVM,Suykens等提出最小二乘支持向量机(Least square support vector machines,LS-SVM),将二次规划问题转变成线性方程组的求解,降低了计算复杂度,极大地提高了SVM的训练效率。因此目前LS-SVM已经在故障检测、电力载荷、交通管理、金融等领域得到成功应用。
另外,目前对时间序列预测的各种算法,包括LS-SVM算法大部分运行于通用的计算平台,但是在一些工程问题中,这并不是最好的实现方式,甚至在一些应用环境中根本无法实现。
发明内容
本发明提供了一种LS-SVM算法在FPGA中的实现方法,使该算法能够满足一些实际应用中动态预测和实时预测对预测效率的要求。
本发明所述的基于运行时重构的LS-SVM算法FPGA实现方法:
在FPGA内设置静态逻辑区和重构区,
在静态逻辑区,采用PowerPC440作为系统的主控器,采用例化为PLB(Processor LocalBus处理器本地总线)设备的ICAP(Hardware Internal Configuration Access Port,硬件内部配置接口)接口作为配置接口,采用FPGA内部的block RAM作为PowerPC440的程序和数据存储区;PowerPC440通过多端口存储控制器MPMC(Multi Port Memory Controller)接口与DDR2RAM连接,用于控制DDR2RAM的数据的读写;
重构区通过多端口存储控制器MPMC的NPI(Native Port Interface,本地端口)接口实现与DDR2RAM的连接,PowerPC440与重构区的命令和数据交互通过DDR2RAM进行;
将LS-SVM算法训练过程中的核函数矩阵形成过程采用固化在FPGA中的核函数矩阵计算IP模块实现,将LS-SVM算法训练过程中的最小二乘问题的求解过程采用最小二乘求解IP模块实现,所述两个模块通过重构技术分时载入FPGA进行运算,实现LS-SVM算法,首先进行初始镜像操作,然后循环执行内部配置操作和二次重构后内部配置操作实现LS-SVM在线训练,其中:
初始镜像操作,是系统运行的初始化步骤,用于实现样本数据的读取,并转存储至外部DDR存储器,以及根据样本数据进行核函数矩阵的计算,形成核函数矩阵,并将该核函数矩阵存储至外部DDR存储器中,准备开始重构;
内部配置操作,用于对FPGA进行重新配置,最小二乘求解IP模块载入动态重构区,并根据外部DDR存储器中的核函数矩阵实现最小二乘问题求解,然后根据求解结果开始第二次重构;
二次重构后内部配置操作,用于在第二次重构后,用最小二乘求解IP模块替换核函数矩阵形成IP模块,然后根据外部DDR存储器中的数据(进行核函数矩阵的计算,并形成核函数矩阵,最后准备开始重构。
本发明的方法作为一种颠覆传统计算模式的计算技术,基于FPGA的可重构计算的出现为进一步提高时间序列预测的效率提供了可能。
传统的科学计算方法的实现方式有两种,一种是采用冯诺依曼结构通用微处理器进行软件编程的方式,一种是采用ASIC的方式。软件的方式通用性好,但运算速度不高;ASIC方式处理速度快,但只能针对特定的算法,通用性不好。可重构计算(ReconfigurableComputing)是以上两种科学计算方式的一种折中方式,这种科学计算方式是通过对结构可变的硬件进行软件配置,以适应不同算法的处理,故其既具有了软件的灵活性,又具备了ASIC硬件的高速性,是解决资源受限类算法,如:多媒体处理算法、数字信号处理、加解密算法等一系列复杂计算方法高速、实时解决方案的一种理想选择。
本发明的目的是充分利用FPGA硬件定制计算和并行计算特点,并充分发挥LS-SVM算法复杂度低的优点,研制基于FPGA可重构计算的LS-SVM硬件加速器,为类似移动通信话务量预测以及其它高效或实时预测任务提供解决方案。
由于LS-SVM训练过程中涉及的计算量较大,为保证计算效率,本发明充分利用了FPGA的并行数据处理特性。由于FPGA内部资源有限,因此在计算过程中要限制并行处理单元的数量,针对此问题,本发明利用了FPGA最先进的动态重构技术,将计算过程进行模块化处理,按照计算流程,不同的计算模块分时动态载入FPGA,从而能够充分利用FPGA的内部资源,提高计算效率。
本发明是基于FPGA的可重构平台实现基于LS-SVM算法原理的硬件模块,充分利用了FPGA的并行性,进行LS-SVM算法的硬件加速,在保证精度前提下,能够实现任意规模样本的LS-SVM算法训练过程。但由于LS-SVM的训练算法非常复杂,在单片FPGA中很难实现全部的训练算法,所以,本发明充分利用了FPGA的动态重构技术,对算法进行模块化分割,并将分割后的算法分时、动态载入FPGA内进行重构,实现动态设计。
采用本发明所述方法获得的FPGA平台的LS-SVM算法具有以下优点:
1.数据能够采用32位浮点数格式;
2.可实现LS-SVM的训练样本规模在1000个以下,维数在25维以内的训练运算;
3.实现相对于PC机平台(Core 22.6GHz)大于1的加速比;
附图说明
图1是本发明所述的PFPGA内部的结构示意图;图2是LS-SVM算法的实现过程示意图,图3是初始镜像操作过程中,FPGA内部的结构示意图;图4是内部配置操作过程中,FPGA内部的结构示意图;图5是第二次重构之后FPGA内部的结构示意图;图6核函数矩阵形成IP模块的一种结构示意图;图7是2范数计算模块的一种结构示意图;图8是指数函数计算模块的一种结构示意图;图9是最小二乘求解IP模块的一种结构示意图;图10是分解模块的一种结构示意图;图11是PE_D模块的一种结构示意图;图12是PE_L运算模块的一种结构示意图;图13求解模块的一种结构示意图;图14是图13中的PE单元的一种结构示意图。
具体实施方式
本实施方式所述的基于运行时重构的LS-SVM算法FPGA实现方法为:
在FPGA内设置静态逻辑区和重构区,
在静态逻辑区,采用PowerPC440作为系统的主控器,采用例化为PLB(ProcessorLocal Bus处理器本地总线)设备的ICAP(Hardware Internal Configuration Access Port,硬件内部配置接口)接口作为配置接口,采用FPGA内部的block RAM作为PowerPC440的程序和数据存储区;PowerPC440通过多端口存储控制器MPMC(Multi Port MemoryController)接口与DDR2 RAM连接,用于控制DDR2RAM的数据的读写;
重构区通过多端口存储控制器MPMC的NPI(Native Port Interface,本地端口)接口实现与DDR2RAM的连接,PowerPC440与重构区的命令和数据交互通过DDR2RAM进行;
所述LS-SVM算法的实现过程为:将LS-SVM算法训练过程中的核函数矩阵形成过程采用固化在FPGA中的核函数矩阵计算IP模块实现,将LS-SVM算法训练过程中的最小二乘问题的求解过程采用最小二乘求解IP模块实现,所述两个模块通过重构技术分时载入FPGA进行运算,实现LS-SVM算法,首先进行初始镜像操作,然后循环执行内部配置操作和二次重构后内部配置操作实现LS-SVM在线训练,其中:
初始镜像操作,是系统运行的初始化步骤,用于实现样本数据的读取,并转存储至外部DDR存储器,以及根据样本数据进行核函数矩阵的计算,形成核函数矩阵,并将该核函数矩阵存储至外部DDR存储器中,准备开始重构;
内部配置操作,用于对FPGA进行重新配置,将最小二乘求解IP模块载入动态重构区,并根据外部DDR存储器中的核函数矩阵实现最小二乘问题求解,然后根据求解结果开始第二次重构;
二次重构后内部配置操作,用于在第二次重构后,用核函数矩阵形成IP模块替换最小二乘求解IP模块,然后根据外部DDR存储器中的样本数据进行核函数矩阵的计算,并形成核函数矩阵,最后准备开始重构。
上述操作中,DDR存储器中的样本数据是从外部CF卡中获取的新的训练数据,从而开始一个新的训练过程,也就是所谓的在线训练过程。
所述二次重构后内部配置操作与初始镜像操作过程的相同。
在初始镜像操作过程中,核函数矩阵计算IP模块通过MPMC访问DDR存储器,获取归一化后的样本数据进行RBF函数的计算,形成核函数矩阵Ωij=K(xi,xj),并将形成的核函数矩阵Ωij=K(xi,xj)存储于DDR存储器中。该过程是实现LS-SVM算法过程的初始化操作,该步骤之后,开始实现LS-SVM的计算过程。
在初始镜像操作过程中,FPGA内部结构参见图3所示,此时,FPGA内部设置PPC440模块、DDR控制器模块、核函数矩阵形成IP模块、CF卡控制IP模块;所述DDR控制模块用于实现PPC440模块、核函数矩阵形成IP模块与外部DDR存储器之间的数据交换;核函数矩阵形成IP模块用于计算并形成和函数矩阵,并将形成的核函数矩阵通过DDR控制模块存储至外部DDR存储器中;CF卡控制IP模块用于将外部CF卡与FPGA内部PLB数据总线相连接,所述PLB数据总线与PPPC440模块相连接。
所述内部配置操作过程,是进行核函数矩阵的分解求逆计算,并完成模型的建立,获得参数b和α的值。
所述内部配置操作过程中,对FPGA进行重新配置,将最小二乘求解IP模块载入动态重构区后,FPGA内部结构是将核函数矩阵形成IP替换成最小二乘求解IP模块,参见图4所示。
二次重构后内部配置操作,是将核函数矩阵形成IP模块重新载入FPGA替换最小二乘求解IP模块,重新开始训练过程,从而形成在线训练。
在将核函数矩阵形成IP模块重新载入FPGA替换最小二乘求解IP模块之后,FPGA内部结构参见图5所示,与初始镜像操作过程的结构相同。
本实施方式中采用外部CF卡存储LS-SVM训练所需要的原始数据和系统配置文件,该CF卡通过system ACE(System Advanced Configuration Environment,系统高级配置环境)连接到PLB总线。外部CF卡中存储的原始数据是将原始的训练样本数据进行归一化处理之后的样本数据。
本实施方式所述的基于运行时重构的LS-SVM算法FPGA实现方法是基于下述理论基础实现的:
LS-SVM应用于时间序列预测时,包括训练建模和预测评估两个过程。
的解,方程中y为l维列向量,由训练样本的输出yi(i=1..l)构成;γ为已经确定的超参数,b和α是需要求解的未知数,b为实数,α为l维列向量(称为Lagrange乘子),求解b和α的过程就是建模过程,Ω为核函数矩阵,由输入样本的输入xi通过核函数计算获得,公式为:
Ωij=K(xi,xj),
公式中,
解方程(1)的关键是求A的逆矩阵,A=Ω+γ-1I,获得A的逆矩阵后,既可获得参数b为:
还可获得参数α为:
获得b和α后,训练过程结束,获得模型如下:
根据式(3)描述的模型,对新的输入X来计算其输出f(X),这个过程称为预测过程或者验证过程(Estimation Process)。
在具体应用中,训练过程的计算量更大,将上述计算过程进行细化,获得下述过程:
1、数据预处理过程:
该过程主要完成功能为缺失值处理和归一化,首先假设为无缺失值情况,只进行归一化操作,归一化的目的是将所有训练数据的大小限定于0~+1之间。
则对上述训练样本进行归一化的过程,就是对输入的x的每一维分别进行归一化,以输入的xi的第k维为例进行归一化过程的说明,首先求得l个输入样本的第k维数据的平均值为m,第k维数据的最大值为kmax,最小值为kmin。则xik的归一化值xiknorm为:
xiknorm=(xik-m)/(kmax-kmin),
输出y也需要进行归一化操作,最终的预测输出只需将预测结果按照上式反求即可。归一化的操作可以在PC机上完成,在FPGA平台上运行的数据是已经归一化的数据。
2、核函数矩阵的形成过程
核函数矩阵的形成主要是计算不同输入向量的核函数,核函数采用RBF函数,其具体形式为:
其中σ为训练前确定的超参数。
RBF函数的计算涉及向量的2范数计算和指数函数的计算,按照Ωij=K(xi,xj)的定义,对于l个训练样本,Ωij为l×l维矩阵,即l个样本中任意两个进行核函数计算而获得核函数矩阵,所以需要进行的核函数计算次数为l×(l-1)次,其中样本与自己的核函数为1。
该步骤涉及大量非线性函数的计算,且为并行计算模式,可以在FPGA中实现。
3、核函数矩阵求逆过程
获得Ωij后,即可构成矩阵A,从Ωij的计算过程可知,A为对称正定阵。如果获得矩阵A的逆矩阵A-1,则根据式(2)即可获得b和α。求矩阵A的逆矩阵的过程即为训练过程的关键环节。矩阵A的维数为l×l,当训练样本很大时,该矩阵的求逆涉及很大的计算量。
传统的矩阵求逆方法包括LU分解,Cholesky分解等,这些分解方法中都涉及矩阵的乘法操作。
4、训练结果获取的过程
在求取A-1后,根据式(2)计算b和α的过程即训练结果的获取过程。从式(2)可以看出主要计算量为矩阵与向量的乘法操作。
本实施方式在FPGA内部设计多个并行计算模块来实现LV-SVM算法,达到了算法加速和提高计算效率的技术效果。
FPGA能够实现算法加速的核心原因在于其计算的并行性,所以在FPGA功能模块的设计过程中,其核心内容之一是根据算法的计算需求,设计合理的PE(Processing Element)单元,PE单元的设计中涉及的浮点运算可以采用XILINX的浮点运算IP核实现,目前ISE10.1中的浮点运算IP核版本为3.0,可以实现加、减、乘、除、开方、定点-浮点及浮点-浮点转换,完全满足本发明要实现的LS-SVM算法的需求。
核函数矩阵Ωij=K(xi,xj),对于l个训练样本,Ωij为l×l维矩阵,即l个样本中任意两个进行核函数计算而获得核函数矩阵。核函数采用RBF函数,其定义为:
本发明中核函数矩阵的计算过程采用遍历方式,矩阵表达成下面的形式:
本实施方式所述的核函数矩阵形成IP模块是基于上述矩阵表达形式设计的。所述核函数矩阵形成IP模块的结构参见图6所示,
核函数矩阵形成IP模块包括2组PE单元、四个随机存储器和一个结果随机存储器,每一组PE单元包括m个PE模块和m个先入先出存储器FIFO;m为每组PE单元的数量,一般取m<l;
第一随机存储器RAM1用于存储矩阵中的样本数据xi,所述i为奇数,且0≤i≤l-1;
第三随机存储器RAM3用于存储矩阵中的样本数据xi,所述i为偶数,且0≤i≤l-1;
第二随机存储器RAM2和第四随机存储器RAM4用于存储矩阵中的样本数据项xi,所述i为整数,且0≤i≤l-1。
第一随机存储器RAM1和第二随机存储器RAM2用于为第一组PE单元提供输入数据,第一组PE单元中的每个PE模块有两个输入数据,第一随机存储器RAM1为每个PE模块提供第一个输入数据,第二随机存储器RAM2为每个PE模块提供第二个输入数据;系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第一随机存储器RAM1和第二随机存储器RAM2中数据的顺序和每个PE模块的工作使能;
第三随机存储器RAM3和第四随机存储器RAM4用于为第二组PE单元提供输入数据,第二组PE单元中的每个PE模块有两个输入数据,第三随机存储器RAM3为每个PE模块提供第一个输入数据,第四随机存储器RAM4为每个PE模块提供第二个输入数据;系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第三随机存储器RAM3和第四随机存储器RAM4中的数据的顺序和每个PE模块的工作使能;
系统的主控器PowerPC440还用于通过多端口存储控制器MPMC控制向结果存储器RAM从存储数据的顺序。
所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第一随机存储器RAM1和第二随机存储器RAM2中数据的顺序和每个PE模块的工作使能的过程为:
第一组PE单元中的所有模块同时顺序读取第一随机存储器RAM1中存储的样本数据作为第一个输入数据,当读取第i个样本数据时,第一组PE单元中的第1个PE模块读取第二随机存储器RAM2中第i个数据作为第二个输入数据,然后该PE模块开始计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,第2个PE模块读取第二随机存储器RAM2中第i+1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第2个先入先出存储器FIFO_A2中,…,第m个PE模块读取第二随机存储器RAM2中第i+m-1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第m个先入先出存储器FIFO_Am中,第1个PE模块读取第二随机存储器RAM2中第i+m个数据作为另一个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,……,以此类推,直到读取并计算完成第二随机存储器RAM2中的1个样本数据;然后,第一组PE单元中的所有模块同时读取读取第一随机存储器RAM1中的下一个样本数据作为第一个输入数据,即:第i+2个样本数据,重复上述过程,直到遍历第一随机存储器RAM1中的所有样本数据。
由于第一随机存储器RAM1中存储的是所有脚标为奇数的样本数据,所以第一组PE模块计算获得的是所有脚标为奇数的样本的矩阵数据。
所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第三随机存储器RAM3和第四随机存储器RAM4中的数据的顺序和每个PE模块的工作使能的过程为:
第二组PE单元中的所有模块同时顺序读取第三随机存储器RAM3中存储的样本数据作为第一个输入数据,当读取第i个样本数据时,第三组PE单元中的第1个PE模块读取第四随机存储器RAM4中第i个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,第2个PE模块读取第四随机存储器RAM4中第i+1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第2个先入先出存储器FIFO_A2中,…,第m个PE模块读取第二随机存储器RAM2中第i+m-1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第m个先入先出存储器FIFO_Am中,第1个PE模块读取第二随机存储器RAM2中第i+m个数据作为另一个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,……以此类推,直到读取完第四随机存储器RAM4中的1个样本数据;然后,第二组PE单元中的所有模块同时读取第三随机存储器RAM3中的下一个样本数据作为第一个输入数据,即第i+2个样本数据,重复上述过程,直到遍历第三随机存储器RAM3中的所有样本数据。
由于第三随机存储器RAM3中存储的是所有脚标为偶数的样本数据,所以第二组PE模块计算获得的是所有脚标为偶数的样本的矩阵数据。
上述计算过程的举例说明:PE1_A计算K(x0,x0),PE2_A计算K(x0,x1).....PEm_A计算K(x0,xm-1);然后PE1_A计算K(x0,xm),PE2_A计算K(x0,xm+1)....。其中m为每组中PE单元的个数,如此形成一个流水线的结构,为了保证最大的计算并行性,需要实现最深的流水结构,即需要合理确定每组中PE单元的数量m,而m的值是由PE单元中2范数计算模块的延迟决定的。
所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制向结果存储器RAM从存储数据的顺序的过程为:
当第二组PE单元完成所有计算时,顺序读取第一组PE单元中的所有先入先出存储器FIFO中暂存的计算结果并存入结果随机存储器RAM中,当读取完一个样本数据xi对应的计算结果时,开始读取第二组PE单元中的先入先出存储器中暂存的计算结果并存入结果随机存储器RAM中,当读取完一个样本数据对应的计算结果后,再返回继续读取第一组PE单元中的先入先出存储器FIFO中暂存的计算结果并存入结果随机存储器RAM中,以此类推,直到读取完成最后一个样本数据对应的计算结果。
由核函数矩阵可知,第一个样本数据x1对应计算结果有l个,第二个样本数据x2对应的计算结果有l-1个,……,以此类推,第l个样本数据xl对应计算结果有1个。
由核函数矩阵可知,脚标为偶数的样本需要计算的数据一定比脚标为奇数的样本需要计算的时间少,因此可知,脚标为偶数的样本数据一定先计算完毕。基于此,在读取计算结果形成矩阵的过程中,当脚标为偶数的样本数据(即第二组PE单元)计算完毕时,便将所有FIFO中暂存的计算结果依次存入到RAM中。
每个PE模块由2范数计算模块和指数函数计算模块组成,其中:2范数计算模块,用于实现PE模块的两个数据的2范数的平方计算,并将计算结果发送给指数计算模块;指数函数计算模块,用于实现指数函数的计算,并获得PE模块的计算结果数据。
2范数计算模块,用于将每个PE单元输入的两个数据经减法器做差之后,获得的差信号同时作为两个信号输出给第一个乘法器A,所述第一个乘法器A将输入的两个信号相乘之后输出给存储器,所述存储器输出的信号作为加法器的一个输入信号,加法器的输出信号输出给第二个乘法器B作为在一个输入信号,同时还输出给先入先出存储器,所述先入先出存储器输出信号作为加法器的另一个输入信号,第二个乘法器B的另一个输入信号为-1/σ2,该第二乘法法器B的输出信号为该PE单元的计算结果输出。
上述2范数计算模块的延时为:Tlatency=(1+TL)×N×Tclk,其中TL是减法器和第一个乘法器A的延迟时间,Tclk是操作时钟的周期,N表示样本的维数。
因为,每组中所有的PE单元共享RAM资源,所以每个PE单元占用RAM资源的时间也决定了每组中PE单元的数量。我们定义每个PE单元占用RAM资源的时间为Ttrans.如图7所示,Ttrans是从RAM中取N维数据的访问时间,我们可以实现一个时钟取一个数据,所以,Ttrans=N×Tclk,每组中PE单元的数量n=Tlatency/Ttrans=1+TL。例如,当TL=3时,每组PE单元合理的数量可以选取4。
所述指数函数计算模块,用于将2范数计算模块的计算结果作为指数函数计算模块的输入,该输入存储于FIFO中,并通过乘法器A与常数100相乘,然后经浮点转定点器转换为定点数,再通过取整器进行取整操作,以取整器的输出存储于FIFO B中,并作为k RAM的地址,并将k RAM的输出通过乘法器与存储于FIFO A中的原始输入数据相乘,将乘法器的输出结果与b RAM的输出通过加法器相加,其中b RAM的地址即为存储于FIFO B中的数据,该地址与k RAM的地址一致。加法器的输出即为整个RBF函数的计算结果。
在图7中,加法器,乘法器,减法器等科学计算单元的实现采用Xilinx floating pointoperators(Xilinx浮点运算功能包),本发明中设置减法器和乘法器的延时相同,这样就能够在每个时钟内实现持续的流水计算。但是后级的累加器不能实现此功能,它必须在当前运算完成后,才能进行下一个运算(累加的计算特点导致)。
本实施方式所述的最小二乘求解IP模块,参见图9所示,用于实现核函数矩阵求逆过程。该模块包括待求矩阵输入接口模块、分解模块和求解模块,待求矩阵输入接口模块的输出端连接在分解模块的输入端,分解模块的输出端连接在求解模块的输入端;其中矩阵输入接口模块用于连接MPMC的NPI接口,实现与DDR2 RAM的数据交互。
所述最小二乘求解IP模块,可以采用三角矩阵求逆硬件实现,采用Cholesky分解方法来求解,最终将矩阵求逆问题转化为最小二乘问题的求解。
所述Cholesky分解适合对称正定矩阵进行求逆运算。对于线性方程组:Ax=b,如果矩阵A不是对称正定矩阵,则可以通过变换转化为对称正定阵,对方程组做如下变换:ATAx=ATb,设B=ATA,则B为对称正定阵,ATb为n维列向量。经过变换后的线性方程组就可以用Cholesky分解来实现。
根据本实施方式所需要实现的核函数矩阵求逆过程的要求,所要处理的矩阵为对称正定阵,将现有Cholesky分解算法进行改进,然后采用FPGA实现,所述改进的Cholesky分解算法的基本原理为:
设A=(aij)∈Rn×n是对称正定矩阵,则可以对矩阵A进行Cholesky分解,直接的Cholesky分解需要进行开方运算难于硬件实现,因此引入Cholesky分解的改进算法。
令A=LDLT,其中L为单位下三角矩阵,D为对角阵,LT为L的转置矩阵。
容易得到D和L中的元素:
所述分解模块,用于计算对角阵D和下三角阵L,的结构参见图10所示,该模块中的计算对角阵D的PE_D模块输出数据同时发送给矩阵D分解结果产生模块和多个计算下三角阵L的PE_L运算模块,每个PE_L运算模块发送结果数据给一个矩阵L分解结果产生模块,同时,该矩阵L分解结果产生模块还给对应的PE_L运算模块发送计算所需数据,多个矩阵L分解结果产生模块将分解结果发送给开关模块,所述开关模块在控制模块的控制下,逐一将输入的多个分解结果发送给PE_D模块。
由于下三角阵L需要计算的值比较多,上述分解模块中采用多个计算下三角阵L的PE_L运算模块实现对三角阵L的计算,提升了计算效率。所述PE_L运算模块的个数可综合FPGA片内资源的占用情况及所需要的计算效率来确定。一般可设计8个PE_L运算模块。
矩阵L中的每一个元素都需要与对角阵D中的元素做除法运算,但是由于除法运算的延迟时间较长,每一个元素的除法运算时间会使整个模块的计算效率急速下降,因此考虑在计算对角阵元素后先做除法运算得到对角阵元素dr的倒数,计算矩阵L元素时的除法运算就可以转变为乘法运算,从而提高计算速度。
上述PE_D模块,用于计算对角阵D,计算公式为:
计算dr涉及到乘法运算、加法运算及减法运算,为计算矩阵L还需要计算1/dr,因此需要用到乘法器、加法器、减法器及除法器,两个乘法器用来计算由于乘法器运算时有延迟时间,因此采用FIFO1作为第二个乘法器输入的缓存,FIFO1的深度只要大于乘法器的延迟时钟的个数即可。
加法器用来实现累加算式的计算,由于加法器延迟时间的存在,使得累加计算的速度取决于加法器的延迟时间,每隔加法器延迟时钟的时间才能进行下一步累加的计算。得到的累加结果与矩阵A的对角线元素做减法可得到dr的值,通过除法器的除法运算可以得到1/dr,将1/dr为该模块的结果数据。
参见图11所示,是一种实现PE_D模块的结构,PE_L模块的三角阵L的计算结果与存储对角阵D的RAM输出的对角阵的数据经乘法器相乘之后作为下一级乘法器的数据数据,所述PE_L模块的三角阵L的计算结果还输入给先入先出存储器FIFO1,该先入先出存储器FIFO1输出的数据作为下一级乘法器的另一个数据输入,所述下一级乘法器输出结果数据经过先入先出存储器FIFO3输出给加法器,该加法器输出数据经过锁存器之后作为该加法器的另一个输入数据,即:该加法器将先入先出存储器FIFO3输出的数据与前一次结果进行累加操作,该加法器的输出数据经减法器与arr做差之后同时输出存储对角阵D的RAM和除法器,该除法器将输入数据求倒数之后的结果作为该PE_D模块的输出数据。
所述PE_L运算模块用于计算下三角矩阵L中的元素,计算公式为:
涉及到乘法运算、累加运算、减法运算及除法运算,1/dr已由PE_D模块算出,因此将除法运算转化为乘法运算,算式中需要计算likdklrk,dklrk已由PE_D模块3在计算dr时由第一个乘法器算出,因此在PE_L运算模块4中放置一个FIFO存放由PE_D模块3算出的dklrk,这样做的好处是可以省掉一个乘法器且节省计算时间。
FIFO_pe的深度取决于待分解矩阵的维数以及使用的PE_L运算模块4的个数,例如,如果矩阵的维数是256维,使用8个PE_L运算模块4,则FIFO_pe的深度为32(256/8)。每计算一轮lir,即每完成矩阵L的一列的计算,需要对FIFO_pe复位一次,以便进行下一轮lir的计算。
减法运算:与乘、加模块并行运算,实时检测加法器的rdy信号,判断何时进行减法运算。减法器输出的计算结果需要与PE_D模块3计算出的1/dr做乘法运算,即可得到lir,将结果存入到矩阵L分解结果产生模块中。
对角阵D的计算需要lrk,因此矩阵L分解结果产生模块中的数据需要切换输出给PE_D和各自对应的PE_L运算模块4输入端,因此需要设计一个32位宽度,8端口的总线开关模块8,实现每个矩阵L分解结果产生模块与两个PE单元的切换。
实现上述PE_L运算模块的一种结构参见图12所示。
求解模块,用于根据分解模块获得的对角阵D和三角阵L,计算求解计算结果,其工作原理为:
在进行完矩阵的Cholesky分解后,可将原矩阵方程化为如下模式:
故求解部分根据以上等式分为三个部分Lz=b,Dr=z,LTη=r。
第一部分:Lz=b
原方程可展开为:
z1=b1
z2=(b2-l21z1)
z3=(b3-l31z1-l32z2)。
第二部分:Dr=z
由于d矩阵为对角阵,其求解过程等价于求解rn=zn/dn。利用矩阵分解部分求取并存储的1/dn,可直接对结果进行乘法运算,提高计算效率。
第三部分:LTη=r
在第二部分得到向量r后可以通过下列三角线性方程组求得变量η
ηn=rn
ηn-1=rn1-un-1nηn,
第一部分和第三部分的计算求解过程都是三角计算式的求解过程,以第一部分的求解过程为例,硬件实现的步骤按下表进行。
表1
上述硬件实现采用流水线结构设计,共需八个并行的PE单元。
实现上述过程的一种求解模块结构参见图13所示,该模块中的PE单元的个数与分解模块中的PE_L运算模块的个数相同,每个矩阵L分解结果产生模块输出分解结果给一个PE单元,多个PE单元的输出结果输出给选通开关,控制单元控制该选通开关逐一将输入的多个输出结果发送给减法器,该减法器9将输出输入结果与存储器RAMb中存储的输入做差之后同时输出给存储器RAMz和乘法器,乘法器输入数据与矩阵D分解结果产生该模块输出的数据相乘之后输出给存储器RAMb,所述存储器RAMz同时输出数据给每一个PE单元。
所述PE单元可采用图14所示结构实现。
我们在ML510开发板上实现了我们的设计,该开发板采用的FPGA型号为Xilinx VirtexXC5VFX130T,工作于100MHz时钟.XC5VFX130T的资源包括320 DSP48E slices,10728kbblock RAM,2 PowerPC Processor blocks,和20480 slices.
我们对配置时间,资源利用,效率和精度与PC的对比分别进行说明。
1、配置时间的对比结果参见表1所示:
表1配置时间
其中,理论时间ttheory=(8×BitFileSize)/(32×ficap),其中ficap=100MHz.
从表1可以看出,实际配置时间远大于理论时间,这是可重构计算中普遍存在的问题。导致此问题的原因主要是:首先PowerPC需要对配置数据进行解码;第二是ICAP口采用了单字节配置,时间延迟较大;最后是配置镜像存储于CF卡中,其访问速度受限。
2、本实施方式所述的方法的资源占用情况参见表2所示:
表2各模块的资源占用情况
BLOCK RAM是FPGA内部资源,也称为块RAM。DSP48E是FPGA内部计算资源。
采用本发明所述方法获得的FPGA与PC平台进行比较,分别对256个6维样本数据进行了训练,其中,样本数据来源于黑龙江移动通信提供的实际移动通信话务量数据;获得的效率对比参见表3所示:
表3效率对比结果
其中,FPGA平台的运行时间包括核函数矩阵形成IP模块的运行时间,重构时间和最小二乘求解IP模块的运行时间。
PC平台采用Pentium Dual core 2.60GHz CPU和2G DDR2内存,Matlab 7.5.0.开发环境。PC平台的运行时间采用了5次平均。
从表3可以看出,相对于PC平台,FPGA平台能够实现近3倍的加速比。
我们用4个数据集进行了精度对比,以PC平台上Matlab 7.5.0.环境下双精度计算结果为标准结果,获得的最大绝对误差数据参见表4所示:
表4最大绝对误差对比
从表4可以看出,我们的计算结果误差在10-6量级,满足绝大多数的应用需求。且如果我们采用双精度计算,并在核函数计算中的指数函数计算模块中增加分段数,还可以进一步提升精度。
Claims (9)
1.基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于该实现方法为:
在FPGA内设置静态逻辑区和重构区,
在静态逻辑区,采用PowerPC440作为系统的主控器,采用例化为处理器本地总线PLB设备的硬件内部配置接口ICAP接口作为配置接口,采用FPGA内部的block RAM作为PowerPC440的程序和数据存储区;PowerPC440通过多端口存储控制器MPMC接口与DDR2RAM连接,用于控制DDR2RAM的数据的读写;
重构区通过多端口存储控制器MPMC的本地端口NPI接口实现与DDR2RAM的连接,PowerPC440与重构区的命令和数据交互通过DDR2RAM进行;
将LS-SVM算法训练过程中的核函数矩阵形成过程采用固化在FPGA中的核函数矩阵计算IP模块实现,将LS-SVM算法训练过程中的最小二乘问题的求解过程采用最小二乘求解IP模块实现,所述两个模块通过重构技术分时载入FPGA进行运算,实现LS-SVM算法,首先进行初始镜像操作,然后循环执行内部配置操作和二次重构后内部配置操作实现LS-SVM在线训练,其中:
初始镜像操作,是系统运行的初始化步骤,用于实现样本数据的读取,并转存储至外部DDR存储器,以及根据样本数据进行核函数矩阵的计算,形成核函数矩阵,并将该核函数矩阵存储至外部DDR存储器中,准备开始重构;
内部配置操作,用于对FPGA进行重新配置,最小二乘求解IP模块载入动态重构区,并根据外部DDR存储器中的核函数矩阵实现最小二乘问题求解,然后根据求解结果开始第二次重构;
二次重构后内部配置操作,用于在第二次重构后,用最小二乘求解IP模块替换核函数矩阵形成IP模块,然后根据外部DDR存储器中的数据进行核函数矩阵的计算,并形成核函数矩阵,最后准备开始重构。
2.根据权利要求1所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,在初始镜像操作过程中,FPGA内部设置PowerPC440模块、DDR控制器模块、核函数矩阵形成IP模块、CF卡控制IP模块;所述DDR控制器模块用于实现PowerPC440模块、核函数矩阵形成IP模块与外部DDR存储器之间的数据交换;核函数矩阵形成IP模块用于计算并形成和函数矩阵,并将形成的核函数矩阵通过DDR控制模块存储至外部DDR存储器中;CF卡控制IP模块用于将外部CF卡与FPGA内部PLB数据总线相连接,所述PLB数据总线与PowerPC440模块相连接。
3.根据权利要求1所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,所述内部配置操作过程,对FPGA进行重新配置,将最小二乘求解IP模块载入动态重构区替换核函数矩阵形成IP模块。
4.根据权利要求1所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,核函数矩阵形成IP模块包括2组PE单元、四个随机存储器和一个结果随机存储器,每一组PE单元包括m个PE模块和m个先入先出存储器FIFO;m为每组PE单元的数量,一般取m<1,l为训练样本数;
第一随机存储器RAM1用于存储矩阵中的样本数据xi,所述i为奇数,且0≤i≤l-1;
第三随机存储器RAM3用于存储矩阵中的样本数据xi,所述i为偶数,且0≤i≤l-1;
第二随机存储器RAM2和第四随机存储器RAM4用于存储矩阵中的样本数据项xi,所述i为整数,且0≤i≤l-1;
第一随机存储器RAM1和第二随机存储器RAM2用于为第一组PE单元提供输入数据,第一组PE单元中的每个PE模块有两个输入数据,第一随机存储器RAM1为每个PE模块提供第一个输入数据,第二随机存储器RAM2为每个PE模块提供第二个输入数据;系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第一随机存储器RAM1和第二随机存储器RAM2中数据的顺序和每个PE模块的工作使能;
第三随机存储器RAM3和第四随机存储器RAM4用于为第二组PE单元提供输入数据,第二组PE单元中的每个PE模块有两个输入数据,第三随机存储器RAM3为每个PE模块提供第一个输入数据,第四随机存储器RAM4为每个PE模块提供第二个输入数据;系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第三随机存储器RAM3和第四随机存储器RAM4中的数据的顺序和每个PE模块的工作使能;
系统的主控器PowerPC440还用于通过多端口存储控制器MPMC控制向结果存储器RAM从存储数据的顺序。
5.根据权利要求4所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第一随机存储器RAM1和第二随机存储器RAM2中数据的顺序和每个PE模块的工作使能的过程为:
第一组PE单元中的所有模块同时顺序读取第一随机存储器RAM1中存储的样本数据作为第一个输入数据,当读取第i个样本数据时,第一组PE单元中的第1个PE模块读取第二随机存储器RAM2中第i个数据作为第二个输入数据,然后该PE模块开始计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,第2个PE模块读取第二随机存储器RAM2中第i+1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第2个先入先出存储器FIFO_A2中,…以此类推,第m个PE模块读取第二随机存储器RAM2中第i+m-1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第m个先入先出存储器FIFO_Am中,第1个PE模块读取第二随机存储器RAM2中第i+m个数据作为另一个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,……,以此类推,直到读取并计算完成第二随机存储器RAM2中的1个样本数据;然后,第一组PE单元中的所有模块同时读取读取第一随机存储器RAM1中的下一个样本数据作为第一个输入数据,即:第i+2个样本数据,重复上述过程,直到遍历第一随机存储器RAM1中的所有样本数据。
6.根据权利要求4所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制读取第三随机存储器RAM3和第四随机存储器RAM4中的数据的顺序和每个PE模块的工作使能的过程为:
第二组PE单元中的所有模块同时顺序读取第三随机存储器RAM3中存储的样本数据作为第一个输入数据,当读取第i个样本数据时,第三组PE单元中的第1个PE模块读取第四随机存储器RAM4中第i个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,第2个PE模块读取第四随机存储器RAM4中第i+1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第2个先入先出存储器FIFO_A2中,…以此类推,第m个PE模块读取第二随机存储器RAM2中第i+m-1个数据作为第二个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第m个先入先出存储器FIFO_Am中,第1个PE模块读取第二随机存储器RAM2中第i+m个数据作为另一个输入数据,然后该PE模块进行计算,并将计算结果存储至对应的第1个先入先出存储器FIFO_A1中,……以此类推,直到读取完第四随机存储器RAM4中的1个样本数据;然后,第二组PE单元中的所有模块同时读取第三随机存储器RAM3中的下一个样本数据作为第一个输入数据,即第i+2个样本数据,重复上述过程,直到遍历第三随机存储器RAM3中的所有样本数据。
7.根据权利要求4所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,所述系统的主控器PowerPC440用于通过多端口存储控制器MPMC控制向结果存储器RAM从存储数据的顺序的过程为:
当第二组PE单元完成所有计算时,顺序读取第一组PE单元中的所有先入先出存储器FIFO中暂存的计算结果并存入结果随机存储器RAM中,当读取完一个样本数据xi对应的计算结果时,开始读取第二组PE单元中的先入先出存储器中暂存的计算结果并存入结果随机存储器RAM中,当读取完一个样本数据对应的计算结果后,再返回继续读取第一组PE单元中的先入先出存储器FIFO中暂存的计算结果并存入结果随机存储器RAM中,以此类推,直到读取完成最后一个样本数据对应的计算结果。
8.根据权利要求4所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,每个PE模块由2范数计算模块和指数函数计算模块组成,其中:2范数计算模块,用于实现PE模块的两个数据数据的2范数的平方计算,并将计算结果发送给指数计算模块;指数函数计算模块,用于实现指数函数的计算,并获得PE模块的计算结果数据。
9.根据权利要求8所述基于运行时重构的LS-SVM算法FPGA实现方法,其特征在于,所述2范数计算模块用于将每个PE单元输入的两个数据经减法器做差之后,获得的差信号同时作为两个信号输出给第一个乘法器A,所述第一个乘法器A将输入的两个信号相乘之后输出给存储器,所述存储器输出的信号作为加法器的一个输入信号,加法器的输出信号输出给第二个乘法器B作为该第二个乘法器B的一个输入信号,同时还输出给先入先出存储器,所述先入先出存储器输出信号作为加法器的另一个输入信号,第二个乘法器B的另一个输入信号为-1/σ2,该第二个乘法器B的输出信号为该PE单元的计算结果输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110053247 CN102135951B (zh) | 2011-03-07 | 2011-03-07 | 基于运行时重构的ls-svm算法fpga实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110053247 CN102135951B (zh) | 2011-03-07 | 2011-03-07 | 基于运行时重构的ls-svm算法fpga实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102135951A CN102135951A (zh) | 2011-07-27 |
CN102135951B true CN102135951B (zh) | 2013-09-11 |
Family
ID=44295739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110053247 Expired - Fee Related CN102135951B (zh) | 2011-03-07 | 2011-03-07 | 基于运行时重构的ls-svm算法fpga实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102135951B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622319B (zh) * | 2012-04-18 | 2014-07-30 | 哈尔滨工业大学 | 基于mpmc的高速存储器接口ip核的数据交换系统 |
CN103455714B (zh) * | 2013-08-20 | 2017-02-08 | 西安电子科技大学 | 基于FPGA的DPR SoC自重构系统的耗时计算方法及应用 |
CN108362994A (zh) * | 2013-10-12 | 2018-08-03 | 深圳市爱德特科技有限公司 | 一种基于高低速测试分离的测试装置 |
CN103677917A (zh) * | 2013-12-10 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 基于fpga重配置技术的可定制嵌入式处理系统 |
CN103744713A (zh) * | 2014-02-11 | 2014-04-23 | 哈尔滨工业大学 | 基于fpga的嵌入式双核系统的自主配置方法 |
CN105528319B (zh) * | 2015-12-07 | 2018-08-24 | 中国电子科技集团公司第三十二研究所 | 基于fpga的加速卡及其加速方法 |
CN105956666B (zh) * | 2016-04-29 | 2018-09-07 | 浪潮(北京)电子信息产业有限公司 | 一种机器学习方法及系统 |
EP3644180A4 (en) * | 2017-06-23 | 2020-06-17 | Nokia Solutions and Networks Oy | METHOD AND APPARATUS FOR MANAGING RESOURCES IN A PERIPHERAL CLOUD |
US11119766B2 (en) | 2018-12-06 | 2021-09-14 | International Business Machines Corporation | Hardware accelerator with locally stored macros |
CN113626376B (zh) * | 2021-04-30 | 2023-08-18 | 中国电子科技集团公司第十四研究所 | 基于fpga的软件化实时动态可重构控制方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101788927A (zh) * | 2010-01-20 | 2010-07-28 | 哈尔滨工业大学 | 一种基于fpga的自适应星载计算机及应用所述计算机实现内部资源动态分配的方法 |
-
2011
- 2011-03-07 CN CN 201110053247 patent/CN102135951B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101788927A (zh) * | 2010-01-20 | 2010-07-28 | 哈尔滨工业大学 | 一种基于fpga的自适应星载计算机及应用所述计算机实现内部资源动态分配的方法 |
Non-Patent Citations (1)
Title |
---|
王博.一种基于FPGA的新的SVM硬件实现方法.《中国优秀硕士论文电子期刊网》.2010, * |
Also Published As
Publication number | Publication date |
---|---|
CN102135951A (zh) | 2011-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102135951B (zh) | 基于运行时重构的ls-svm算法fpga实现方法 | |
CN102129420B (zh) | 基于Cholesky分解解决最小二乘问题的FPGA实现装置 | |
Zhang et al. | Forecasting of turbine heat rate with online least squares support vector machine based on gravitational search algorithm | |
Pace | BSP vs MapReduce | |
CN110163358A (zh) | 一种计算装置及方法 | |
An et al. | Closest targets in environmental efficiency evaluation based on enhanced Russell measure | |
CN101937424A (zh) | 基于fpga实现高速fft处理的方法 | |
CN110222307A (zh) | 基于fpga的实对称矩阵的特征值分解的并行实现方法 | |
CN104680236A (zh) | 核函数极限学习机分类器的fpga实现方法 | |
CN106415526A (zh) | Fft处理器及运算方法 | |
CN106933777B (zh) | 基于国产申威26010处理器的基2一维fft的高性能实现方法 | |
CN102129419B (zh) | 基于快速傅立叶变换的处理器 | |
Aminian et al. | FPGA-based circuit model emulation of quantum algorithms | |
Liu et al. | Algorithm and hardware co-design co-optimization framework for LSTM accelerator using quantized fully decomposed tensor train | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
Wauters et al. | Development of an adaptive infill criterion for constrained multi-objective asynchronous surrogate-based optimization | |
CN104050148A (zh) | 快速傅里叶变换加速器 | |
CN103176949A (zh) | 实现fft/ifft变换的电路及方法 | |
CN111651208B (zh) | 面向异构众核并行计算机的模态并行计算方法及系统 | |
Wang et al. | Accelerating on-line training of LS-SVM with run-time reconfiguration | |
Que et al. | Reconfigurable acceleration of graph neural networks for jet identification in particle physics | |
CN101706770B (zh) | 包含四条指令的支持快速傅里叶变换运算的方法 | |
KR20240125688A (ko) | 주기적 데이터를 이용한 기계 학습 | |
Kumari et al. | A parallel selection sorting algorithm on GPUs using binary search | |
CN103293519B (zh) | 基于流水线工作方式的i/q通道误差校正方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130911 |
|
CF01 | Termination of patent right due to non-payment of annual fee |