一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于FPGA的聚类算法的加速系统及其设计方法与流程

2022-06-25 04:58:28 来源:中国专利 TAG:

基于fpga的聚类算法的加速系统及其设计方法
技术领域
1.本发明涉及fpga硬件加速技术领域,更具体地说,它涉及基于fpga的聚类算法的加速系统。


背景技术:

2.随着个人计算机的普及,互联网得到了快速的发展,随之而来的大量电子信息变得难以处理。当前信息科学和技术领域关注的焦点之一,就是通过有效地组织和管理这些电子信息,并快速、准确、全面地从中找到用户所需要的信息。分类算法作为处理和分类大量数据的关键技术,可以在较大程度上解决信息杂乱现象的问题,方便用户准确地定位所需的信息和分流信息。而且作为信息过滤、信息检索、搜索引擎、文本数据库、数字化图书馆等领域的技术基础,分类技术有着广泛的应用前景。
3.目前分类算法中,集成学习是国内外学者的研究热点,集成学习主要是按照一定的规则组合单一分类器来解决问题,算法有bagging,boosting。而在单一分类算法中,不同的分类算法都有各自的特点。如支持向量机(svm)具有很高的准确率,可以再在没有背景信息的数据集上获得很好的效果。相比之下,决策树则可以很好的解释建立的模型。因此在不同的数据、背景和需求下,需要用不同的分类算法才能达到更好的效果。
4.如今在大数据时代,海量高维度的数据大大减慢了分类算法的效率,严重制约着各行各业的发展。随着数据的大量激增和人们对关键信息的迫切需求,如何快速而高效地完成对信息的提取和分类显得尤为重要。因此分类算法的高性能实现也成为人们研究的重要课题。相比于传统的计算机系统,多核异构计算平台集成了可重构的逻辑单元,结合了异构多核平台和可重构技术的特点,可针对应用程序的动态执行过程来进行硬件平台的重新配置,具备更高的灵活性同时更易于扩展,满足了大数据时代的需求,因此基于gpu与fpga的异构计算系统成为处理大数据应用的一种有效框架。
5.相对于在算法层面上对算法进行优化改进的困难,研究人员已经在硬件层面上取得了有效的进展。目前分类算法加速的主要手段有云计算平台和硬件加速平台,其中云计算平台由大量同构的基于cpu的单节点服务器构成,多个节点之间互相配合、协同工作。云计算平台编程模型大体上可以分为基于map-reduce计算模型和基于图的计算模型两种,两种计算模型的本质都是利用任务级并行和数据级并行的手段将任务进行划分,然后将划分好的任务和数据分配给分布在云端上的分布式计算机上,这些分布式计算机完成任务计算后将结果返回到云计算平台中的宿主机上。云计算平台虽然能取得良好的加速效果,但是对于其云端上的某一节点而言计算效率偏低,并且加速效果也受到网络带宽的限制,其加速的成本也比较高,能耗开销也非常大。硬件加速平台包含通用图形处理器gpgpu(general purpose graphics processing unit)、专用集成电路asic(applicationspecific integrated circuit)以及现场可编程逻辑门阵列fpga(field programmablegate array)。其中gpu拥有大量硬件级线程以及大量并行处理单元,因此常被应用于计算复杂且可并行的图形处理领域,利用数据级并行的模式来加速各种应用的执行;
6.由于对于大数据的处理数据量较大,对于大数据的处理主要依靠软件进行,本发明考虑通过fpga硬件加速对大数据进行加速处理。


技术实现要素:

