【技术实现步骤摘要】
—种基于OpenCL的KNN-GPU加速方法
本专利技术涉及基于OpenCL平台的GPU并行加速领域,具体涉及一种基于OpenCL的KNN分类的GPU加速新方法。
技术介绍
K 最近邻(K-Nearest Neighbor,简称 KNN)算法最初由 Cover 和 Hart 于 1968 年提出,随后得到广泛深入的分析和研究,该算法是一种基于类比学习的算法,对于未知的或者符合正态分布的样本可以获得较高的分类精度,并且具有鲁棒性、方法简单等优点。KNN算法的基本思想是:假设每一个类包含多个样本数据,而且每个数据都有一个唯一的类标记表示这些样本类别,分别计算每个样本数据到待分类数据的距离,取和待分类数据最近的k各样本数据,根据这k个近邻的类别确定待分类样本归属。KNN分类是一种基于要求的或懒惰的学习方法,它存放所有的训练样本,直到测试样本需要分类时才建立分类。如果数据量比较小,KNN算法还是有客观的速度的。而当与测试样本比较的训练样本较大时,会招致很高的计算开销。在大型的分类系统中,训练文本集的规模是非常庞大的,倘若与其中的每个文本都进行相似度计算,其耗时代价是令人无法接受的。因此如何提高KNN算法的效率也成为了研究的重点,本专利技术就是为解决计算耗时的问题而提出的。OpenCL (Open Computing Language)是一个基于异构平台上编程的开放性行业标准。OpenCL所支持的平台可由CPU、GPU或其他类型的处理器组成,同时OpenCL提供了基于任务和基于数据两种并行计算机制,极大扩展到了 GPU的应用范围。
技术实现思路
本专利技术的 ...
【技术保护点】
一种基于OpenCL的KNN‑GPU加速方法,如图1所示,其特征在于基于OpenCL平台的并行化处理,具体步骤如下:步骤1:初始化OpenCL平台:首先获取OpenCL平台信息,接着获取设备ID,最后创建设备运行环境的上下文;步骤2:设备端的存储配置操作:CPU端配置三个存储器:1是用于存储输入训练数据,2是用于存储输入测试数据,3是用于存储输出分类数据;GPU端则从对应的存储器中读取数据;步骤3:配置GPU设备端的测试数据和训练数据:按照GPU设备端分配线程数,设置工作组的大小,工作项的大小和数据维度的大小,据此建立测试数据和训练数据的索引空间,用于之后的计算;步骤4:GPU端的KNN算法:在设置完KNN算法内核函数参数后, 内核函数将被调度在GPU上并行计算,得到测试数据的距离和所属的分类;步骤5:CPU端的存储配置操作:GPU端的计算处理完成后,需要把设备内存中的分类计算的结果传回到CPU,完成数据的输出;步骤6:确定测试点的类别;根据GPU端的计算结果,判定测试的所属的类别。
【技术特征摘要】
1.一种基于OpenCL的KNN-GPU加速方法,如图1所示,其特征在于基于OpenCL平台的并行化处理,具体步骤如下: 步骤1:初始化OpenCL平台:首先获取OpenCL平台信息,接着获取设备ID,最后创建设备运行环境的上下文; 步骤2:设备端的存储配置操作:CPU端配置三个存储器:1是用于存储输入训练数据,2是用于存储输入测试数据,3是用于存储输出分类数据;GPU端则从对应的存储器中读取数据; 步骤3:配置GPU设备端的测试数据和训练数据:按照GPU设备端分配线程数,设置工作组的大小,工作项的大小和数据维度的大小,据此建立测试数据和训练数据的索引空间,用于之后的计算; 步骤4 =GPU端的KNN算法:在设置完KNN算法内核函数参数后,内核函数将被调度在GPU上并行计算,得到测试数据的距离和所属的分类; 步骤5:CPU端的存储配置操作:GPU端的计算处理完成后,需要把设备内存中的分类计算的结果传回到CPU,完成数据的输出; 步骤6:确定测试点的类别;根据GPU端的计算结果,判定测试的所...
【专利技术属性】
技术研发人员:余小清,周艺圆,万旺根,叶轩楠,
申请(专利权)人:上海大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。