by Srinivas Yadav
GSoC 2021 Final Report
Abstract
HPX algorithms support data parallelism through explicit vectorization using Vc library and only for a few algorithms like for_each, transform and count, but recently the support for Vc library has been deprecated and has been replaced by std::experimental::simd. In this project I have adapted many algorithms to datapar using new backend std::experimental::simd with two new policies simd and par_simd using the data-parallel types proposed in the experimental namespace. For all the algorithms adapted to datapar, separate tests have been created.
I have created a new github repository namely std-simd-perf for the benchmarks of the algorithms that I have adapted to datapar which have various plots for speed up analysis and roofline model for artificial benchmarks and real world applications.
Pull Requests for HPX Repo
Merged
- Adapt data parallel support using std-simd #5328
- Adapts the std-simd backend for the data parallel algorithms.
- Renames the execution policies datapar and dataseq to par_simd and simd respectively to maintain consistency with std::unseq and std::par_unseq.
- Adapt datapar copy #5428
- Supports vectorization for copy algorithm.
Open
- Adapt datapar fill #5465
- Supports vectorization for fill algorithm.
Other Adapted Algorithms to datapar [code]:
- adjacent_difference
- adjacent_find
- all_of , any_of, none_of
- copy
- count
- find
- for_each
- generate
- transform
Performance Benchmarks
- The std-simd-perf repository contains all the benchmarks for simd on artificial algorithms such as for_each, transform, count, find etc.. and on real world examples such as Mandelbrot set.
- These benchmarks were run on different clusters and have separate branches for each architecture in the repo.
- Speed up plot for a compute bound kernel using for_each algorithm
- Speed up plot for a simd reduction based algorithm using count algorithm
Beyond GSoC
- Adapt #2333 rest of the algorithms to support data parallel.
- I will be further working with STE||AR GROUP for HPX in other areas as well as this is a great community to learn with great people and expand my knowledge.
Acknowledgements
Special thanks to Hartmut Kaiser, Nikunj Gupta and Auriane R. for all the guidance and help with frequent meetings.