7.本发明提供一种基于fpga的聚类算法的加速系统,解决相关技术中的技术问题。
8.根据本发明的一个方面,提供了一种基于fpga的聚类算法的加速系统,该基于fpga的聚类算法的加速系统连接r语言处理设备,r语言处理设备是基于r语言处理大数据的软件;
9.基于fpga的聚类算法的加速系统包括r语言/fpga专用接口模块和fpga处理模块,其中,
10.r语言/fpga专用接口模块用于连接fpga处理模块以及r语言处理设备;用于在r语言处理设备和fpga处理模块之间执行数据处理或代码执行;
11.r语言/fpga专用接口模块包括r语言接口单元、代码分析/数据分类单元和fpga接口单元,其中,
12.r语言/fpga专用接口模块从r语言处理单元接收代码和数据,并且在由硬件组成的fpga处理模块中对要处理的代码和数据进行分类,并将其传送给fpga处理模块;
13.r语言接口单元用于将从r语言处理设备接收的代码和数据发送到代码分析/数据分类单元;
14.代码分析/数据分类单元用于分析从r语言接口单元输入的基于r语言的输入数据,对输入数据中要对其进行硬件计算的fpga分类数据进行分类获得fpga分类数据;
15.代码分析/数据分类单元将fpga分类数据传送到fpga接口单元,fpga接口单元用于将fpga分类数据输出到fpga处理模块;
16.fpga处理模块接收从fpga接口单元输出的fpga分类数据,并且执行fpga操作以处理fpga分类数据获得fpga处理数据;
17.fpga处理模块将fpga处理数据输出到fpga接口单元,fpga接口单元接收fpga处理数据并将其传输到代码分析/数据分类单元;
18.代码分析/数据分类单元接收与fpga分类数据的对应的fpga处理数据,并将接收到的fpga处理数据传送到r语言接口单元;
19.r语言接口单元将fpga处理数据返回到r语言处理设备;
20.所述fpga处理模块包括卷积处理fpga,该卷积处理fpga连接外部存储器,外部存储器用于存储输入特征谱、权重参数数据以及卷积处理fpga输出的图像处理结果;
21.卷积处理fpga包括:片上存储器,其用于存储从外部存储器接收的输入特征谱以及权重参数数据,至少包括用于存储输入特征谱的图像存储模块以及用于存储权重参数数据的权重存储模块;
22.选择单元,其用于从片上存储器选择待运算的输入特征谱以及权重参数数据,并将待运算的输入特征谱以及权重参数数据输入加速核进行运算;
23.加速核,其包括一个以上的n个pe运算单元,每个pe运算单元包括一个特征缓存、一个权重缓存以及一个乘法器,特征缓存用于缓存从选择单元接收的输入特征;
24.权重缓存用于缓存从选择单元接收的权重参数;
25.乘法器用于对输入特征以及权重参数进行乘法运算;
26.选择单元从片上存储器选择卷积运算所需的输入特征以及权重参数,并将输入特征以及权重参数分别输入n个pe运算单元;
27.pe运算单元的乘法器分为一个以上的s个时段进行运算,在一个时段输入对应于卷积核一个位置上的通道维度上的权重参数以及对应于该卷积核的位置的输入特征谱上对应位置的通道维度上的输入特征。
28.进一步地,所述fpga处理模块包括统计处理fpga;
29.统计处理fpga包括平均值计算单元、偏差计算单元、方差计算单元、解释性功率计算单元、四分位数计算单元和离群值计算单元,其中,
30.平均值计算单元用于在fpga分类数据中计算需要统计处理的统计数据的平均值;
31.偏差计算单元用于通过平均值计算单元的平均值计算偏差;
32.方差计算单元用于通过平均值计算单元的平均值和偏差计算单元的偏差来计算方差;
33.复相关系数计算单元用于通过平均值计算单元计算出的平均值和方差计算单元计算出的方差进行回归分析,以计算出复相关系数;
34.四分位数计算单元用于对统计数据进行排序,以计算与对齐之后的25%,50%,75%和100%中的每个百分位数相对应的四分位数;
35.离群值计算单元用于使用统计数据和四分位值的四分位距来计算与离群值相对应的fpga处理数据。
36.进一步地,所述复相关系数的值域[0,1]。
[0037]
进一步地,所述四分位数指的是按大小顺序排列数据并将累积百分比除以四而获得的每个点相对应的值,第一四分位数是与25%的累积百分比相对应的分数,第二四分位数是与50%的累积百分比相对应的分数,第三四分位数是75%,第四四分位数是100%的分数。
[0038]
进一步地,所述离群值计算单元用于使用统计数据和四分位值的四分位距来计算与离群值相对应的fpga处理数据包括:
[0039]
计算离群值,最小离群值为q1-k(q3-q1),其中,q1为第一四分位数,q3为第三四分位数;
[0040]
最大离群值为q3 k(q3-q1),其中,q1为第一四分位数,q3为第三四分位数;
[0041]
k为1.5;
[0042]
保留最小离群值与最大离群值之间的统计数据作为fpga处理数据。
[0043]
进一步地,所述离群值计算单元用于使用统计数据和四分位值的四分位距来计算与离群值相对应的fpga处理数据包括:
[0044]
计算离群值,最小离群值为q1-k(q3-q1),其中,q1为第一四分位数,q3为第三四分位数;
[0045]
最大离群值为q3 k(q3-q1),其中,q1为第一四分位数,q3为第三四分位数;
[0046]
k为1.5;
[0047]
保留最小离群值与最大离群值之间的统计数据作为fpga处理数据。
[0048]
进一步地,所述fpga处理模块包括搜索处理fpga;
[0049]
所述搜索处理fpg包括搜索分布式处理单元和多个搜索单元,其中,
[0050]
搜索分配处理单元用于在fpg分类数据中分配并执行需要搜索处理的搜索数据;搜索分配处理单元分别将搜索词分配给多个搜索单元;
[0051]
搜索分配处理单元用于在同一搜索单元中分配不同的搜索词,或者在不同的搜索单元中分配相同的搜索词;
[0052]
搜索单元用于搜索由搜索分布处理单元分配的搜索数据,并输出fpg处理数据。
[0053]
进一步地,所述fpga处理模块包括对齐处理fpga;
[0054]
所述对齐处理的fpga包括多个对齐单元a和一个最终对齐单元b,其中,
[0055]
多个对齐单元a用于针对fpga分类数据之中的关于需要对准处理的对准数据,根据给定的对准元件执行平行对准处理;
[0056]
最终对准单元b用于通过收集在多个对齐单元a中已经对其进行了并行对准处理的数据来执行最终对准处理,并输出fpga处理数据。
[0057]
一种基于fpga的聚类算法的加速系统的设计方法,包括以下步骤:
[0058]
步骤s1,r语言/fpga接口模块的r语言接口单元基于来自r语言处理设备的r语言来处理大数据,接收代码和数据,并且基于r语言的代码和数据被发送到r语言/fpga接口模块的代码分析/数据分类单元;
[0059]
步骤s2,r语言/fpga专用接口模块的代码分析/数据分类单元分析从r语言接口单元输入的基于r语言的输入数据,对输入数据中要对其进行硬件计算的fpga分类数据进行分类获得fpga分类数据;
[0060]
步骤s3,r语言/fpga专用接口模块的fpga接口单元将分类的fpga分类数据传送到fpga处理模块;
[0061]
步骤s4,fpga处理模块通过对从fpga接口单元接收的fpga分类数据执行fpga运算来计算fpga处理数据,并将计算出的fpga处理数据发送至fpga接口单元;
[0062]
步骤s5,fpga接口单元接收fpga处理数据,并将其发送至代码分析/数据分类单元;
[0063]
步骤s6,代码分析/数据分类单元接收fpga处理数据,并将接收到的fpga处理数据传送到r语言接口单元;
[0064]
步骤s7,r语言接口单元接收fpga处理数据,并将其输出到r语言处理设备。
[0065]
本发明的有益效果在于:
[0066]
本发明通过一起使用硬件和软件来提高大数据的处理速度并提高效率。对于经常引用的诸如搜索、统计和排序之类的变量并频繁执行相同的重复计算的过程通过fpga处理模块执行这些重复处理,由于在fpga处理模块中执行诸如重复搜索和排序之类的处理,所以可以更容易地执行其余的操作和处理,有效的提高r语言处理设备的处理效率,降低数据处理的总耗时。
附图说明
[0067]
图1是基于fpga的聚类算法的加速系统的整体模块示意图;
[0068]
图2是本发明的实施例的统计处理fpga的模块示意图;
[0069]
图3是本发明实施例的搜索处理fpga的模块示意图;
[0070]
图4是本发明实施例的对齐处理fpga的模块示意图;
[0071]
图5是本发明实施例的卷积处理fpga的模块示意图;
[0072]
图6是本发明实施例的3x3卷积运算过程图一;
[0073]
图7是本发明实施例的3x3卷积运算过程图二;
[0074]
图8是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第1时段进行的卷积运算示意图;
[0075]
图9是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第2时段进行的卷积运算示意图;
[0076]
图10是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第3时段进行的卷积运算示意图;
[0077]
图11是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第4时段进行的卷积运算示意图;
[0078]
图12是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第5时段进行的卷积运算示意图;
[0079]
图13是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第6时段进行的卷积运算示意图;
[0080]
图14是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第7时段进行的卷积运算示意图;
[0081]
图15是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第8时段进行的卷积运算示意图;
[0082]
图16是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为1时,第9时段进行的卷积运算示意图;
[0083]
图17是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第1时段进行的卷积运算示意图;
[0084]
图18是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第2时段进行的卷积运算示意图;
[0085]
图19是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第3时段进行的卷积运算示意图;
[0086]
图20是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第4时段进行的卷积运算示意图;
[0087]
图21是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第5时段进行的卷积运算示意图;
[0088]
图22是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第6时段进行的卷积运算示意图;
[0089]
图23是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第7时段进行的卷积运算示意图;
[0090]
图24是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第8时段进行的卷积运算示意图;
[0091]
图25是本发明实施例的将3x3卷积转化成1x1卷积,卷积核的移动步长为2时,第9
时段进行的卷积运算示意图;
[0092]
图26是本发明实施例的基于fpga的聚类算法的加速系统的设计方法的流程示意图。
[0093]
图中:基于fpga的聚类算法的加速系统100,r语言处理设备200,r语言/fpga专用接口模块110,r语言接口单元111,代码分析/数据分类单元112,fpga接口单元113,fpga处理模块120,统计处理fpga121,平均值计算单元121a,偏差计算单元121b,方差计算单元121c,复相关系数计算单元121d,4分位数计算单元121e,离群值计算单元121f,搜索处理fpga122,搜索分布式处理单元122a,搜索单元122b,对齐处理fpga123,对齐单元123a,最终对准单元123b,卷积处理fpga124,外部存储器125,片上存储器124a,图像存储模块1241a,权重存储模块1242a,选择单元124b,加速核124c,特征缓存1241d,权重缓存1242d,乘法器1243d,加法器124e,结果缓存器124f,激活函数模块124g,片上缓存器124h。
具体实施方式
[0094]
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
[0095]
如图1所示,在本实施例中提供了基于fpga的聚类算法的加速系统100,该基于fpga的聚类算法的加速系统100连接r语言处理设备200,r语言处理设备200是基于r语言处理大数据的软件。
[0096]
r语言主要提供用于统计计算和图形的软件环境,其具有开源的特性。在大数据处理中需要对其进行硬件加速,在本发明中,采用fpga硬件加速的方式。
[0097]
基于fpga的聚类算法的加速系统100包括r语言/fpga专用接口模块110和fpga处理模块120,其中,
[0098]
r语言/fpga专用接口模块110用于连接fpga处理模块120以及r语言处理设备200;用于在r语言处理设备200和fpga处理模块120之间执行数据处理或代码执行。
[0099]
具体的,
[0100]
r语言/fpga专用接口模块110包括r语言接口单元111,代码分析/数据分类单元112和fpga接口单元113。
[0101]
r语言/fpga专用接口模块110从由软件组成的r语言处理单元200接收代码和数据,并且在由硬件组成的fpga处理模块120中对要处理的代码和数据进行分类,并将其传送给fpga处理模块120。另外,其被配置为将由fpga处理模块120处理的数据和相应的代码返回给r语言处理设备200。
[0102]
r语言接口单元111从r语言处理设备200接收基于r语言的代码和数据,以用于处理大数据。
[0103]
r语言处理设备200以诸如c语言的计算机语言编码,并且将其转换为要执行的r语
言。r语言处理设备200本身被配置为执行大数据的处理和操作。
[0104]
上述,r语言接口单元111用于将从r语言处理设备200接收的代码和数据发送到代码分析/数据分类单元112。
[0105]
代码分析/数据分类单元112用于分析从r语言接口单元111输入的基于r语言的输入数据,对输入数据中要对其进行硬件计算的fpga分类数据进行分类获得fpga分类数据。
[0106]
fpga分类数据可以是重复的操作数据,该重复的操作数据在大数据操作和处理(例如主要是分类,统计和搜索)中重复执行多次。在大数据分析算法中,有许多处理操作,例如统计,搜索和排序,这些操作只是无数次重复并承担了很多工作。通过使用作为硬件的fpga处理模块120而不使用作为软件的r语言处理设备200来快速地处理这种代码的操作。
[0107]
另一方面,代码分析/数据分类单元112将fpga分类数据传送到fpga接口单元113,fpga接口单元113用于将fpga分类数据输出到fpga处理模块120。
[0108]
fpga处理模块120接收从fpga接口单元113输出的fpga分类数据,并且执行fpga操作以处理fpga分类数据获得fpga处理数据。
[0109]
以下为结果的逆向传输过程,fpga处理模块120将fpga处理数据输出到fpga接口单元113,fpga接口单元113接收fpga处理数据并将其传输到代码分析/数据分类单元112。
[0110]
代码分析/数据分类单元112接收与fpga分类数据的对应的fpga处理数据,并将接收到的fpga处理数据传送到r语言接口单元111。
[0111]
r语言接口单元111将fpga处理数据返回到r语言处理设备200。
[0112]
由r语言处理设备200进行剩余的数据处理运算,基于fpga的硬件加速并行运算,整体提高运算处理效率。
[0113]
如图2所示,根据本发明实施例的统计处理fpga 121包括平均值计算单元121a、偏差计算单元121b、方差计算单元121c、解释性功率计算单元121d、四分位数计算单元121e和离群值计算单元121f,其中,
[0114]
平均值计算单元121a用于在fpga分类数据中计算需要统计处理的统计数据的平均值。
[0115]
当统计数据为时,按以下公式1计算平均值。
[0116]
偏差计算单元121b用于通过平均值计算单元121a的平均值计算偏差。可以按照下面的公式2计算偏差。
[0117]
分别计算偏差
[0118]
方差计算单元121c用于通过平均值计算单元121a的平均值和偏差计算单元121b的偏差来计算方差。可以按照下面的公式3计算方差。
[0119]
复相关系数计算单元121d用于通过计算出的平均值和计算出的进行回归分析,以计算出复相关系数,进一步训练最优回归模型。
[0120]
复相关系数r定义为:
[0121]
[0122]
为总的偏差平方和,为回归平方和;
[0123]
其中为第i个因变量回归值;
[0124]
对于一个回归模型,基于方差xs和平均值即可计算复相关系数r,可用于判断同一组统计数据的多个线性回归模型的优劣。
[0125]
r方为复相关系数r的平方,叫判定系数,也称拟合优度或决定系数,用于表示拟合得到的模型能够解释因变量变化的百分比。r方越接近1,表示回归模型拟合效果越好。若r方等于0.732则代表该回归模型中自变量能够解释模型变化的73.2%。在此,r方为0≤r方≤1。
[0126]
四分位数计算单元121e用于对统计数据进行排序,以计算与对齐之后的25%,50%,75%和100%中的每个百分位数相对应的四分位数。
[0127]
四分位数指的是按大小顺序排列数据并将累积百分比除以四而获得的每个点相对应的值(把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数)。第一四分位数是与25%的累积百分比相对应的分数,第二四分位数是与50%的累积百分比相对应的分数,第三四分位数是75%,第四四分位数是100%的分数。特别地,由于累积百分比为50%,因此第二个四分位数在概念上等于中值。
[0128]
在这里,中位数实际上是中位数50%的位置。
[0129]
当中位数是偶数时,它可以是两个,并且其平均值可以是中位数。对于奇数,中位数为1。
[0130]
离群值计算单元121f用于使用统计数据和四分位值的四分位距来计算与离群值相对应的fpga处理数据。
[0131]
离群值是指偏离特定数据变量的分布的值。
[0132]
最小离群值:q1-k(q3-q1);
[0133]
最大离群值:q3 k(q3-q1)
[0134]
k=1.5(中度异常)
[0135]
k=3(极度异常)
[0136]
当数值大于》最大估计值或数值小于《最小估计值,都记为异常。
[0137]
如图3所示,根据本发明实施例的搜索处理fpga 122包括搜索分布式处理单元122a和多个搜索单元122b,其中,
[0138]
搜索分配处理单元122a用于在fpga分类数据中分配并执行需要搜索处理的搜索数据。搜索分配处理单元122a分别将搜索词分配给多个搜索单元122b。
[0139]
搜索分配处理单元122a用于在同一搜索单元122b中分配不同的搜索词,或者在不同的搜索单元122b中分配相同的搜索词。
[0140]
搜索单元122b用于搜索由搜索分布处理单元122a分配的搜索数据,并输出fpga处理数据。
[0141]
如图4所示,根据本发明实施例的对齐处理fpga 123包括多个对齐单元123a和一个最终对齐单元123b,其中,
[0142]
多个对齐单元123a用于针对fpga分类数据之中的关于需要对准处理的对准数据,根据给定的对准元件执行平行对准处理。
[0143]
最终对准单元123b用于通过收集在多个对齐单元123a中已经对其进行了并行对准处理的数据来执行最终对准处理,并输出fpga处理数据。在这种情况下,数据越多,步骤就越多。
[0144]
如图5所示,根据本发明实施例的卷积处理fpga124,该卷积处理fpga124连接外部存储器125,外部存储器125用于存储输入特征谱、权重参数数据以及卷积处理fpga124输出的图像处理结果;
[0145]
卷积处理fpga124包括:
[0146]
片上存储器124a,其用于存储从外部存储器125接收的输入特征谱以及权重参数数据,至少包括用于存储输入特征谱(也称为特征图像)的图像存储模块1241a以及用于存储权重参数数据的权重存储模块1242a;
[0147]
选择单元124b,其用于从片上存储器124a选择待运算的输入特征谱以及权重参数数据,并将待运算的输入特征谱以及权重参数数据输入加速核124c进行运算;
[0148]
对于本发明的数据组织结构采用通道维度上的向量形式,也即对应于一个通道维度存在一个向量,一个向量包含n个数;
[0149]
对应于片上存储器124a的存储规则来说,片上存储器124a的一个存储地址对应一个通道维度的向量;
[0150]
例如对于存储图像数据的图像存储模块1241a(5
×
5的特征谱)来说举例如下:
[0151]
地址0,存储p1位置v1,v2,...,vn的n个数据(p1_v1,p1_v2,...,p1_vn);
[0152]
地址1,存储p2位置v1,v2,...,vn的n个数据(p2_v1,p2_v2,...,p2_vn);
[0153]
地址2,存储p3位置v1,v2,...,vn的n个数据(p3_v1,p3_v2,...,p3_vn);
[0154]
地址3,存储p4位置v1,v2,...,vn的n个数据(p4_v1,p4_v2,...,p4_vn);
[0155]
地址4,存储p5位置v1,v2,...,vn的n个数据(p5_v1,p5_v2,...,p5_vn);
[0156]
地址5,存储p6位置v1,v2,...,vn的n个数据(p6_v1,p6_v2,...,p6_vn);
[0157]
地址6,存储p7位置v1,v2,...,vn的n个数据(p7_v1,p7_v2,...,p7_vn);
[0158]
地址7,存储p8位置v1,v2,...,vn的n个数据(p8_v1,p8_v2,...,p8_vn);
[0159]
地址8,存储p9位置v1,v2,...,vn的n个数据(p9_v1,p9_v2,...,p9_vn);
[0160]
地址9,存储p10位置v1,v2,...,vn的n个数据(p10_v1,p10_v2,...,p10_vn);
[0161]
地址10,存储p11位置v1,v2,...,vn的n个数据(p11_v1,p11_v2,...,p11_vn);
[0162]
地址11,存储p12位置v1,v2,...,vn的n个数据(p12_v1,p12_v2,...,p12_vn);
[0163]
地址12,存储p13位置v1,v2,...,vn的n个数据(p13_v1,p13_v2,...,p13_vn);
[0164]
地址13,存储p14位置v1,v2,...,vn的n个数据(p14_v1,p14_v2,...,p14_vn);
[0165]
地址14,存储p15位置v1,v2,...,vn的n个数据(p15_v1,p15_v2,...,p15_vn);
[0166]
地址15,存储p16位置v1,v2,...,vn的n个数据(p16_v1,p16_v2,...,p16_vn);
[0167]
地址16,存储p17位置v1,v2,...,vn的n个数据(p17_v1,p17_v2,...,p17_vn);
[0168]
地址17,存储p18位置v1,v2,...,vn的n个数据(p18_v1,p18_v2,...,p18_vn);
[0169]
地址18,存储p19位置v1,v2,...,vn的n个数据(p19_v1,p19_v2,...,p19_vn);
[0170]
地址19,存储p20位置v1,v2,...,vn的n个数据(p20_v1,p20_v2,...,p20_vn);
[0171]
地址20,存储p21位置v1,v2,...,vn的n个数据(p21_v1,p21_v2,...,p21_vn);
[0172]
地址21,存储p22位置v1,v2,...,vn的n个数据(p22_v1,p22_v2,...,p22_vn);
[0173]
地址22,存储p23位置v1,v2,...,vn的n个数据(p23_v1,p23_v2,...,p23_vn);
[0174]
地址23,存储p24位置v1,v2,...,vn的n个数据(p24_v1,p24_v2,...,p24_vn);
[0175]
地址24,存储p25位置v1,v2,...,vn的n个数据(p25_v1,p25_v2,...,p25_vn);
[0176]
当然的,还包括其他用于存储此次卷积运算未使用到的图像数据的地址;
[0177]
例如对于存储权重参数数据的权重存储模块1242a(3
×
3的卷积核)来说举例如下:
[0178]
地址0,存储k1位置w1,w2,...,wn的n个数据(k1_w1,k1_w2,...,k1_wn);
[0179]
地址1,存储k2位置w1,w2,...,wn的n个数据(k2_w1,k2_w2,...,k2_wn);
[0180]
地址2,存储k3位置w1,w2,...,wn的n个数据(k3_w1,k3_w2,...,k3_wn);
[0181]
地址3,存储k4位置w1,w2,...,wn的n个数据(k4_w1,k4_w2,...,k4_wn);
[0182]
地址4,存储k5位置w1,w2,...,wn的n个数据(k5_w1,k5_w2,...,k5_wn);
[0183]
地址5,存储k6位置w1,w2,...,wn的n个数据(k6_w1,k6_w2,...,k6_wn);
[0184]
地址6,存储k7位置w1,w2,...,wn的n个数据(k7_w1,k7_w2,...,k7_wn);
[0185]
地址7,存储k8位置w1,w2,...,wn的n个数据(k8_w1,k8_w2,...,k8_wn);
[0186]
地址8,存储k9位置w1,w2,...,wn的n个数据(k9_w1,k9_w2,...,k9_wn);
[0187]
当然的,还包括其他用于存储此次卷积运算未使用到的权重参数数据的地址;
[0188]
加速核124c,其包括一个以上的n个pe运算单元,每个pe运算单元包括一个特征缓存1241d、一个权重缓存1242d以及一个乘法器1243d,特征缓存1241d用于缓存从选择单元124b接收的输入特征;
[0189]
权重缓存1242d用于缓存从选择单元124b接收的权重参数;
[0190]
乘法器1243d用于对输入特征以及权重参数进行乘法运算;
[0191]
如图6-7所示为传统的3x3的卷积核的卷积运算过程;
[0192]
如图8-16所示,在本实施例中,相当于将一个3x3卷积核转化为9个1x1的卷积核,卷积核的移动步长为1时,总共分成9个时段进行。在第1时段使用卷积核中k1位置的通道维度上的向量作为权重参数输入(如图6所示在“k1”对应的通道维度上n个数分别输入n个并行乘法器1243d,对应于权重存储模块1242a的地址0的向量)。在使用3x3卷积运算时,该权重参数只与输入特征谱的部分矩形区域有重叠,因此,只需要从特征缓存1241d依次输出与该权重参数重叠的通道维度上特征向量(如图6所示,图像存储模块1241a地址0、1、2、5、6、7、10、11、12的向量),如图6所示时段1的特征区域。
[0193]
以此类推,如图所示,将卷积核其他8个位置的权重参数和与其重叠的特征区域分离出来。
[0194]
为了适应不同的卷积移动步长,只需要简单的更换取数地址的逻辑控制即可实现。如图17-25所示,当卷积核的移动步长为2时,只要改变选择单元124b从片上存储器124a读取向量的地址即可,无需复杂的逻辑控制,也不会降低运算效率。同理,对于其他不同的移动步长也只需要改变读取向量的地址即可
[0195]
具体的,对应于上述的卷积处理fpga124,本实施例提供一种基于fpga实现的图像识别方法包括以下步骤:
[0196]
步骤s221,片上存储器124a将从外部存储器125接收输入特征谱以及权重参数数据;
[0197]
步骤s222,选择单元124b从片上存储器124a选择卷积运算所需的输入特征以及权重参数,并将输入特征以及权重参数分别输入n个pe运算单元;
[0198]
选择单元124b将输入特征以及权重参数按照乘法器1243d的运算时段分为s个时段的输入特征以及权重参数;
[0199]
并按照时段顺序输入pe运算单元的特征缓存1241d以及权重缓存1242d;
[0200]
步骤s223,pe运算单元的乘法器1243d分为一个以上的s个时段进行运算,在一个时段输入对应于卷积核一个位置上的通道维度上的权重参数以及对应于该卷积核的位置的输入特征谱上对应位置(像素)的通道维度上的输入特征;
[0201]
步骤s224,加法器124e将n个pe运算单元的乘法运算结果进行累加获得输出特征谱;
[0202]
所述s个时段的最后一个时段累加获得的累加计算结果作为输出特征谱存储到外部存储器125,可以作为输入特征谱重新进行卷积运算。
[0203]
具体的,在第s个时段,n个pe运算单元输出n个乘法运算结果,加法器124e将n个pe运算单元输出的n个乘法运算结果相加获得单时段计算结果;
[0204]
加法器124e在第s个时段,将第s个时段获得的单时段计算结果与第s个时段之前的运算获得的单时段计算结果累加获得累加计算结果,s个时段的最后一个时段累加获得的累加计算结果作为输出特征谱;
[0205]
在本实施例中,特征缓存1241d以及权重缓存1242d可以采用移位寄存器,将s个时段的数据根据时钟移位输出对应时段的输入特征以及权重参数。
[0206]
在本实施例中,卷积处理fpga124还包括结果缓存器124f,加法器124e所计算的单时段计算结果以及累加计算结果缓存到结果缓存器124f;
[0207]
结果缓存器124f的另一个功能是用于实现卷积核更换部分权重参数的减少运算量,例如卷积核仅更换k1位置的通道维度上的向量,也即仅更换k1位置的权重参数;
[0208]
由于其他位置的权重参数并未更换,全部进行新的一次卷积运算浪费算力,在此只需要进行一个时段的运算(一个时段进行一个卷积核的位置的权重参数对应的乘法,如果更换了小于s的a个位置的更换,则进行a个时段的运算),仅输入对应于卷积核k1位置上的通道维度上的权重参数以及对应于该卷积核的位置的输入特征谱上对应位置(像素)的通道维度上的输入特征;
[0209]
加法器124e对该时段的运算相加获得一个单时段计算结果,将该单时段计算结果与结果缓存器124f中缓存的对应于k2-k9的时段的单时段计算结果累加即可获得新的一次卷积运算结果。
[0210]
可选的,卷积处理fpga124还包括激活函数模块124g以及片上缓存器124h,其用于进行激活函数运算;神经网络中激活函数采用激活函数模块124g进行运算,本设计的激活函数支持目前比较常用的relu和leak relu的功能;
[0211]
片上缓存器124h用于缓存激活函数模块124g输出的运算结果,并输出到片外存储器。
[0212]
如图26所示,基于fpga的聚类算法的加速系统设计方法,包括以下步骤:
[0213]
步骤s1,r语言/fpga接口模块110的r语言接口单元111基于来自r语言处理设备200的r语言来处理大数据,接收代码和数据,并且基于r语言的代码和数据被发送到r语言/fpga接口模块110的代码分析/数据分类单元112。
[0214]
步骤s2,r语言/fpga专用接口模块110的代码分析/数据分类单元112分析从r语言接口单元111输入的基于r语言的输入数据,对输入数据中要对其进行硬件计算的fpga分类数据进行分类获得fpga分类数据。
[0215]
步骤s3,r语言/fpga专用接口模块110的fpga接口单元113将分类的fpga分类数据传送到fpga处理模块120。
[0216]
步骤s4,fpga处理模块120通过对从fpga接口单元113接收的fpga分类数据执行fpga运算来计算fpga处理数据,并将计算出的fpga处理数据发送至fpga接口单元113。
[0217]
步骤s5,fpga接口单元113接收fpga处理数据,并将其发送至代码分析/数据分类单元112;
[0218]
步骤s6,代码分析/数据分类单元112接收fpga处理数据,并将接收到的fpga处理数据传送到r语言接口单元111;
[0219]
步骤s7,r语言接口单元111接收fpga处理数据,并将其输出到r语言处理设备200。
[0220]
这里,统计处理fpga 121的平均值计算单元121a计算fpga分类数据当中需要进行统计处理的统计数据的平均值,统计处理fpga 121的偏差计算单元121b计算偏差。
[0221]
方差计算单元121c用于通过平均值计算单元121a的平均值和偏差计算单元121b的偏差来计算方差;
[0222]
4分位数计算单元121e对统计数据进行排序,计算出分别对应于25%,50%,75%和100%的四分位数,离群值计算单元121f通过使用统计数据和四分位数来计算与离群值相对应的fpga处理数据的四分位距(iqr)。
[0223]
并且,搜索处理fpga 122的搜索分配处理单元122a在fpga分类数据中分配并执行搜索处理所需的搜索数据,搜索单元122b用于搜索由搜索分布处理单元122a分配的搜索数据,并输出fpga处理数据。
[0224]
并且,多个对齐单元123a用于针对fpga分类数据之中的关于需要对准处理的对准数据,根据给定的对准元件执行平行对准处理。
[0225]
最终对准单元123b用于通过收集在多个对齐单元123a中已经对其进行了并行对准处理的数据来执行最终对准处理,并输出fpga处理数据。
[0226]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本实施例各个实施例的方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献