parallel_dp: the parallel dynamic programming design pattern as an Intel® threading building blocks algorithm template

Intel Threading Building Blocks (TBB) is an ideal environment for implementation of the parallel dynamic programming design pattern. The task-based parallelism of TBB readily lends itself to the realization of the participants and participant collaboration of this design pattern. We propose the parallel_dp algorithm template, an implementation of the parallel dynamic programming design pattern using TBB. We define the participants and the participant collaboration of this design pattern and describe how the design pattern is implemented by parallel_dp. We analyze the performance of our solution by applying parallel_dp to create four TBB programs that are parallel versions of the four types of dynamic programming algorithms. Our experimental results prove that parallel_dp provides speedup to all of our TBB programs and near linear speedup to one of our TBB programs. We conclude that parallel_dp will improve the performance of many TBB programs that include a dynamic programming algorithm.

[1]  Guang R. Gao,et al.  A parallel dynamic programming algorithm on a multi-core architecture , 2007, SPAA '07.

[2]  Rafael Asenjo,et al.  Evaluation of the Task Programming Model in the Parallelization of Wavefront Problems , 2010, 2010 IEEE 12th International Conference on High Performance Computing and Communications (HPCC).

[3]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[4]  Gilles Brassard,et al.  Fundamentals of Algorithmics , 1995 .

[5]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[6]  Yong Dou,et al.  Exploiting Fine-Grained Pipeline Parallelism for Wavefront Computations on Multicore Platforms , 2009, 2009 International Conference on Parallel Processing Workshops.

[7]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[8]  Xin-She Yang,et al.  Introduction to Algorithms , 2021, Nature-Inspired Optimization Algorithms.