This library provides a framework to parallelize algorithms that follow a divide-and-conquer pattern. Its two main components are the skeletons parallel_recursion
and dparallel_recursion
. The first one parallelizes the required algorithm using multithreading within a single process. The second skeleton supports the parallelization across hybrid memory environments such as clusters of nodes with multi-core processors as well as multiple processes on top of the MPI standard.
Please read the accompanying INSTALL.md
file.
-
The
benchmarks
andtests
directories contain implementations of algorithms with very different nature using the library and execising all its features. -
Running
make doc
in thedoc directory
builds a user-level documenation based on Doxygen. A more detailed documentation can be built by runningmake internal-doc
. -
The
parallel_recursion
skeleton and its supporting classes are described and compared with other alternatives in the publication A Generic Algorithm Template for Divide-and-conquer in Multicore Systems (DOI 10.1109/HPCC.2010.24). -
The
dparallel_recursion
skeleton is described and compared with other alternatives in the publication A general and efficient divide-and-conquer algorithm framework for multi-core clusters (DOI 10.1007/s10586-017-0766-y). -
The
parallel_stack_recursion
skeleton is described and compared with other alternatives in the publication A Parallel Skeleton for Divide-and-conquer Unbalanced and Deep Problems (DOI 10.1007/s10766-021-00709-y). -
The
dparallel_stack_recursion
skeleton is described and compared with other alternatives in the publication "A highly optimized skeleton for Unbalanced and Deep Divide-and-conquer Algorithms on Multi-core Clusters", not yet published.
This library is licensed under the Apache license V2 because that is the license for the Intel® TBB threading system it relies on. If you change it to rely on any other threading system, feel free to adapt the license accordingly.