cplusplus/papers

P2075 R6 Philox as an extension of the C++ RNG engines

Closed this issue · 13 comments

P2075R0 Philox as an extension of the C++ RNG engines (Pavel Dyakov, Ilya Burylov, Ruslan Arutyunyan, Andrey Nikolaev)

Reviewed Monday in Prague, but informally without quorum. We generally found the argument for Philox compelling.

P2075R1 Philox as an extension of the C++ RNG engines (Pavel Dyakov, Ilya Burylov, Ruslan Arutyunyan, Andrey Nikolaev, John Salmon)

2022-04-28 SG6 Telecon

P2075R1: Philox as an extension of the C++ RNG engines

2022-04-28 SG6 Telecon Minutes

Chair: Matthias Kretz

Champion: Ilya Burylov

Minute Taker: Dietmar Kühl

SUMMARY: Design questions raised were not nailed down and left up to authors and LEWG to decide. Feedback was given on how to provide an interface for splitting X (the counter). Assuming the guidance will be implemented, the next revision of the paper should target LEWG.

POLL:

  • Do you prefer a single engine? 3
  • Do you prefer a split between engine and PRF? 2

# of Authors: 2
# of Participants: 8
Author Position: prefer a single engine
Outcome: no guidance

POLL: Any objection to forwarding a new revision of the paper to LEWG, assuming the guidance we gave is implemented.

Outcome: unanimous consent

P2075R2 Philox as an extension of the C++ RNG engines (Pavel Dyakov, Ilya Burylov, Ruslan Arutyunyan, Andrey Nikolaev, John Salmon)

2023-02-07 SG6 Issaquah Meeting

P2075R2: Philox as an extension of the C++ RNG engines

2023-02-07 SG6 Issaquah Meeting Minutes

Champion: Ilya Burylov

Polls

POLL: Forward P2075R2 to LEWG without the feature to control correlation.

SF F N A SA
2 7 2 0 0

Outcome: Consensus

2023-09-26 Library Evolution Telecon

P2075R2: Philox as an extension of the C++ RNG engines

2023-09-26 Library Evolution Telecon Minutes

Champion: Ilya Burylov

Chair: Ben Craig

Minute Taker: Mark Hoemmen

Summary

POLL: We should promise more committee time to pursuing P2075: "Philox as an extension of the C++ RNG engines", knowing that our time is scarce and this will leave less time for other work.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
4 5 4 0 0

Attendance: 20

# of Authors: 2

Author Position: 2xSF

Outcome: Consensus

Next Steps

Next revision of the paper should discuss cross vendor buy in. Does this meet the stated goals on multiple ISAs?

Discuss set_counter interface choices. Maybe span would be a better input choice. Maybe a new philox_counter type would be better.

Consider a get_counter method.

Evaluate whether the latest wording patterns are used in the paper, particularly regarding the stream operator declarations (or lack thereof).

P2075R3 Philox as an extension of the C++ RNG engines (Ilya Burylov)

2023-11-28 Library Evolution Telecon

P2075R3: Philox as an extension of the C++ RNG engines

2023-11-28 Library Evolution Telecon Minutes

Champion: Ilya Burylov

Chair: Ben Craig

Minute Taker: Mark Hoemmen

Summary

Does this paper have:

  • Why does this belong in the standard library?
    Lots of progress in engine design, and this engine is useful for parallelization. Other existing engines are not good for parallelization. This engine has wide usage experience. Good stats properties and performance.
  • Examples? Yes
  • Field experience?
    • Implementation experience? Yes
    • Usage experience? Yes
    • Deployment experience? algorithm, yes. This specific facility, no.
  • Performance considerations? Yes
  • Discussion of prior art? Yes
  • Changes Library Evolution previously requested? No
  • Wording? Yes*
  • Breaking changes? No
  • Feature test macro? Yes
  • Freestanding? Random not currently freestanding. This doesn't use heap allocations or floating point math.
  • Format and/or iostream support? iostream
  • Hash support? No
  • Allocator support? No

POLL: Which philox architecture do we prefer?

1 engine template (6. Philox-Focused) Neutral engine template + prf template (7. Generic counter_based_engine)
8 2 0

Attendance: 14

# of Authors: 2

Author Position: 2x Philox Focused

Outcome: 1 engine template (6. Philox-Focused)

We also did some early wording review, though we skipped some of the mathy parts.

Next Steps

  • Evaluate whether the latest wording patterns are used in the paper, particularly regarding the stream operator declarations (or lack thereof).

  • Next revision of the paper should discuss cross vendor buy in. Does this meet the stated goals on multiple ISAs? Are existing ARM implementations vectorized?

  • Remove wording for the discarded alternative (7. Generic counter_based_engine).

  • Provide the new revision and return to LEWG.

P2075R4 Philox as an extension of the C++ RNG engines (Ilya Burylov, Ruslan Arutyunyan; Andrey Nikolaev; Alina Elizarova; Pavel Dyakov; John Salmon)

2024-03-20 Library Evolution Tokyo

P2075R4: Philox as an extension of the C++ RNG engines

2024-03-20 Library Evolution Tokyo Minutes

Champion: Ruslan Arutyunyan
Chair: Ben Craig / Inbal Levi
Minute Taker: Guy Davidson

Summary

POLL: Send P2075R4 (Philox as an extension of the C++ RNG engines) to LWG for C++26 classified as B3, to be confirmed with a Library Evolution electronic poll.

SF WF N WA SA
5 7 0 0 0

Attendance: 11+4

# of Authors: 1

Author Position: SF

Outcome: Unanimous consent

Comments:

Next Steps

Fix the LWG issues discovered and minuted, and take the paper to LWG pending the electronic poll.

P2075R5 was added to 2024 April LEWG electronic poll paper (P3213R0)

P2075R5 was forwarded to LWG for C++26 on LEWG 2024 April electronic poll (P3214R0)

P2075R6 Philox as an extension of the C++ RNG engines (Ilya Burylov, Ruslan Arutyunyan; Andrey Nikolaev; Alina Elizarova; Pavel Dyakov; John Salmon)