一种基于OpenCL与SoC-FPGA的K近邻分类加速方法

文档序号:8543494阅读:404来源:国知局
一种基于OpenCL与SoC-FPGA的K近邻分类加速方法
【技术领域】
[0001]本发明涉及一种基于SoC-FPGA新型异构计算系统的K近邻分类技术的加速方法。
【背景技术】
[0002]K近邻算法作为二十世纪十大经典数据挖掘算法之一,以其精确、简单、有效等优点被广泛应用于文本分类、模式识别、图像及空间分类等领域。K近邻算法基于懒惰学习,其基本思想是在已知训练集中找到距离每个待分类样本最邻近的K个参考样本,根据这K个参考样本中最多的类别决定待分类样本的类别。然而K近邻算法中涉及大量计算,特别当与待分类样本比较的训练集样本较大时,会带来很大的计算开销。在大型分类系统中,训练集规模往往非常庞大,相应的计算资源和存储资源消耗都非常大,分类速度已成为K近邻分类技术走向实用的一个瓶颈,如何对K近邻分类过程加速是目前该领域研宄的一个难题。
[0003]随着现代电子技术的飞速发展,处理器的运算速度越来越快,近年来对K近邻分类加速的研宄主要集中于基于GPU、FPGA等硬件加速方法上。FPGA拥有丰富的逻辑资源、算法模块和嵌入式硬核模块,以全数据流的形式进行处理,使用硬件以空间上并行的方法提升算法速度,适用于K近邻分类技术中待分类样本与训练集样本的相似度计算以及K近邻样本的查找。利用FPGA实现对K近邻分类技术进行加速是该领域的重要研宄方向。
[0004]经过现有的技术文献检索发现,利用FPGA加速K近邻分类技术的文章采取的实现方式存在开发周期长、跨平台移植性差、不适于多处理器异构平台协同加速等不足。2012 年,Hanaa M.Hussain 等在 NASA/ESA Conference on Adaptive Hardwareand Systems (AHS)上发表文章《An Adaptive Implementat1n of a DynamicallyReconfigurable K-Nearest Neighbour Classifier on FPGA)),米用动态局部重构的方法在FPGA上实现了 K近邻分类技术的加速,但他采用的开发方式基于传统的VHDL/Verilog硬件编程语言,开发复杂度大,研发周期长,且研发程序只能在FPGA上使用,无法移植到其他架构的处理器上。
[0005]2008年,Apple公司提出了第一个面向异构系统通用目的并行编程的开放式免版税标准,全称Open Computing Language (OpenCL),即开放式计算语言。OpenCL适用于不同处理器的协同并行计算,其支持的异构协处理器包括CPU、GPU、DSP等,代码通用性强,能轻松在不同设备端进行移植。2011年,Altera公司发布了 FPGA的OpenCL标准开发计划,并于2013年推出了基于OpenCL框架的FPGA产品,将跨平台并行编程标准OpenCL扩展到了 FPGA领域。
[0006]在编程模式上,FPGA执行程序全部采用类C/C++风格的OpenCL语言开发,开发简便,修改灵活,能大大缩短研发周期,减少产品维护和升级的研发成本;另一方面,新方法基于OpenCL架构,代码可以实现跨平台快速移植,适合扩展和应用于多处理器异构平台的协同加速之中。同时,由于FPGA设备的精细粒度体系结构,编译只生成所需的逻辑结构,降低了系统能耗,达到了高性能低功耗计算的目的。

【发明内容】

[0007]本发明的目的在于克服现有技术的不足,提供一种基于SoC-FPGA新型异构计算系统的K近邻分类技术的加速方法,解决现有技术的K近邻算法存在的运算量大、占用硬件资源多、功耗大和系统时延大等问题。
[0008]本发明的目的是通过以下技术方案来实现的:一种基于OpenCL与SoC-FPGA的K近邻分类加速方法,它包括以下步骤:
51:在OpenCL编程架构下,构建ARM主机端和FPGA设备端协作的SoC-FPGA异构平台模型,所述的ARM主机端与FPGA设备端通过AXI片内总线连接;
52:在ARM主机端构建控制作用的OpenCL主机程序,所述的主机程序对环境参数进行配置,确定设备端平台以及完成平台初始化工作;
53:ARM主机端的主机程序创建内核并且完成ARM主机端与FPGA设备端的内存分配,向内存中写入数据,通过参数传递的方式完成主机端与设备端的内存映射;
54:ARM主机端的主机程序配置FPGA设备端的内核程序,并且调用FPGA设备端的内核程序,将训练集数据和待分类数据经过SoC的AXI片内总线传输至FPGA设备端,其中,所述的训练集数据存储在全局内存中,所述的待分类数据存储在局部内存中;
55:FPGA设备端包括至少两个OpenCL内核程序;所述的OpenCL内核程序核包括第一内核程序和第二内核程序;所述的第一内核程序负责并行地计算每个待分类数据距离每个训练集数据的欧氏距离,产生距离矩阵,并将数据传输至第二内核程序进行处理;
56:FPGA设备端的第二内核程序对距离矩阵的每一行进行不完全排序,筛选出每行的最小K个距离,并找到相应的训练集元素类型,传回ARM主机端处理;
57:ARM主机端将找到的训练集元素类型进行类别统计,以频率最高的类别对待分类数据进行归类,完成整个K近邻分类过程。
[0009]步骤S6中所述的排序为并行冒泡排序。
[0010]一种基于OpenCL与SoC-FPGA的K近邻分类加速方法还包括一个释放内核与内存资源步骤S8:在步骤S7完成之后,释放所有内核与内存资源。
[0011]步骤S4所述的配置FPGA设备端的内核程序包括配置工作组组数、工作组大小以及计算单元维度。
[0012]本发明的有益效果是:
(I)本发明根据K近邻算法的可并行化特性,运用OpenCL标准,实现K近邻分类算法的FPGA并行优化,并在ARM主机端和FPGA设备端形成系统级流水,能更好地处理具有大量分支跳转结构的程序,使得硬件资源得到充分利用,解决现有技术的基于OpenCL标准的异构系统单纯用设备端实现加速,没有考虑挖掘主机端计算潜力的问题。
[0013](2)本发明采用的SoC-FPGA系统由两部分子系统构成,分别为ARM架构子系统和FPGA架构子系统,由于两个系统集成在同一块芯片上,AXI片内总线高带宽特性将大大缩短主机与设备的通信时延,相比传统的GPU-CPU异构模式,系统时延更小,数据吞吐量更高;该方法不仅提升了 K近邻算法的执行速度,而且相比传统的GPU异构计算系统,本发明功耗更低,获得了更高的能量效率。
[0014](3)本发明通过合理配置计算位置,实现数据计算优化:根据K近邻分类算法的任务分配,计算密集度高且适合并行的距离矩阵计算以及距离排序部分以内核程序形式在FPGA端执行,类别统计以及分类等轻计算量且不易并行的部分在ARM端执行。
[0015](4)由于FPGA设备的精细粒度体系结构,编译只生成所需的逻辑结构,降低了系统能耗,达到了高性能低功耗计算的目的。
[0016](5)本发明通过合理配置数据存放的方式,实现数据访存优化=OpenCL标准所提供的内存模型包括全局内存、本地内存以及私有内存等,由于全局内存拥有资源多但访问速度慢,而本地内存访问速度快但资源较少,将数据量相对较少的待分类数据存储至本地内存,将数据量较大训练集数据存储至全局内存。
[0017](6)采用OpenCL标准开发,系统可移植性强,兼容性强。
[0018](7) FPGA执行程序全部采用类C/C++风格的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1