当前位置: 首页 > 专利查询>梧州学院专利>正文

一种基于GPU的八叉树并行快速KNN检索方法及系统技术方案

技术编号:37705646 阅读:12 留言:0更新日期:2023-06-01 23:54
本发明专利技术公开一种基于GPU的八叉树并行快速KNN检索方法及系统,包括:构建八叉树并确定每一层所包含的节点后,把节点信息以数组形式独立进行存储,并各自对应于一个线程;获取子节点邻居表信息,建立节点邻居表;获得层数据结构信息,根据节点邻居表中的层偏移量数组得到八叉树所需的存储空间,并将层数据结构信息依次拷贝到八叉树中;通过标准点的坐标信息,在八叉树中进行迭代查找,找到标准点所在的节点并获得搜索半径;搜索在搜索半径范围内所有搜索方向的所有节点,并生成节点搜索列表;将节点搜索列表中各节点所包含的点合并到一个新的搜索列表中;根据新的搜索列表中节点包含点的信息生成点搜索列表,从中找出离目标点最近的前K个点。的前K个点。的前K个点。

【技术实现步骤摘要】
一种基于GPU的八叉树并行快速KNN检索方法及系统


[0001]本专利技术涉及数据算法
,具体涉及一种基于GPU的八叉树并行快速KNN检索方法及系统。

技术介绍

[0002]近年来数据分类技术已经被广泛应用于各类问题中,作为最重要的分类算法之一,KNN算法也被广泛使用。KNN算法,即最近邻算法,是由Cover和Hartzai于1968年提出的一种较好的分类算法。该方法的思路非常简单直观:在一个大的样本库中,如果某一个样本的某些特征符合并属于大部分样本的特征,那么该样本即属于这个样本库,换句话说就是物以类聚。该算法在分类的过程中只依靠它最近的一个或者多个样本。KNN最近邻算法属于监督学习算法,主要应用于未知事物的分类,其判别思想为:样本属于距离最近的一类,同时具有该类所具有的特征。KNN算法是一种基于实例的分类方法,即输入一个未知的样本,然后找出距离该样本最近的K个样本,判断这K个样本所属类别,该未知样本即属于该类,K近邻分类其实是一种较为懒惰的算法。K最近邻法在实际使用中,大部分都是基于GPU进行计算。
[0003]针对在指定的三维空间内为一个特定的点查找距离最近的K个点的问题,现有基于GPU的KNN算法在线程发散以及连续内存访问等方面性能不足,从而导致不能很好地发挥出GPU多线程并行运算的优势。

技术实现思路

