In PRAM emulations, universal hashing is a well-known method for distributing the address space among memory modules. However, if the memory access patterns of an application often result in high module congestion, it is necessary to rehash by choosing another hash function and redistributing data on the fly. For the case of linear hash functions h(x) = axmodm we present an algorithm to rehash an address space of size m = 2” on a PRAM emulation with p processors in time O(m/p + logm + L), where L denotes the network latency. For the common case that m is polynomial in p and L = O(logp) the runtime is O(m/p + logp). The algorithm requires O(logm + L) words of local storage per processor. We show that an obvious simplification of the algorithm will significantly increase runtime with high probability.
J. Keller