[发明专利]用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索有效
申请号: | 202011336853.4 | 申请日: | 2020-11-25 |
公开(公告)号: | CN112835627B | 公开(公告)日: | 2023-10-03 |
发明(设计)人: | 赵炜捷;谭树龙;李平 | 申请(专利权)人: | 百度(美国)有限责任公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F15/80;G06F16/903 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司 11204 | 代理人: | 王达佐;王艳春 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 指令 多线程 多数 类型 处理器 近似 最近 邻域 搜索 | ||
1.一种计算机实施的方法,所述方法用于在给定包括表示点的顶点和表示邻域顶点的边缘的近似图的情况下,使用一个或多个单指令多线程或单指令多数据类型处理器对查询点执行近似最近邻域搜索,所述方法包括:
用来自所述近似图的默认起始顶点初始化二进制最小堆作为第一优先队列并初始化哈希表,所述第一优先队列按照距离对顶点进行升序排序;
构造空的二进制最大堆作为第二优先队列;
响应于所述第一优先队列不为空:
从所述第一优先队列中提取顶点及所述顶点到所述查询点的距离;
当所述第二优先队列已满时,响应于所提取的顶点到所述查询点的距离差于所述第二优先队列中的顶点候选项,不将所提取的顶点添加到所述第二优先队列;
响应于所提取的顶点到所述查询点的距离不差于所述第二优先队列中的至少一个顶点候选项,或者响应于所述第二优先队列未满,基于所提取的顶点到所述查询点的距离,将所提取的顶点添加到所述第二优先队列;
对于所述近似图中的、作为所提取的尚未访问的顶点的邻域的每个顶点:
计算该顶点到所述查询点的距离;
经历一个或多个优化过程,将该顶点添加到所述哈希表;以及
经历一个或多个优化过程,将该顶点按其到所述查询点的距离的顺序添加到所述第一优先队列中;以及
响应于所述第一优先队列为空,输出包括作为所述近似图中对于所述查询点的最近邻域或近似最近邻域的一个或多个顶点的所述第二优先队列。
2.根据权利要求1所述的计算机实施的方法,其中,使用批量距离计算来执行计算所述顶点到所述查询点的距离,在所述批量距离计算中,使用所述处理器的多个线程来计算来自所述第一优先队列的多个顶点中的每个顶点到所述查询点的距离,其中,每个线程使用顶点的维度子集来计算局部距离,并且所述处理器的线程将所述局部距离聚合为所述多个顶点中的每个顶点到所述查询点的距离值。
3.根据权利要求1所述的计算机实施的方法,还包括:
将所述近似图的至少一部分存储为固定程度的邻接关系,以消除对额外索引查找的使用。
4.根据权利要求3所述的计算机实施的方法,其中,通过将顶点的索引乘以顶点的固定大小来定位顶点。
5.根据权利要求1所述的计算机实施的方法,还包括:
将所述查询点显式复制到片上共享内存中,以减少处理器的全局内存读取。
6.根据权利要求1所述的计算机实施的方法,其中,所述第一优先队列和所述第二优先队列以及所述哈希表由单个线程维护。
7.根据权利要求1所述的计算机实施的方法,其中,所述一个或多个优化过程包括以下中的一个或多个:
有界存储过程;
选择插入过程;以及
已访问项删除过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度(美国)有限责任公司,未经百度(美国)有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011336853.4/1.html,转载请声明来源钻瓜专利网。