We revisit the problem of building static hash tables on the GPU and design and build three bucketed hash tables that use different probing schemes. Our implementations are lock-free and offer efficient memory access patterns; thus, only the probing scheme is the factor affecting the performance of the hash table's different operations. Our results show that a bucketed cuckoo hash table that uses three hash functions (BCHT) outperforms alternative methods that use power-of-two choices, iceberg hashing, and a cuckoo hash table that uses a bucket size one. At high load factors as high as 0.99, BCHT enjoys an average probe count of 1.43 during insertion. Using three hash functions only, positive and negative queries require at most 1.39 and 2.8 average probes per key, respectively.
翻译:我们重新审视了在 GPU 上建立静态散列表格的问题,设计并建造了使用不同探测方法的3个桶装散列表格。我们的实施是无锁的,提供了高效的内存访问模式;因此,只有探测计划是影响散列表格不同操作绩效的因素。我们的结果表明,使用三种散列函数(BCHT)的桶装库式散列表格优于使用两种选择权的替代方法,即冰山散列,以及使用1号桶尺寸的桶装散列表格。在高达0.99, BCHT 的高载系数下,在插入过程中平均检测计数为1.43个。仅使用3个散列函数,正面和负式查询需要最多1.39个和2.8个按键平均探测器。