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

文档序号:8543494阅读:来源:国知局
OpenCL语言开发,开发简便,修改灵活,能大大缩短研发周期,减少产品维护和升级的研发成本。
【附图说明】
[0019]图1为本发明的方法流程图;
图2为FPGA设备端第一内核程序内核的工作组示意图;
图3为FPGA设备端第二内核程序的工作组示意图;
图4为FPGA设备端第二内核程序的并行冒泡排序示意图;
图5为系统流水示意图。
【具体实施方式】
[0020]下面结合附图进一步详细描述本发明的技术方案:
本方法的流程如图1所示,其中ARM为主机端,通过AXI总线与FPGA设备端相连,AXI片内总线高带宽特性将大大缩短主机与设备的通信时延,提高系统吞吐量。根据K近邻分类算法的任务分配,计算密集度高且适合并行的距离矩阵计算以及距离排序部分以内核程序形式在FPGA端执行,类别统计以及分类等轻计算量且不易并行的部分在ARM端执行。
[0021]OpenCL标准所提供的内存模型包括全局内存、本地内存以及私有内存等,由于全局内存拥有资源多但访问速度慢,而本地内存访问速度快但资源较少,将数据量相对较少的待分类数据存储至本地内存,将数据量较大训练集数据存储至全局内存。本发明通过合理配置数据存放的方式,实现数据访存优化。
[0022]在整个系统中,ARM主机端管理整个平台上的所有计算资源,主机端程序通过定义上下文以及队列管理内核程序。与传统基于SIMD (Single Instruct1n Multiple Data)并行实现方式的异构计算系统不同,本设计所采用的SoC-FPGA利用流水线实现并行,能更好地处理具有大量分支跳转结构的程序。
[0023]一种基于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内核程序核包括第一内核程序和第二内核程序;所述的第一内核程序负责并行地计算每个待分类数据距离每个训练集数据的欧氏距离,计算空间如图2所示,产生距离矩阵,并将数据传输至第二内核程序进彳丁处理;
56:FPGA设备端的第二内核程序接受第一内核程序产生的距离矩阵,并对距离矩阵的每一行进行不完全排序,计算空间如图3所示;对于距离矩阵中的每行数据,设计并行冒泡算法实现K个数据的部分排序,过程中将数据加载到本地内存,维护一个长度为2*K的比较队列,如图4所示,直至筛选出每行的K个最小数据,并记录其对应训练集元素的类型,形成一个宽度为K的类型矩阵,数据通过AXI总线传回ARM主机端;
57:ARM主机端的主机程序统计类型矩阵中每行数据中各类别数量,得到各种类型的出现频率;
58:ARM端主机程序根据出现频率最大的类别确定待分类数据的类别,确定待分类数据的类型。至此完成了整个K近邻分类过程。
[0024]S9:在上述步骤完成后,释放所有内核与内存资源。
[0025]由于ARM主机端与FPGA设备端独立承担K近邻分类算法中的不同计算环节,步骤S5、步骤S6、步骤S7和步骤S8由于任务的计算时间相仿,本设计采用系统级流水形式实现多任务并行,流水示意图如图5所示。
【主权项】
1.一种基于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近邻分类过程。
2.根据权利要求1所述的一种基于OpenCL与SoC-FPGA的K近邻分类加速方法,其特征在于:步骤S6中所述的排序为并行冒泡排序。
3.根据权利要求1所述的一种基于OpenCL与SoC-FPGA的K近邻分类加速方法,其特征在于:它还包括一个释放内核与内存资源步骤S8:在步骤S7完成之后,释放所有内核与内存资源。
4.根据权利要求1所述的一种基于OpenCL与SoC-FPGA的K近邻分类加速方法,其特征在于:步骤S4所述的配置FPGA设备端的内核程序包括配置工作组组数、工作组大小以及计算单元维度。
【专利摘要】本发明公开了一种基于OpenCL与SoC-FPGA的K近邻分类加速方法,它包括以下步骤:S1:构建SoC-FPGA异构平台模型;S2:在ARM主机端构建控制作用的OpenCL主机程序;S3:ARM主机端的主机程序创建内核;S4:ARM主机端配置并调用FPGA设备端的内核程序,将数据传输至FPGA设备端;S5:第一内核程序负责计算待分类数据距离训练集数据的欧氏距离,产生距离矩阵;S6:第二内核程序对距离矩阵的每一行进行不完全排序,筛选出每行的最小K个距离,并找到对应的训练集元素类型,传回ARM主机端处理;S7:ARM主机端进行类别统计并归类。本发明运用OpenCL标准,实现K近邻分类算法的FPGA并行优化,并在ARM端和FPGA端形成系统级流水,相比传统的GPU异构计算系统,本发明功耗更低,获得了更高的能量效率。
【IPC分类】G06F9-50, G06F9-38
【公开号】CN104866286
【申请号】CN201510294882
【发明人】蒲宇亮, 黄乐天, 彭军, 贺江
【申请人】电子科技大学
【公开日】2015年8月26日
【申请日】2015年6月2日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1