distributed-ranges
distributed-ranges copied to clipboard
mhp basic algorithms and views
Summary
Provide selected algorithms and views working on distributed structure.
Concepts
- A distributed_range is a forward_range with a segments that returns a range of remote_ranges.
- A remote_range is a forward_range with a rank stating which memory locale it is in.
Feature details
The distributed ranges concepts allow algorithms to be implemented in a hierarchical fashion, by decomposing the distributed range into its segments and applying local versions of algorithms to each segment in parallel. Crucially, distributed algorithms will be written generically, using only the distributed range concept, and then applied to any data structure that satisfies the distributed range concept.
The following algorithms are provided by this feature using distributed_vector and MPI backend:
- for_each
- for_each_tile
- copy
- fill
- reduce
- sort
- inclusive_scan
- exclusive_scan
- transform
Views are lightweight objects that usually provide a nonowning, lazily-evaluated view of another range. Views provide the same range interface as data structures, allowing them to be iterated over and used in algorithms just like normal data structures. In distributed ranges, we provide a set of views that operate on normal ranges, but also on remote and distributed ranges by offering the rank and segments CPOs if they are provided by the underlying base range to which the view is applied.
The following views are provided by this feature using distributed_vector and MPI backend:
- zip
- iota
- take
- drop
- counted
- enumerate
- transform