[发明专利]一种基于GPU加速的超空间哈希索引方法有效
申请号: | 202010835717.3 | 申请日: | 2020-08-19 |
公开(公告)号: | CN112000845B | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 谷峪;任卓;李传文;李芳芳;于戈 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/245 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu 加速 空间 索引 方法 | ||
1.一种基于GPU加速的超空间哈希索引方法,其特征在于,包括如下步骤:
步骤1:以链表作为处理GPU中哈希冲突的方式,构建超空间哈希数据结构,包括:
步骤1.1:针对存储在GPU的key-value数据库中的n个数据,将所有数据的值value中查询频率大于预设频率H的属性抽离出来,记为次要属性A1,A2,…,Ai…,Ap,i=1,2,…,p,p表示可索引的次要属性的总个数,Ai表示抽离出来的第i个次要属性;
步骤1.2:根据GPU数据访问方式,构造每个存储数据的数据元组形式,定义第j个元组表示为{keyj,A1j,A2j,…Aij,…,Apj,valuej},其中,keyj表示第j个元组中的键,Aij表示第j个元组中的第i个次要属性,valuej表示第j个元组中的位置ID或值,j=1,2,…,n;
步骤1.3:并行构建超空间哈希数据结构,包括:
步骤1.3.1:根据抽离得到的p个次要属性,将GPU存储空间表示为一个p+1维空间,其中维度轴与元组的属性一一对应;
步骤1.3.2:将每个元组的每个属性值散列到对应轴上的一个确定位置,从而映射到存储空间中的一个确定性坐标,得到每个属性值的坐标值,则每个元组中第i个次要属性值在对应哈希桶的坐标为xi+1,每个元组中键key在对应哈希桶的坐标为x1;
步骤1.3.3:利用GPU的多线程任务处理方式,将n个数据同时定位到对应的哈希桶中,并存储在哈希桶对应的链表结构中,链表结构由超级节点连接而成,超级节点结构由键节点、属性节点、值节点构成,其中键节点、属性节点、值节点统称为基本节点,所述超级节点具体表示为:根据预设的基本节点的存储容量M,确定每个超级节点存储的元组数量其中size(key)表示键key的字节数,m个数据中的所有键key存储在同一个键节点中,m个数据抽离出的所有第i个次要属性值存储在同一个属性i节点中,m个数据中的所有值value存储在同一个值节点中,链表中的每个基本节点通过指针链接到下一个基本节点;
步骤2:对于超空间哈希数据结构,分类查询任务,合并查询路径,并行实现批量的键key、次要属性的索引查询;
步骤3:对于超空间哈希数据结构,并行实现批量数据的插入;
步骤4:对于超空间哈希数据结构,并行实现批量数据的修改,维护数据的一致性;
步骤5:对于超空间哈希数据结构,并行实现批量数据的删除。
2.根据权利要求1所述的一种基于GPU加速的超空间哈希索引方法,其特征在于,所述步骤2包括:
步骤2.1:定义通过哈希函数得到的查询属性Ai的坐标为a,判断每个哈希桶中坐标xi+1的位置是否为a,如果xi+1等于a,则将查询任务添加到对应哈希桶的任务队列中TQi,完成对哈希桶标号的分类,通过GPU的不同线程组执行不同的子任务;
步骤2.2:将每个哈希桶的任务队列中查询相同属性的任务分为同一个组,完成对查询类型的预组合,并将同一个哈希桶中同一个分组的任务分配给GPU的同一个线程组的线程执行;
步骤2.3:当需要执行查询操作时,GPU从超空间哈希数据结构读取哈希桶的坐标,一个线程组的线程同时检查当前超级节点中存储的数据是否等于需要查询的目标数据,如果查询到的数据等于目标数据,则返回结果并将任务标记为解决;否则,GPU的每个线程读取地址单元标记的指针,并根据指针查找下一个链表节点,直到查找完当前链表中的所有超级节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010835717.3/1.html,转载请声明来源钻瓜专利网。