Dynamic Programming on a Shared-Memory Multiprocessor

Abstract Three new algorithms for solving dynamic programming problems on a shared-memory parallel computer are described. All three algorithms attempt to balance work load, while keeping synchronization cost low. In particular, for a multiprocessor having p processors, an analysis of the best algorithm shows that the arithmetic cost is O(n3 / 6p) and that the synchronization cost is O(/t|logCn/t|) if p ⪡ n, where C = (2p /t- 1)/(2p + 1) and n is the size of the problem. The low synchronization cost is important for machines where synchronization is expensive. Analysis and experiments show that the best algorithm is effective in balancing the work load and producing high efficiency.