[0004]为了克服现有技术的不足,本专利技术提供一种基于GPU的八叉树并行快速KNN检索方法及系统,用于解决现有基于GPU的KNN算法在线程发散以及连续内存访问等方面性能不足的技术问题,从而达到在进行KNN检索时能充分利用GPU进行多线程并行运算的目的。
[0005]为解决上述问题,本专利技术所采用的技术方案如下:
[0006]一种基于GPU的八叉树并行快速KNN检索方法,包括以下步骤:
[0007]从上至下逐层构建八叉树,确定所述八叉树每一层所包含的节点后,把每一层的节点信息以数组形式独立进行存储,并将每个所述数组和每个所述节点各自对应于一个线程;
[0008]通过兄弟节点和父节点邻居表获取子节点邻居表信息,建立节点邻居表;
[0009]将在构建所述八叉树中使用的层数据结构的有用信息进行提取和合并,获得层数据结构信息,根据所述节点邻居表中的层偏移量数组得到所述八叉树所需的存储空间,并将所述层数据结构信息依次拷贝到所述八叉树中;
[0010]提供一标准点,并通过所述标准点的坐标信息,在八叉树中进行迭代查找,找到所述标准点所在的节点,并根据所述节点的信息获得搜索半径;
[0011]搜索在所述搜索半径范围内所有搜索方向的所有节点,并生成不同搜索方向下的节点搜索列表;
[0012]将所述不同搜索方向下的节点搜索列表中各节点所包含的点合并到一个新的搜索列表中;
[0013]根据所述新的搜索列表中节点所包含点的信息生成点搜索列表,并在所述点搜索列表中找出离目标点最近的前K个点;
[0014]其中,所述节点信息包括节点序号和节点的坐标,所述不同搜索方向下的节点搜索列表中无重复节点。
[0015]作为本专利技术优选的实施方式,在建立节点邻居表时,包括:
[0016]获取所述父节点邻居表上中下三层的偏移量,通过一for循环,循环n1次,每次循环同时获取所述父节点邻居表的上中下三层在z轴投影的方向邻居;
[0017]通过获取缺失邻居的起始方向以及子节点所在上层和下层的位置来确定不同层兄弟节点邻居的缺失位置,并进行一for循环,在n2次循环中,按逆时针方向依次对中层、上层以及下层的邻居进行补全后,获取子节点正z轴方向的兄弟节点邻居方向,找全所有兄弟节点;
[0018]通过分析子节点在上下两层的哪一层来确定子节点z轴方向缺失邻居的位置,在获取需访问的父节点z轴邻居位置和子节点缺失的邻居起始位置后,通过for循环,循环n3次,从起始方向开始,逆时针方向依次得到缺失邻居的信息,并根据所述缺失邻居的信息,得到子节点正z轴方向的邻居信息。
[0019]作为本专利技术优选的实施方式,在生成不同搜索方向下的节点搜索列表时,包括:
[0020]采用宽度优先搜索算法,并规定每个方位负责不同的搜索方向和范围,通过对所有搜索方向进行延伸,找全搜索半径范围内的所有节点,并将搜索到的节点纳入对应搜索方向的搜索列表中,最终生成所述不同搜索方向下的节点搜索列表。
[0021]作为本专利技术优选的实施方式,在将搜索到的节点纳入搜索列表时,包括:
[0022]将原子操作函数作为各线程的通信工具,利用所述原子操作函数判断搜索到的节点是否已经被纳入所述搜索列表,若是,则不纳入所述搜索到的节点。
[0023]作为本专利技术优选的实施方式,在规定每个方位负责不同的搜索方向和范围时,包括:
[0024]根据搜索方向的特征将所有搜索方向分为斜角搜索方向和正搜索方向;
[0025]根据所述节点邻居表三层结构的特征再将所述斜角搜索方向和所述正搜索方向分为中层斜角搜索方向、上层和下层斜角搜索方向、中层正搜索方向、上层和下层正搜索方向;
[0026]在所述上层正搜索方向和所述下层正搜索方向中再划分出一个z轴搜索方向。
[0027]作为本专利技术优选的实施方式,在规定每个方位负责不同的搜索方向和范围时,还包括:
[0028]所述中层斜角搜索方向以所述中层斜角方向为主搜索路线,搜索所在节点的中层斜角方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径;
[0029]以中层斜角方向对应的前一个中层的正方向和后一个中层的正方向为辅搜索方向,搜索所述所在节点在所述辅搜索方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径并且访问的节点未被标记已访问。
[0030]作为本专利技术优选的实施方式,在规定每个方位负责不同的搜索方向和范围时,还
包括:
[0031]所述上层和下层斜角搜索方向以上层和下层斜角方向为主搜索路线,搜索所在节点的上层和下层斜角方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径;
[0032]以中层斜角方向为一辅搜索方向,以对应正z轴方向为另一辅搜索方向;
[0033]搜索所述所在节点在所述一辅搜索方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径;
[0034]搜索所述所在节点在所述另一辅搜索方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径并且访问的节点未被标记已访问;
[0035]所述中层正搜索方向以中层正方向为主搜索路线,搜索所在节点的中层正方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径并且访问的节点未被标记已访问。
[0036]作为本专利技术优选的实施方式,在规定每个方位负责不同的搜索方向和范围时,还包括:
[0037]所述上层和下层正搜索方向以上层和下层正方向为主搜索路线,搜索所在节点的上层和下层正方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径;...

【技术保护点】

