cplusplus / papers

ISO/IEC JTC1 SC22 WG21 paper scheduling and management
622 stars 19 forks source link

P3179 R1 C++ parallel range algorithms #1815

Open dhollman opened 3 months ago

dhollman commented 3 months ago

P3179RO C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)

foonathan commented 3 months ago

SG9 discussed it in Tokyo on Wednesday: https://wiki.edg.com/bin/view/Wg21tokyo2024/NotesSG9P3179R0

Poll: std::ranges::for_each[_n] (non-execution policy) returns the iterator and the function object, as you could accumulate state in the function object. The version of std::ranges::for_each[_n] with an execution policy should not return the function object (you can't accumulate state in there and for consistency with the non-range parallel version).

SF F N A SA
2 4 2 0 0

Attendance: 8 Author: N Outcome: Strong consensus in favor.

Poll: std::ranges::for_each[_n] with execution policy should return the computed end iterator.

SF F N A SA
4 2 2 0 0

Attendance: 9 Author: N Outcome: Strong consensus in favor.

Poll: All other std::ranges algorithms with execution policy should return the same result type as the std::ranges version without execution policy.

Unanimous consent. Attendance: 9

Poll: Like the C++17 parallel algorithms, the std::ranges parallel version should also allow forward iterators, not just random access iterators. This means that the implementation might need to silently fallback to serial code, but can parallelize some special cases of non-random access iterators that would be prohibited otherwise.

SF F N A SA
3 2 3 1 1

Attendance: 10 Author: N, I see the value for both directions. Outcome: Weak consensus in favor. SA: This is user-hostile and something we already warn against. We shouldn't standardize something we warn against.

Poll: The std::ranges parallel algorithms should require that the function objects passed as arguments have a const-qualified operator().

SF F N A SA
0 7 2 0 0

Attendance: 10 Author: F Outcome: Strong consensus in favor. Abstain: I would like field experience before deciding.

The author will incorporate feedback and come back with a new revision. There were also concerned raised about the explosion of algorithm variants when this and a potential future paper proposing sender/receiver based async algorithms are both added. A joint session with SG1 and SG9 and potentially LEWG as a whole is probably necessary to address those concerns.

wg21bot commented 2 months ago

P3179R0 C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)

wg21bot commented 1 month ago

P3179R1 C++ parallel range algorithms (Ruslan Arutyunyan, Alexey Kukanov)

inbal2l commented 1 month ago

@dhollman @foonathan @ogiroux - do you think you could have a joint session for this in St. Louis? Or does it require more time in SG9 before that?

ogiroux commented 2 weeks ago

SG1/SG9 in St Louis

Continue work on P3179R2 for IS'26 with these notes:

  1. RandomAccess for inputs and outputs
  2. Iterators for outputs
  3. We believe the overloads are worth it SF F N A SA 7 4 2 1 0 A: it's probably worth waiting a bit to unify with the S&R updates