CN108874799B - 高速并行数据查找方法 - Google Patents
高速并行数据查找方法 Download PDFInfo
- Publication number
- CN108874799B CN108874799B CN201710320330.2A CN201710320330A CN108874799B CN 108874799 B CN108874799 B CN 108874799B CN 201710320330 A CN201710320330 A CN 201710320330A CN 108874799 B CN108874799 B CN 108874799B
- Authority
- CN
- China
- Prior art keywords
- leaf
- query
- parallel
- buffer
- querier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种高速并行数据查找方法。首先为充分发挥硬件设备的并行处理能力,构建基于brute force的并行查询器;离线阶段将train集(查询数据集)应用KD树进行划分,由leaf节点构建label集;在线阶段对query集分批先送入上层并行查询器查询label集,结果缓存到leaf_buffer,随后对已满leaf_buffer使用下层并行查询器。利用这种分层查找结构,实现了对大量数据的高效并行查找,可以广泛应用于数据挖掘领域。
Description
技术领域
本发明涉及一种高速并行数据查找方法,属于数据挖掘领域。
背景技术
为了加快对数据的在线查找速度,目前已有方法包括局部敏感哈希、各种树、随机森林方法等。这些方法在离线阶段对查询数据集(train集)建立能够表达数据在数据空间分布特点的模型,在线阶段利用模型提供的已知信息加快查找速度,这样的模型可能是数学表达式、树形结构或网状结构。KD树方法通过建立树形的连接关系大幅减少了在线查询时数据距离的计算次数,从而提高了速度,在基于CPU的近邻查找应用中被广泛使用。
今年来,GPU和FPGA等并行运算设备得到了广泛运用和飞速发展。基于GPU实现的brute force数据查找相对CPU实现有显著效果提升,数据距离计算次数多是该方法速度提升的主要瓶颈。一些人探索将GPU并行能力与KD树的优势结合起来,然而GPU设备的应用强调大量数据处理步骤的高度的一致性,KD树则强调对不同的数据采用不同的处理,这一本质分歧最终导致传统的KD树方法的并行化实现在查询阶段出现分支,导致执行效率低、速度慢。
发明内容
针对上述技术不足,本发明提供一种高速并行数据查找方法。该方法可以充分利用GPU、FPGA等硬件设备的并行运算能力并利用KD树减少数据距离计算次数,从而实现速度的提高。
本发明解决其技术问题所采用的技术方案是:高速并行数据查找方法,包括以下步骤:
离线阶段:分割train集,并创建label集;
在线阶段:通过多层并行查询器查label集、train集的子集,实现数据查找。
所述离线阶段包括将train集划分成多个节点,由每个节点内的数据子集train_leaf生成label集。
所述将train集划分成多个节点具体为基于KD树将train集划分成多个leaf节点。
所述并行查询器为基于brute force方法的并行查询器。
所述并行查询器的结果包括RNN和/或KNN的一个或多个。
所述在线阶段:先用上层的并行查询器查label集,结果缓存到节点缓存leaf_buffer,对已满的leaf_buffer采用下层的并行查询器查train集的子集。
所述在线阶段包括以下步骤:
步骤(1):首先将query集分批,每批处理q_num个query;
步骤(2):为每个label分配一个节点缓存leaf_buffer,大小为b_num=q_num+b_thres,b_thres为设定值,用于存放query的索引;
步骤(3):将该批query与label集应用上层的并行查询器查找结果,并将结果推送到leaf_buffer内;
步骤(4):查询所有leaf_buffer;如果leaf_buffer内个数超过_thres,则执行步骤(5),否则执行步骤(3);
步骤(5):对于每个leaf_buffer内个数超过b_thres的leaf_buffer,根据其内索引获取到query的子集query_buffer,将其与train的子集train_leaf应用下层的并行查询器查找KNN,将当前获得的局部的结果更新到最终所需全局的结果内。
本发明具有以下有益效果及优点:
1.本发明方法提出的分层并行化的思想可以发挥出并行运算设备的并行运算优势,在解决数据查找问题上获得大幅的速度提升,可以广泛应用于数据挖掘领域。
2.本发明方法提出的分层并行化的思想具备扩展性,可以划分更多层次用以解决大数据的数据查找问题。
3.本发明采用多层并行查询器,实现在查询阶段不出现分支,并行快速,执行效率高。
附图说明
图1是离线阶段流程图;
图2是在线阶段流程图;
图3是处理leaf_buffer流程图;
图4是train集和query集分布示意图;
图5是train集KD树划分示意图;
图6是生成label集示意图;
图7是query集查询label集示意图;
图8是query_buffer查询train_leaf示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
高速并行数据查找方法,包括以下步骤:构建基于brute force方法的并行查询器;由train集创建label集;分层查询,先用上层并行查询器查label集,再用下层并行查询器查train集的子集。
构建基于brute force方法的并行查询器,包含RNN(查找半径R范围内的全部或部分近邻)和KNN中(查找距离查询点最近的前K个近邻或近似结果)的一种或多种,K取值大于等于1。
由train集创建label集,可以但不限定为基于KD树将train集划分到多个leaf节点,对leaf节点内的数据子集train_leaf求取中心,以此作为标签label。如果需要半径R,可以取所有数据子集与中心的最远距离的平均值的一定倍数作为半径R。由每个叶节点内的数据子集train_leaf生成label集。
分层查询,先用上层并行查询器查label集,再用下层并行查询器查train集的子集,可以但不限定为如下步骤:
步骤(1):首先将query集分批,比如每批处理q_num个query。
步骤(2):为每个label分配一个leaf_buffer,大小为b_num=q_num+b_thres个int型,用于存放query的索引。
步骤(3):将该批query与label集应用并行查询器查找RNN(或KNN),将结果推送到leaf_buffer内。
步骤(4):查询所有leaf_buffer,如果leaf_buffer内个数查过b_thres(意味再次运行步骤三可能产生溢出)则执行步骤(5),否则执行步骤(3)。
步骤(5):对于每个leaf_buffer内个数超过b_thres的leaf_buffer,根据其内索引获取到query的子集query_buffer,将其与train的子集train_leaf应用并行查询器查找KNN(或RNN),将当前获得的局部的结果更新到最终所需全局的结果内。
数据查找问题根据实际应用需求可以分为RNN、KNN查找等。以下以查找单个最近结果即1NN为例进行说明,其步骤也适合其他问题。该问题的描述为:已知train(训练数据)集和query(查询数据)集,针对每个query数据在train集中查找距离最近的train数据,将train数据的标号存入index集,train数据和query数据的距离存入dist集。其中train集为d维,n个数据;query集为d维,m个数据;index集为1维,m个数据,存放最近train数据的索引;dist集为1维,m个数据,存放最近距离;query数据与index和dist结果一一对应。
对于任意给定的train集和query集,其可能的分布如图4所示(以二维空间描述作示意),任取一个query数据,为了在train集中查找最近的train数据,需要与每个train数据计算距离,即brute force方法。
如图5所示,将train集先进行KD树划分,将空间距离近的train数据放入叶子节点中,在线查询时,根据树的结构进行条件判断,最终对于单个query数据只需要查询部分叶子节点就可以得到绝对或近似的最近邻结果,因此KD树方法可以实现数据查找的提速,而KD树方法中包含的条件判断导致在用GPU等并行设备实现时产生分支,效率低、速度慢。
为了解决该问题,我们提出了分层并行化查找方法,该方法通过在离线阶段建立KD树划分,减小单个query的查找空间,在在线阶段通过两层基于brute force的并行查询器,用leaf_buffer缓存中间结果,避免了KD树查询产生分支的问题,提高了查询速度。
在离线阶段,如图1所示,首先对train集进行KD树划分,将train集划分为多个leaf节点,每个leaf节点内数据个数不超过leaf_n个,存入train_leaf(叶节点内的训练数据子集)中,如图5所示;然后取每个leaf节点的中心为label,leaf内train数据与label的最大距离为半径,生成label集,如图6所示。label集远远小于train集,任取一个query数据,先通过查询label集确定是否有必要查询对应的leaf下的train数据子集,可以有效减少查找空间,对label集的查询可以应用基于brute force方法的并行查询器,提高查询速度。
在在线阶段,如图2所示,因为buffer空间有限需要对query集进行分批处理,每批处理q_num(1024)个query个,用每批query与label集应用并行查询器查询RNN,将结果推送入leaf_buffer(叶节点缓存)内,之后处理leaf_buffer。每个leaf都有一个leaf_buffer,其大小为b_num=q_num+b_thres(b_thres=512),用于存放query的索引。Leaf_buffer将需要查询该leaf的所有query缓存起来,当query数量足够多时一起进行并行查询,从而实现提速。如图7所示,当query数据与label数据的距离相近时,意味着该leaf下的train_leaf集可能含有该query数据的最近邻结果,所以将query的标号记入该leaf的leaf_buffer内,最终leaf_buffer内会记录许多query标号,这些query数据往往在空间中有相邻关系,都需要查询该leaf的train_leaf集。
如图3所示,当处于将query全部处理完毕的最后一个循环内时,需要处理所有leaf_buffer内的全部query索引生成query_buffer即送入下层并行查询器的query_buffer(查询数据子集),否则每次只取出b_thres个query索引进行处理(生成query_buffer),当处理完b_thres个query后,leaf_buffer内的query的索引个数减少b_thres个。取query_buffer与leaf内的train_leaf应用并行查询器查询最近邻,如图8所示,获取该leaf节点下指定query的局部最近邻结果。在初始化阶段用最大距离和无效索引初始化index集和dist集作为全局结果。局部最近邻结果代表该query在该leaf下的最近邻结果,当该局部最近邻结果优于全局最近邻结果时,即距离更小,则用局部最近邻结果更新全局最近邻结果,当程序执行完毕,index集和dist集内数据即是问题的解。
Claims (6)
1.高速并行数据查找方法,其特征在于包括以下步骤:
离线阶段:分割train集,并创建label集;
在线阶段:通过多层并行查询器查label集、train集的子集,实现数据查找;所述在线阶段包括以下步骤:
步骤(1):首先将query集分批,每批处理q_num个query;
步骤(2):为每个label分配一个节点缓存leaf_buffer,大小为b_num=q_num+b_thres,b_thres为设定值,用于存放query的索引;
步骤(3):将每批query与label集应用上层的并行查询器查找结果,并将结果推送到leaf_buffer内;
步骤(4):查询所有leaf_buffer;如果leaf_buffer内个数超过_thres,则执行步骤(5),否则执行步骤(3);
步骤(5):对于每个leaf_buffer内个数超过b_thres的leaf_buffer,根据其内索引获取到query的子集query_buffer,将其与train的子集train_leaf应用下层的并行查询器查找KNN,将当前获得的局部的结果更新到最终所需全局的结果内。
2.根据权利要求1所述的高速并行数据查找方法,其特征在于所述离线阶段包括将train集划分成多个节点,由每个节点内的数据子集train_leaf生成label集。
3.根据权利要求2所述的高速并行数据查找方法,其特征在于所述将train集划分成多个节点具体为基于KD树将train集划分成多个leaf节点。
4.根据权利要求1所述的高速并行数据查找方法,其特征在于所述并行查询器为基于brute force方法的并行查询器。
5.根据权利要求1或4所述的高速并行数据查找方法,其特征在于所述并行查询器的结果包括RNN和/或KNN的一个或多个。
6.根据权利要求1所述的高速并行数据查找方法,其特征在于所述在线阶段:先用上层的并行查询器查label集,结果缓存到节点缓存leaf_buffer,对已满的leaf_buffer采用下层的并行查询器查train集的子集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710320330.2A CN108874799B (zh) | 2017-05-09 | 2017-05-09 | 高速并行数据查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710320330.2A CN108874799B (zh) | 2017-05-09 | 2017-05-09 | 高速并行数据查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874799A CN108874799A (zh) | 2018-11-23 |
CN108874799B true CN108874799B (zh) | 2021-11-30 |
Family
ID=64287454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710320330.2A Active CN108874799B (zh) | 2017-05-09 | 2017-05-09 | 高速并行数据查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874799B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015002481A1 (ko) * | 2013-07-03 | 2015-01-08 | 아주대학교산학협력단 | 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
CN104699701A (zh) * | 2013-12-05 | 2015-06-10 | 深圳先进技术研究院 | 基于敏感哈希的并行最邻近节点计算方法及分布式系统 |
CN105404889A (zh) * | 2014-08-21 | 2016-03-16 | 英特尔公司 | 用于在图形处理单元(gpu)上实现最近邻搜索的方法和装置 |
CN105589951A (zh) * | 2015-12-18 | 2016-05-18 | 中国科学院计算机网络信息中心 | 一种海量遥感影像元数据分布式存储方法及并行查询方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055563B (zh) * | 2016-05-19 | 2019-06-25 | 福建农林大学 | 一种基于网格划分的并行空间查询方法及其系统 |
CN106407408B (zh) * | 2016-09-22 | 2019-08-16 | 北京数字绿土科技有限公司 | 一种海量点云数据的空间索引构建方法及装置 |
-
2017
- 2017-05-09 CN CN201710320330.2A patent/CN108874799B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015002481A1 (ko) * | 2013-07-03 | 2015-01-08 | 아주대학교산학협력단 | 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 |
CN104699701A (zh) * | 2013-12-05 | 2015-06-10 | 深圳先进技术研究院 | 基于敏感哈希的并行最邻近节点计算方法及分布式系统 |
CN105404889A (zh) * | 2014-08-21 | 2016-03-16 | 英特尔公司 | 用于在图形处理单元(gpu)上实现最近邻搜索的方法和装置 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
CN105589951A (zh) * | 2015-12-18 | 2016-05-18 | 中国科学院计算机网络信息中心 | 一种海量遥感影像元数据分布式存储方法及并行查询方法 |
Non-Patent Citations (3)
Title |
---|
基于KD树划分的云计算DBSCAN优化算法;陈广胜,程逸群,景维鹏;《计算机工程》;20170415;第43卷(第4期);全文 * |
基于KD树和R树的多维云数据索引;何婧,吴跃,杨帆等;《计算机应用》;20141110;第34卷(第11期);第0章,第2.1节 * |
高效KD树并行算法优化;李天驹,张铮,张为华;《计算机系统应用》;20150112;第24卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108874799A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776685B2 (en) | Image retrieval method based on variable-length deep hash learning | |
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN107209853B (zh) | 定位和地图构建方法 | |
Wen et al. | Exploiting GPUs for efficient gradient boosting decision tree training | |
CN110134714B (zh) | 适用于大数据迭代计算的分布式计算框架缓存索引方法 | |
KR20130020050A (ko) | 로컬리티 센서티브 해시의 버킷 구간 관리 장치 및 그 방법 | |
US20120011144A1 (en) | Aggregation in parallel computation environments with shared memory | |
Lu et al. | Massive point cloud space management method based on octree-like encoding | |
CN106156331A (zh) | 冷热温数据服务器系统及其处理方法 | |
US11948086B2 (en) | Accelerated embedding layer computations | |
CN106095920B (zh) | 面向大规模高维空间数据的分布式索引方法 | |
CN105357247B (zh) | 基于分层云对等网络的多维属性云资源区间查找方法 | |
CN110321064A (zh) | 用于神经网络的计算平台实现方法及系统 | |
CN111860340A (zh) | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 | |
CN111966678A (zh) | 一种有效提升gpu上b+树检索效率的优化方法 | |
CN111368995B (zh) | 一种基于序列推荐系统的通用网络压缩框架和压缩方法 | |
CN108052535A (zh) | 基于多处理器平台的视觉特征并行快速匹配方法和系统 | |
Chen et al. | Parallelnn: A parallel octree-based nearest neighbor search accelerator for 3d point clouds | |
CN108874799B (zh) | 高速并行数据查找方法 | |
Ueda et al. | A dynamically reconfigurable equi-joiner on FPGA | |
Tanaka et al. | Efficient logic architecture in training gradient boosting decision tree for high-performance and edge computing | |
Heinrich et al. | Hybrid FPGA approach for a B+ tree in a semantic web database system | |
Zhao et al. | Scalable nearest neighbor search based on KNN graph | |
US20170293658A1 (en) | Partition aware evaluation of top-n queries | |
CN113505825B (zh) | 一种图计算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |