Hash tables are commonly used data structures for representing subsets of a large key universe. In these tables, the complete key is stored in order to resolve the item in case of a collision. Since the 1980’s, there are known techniques to reduce the used memory by only storing a part of the original key. However, there are no known concurrent implementations of these so-called compact hash tables. Nowadays, the way to obtain the most performance gain, is to utilize the multiple CPU cores many machines are equipped with. This paper describes the parallelization of the bidirectional linear probing algorithm developed by Amble & Knuth, with a minimal memory overhead. We proved correct and implemented the algorithm and show, with results from experiments, that it scales well.
[1]
D. M. Hutton,et al.
The Art of Multiprocessor Programming
,
2008
.
[2]
Clerry,et al.
Compact Hash Tables Using Bidirectional Linear Probing
,
1984,
IEEE Trans. Computers.
[3]
Jaco Geldenhuys,et al.
A Nearly Memory-Optimal Data Structure for Sets and Mappings
,
2003,
SPIN.
[4]
Donald E. Knuth,et al.
Ordered Hash Tables
,
1974,
Comput. J..
[5]
Alfons Laarman,et al.
Boosting multi-core reachability performance with shared hash tables
,
2010,
Formal Methods in Computer Aided Design.