CN112100446B - 搜索方法、可读存储介质和电子设备 - Google Patents

搜索方法、可读存储介质和电子设备 Download PDF

Info

Publication number
CN112100446B
CN112100446B CN201910525241.0A CN201910525241A CN112100446B CN 112100446 B CN112100446 B CN 112100446B CN 201910525241 A CN201910525241 A CN 201910525241A CN 112100446 B CN112100446 B CN 112100446B
Authority
CN
China
Prior art keywords
search
vector
nodes
determining
graph
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
Application number
CN201910525241.0A
Other languages
English (en)
Other versions
CN112100446A (zh
Inventor
谢超
易小萌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zerui Information Technology Co ltd
Original Assignee
Shanghai Zerui Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Zerui Information Technology Co ltd filed Critical Shanghai Zerui Information Technology Co ltd
Priority to CN201910525241.0A priority Critical patent/CN112100446B/zh
Publication of CN112100446A publication Critical patent/CN112100446A/zh
Application granted granted Critical
Publication of CN112100446B publication Critical patent/CN112100446B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例公开了一种搜索方法、可读存储介质和电子设备,本发明实施例使用图形处理器对基于图的向量搜索方法进行加速,并通过对向量集合进行划分、并行搜索和流水执行等技术解决了图形处理器在主存容量、数据传输效率等多方面对向量搜索的限制,有效的提升了搜索效率。

Description

搜索方法、可读存储介质和电子设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种搜索方法、可读存储介质和电子设备。
背景技术
在人工智能和机器学习应用中通常使用向量来表示数据的特征。其中,向量是由固定维度的若干数据构成的特殊数据类型。例如,在内容推荐应用中,用户的兴趣特征是通常是由一个多维向量表示。于此同时被推荐的内容特征通常也是由一个具有相同维度的向量进行表示的。为了准确的向用户推荐其感兴趣的内容,需要在所有内容的特征向量中寻找与用户兴趣最为相似的向量,该向量所对应的内容则被认为是最有可能引起用户兴趣的内容。与上述过程对应的,在一个给定的向量集合中查找与特定向量最为相似的若干个向量的问题,被称为向量搜索问题。随着现代应用数据的飞速增长,向量搜索的集合范围也变得越来越大,传统的向量搜索方案将逐渐难以满足应用的需求。
现有的向量搜索方案主要分为两类,一类是基于数据划分的方法,另一类是基于图的方法。其中基于图的向量搜索方法均为基于中央处理器(CPU)的方法,由于中央处理器计算能力的限制,无法高效的解决大规模的向量搜索问题。
发明内容
有鉴于此,本发明实施例提供一种搜索方法、可读存储介质和电子设备,旨在使用图形处理器对基于图的向量搜索方法进行加速。
第一方面,本发明实施例提供一种搜索方法,包括:
将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图,所述搜索图的节点用于表征对应的向量子集的向量;
确定至少一个搜索请求的搜索向量;
将所述搜索图传输至图形处理器;
对于各搜索请求,并行地在不同搜索图内确定与所述搜索向量匹配的目标节点;
根据确定的目标节点输出查询结果。
进一步地,所述将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图包括:
确定配置信息和向量集合中的元素数,所述配置信息包括所述图形处理器的全局内存容量、向量的维度、数据类型和搜索过程中所产生的临时数据量的大小;
根据所述配置信息确定每个向量子集中能容纳的元素数,并根据所述向量集合中的元素数和每个向量子集中能容纳的元素数确定所述向量子集的数目;
根据所述向量子集的数目创建向量子集,将所述向量集合中的元素分配至每个向量子集;
确定并储存每个向量子集对应的搜索图。
进一步地,所述确定至少一个搜索请求的搜索向量包括:
确定图形处理器的最大搜索数量;
创建缓存区,所述缓存区的容量根据所述最大搜索数量确定;
将搜索请求存储至所述缓存区;
响应于所述缓存区内的内存用尽,获取所述缓存区内的搜索请求的搜索向量。
进一步地,所述对于各搜索请求,并行地在不同搜索图内确定与所述搜索向量匹配的目标节点包括:
为每一个搜索请求分配与所述搜索图数量相同的线程组数量;
控制每个线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
进一步地,所述控制每个线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点包括:
确定候选节点列表和所述搜索图内的至少一个搜索起始节点;
由所述搜索起始节点开始以迭代方式计算所述搜索图中节点与所述搜索向量的匹配度,每次迭代完成后,将匹配度更高的节点更新至所述候选节点列表中,直到一次迭代过程中搜索到节点的匹配度不高于所述候选节点列表中节点的匹配度;
响应于所述搜索图完成搜索,确定所述候选节点列表中的节点为目标节点。
进一步地,所述每个迭代过程包括:
确定与所述候选节点列表中的候选节点相邻的节点;
筛选出未与所述搜索向量进行过匹配度计算的所述相邻的节点;
计算所述筛选后的节点和所述搜索向量的匹配度。
进一步地,所述根据确定的目标节点输出查询结果包括:
对全部搜索图内确定的所述目标节点进行汇总处理,输出查询结果。
进一步地,所述将所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程以流水线方式顺序进行。
第二方面,本发明实施例还提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面任一项所述的方法。
第三方面,本发明实施例还提供一种计算机可读存储介质,用于存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面任一项所述的方法。
本发明实施例使用图形处理器对基于图的向量搜索方法进行加速,并通过对向量集合进行划分、并行搜索和流水执行等技术解决了图形处理器在主存容量、数据传输效率等多方面对向量搜索的限制,有效的提升了搜索效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为一种异构计算机架构示意图;
图2为本发明实施例的搜索方法的流程图;
图3为本发明实施例一个可选方式在搜索图内确定与所述搜索向量匹配的目标节点的流程图;
图4为本发明实施例中将所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程构建的流水线示意图;
图5为本发明实施例一个可选实现方式为每一个搜索请求分配线程组的示意图;
图6为本发明实施例的示例性搜索图的示意图;
图7为本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1为一种异构计算机架构的示意图,如图1所示,所述异构计算机架构由中央处理器(CPU)和图形处理器(GPU)组成,所述中央处理器和图形处理器通过高速串行总线(PCIe-bus)连接。
具体地,所述中央处理器和所述图形处理器的运算核心包括控制单元(control)10、运算器(ALU)11、高速缓冲存储器(cache)12和动态随机存取存储器(DRAM)13。由图可见,中央处理器中的中的运算核心较少而图形处理器中的运算核心较多,使得所述图形处理器更为适合执行计算简单但并行性高的任务,而所述中央处理器更为适合执行计算复杂但并行性低的任务。在本发明实施例提供的搜索方法过程中,可以通过中央处理器处理计算复杂且并行性较低的任务,例如将向量集合划分为至少两个向量子集等过程。同时可以通过图形处理器处理计算简单但并行性高的任务,例如对于各搜索请求,并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
进一步地,所述图形处理器包含全局内存和共享内存,所述图形处理器中的所有的进程块均可访问全局内存,每个进程块对应一个共享内存,包含多个线程,一个进程块内的所有线程可访问所述共享内存。
因此,本发明实施例使用图形处理器对基于图的向量搜索方法进行加速,并通过对向量集合进行划分、并行搜索和流水执行等技术解决了图形处理器在主存容量、数据传输效率等多方面对向量搜索的限制,有效的提升了搜索效率。
图2为本发明实施例的搜索方法的流程图,如图2所示,所述搜索方法包括:
步骤S100:将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图。
具体地,所述向量集合中包含的向量为特征向量,所述特征向量例如可以通过文字、图片等数据转换得到,例如当搜索图片时,所述特征向量为图片转换得到的特征向量。所述将数据转换为特征向量的方式例如可以是卷积神经网络(CNN)等。所述向量集合根据所述图形处理器全局内存容量的大小进行划分,将向量集合划分为若干个向量子集。并对每个向量子集分别创建对应的搜索图。所述搜索图的节点用于表征对应的向量子集的向量。所述构建搜索图的方法为:搜索向量子集中包含的向量,将每个向量记为所述搜索图中的一个节点,记录与每个向量最相似的一个或多个向量,并将所述向量的节点与记录的最相似的节点连接在一起,最终得到由节点和边组成的搜索图。所述搜索图的结构如图6所示,在基于所述搜索图进行搜索时从一个或多个节点出发,寻找与所述节点相连的且相比当前节点与所述搜索向量更加相似的节点,并进一步由这些节点继续寻找更加相似的节点,直至无法找到新的节点为止。
所述步骤S100进一步地包括:确定配置信息和向量集合中的元素数,将所述向量集合划分为至少两个向量子集,以使得所有向量子集在同一时刻空间使用量的最大值不大于所述图形处理器的全局内存容量。所述配置信息包括所述图形处理器的全局内存容量、向量的维度、数据类型和搜索过程中所产生的临时数据量的大小,其中所述数据类型用于表示向量中各维数据的数据类型,所述数据类型包括整数类型、浮点数类型等,根据所述配置信息确定每个向量子集中能容纳的元素数,并根据所述向量集合中的元素数和每个向量子集中能容纳的元素数确定所述向量子集的数目,根据所述向量子集的数目创建向量子集,将所述向量集合中的元素均匀的分配至每个向量子集,确定并储存每个向量子集对应的搜索图。
通过对所述向量集合进行划分可以有效控制单个搜索图的数据规模,保证搜索过程中存储空间的使用量不超过所述图形处理器全局内存的容量限制。
步骤S200:确定至少一个搜索请求的搜索向量。
具体地,所述搜索方法包括至少一个搜索请求,每个搜索请求对应一个搜索向量。在本实施例中,在接收到一个搜索请求时,不对所述搜索请求立即进行响应,而是对请求进行缓存并适当聚合,并将聚合后的搜索请求统一响应,所述确定至少一个搜索请求的搜索向量进一步包括:确定图形处理器的最大搜索数量,创建缓存区,所述缓存区的容量根据所述最大搜索数量确定,将搜索请求存储至所述缓存区,响应于所述缓存区内的内存用尽,获取所述缓存区内的搜索请求的搜索向量。所述最大搜索数量根据图形处理器并行处理单元的数量、图形处理器全局内存中可同时存储的向量子集数量、以及算法中单个查询在所述向量子集中执行搜索时的并行度确定。当接收到搜索请求时,储存至所述缓存区,当所述缓存区内的内存用尽时,获取所述缓存区内的搜索请求的搜索向量。由于不同的搜索请求在执行过程中无依赖关系,所以对于各向量子集可以并行地执行各个搜索请求。在本实施例中,通过所述中央处理器创建缓存区,将搜索请求接收、聚合至缓存区内,通过所述中央处理器或图形处理器获取缓存区内的全部搜索请求,对每个搜索请求进行处理。
在另一个可选的实现方式中,还可以设置获取所述搜索向量的周期,当经过一个周期或所述缓存区内的内存用尽时,获取所述缓存区内的搜索请求的搜索向量。
通过所述建立缓存区对搜索请求进行聚合的方式使一次数据传输可以用于对多个请求进行搜索,从而有效的减少了所述图形处理器和内存之间的数据交换。另外,可以并行地对不同的搜索请求执行搜索,增加搜索过程的并行度,提高效率。
步骤S300:将所述搜索图传输至图形处理器。
具体地,在获取搜索请求,根据所述搜索请求确定对应的搜索向量之后,将所述搜索图传输至图形处理器。因所述搜索图由中央处理器向图形处理器传输,所述搜索图的传输过程为单线程或多线程传输,即每次传输可以针对一个或一组搜索向量依次进行传输。
步骤S400:对于各搜索请求并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
具体地,为提高搜索效率,以及掩盖数据传输过程中产生的开销,所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程以流水线方式顺序进行。即当一个或一组搜索图传输至所述图形处理器时即对所述搜索图进行搜索,同时将下一个或下一组搜索图向所述图形处理器内传输。其中所述传输过程由所述中央处理器执行,所述搜索过程由所述图形处理器执行。其中所述搜索过程为对每个搜索请求并行地进行搜索,即在搜索图内确定与所述搜索向量匹配的目标节点。当所述图形处理器中的搜索图数量大于1时,为每一个搜索请求分配与所述搜索图数量相同的线程组数量,所述线程组可以属于同一进程和不同进程,控制所述全部或部分线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
进一步地,图3为本发明实施例一个可选方式在搜索图内确定与所述搜索向量匹配的目标节点的流程图,如图3所示,所述控制每个线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点包括:确定候选节点列表和所述搜索图内的至少一个搜索起始节点,由所述搜索起始节点开始以迭代方式计算所述搜索图中节点与所述搜索向量的匹配度,每次迭代完成后,将匹配度更高的节点更新至所述候选节点列表中,直到一次迭代过程中搜索到节点的匹配度不高于所述候选节点列表中节点的匹配度,即当一次迭代过程中未搜索到匹配度更高的节点时完成所述搜索图的搜索过程。其中每个迭代过程包括确定与所述候选节点列表中的候选节点相邻的节点,筛选出未与所述搜索向量进行过匹配度计算的所述相邻的节点,计算所述筛选后的节点和所述搜索向量的匹配度,响应于所述搜索图完成搜索,确定所述候选节点列表中的节点为目标节点。
具体地,在对所述搜索图进行搜索时,先在所述搜索图中确定至少一个搜索起始节点,计算所述起始节点相邻的节点与所述搜索向量的匹配度,确定所述相邻节点和与所述相邻节点对应的匹配度。对比每个所述相邻节点中的匹配度与所述候选节点列表中候选节点的匹配度大小,响应于存在匹配度小于所述相邻节点的候选节点,将匹配度最低的候选节点删除,同时将所述相邻节点更新至所述候选节点列表。再判断所述候选节点列表中是否包含未搜索的候选节点,若存在则确定所述候选节点,计算所述候选节点相邻的节点与所述搜索向量的匹配度,将匹配度大于所述候选节点匹配度的相邻节点更新至所述候选节点列表;若不存在则判断所述搜索图完成搜索,确定所述候选节点列表中的节点为目标节点。
步骤S500:根据确定的目标节点输出查询结果。
具体地,对全部搜索图内确定的所述目标节点进行汇总处理,输出查询结果。即对每个搜索图内确定的目标节点汇总统计,确定预设数量的与所述搜索向量最匹配的节点作为输出结果,所述汇总统计例如可以是根据与所述搜索向量的匹配度对确定的全部目标节点进行排序,在所述排序中确定预设数量的与所述搜索向量最匹配的节点为输出结果。
图4为本发明实施例中将所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程构建的流水线示意图,如图4所示,所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程以流水线方式顺序进行。
具体地,图中假设流水线中的每一步在一个时刻处理一个向量子集,在实际系统中,可以同时处理一个或一组向量子集。在所述流水线中,一个部件处理完一个向量子集时,所述向量子集即可进入下一部件进行处理,而当前部件也可以开始执行下一个向量子集。以时刻T1为例,数据传输部件完成了向量子集1的搜索图传输后,即可以开始对向量子集2进行传输。而所述图形处理器完成了向量子集0的搜索,即可以开始执行向量子集1中的搜索了。所述向量子集在经过流水线完成搜索后,将搜索得到的目标节点传输至指定地址等待汇总和筛选。
所述搜索方法通过流水线的方式在传输向量子集的同时进行搜索程序,有效的掩盖了数据传输的开销。
图5为本发明实施例一个可选实现方式为每一个搜索请求分配线程组的示意图。如图5所示,所述每一个搜索请求分配与所述搜索图数量相同的线程组数量,所述线程组可以属于同一进程和不同进程,控制所述全部或部分线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
具体地,在本实施例中,所述向量子集的数目根据所述图形处理器的全局内存、所述向量的维度、数据类型、搜索过程中所产生的临时数据量的大小确定。所述确定向量子集的数目的步骤具体包括:
假设所述图形处理器的全局内存容量为M字节,所述向量的维度为d,所述数据类型占用字节数量为t,搜索过程中所产生临时数据量的大小为原始数据量大小的k倍。假设每个向量子集中向量的个数为v。则存储每个向量子集中的数据消耗的存储空间为s1=v*d*t字节,在所述向量子集上执行搜索时所使用的内存空间大小为s2=v*d*t*(1+k)字节。设每个向量子集搜索结果的大小为s3=nq*j字节,其中nq为对多个搜索请求进行搜索时请求数量的上限,j为每个搜索请求在一个向量子集中搜索到的候选结果的字节大小。
当所述图形处理器中同时有n1个向量子集在进行数据传输,n2个向量子集正在进行计算,n3个向量子集的结果在等待汇总和筛选时,所有向量子集的存储空间使用量为S=n1*s1+n2*s2+n3*s3字节。为了保证所述存储空间的使用量S不超过所述图形处理器的全局内存容量M,将所有上述表达式代入可知:
设所述向量集合中向量的数量为R,则所述向量子集的个数P应满足:
假设在所述图形处理器中同时有3个向量子集和两个搜索请求需要执行搜索。为所述搜索过程分配6份图形处理器中的计算资源,即为每一个搜索请求分配3个线程组,每个线程组对应完成一个向量子集和搜索请求的搜索过程。例如,为搜索请求1在向量子集1上的搜索分配编号为0的线程组,在向量子集2上的搜索分配编号为2的线程组,在向量子集3上的搜索分配编号为4的线程组。为搜索请求2在向量子集1上的搜索分配编号为1的线程组,在向量子集2上的搜索分配编号为3的线程组,在向量子集3上的搜索分配编号为5的线程组。所述线程组0、1、2、3、4、5可以属于一个或多个进程。
使用这种方式,可以通过控制一次处理的向量子集和搜索请求个数控制搜索过程的并行度,从而充分利用图形处理器的并行计算能力。
图6为本发明实施例的示例性搜索图的示意图。如图6所示,所述搜索图的节点用于表征对应的向量子集的向量,其中相似的节点连接在一起形成由点和边组成的搜索图。
具体地,在对所述搜索图进行搜索时,确定候选节点列表和所述搜索图内的至少一个搜索起始节点,由所述搜索起始节点开始以迭代方式计算所述搜索图中节点与所述搜索向量的匹配度,直到穷尽所述搜索图中全部目标向量,每次迭代完成后,将匹配度更高的节点更新至所述候选节点列表中。即从搜索图中的一个节点出发,或并行地从多个节点出发,查找与其相连的节点以确定与所述搜索向量匹配度更高的节点,并进一步搜索这些节点的相邻节点,直至无法找到新的节点。在图6中,假设搜索的起始节点是节点0,则先计算其相邻的节点1,2,3与所述搜索向量的匹配度,若所述节点1,2,3与所述搜索向量的匹配度均高于所述节点0与所述向量的匹配度,再进一步计算所述节点1,2,3的相邻节点4,5,6,7,8,9,10,11,12与所述搜索向量的匹配度,查找匹配度更高的节点。在所述搜索过程中,通常从一个节点出发会迅速的找到多个需要进一步搜索的节点,可以并行地对多个需要进一步搜索的节点进行搜索。
可选的,在所述搜索过程中可维护一个候选节点列表,所述列表的容量由预定的目标节点数目确定,用于记录目前搜索到的与所述搜索向量最相似的节点。以所述候选节点列表中包含k个节点为例,在每次搜索时,在所述候选节点列表中确定尚未搜索的节点,然后并行查找这些节点的相邻节点,计算这些节点与所述搜索向量的匹配度,再对比所述计算得到的匹配度与所述候选节点列表中节点对应的匹配度大小,将匹配度大于所述候选节点列表中匹配度最小节点的节点更新至所述候选节点列表中,即重新选择与所述搜索节点最相似的k个节点作为新的候选节点。之后再从中所述候选节点列表中选择未进行搜索的节点进行搜索,依次重复执行上述过程,直至无法找到新的候选节点。
所述方法可对所述搜索图并行进行搜索,提高了搜索速度和效率。
图7为本发明实施例的电子设备的示意图,如图7所示,在本实施例中,所述电子设备包括服务器、终端等。如图所示,所述电子设备包括:至少一个第一处理器72和一个第二处理器73组成的异构计算机架构,所述第一处理器例如可以是中央处理器(CPU),所述第二处理器例如可以是图形处理器(GPU);与至少一个所述异构计算机架构通信连接的存储器71;以及与存储介质通信连接的通信组件74,通信组件74在异构计算机架构的控制下接收和发送数据;其中,存储器71存储有可被至少一个异构计算机架构执行的指令,指令被至少一个异构计算机架构执行以实现上述实施例中的搜索方法。
具体地,所述存储器71作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。异构计算机架构通过运行存储在存储器71中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述搜索方法。
存储器71可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器71可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器71中,当被异构计算机架构执行时,执行上述任意方法实施例中的搜索方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种搜索方法,其特征在于,包括:
将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图,所述搜索图的节点用于表征对应的向量子集的向量;
确定至少一个搜索请求的搜索向量;
将所述搜索图传输至图形处理器;
对于各搜索请求,并行地在不同搜索图内确定与所述搜索向量匹配的目标节点;
根据确定的目标节点输出查询结果;
其中,将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图包括:
根据图形处理器全局内存容量的大小将所述向量集合划分为至少两个向量子集;
分别创建每个向量子集对应的搜索图;
其中,确定至少一个搜索请求的搜索向量包括:
将获取到的搜索请求存储至缓存区,每个搜索请求对应一个搜索向量;
响应于所述缓存区内的内存用尽,获取所述缓存区内的搜索请求的搜索向量;
其中,所述将向量集合划分为至少两个向量子集,并确定每个向量子集对应的搜索图包括:
确定配置信息和向量集合中的元素数,所述配置信息包括所述图形处理器的全局内存容量、向量的维度、数据类型和搜索过程中所产生的临时数据量的大小;
根据所述配置信息确定每个向量子集中能容纳的元素数,并根据所述向量集合中的元素数和每个向量子集中能容纳的元素数确定所述向量子集的数目;
根据所述向量子集的数目创建向量子集,将所述向量集合中的元素分配至每个向量子集;
确定并储存每个向量子集对应的搜索图。
2.如权利要求1所述的方法,其特征在于,所述将获取到的搜索请求存储至缓存区包括:
确定图形处理器的最大搜索数量;
创建缓存区,所述缓存区的容量根据所述最大搜索数量确定;
将搜索请求存储至所述缓存区。
3.如权利要求1所述的方法,其特征在于,所述对于各搜索请求,并行地在不同搜索图内确定与所述搜索向量匹配的目标节点包括:
为每一个搜索请求分配与所述搜索图数量相同的线程组数量;
控制每个线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点。
4.如权利要求3所述的方法,其特征在于,所述控制每个线程组并行地在不同搜索图内确定与所述搜索向量匹配的目标节点包括:
确定候选节点列表和所述搜索图内的至少一个搜索起始节点由所述搜索起始节点开始以迭代方式计算所述搜索图中节点与所述搜索向量的匹配度,每次迭代完成后,将匹配度更高的节点更新至所述候选节点列表中,直到一次迭代过程中搜索到节点的匹配度不高于所述候选节点列表中节点的匹配度;
响应于所述搜索图完成搜索,确定所述候选节点列表中的节点为目标节点。
5.如权利要求4所述的方法,其特征在于,所述每个迭代过程包括:
确定与所述候选节点列表中的候选节点相邻的节点;
筛选出未与所述搜索向量进行过匹配度计算的所述相邻的节点;
计算所述筛选后的节点和所述搜索向量的匹配度。
6.如权利要求1所述的方法,其特征在于,所述根据确定的目标节点输出查询结果包对全部搜索图内确定的所述目标节点进行汇总处理,输出查询结果。
7.如权利要求1所述的方法,其特征在于,所述将所述搜索图传输至图形处理器的过程和对每个搜索请求进行搜索的过程以流水线方式顺序进行。
8.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-7中任一项所述的方法。
9.一种计算机可读存储介质,用于存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
CN201910525241.0A 2019-06-18 2019-06-18 搜索方法、可读存储介质和电子设备 Active CN112100446B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910525241.0A CN112100446B (zh) 2019-06-18 2019-06-18 搜索方法、可读存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910525241.0A CN112100446B (zh) 2019-06-18 2019-06-18 搜索方法、可读存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN112100446A CN112100446A (zh) 2020-12-18
CN112100446B true CN112100446B (zh) 2024-05-14

Family

ID=73748934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910525241.0A Active CN112100446B (zh) 2019-06-18 2019-06-18 搜索方法、可读存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN112100446B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650775B (zh) * 2020-12-30 2024-01-05 深圳云天励飞技术股份有限公司 一种数据搜索方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117309A (zh) * 2010-01-06 2011-07-06 卓望数码技术(深圳)有限公司 一种数据缓存系统和数据查询方法
CN103714080A (zh) * 2012-09-29 2014-04-09 北京百度网讯科技有限公司 基于空间索引结构树提供空间对象搜索结果的方法和设备
CN104331497A (zh) * 2014-11-19 2015-02-04 中国科学院自动化研究所 一种利用向量指令并行处理文件索引的方法及装置
CN107748779A (zh) * 2017-10-20 2018-03-02 百度在线网络技术(北京)有限公司 信息生成方法和装置
CN108829865A (zh) * 2018-06-22 2018-11-16 海信集团有限公司 信息检索方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805454B2 (en) * 2007-07-18 2010-09-28 Palo Alto Research Center Incorporated System and method for parallel graph search utilizing parallel structured duplicate detection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117309A (zh) * 2010-01-06 2011-07-06 卓望数码技术(深圳)有限公司 一种数据缓存系统和数据查询方法
CN103714080A (zh) * 2012-09-29 2014-04-09 北京百度网讯科技有限公司 基于空间索引结构树提供空间对象搜索结果的方法和设备
CN104331497A (zh) * 2014-11-19 2015-02-04 中国科学院自动化研究所 一种利用向量指令并行处理文件索引的方法及装置
CN107748779A (zh) * 2017-10-20 2018-03-02 百度在线网络技术(北京)有限公司 信息生成方法和装置
CN108829865A (zh) * 2018-06-22 2018-11-16 海信集团有限公司 信息检索方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
武芳 等.《空间数据库原理》.武汉大学出版社,2017,第172-175页. *

Also Published As

Publication number Publication date
CN112100446A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN109993299B (zh) 数据训练方法及装置、存储介质、电子装置
JP5425541B2 (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
US20150262064A1 (en) Parallel decision tree processor architecture
US20150262062A1 (en) Decision tree threshold coding
CN112085644B (zh) 多列数据排序方法、装置、可读存储介质和电子设备
JP2022130363A (ja) 機械学習モデルを改良して局所性を改善させること
JP6352958B2 (ja) グラフインデックス探索装置及びグラフインデックス探索装置の動作方法
CN110134714A (zh) 一种适用于大数据迭代计算的分布式计算框架缓存索引
CN109656798B (zh) 基于顶点重排序的超级计算机大数据处理能力测试方法
CN113037800B (zh) 作业调度方法以及作业调度装置
Schlag et al. Scalable edge partitioning
Wang et al. Phase-reconfigurable shuffle optimization for Hadoop MapReduce
CN106202224B (zh) 搜索处理方法及装置
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
CN115168281A (zh) 一种基于禁忌搜索算法的神经网络片上映射方法和装置
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
CN104778088A (zh) 一种基于减少进程间通信开销的并行i/o优化方法与系统
CN112035234A (zh) 分布式批量作业分配方法及装置
CN111580969A (zh) 一种基于多gpu的a*搜索方法
US9298505B2 (en) Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme
CN114138494B (zh) 一种结合节点计算能力的负载均衡方法
CN113407702B (zh) 员工合作关系强度量化方法、系统、计算机和存储介质
Vidal et al. Solving the DNA fragment assembly problem with a parallel discrete firefly algorithm implemented on GPU
CN109684602B (zh) 一种批处理方法和装置及计算机可读存储介质
US20240134932A1 (en) Distributed matrix computation control method and apparatus supporting matrix fused operation

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