-
Notifications
You must be signed in to change notification settings - Fork 113
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
bdc037b
commit 09bd199
Showing
1 changed file
with
25 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# zip_view Support for the oneDPL Range APIs with C++20 | ||
|
||
## Introduction | ||
`std::ranges::zip_view` is powerful utility enables developers to combine two or more ranges into a single view, | ||
where each element is represented as a tuple containing corresponding elements from each input range. | ||
|
||
## Motivations | ||
`std::ranges::zip_view` is a convenient way to combine multiple ranges into a single view, where each element of | ||
the resulting range is a tuple containing one element from each of the input ranges. This can be particularly | ||
useful for iterating over multiple collections in parallel. `std::ranges::zip_view` is introduced starting with C++23, | ||
but there are many users who work with C++20 standard yet. So, oneDPL introduces `oneapi::dpl::ranges::zip_view`, | ||
which the same API and functionality as `std::ranges::zip_view`. | ||
|
||
|
||
### Key Requirements | ||
`oneapi::dpl::ranges::zip_view` should have: | ||
- API compliance with `std::ranges::zip_view` | ||
- `oneapi::dpl::__internal::tuple` underhood, due to `std::tuple` has issues with swapability and device copyability. | ||
|
||
|
||
### Performance | ||
Combining `std::ranges::zip_view` with data pipelines and kernel fusion enables developers to write expressive, | ||
efficient code for processing multiple related datasets. This approach not only simplifies the logic but also | ||
optimizes performance, making it an essential technique in modern C++ development. Whether you're working with | ||
simple transformations or complex data processing workflows, zip_view can be a valuable utility. |