This library provides a high level framework to parallelize algorithms that follow a divide-and-conquer pattern.
Please read the accompanying INSTALL.md file.
-
The
benchmarksandtestsdirectories contain implementations of algorithms with very different nature using the library and execising all its features. -
Running
make docin thedoc directorybuilds a user-level documenation based on Doxygen. A more detailed documentation can be built by runningmake internal-doc. -
The
parallel_recursionskeleton and its supporting classes parallelize the required algorithm using multithreading within a single process. They 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_recursionskeleton 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. It 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_recursionskeleton allows a more efficient, robust and portable parallelization of divide-and-conquer patterns in shared memory thanparallel_recursion. It 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_recursionskeleton supports the generic high-performance and robust parallelization of divide-and-conquer algorithms supporting hybrid shared-distributed memory parallelism providing strong load-balancing features. It 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 (DOI 10.1007/s11227-021-04259-5)
This library is licensed under the Apache license V2.0 because that is the license for the Intel® TBB threading system on which some parts of it rely on. If you change it to rely on any other threading system, feel free to adapt the license accordingly.