【技术实现步骤摘要】
【国外来华专利技术】向量化的散列表
[0001]本专利技术涉及对向量操纵(vector manipulation)进行优化(例如,以用于散列表(hash table)实现),并且更具体而言,涉及使用向量化的操作(vectorized operation)来高效地搜索值和将值插入向量中。
技术介绍
[0002]许多算法严重依赖散列表,因此散列表函数的效率会极大地影响这些算法的效率。用于散列表最昂贵的操作之一是使散列表增长(grow)以容纳附加的元素(element),这通常要求对所存储的元素进行重新散列以得到经扩展的散列表。避免代价高昂的增长操作的常用技术是多探测策略(multi
‑
probe strategy),其中一元素可以位于散列表中的H个不同位置。这种策略为给定元素提供了在散列表经历增长的代价之前适配到散列表内的H个不同机会。然而,将元素插入多探测散列表可能要求多达H次不同的插入操作尝试。
[0003]散列表的向量化的方法一般使用多探测策略并且还假设小的散列表尺寸,这导致了在扩展散列表以容纳大型数据集时出现问题。 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种计算机执行的方法,包括:增加包括一组桶的特定散列表的桶的基数,以通过对于一组桶中的每个桶执行以下操作来产生经扩展的散列表:执行第一SIMD指令实例以基于用于所述经扩展的散列表的散列函数为相应桶产生拆分掩码,至少部分地基于拆分掩码执行第二SIMD指令实例,以识别所述相应桶中的多个值中的第一值集合,用所述第一值集合填充所述经扩展的散列表的第一派生桶,至少部分地基于拆分掩码执行第三SIMD指令实例,以识别所述多个值中的第二值集合,以及用所述第二值集合填充所述经扩展的散列表的第二派生桶;其中,所述方法由一个或多个计算设备执行。2.如权利要求1所述的计算机执行的方法,其中:执行第二SIMD指令实例产生包括所述第一值集合的第一值向量;所述第一值向量的表示包括第一多个有序的值槽;所述第一值向量包括在所述第一多个有序的值槽的第一极端处的连续值槽中的所述第一值集合;执行第三SIMD指令实例产生包括所述第二值集合的第二值向量;所述第二值向量的表示包括第二多个有序的值槽;以及所述第二值向量包括在所述第二多个有序的值槽的第一极端处的连续值槽中的所述第二值集合。3.如权利要求2所述的计算机执行的方法,其中,所述第一多个有序的值槽和所述第二多个有序的值槽中的一个或多个空槽中的每个空槽存储空槽指示符值。4.如权利要求1所述的计算机执行的方法,还包括:至少部分地基于所述经扩展的散列表的尺寸来确定散列目标位位置;其中,用于所述经扩展的散列表的散列函数至少部分地基于所述散列目标位位置;其中,对于所述一组桶中的每个桶:所述执行第一SIMD指令实例以便为所述一组桶中的每个桶产生拆分掩码是基于:所述相应桶中的所述多个值的在所述散列目标位位置处的位,所述相应桶的所述第一值集合中的每个值在所述散列目标位位置处具有被设置的位,以及所述相应桶的所述第二值集合中的每个值在所述散列目标位位置处都具有未被设置的位。5.如权利要求1所述的计算机执行的方法,其中:所述第一SIMD指令实例包括第一SIMD指令;所述第二SIMD指令实例和所述第三SIMD指令实例分别包括第二SIMD指令;并且AVX
‑
512指令集包括所述第一SIMD指令和所述第二SIMD指令。6.如权利要求1所述的计算机执行的方法,其中:所述经扩展的散列表包括特定的第一派生桶和特定的第二派生桶,所述特定的第一派
生桶和所述特定的第二派生桶两者均派生自所述特定散列表的所述一组桶中的特定桶;所述经扩展的散列表中的所述特定的第一派生桶的第一桶编号是所述特定散列表中所述特定桶的桶编号;以及所述经扩展的散列表中的所述第二派生桶的第二桶编号是将所述特定散列表中所述特定桶的桶编号偏移所述特定散列表的尺寸。7.如权利要求1所述的计算机执行的方法,还包括:通过以下操作将特定值添加到所述特定散列表:识别所述一组桶中与所述特定值对应的目标桶;确定所述目标桶是否有任何空槽;响应于确定所述目标桶没有空槽,执行所述增加所述特定散列表的桶的基数以产生所述经扩展的散列表;其中,所述经扩展的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。