From the Theory to the Tools: Parallel Dynamic Programming

Dynamic programming is an important paradigm that has been widely used to solve problems in various areas such as control theory, operation research, biology and computer science. We generalize the finite automaton formal model for dynamic programming deriving pipeline parallel algorithms. The optimality of these algorithms is established for the new class of non-decreasing finite automata. As an intermediate step for the construction of a skeleton for the automatic parallelization of dynamic programming, we have developed a tool for the implementation of pipeline algorithms. The tool maps the processes in the pipeline in the target architecture following a mix of block and cyclic policies adapted to the grain of the machine. Based on the former tool, the automatic parallelization of dynamic programming is straightforward. The use of the model and its associated tools is illustrated with the Single Resource Allocation Problem. The performance and portability of these tools is compared with specific ‘hand made’ code written by experienced programmers. The experimental results on distributed memory and shared distributed memory architectures prove the scalability of the proposed paradigm and its associated tools. Copyright  2000 John Wiley & Sons, Ltd.

[1]  T. Ibaraki Enumerative approaches to combinatorial optimization - part I , 1988 .

[2]  M. Held,et al.  Finite-State Processes and Dynamic Programming , 1967 .

[3]  Dan I. Moldovan,et al.  Partitioning and Mapping Algorithms into Fixed Size Systolic Arrays , 1986, IEEE Transactions on Computers.

[4]  Maurice Tchuente,et al.  Dynamic Programming on Two-Dimensional Systolic Arrays , 1988, Inf. Process. Lett..

[5]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[6]  Sartaj Sahni,et al.  A Hypercube Algorithm for the 0/1 Knapsack Problem , 1988, J. Parallel Distributed Comput..

[7]  Alan George,et al.  Dynamic Programming on a Shared-Memory Multiprocessor , 1993, Parallel Comput..

[8]  Benjamin W. Wah,et al.  Multiprocessing of Combinatorial Search Problems , 1985, Computer.

[9]  Thomas L. Morin,et al.  Branch-and-Bound Strategies for Dynamic Programming , 2015, Oper. Res..

[10]  Pearl Y. Wang,et al.  Solving a Two-Dimensional Knapsack Problem on SIMD Computers , 1992, ICPP.

[11]  Wojciech Rytter,et al.  Efficient parallel algorithms , 1988 .

[12]  Harry W. J. M. Trienekens,et al.  Experiments with Parallel Algorithms for Combinatorial Problems , 1985 .

[13]  Shang-Hua Teng,et al.  Adaptive Parallel Algorithms for Integral Knapsack Problems , 1990, J. Parallel Distributed Comput..

[14]  Francisco Almeida,et al.  A Parallel Algorithm for the Integer Knapsack Problem for Pipeline Networks , 1995, Parallel Algorithms Appl..

[15]  Jean Frédéric Myoupo Mapping dynamic programming onto modular linear systolic arrays , 2005, Distributed Computing.

[16]  Francisco Almeida,et al.  The single resource allocation problem: parallel algorithms on distributed systems , 1996 .

[17]  Toshihide Ibaraki,et al.  Resource allocation problems - algorithmic approaches , 1988, MIT Press series in the foundations of computing.

[18]  Gen-Huey Chen,et al.  An improved parallel algorithm for 0/1 knapsack problem , 1992, Parallel Comput..

[19]  José Luis Roda García,et al.  Integral knapsack problems: parallel algorithms and their implementations on distributed systems , 1995, ICS '95.

[20]  Patrice Quinton,et al.  Dynamic programming parallel implementations for the knapsack problem , 1993 .

[21]  Zvi Galil,et al.  Parallel Algorithms for Dynamic Programming Recurrences with More than O(1) Dependency , 1994, J. Parallel Distributed Comput..