-
Notifications
You must be signed in to change notification settings - Fork 116
[oneDPL][rfc][ranges] proposal for implementation of the second part of range based API for oneDPL #2037
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[oneDPL][rfc][ranges] proposal for implementation of the second part of range based API for oneDPL #2037
Changes from 3 commits
816ef41
91ddc6a
28a9f72
422e9eb
c363b64
96a4442
de6c2ca
dcf214f
6e5701f
483c45b
ede1b58
dd0a730
998c579
3e18e4b
b5c6a28
3091de6
96015cc
b26db00
39d9a65
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Support the second portion of the oneDPL Range APIs | ||
|
||
## Introduction | ||
Based on statistics (observing C++ code within github.com) for the usage of popular algorithms, the following | ||
range-based APIs are suggested to be implemented next in oneDPL. | ||
`fill`, `generate`, `move`, `replace`, `replace_if`, `remove`, `remove_if`, `mismatch`, `minmax_element`, `minmax`, | ||
`min`, `max`, `find_first_of`, `find_end`, `is_sorted_until` | ||
|
||
## Motivations | ||
The feature is proposed as the next step of range-based API support for oneDPL. | ||
|
||
### Key Requirements | ||
- The range-based signatures for the mentioned API should correspond to the proposal for C++ parallel range algorithms, P3179. | ||
(https://wg21.link/p3179) | ||
akukanov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- The proposed implementation should support all oneDPL execution policies: `seq`, `unseq`, `par`, `par_unseq` and `a device policy`. | ||
MikeDvorskiy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Implementation proposal | ||
- The implementation is supposed to rely on existing range-based or iterator-based algorithm patterns, which are already | ||
implemented in oneDPL. | ||
- Several algorithms described in P3179 have slightly different semantics. To implement these, some existing algorithm patterns | ||
might require modifications or new versions. | ||
Comment on lines
+20
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think we need to go into the details of each, I think we should at least list the APIs with semantic differences which may need modifications There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. probably, it is reasonable.. |
||
|
||
### Test coverage | ||
dmitriy-sobolev marked this conversation as resolved.
Show resolved
Hide resolved
dmitriy-sobolev marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- It should be called with both small and large data sizes and with all the policies mentioned above. | ||
akukanov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- Output data, return type, and value should be checked/compared with the reference result | ||
computed by the corresponding serial std::ranges algorithm or by a custom implemented serial version | ||
MikeDvorskiy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
in case of different semantics. |
Uh oh!
There was an error while loading. Please reload this page.