C++Now 2021 has ended
Back To Schedule
Tuesday, May 4 • 9:50am - 10:35am
Parallelism on Ranges: Should We?

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Ranges have recently been introduced to the realm of C++ Standard. While the initiating idea was to increase the level of abstraction provided for the C++ Standard algorithms, it quickly evolved into a mechanism where users could code complex sequences of algorithms in an expressive and readable way. On the other hand, since C++17, when calling a C++ STL algorithm, the user is allowed to pass an execution policy as their first argument in order to control parallelization options. That enables the algorithm to run with vectorization optimizations or/and in parallel . It’s crucial to note though, that the execution policy option can only be used on the non-ranges overloads (namely, the iterator based ones), as ranges have been added in C++20 only. Therefore, the problem that emerges from the utilization of ranges, is the following: should the community push forward in order to embed the execution policy mechanism on the range based algorithms?
This talk is concentrated on providing insight on how the ranges could be parallelized and the possibilities that arise from such a powerful concept. Given that ranges are designed in order to support pipelining, trying to parallelize that kind of sequenties could potentially produce hundreds of subcases where algorithmic fusion would have to take place for every single combination. HPX, which is a C++ Standard Library for Concurrency and Parallelism, has taken serious steps in order to provide actual implementation proposals on how the machinery behind that could possibly work. The speaker provides the general algorithmic picture behind range parallelization, along with presenting tangible examples for candidate implementations.

avatar for Giannis Gonidelis

Giannis Gonidelis

HPX Open-Source Contributor, STE||AR Group
Giannis is an open source contributor on HPX, a C++ Standards library for Parallelization and Concurrency. He is mainly working on parallelization methods and algorithms. He is currently involved in adapting HPX to C++20.

Tuesday May 4, 2021 9:50am - 10:35am MDT