【技术特征摘要】
1.一种基于GPU的八叉树并行快速KNN检索方法,其特征在于,包括以下步骤:从上至下逐层构建八叉树,确定所述八叉树每一层所包含的节点后,把每一层的节点信息以数组形式独立进行存储,并将每个所述数组和每个所述节点各自对应于一个线程;通过兄弟节点和父节点邻居表获取子节点邻居表信息,建立节点邻居表;将在构建所述八叉树中使用的层数据结构的有用信息进行提取和合并,获得层数据结构信息,根据所述节点邻居表中的层偏移量数组得到所述八叉树所需的存储空间,并将所述层数据结构信息依次拷贝到所述八叉树中;提供一标准点,并通过所述标准点的坐标信息,在八叉树中进行迭代查找,找到所述标准点所在的节点,并根据所述节点的信息获得搜索半径;搜索在所述搜索半径范围内所有搜索方向的所有节点,并生成不同搜索方向下的节点搜索列表;将所述不同搜索方向下的节点搜索列表中各节点所包含的点合并到一个新的搜索列表中;根据所述新的搜索列表中节点所包含点的信息生成点搜索列表,并在所述点搜索列表中找出离目标点最近的前K个点;其中,所述节点信息包括节点序号和节点的坐标,所述不同搜索方向下的节点搜索列表中无重复节点。2.根据权利要求1所述的基于GPU的八叉树并行快速KNN检索方法,其特征在于,在建立节点邻居表时,包括:获取所述父节点邻居表上中下三层的偏移量,通过一for循环,循环n1次,每次循环同时获取所述父节点邻居表的上中下三层在z轴投影的方向邻居;通过获取缺失邻居的起始方向以及子节点所在上层和下层的位置来确定不同层兄弟节点邻居的缺失位置,并进行一for循环,在n2次循环中,按逆时针方向依次对中层、上层以及下层的邻居进行补全后,获取子节点正z轴方向的兄弟节点邻居方向,找全所有兄弟节点;通过分析子节点在上下两层的哪一层来确定子节点z轴方向缺失邻居的位置,在获取需访问的父节点z轴邻居位置和子节点缺失的邻居起始位置后,通过for循环,循环n3次,从起始方向开始,逆时针方向依次得到缺失邻居的信息,并根据所述缺失邻居的信息,得到子节点正z轴方向的邻居信息。3.根据权利要求1所述的基于GPU的八叉树并行快速KNN检索方法,其特征在于,在生成不同搜索方向下的节点搜索列表时,包括:采用宽度优先搜索算法,并规定每个方位负责不同的搜索方向和范围,通过对所有搜索方向进行延伸,找全搜索半径范围内的所有节点,并将搜索到的节点纳入对应搜索方向的搜索列表中,最终生成所述不同搜索方向下的节点搜索列表。4.根据权利要求3所述的基于GPU的八叉树并行快速KNN检索方法,其特征在于,在将搜索到的节点纳入搜索列表时,包括:将原子操作函数作为各线程的通信工具,利用所述原子操作函数判断搜索到的节点是否已经被纳入所述搜索列表,若是,则不纳入所述搜索到的节点。5.根据权利要求3所述的基于GPU的八叉树并行快速KNN检索方法,其特征在于,在规定
每个方位负责不同的搜索方向和范围时,包括:根据搜索方向的特征将所有搜索方向分为斜角搜索方向和正搜索方向;根据所述节点邻居表三层结构的特征再将所述斜角搜索方向和所述正搜索方向分为中层斜角搜索方向、上层和下层斜角搜索方向、中层正搜索方向、上层和下层正搜索方向;在所述上层正搜索方向和所述下层正搜索方向中再划分出一个z轴搜索方向。6.根据权利要求5所述的基于GPU的八叉树并行快速KNN检索方法,其特征在于,在规定每个方位负责不同的搜索方向和范围时,还包括:所述中层斜角搜索方向以所述中层斜角方向为主搜索路线,搜索所在节点的中层斜角方向延伸的节点,直至访问的节点与标准点的最短距离不小于搜索半径;以中层斜角方向对应的前一个中层的正方向和后一个中层的正方向为辅搜索方向,搜索所述所在节点在所述辅搜索方向延伸的节点,直至访问的节点与标准点的...

【专利技术属性】
技术研发人员:农健何希陈佳黄宏本庞光垚朱肖颖吕美妮庞安隆徐健
申请(专利权)人:梧州学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1