Date: Wed, 11 Sep 2019 15:24:04 -0400
On Tue, Sep 10, 2019 at 8:03 PM Michael Wong <fraggamuffin_at_[hidden]> wrote:
> Topic: SG14 Low Latency Monthly
> Join URL: https://iso.zoom.us/j/406503386
> Time: 2:00 PM Eastern Time (US and Canada)
> Apr 17, 2019 2:00 PM
> May 8, 2019 2:00 PM
> Jun 12, 2019 2:00 PM
> Jul 10, 2019 2:00 PM
> Aug 14, 2019 2:00 PM
> Sep 11, 2019 2:00 PM
> Oct 9, 2019 2:00 PM
> Please download and import the following iCalendar (.ics) files to
> your
> calendar system.
> Monthly:
>
> https://iso.zoom.us/meeting/406503386/ics?icsToken=8d46c9bf03730dd553cc4f9306ceedfc45867014725c0aca989cb39d9602ae7c
>
> Join from PC, Mac, Linux, iOS or Android: https://iso.zoom.us/j/406503386
>
> Or iPhone one-tap :
> US: +16468769923,,406503386# or +16699006833,,406503386#
> Or Telephone:
> Dial(for higher quality, dial a number based on your current
> location):
> US: +1 646 876 9923 or +1 669 900 6833 or +1 408 638 0968 or 877
> 369 0926 (Toll Free) or 877 853 5247 (Toll Free)
> Meeting ID: 406 503 386
> International numbers available: https://zoom.us/u/abhaIjFKLZ
>
> Or Skype for Business (Lync):
> https://iso.zoom.us/skype/406503386
>
> Agenda:
>
> 1. Opening and introductions
>
> 1.1 Roll call of participants
>
Andreas Fertig, Ben Craig, Billy Baker, Grafik Robot/rene Riviera, Matthew
Butler, Hubert Tong, John McFarlane, Marco Foco, Ronen Friedman, Staffan
Tj, Michael Wong, Neil Horlock, Mark Hoemmen
> 1.2 Adopt agenda
>
Approve.
> 1.3 Approve minutes from previous meeting, and approve publishing
> previously approved minutes to ISOCPP.org
>
Approve.
> 1.4 Action items from previous meetings
>
None.
> 2. Main issues (125 min)
>
> 2.1 General logistics
>
> Plan CPPCON SG14 meeting
>
Room booking is in Gaylord Hotel, about 30-40, regular seating
Rene Riviera.Steffan TJ, Matthew Butler. Michael Wong
2.2 Paper reviews
>
> 2.2.1 Discuss Possible paper agenda for CPPCON.
>
> 1. "Member Layout Control"
> <
>
> https://raw.githack.com/grafikrobot/papers/master/wg21/member_layout/member_layout_D1605R0.html
> >
>
> C++ alliance Marsahl Clow, Vinnie
>
Allow optimizations that are difficult for embdded systems, rearranging
member of class for packing
consider interaction with alignas
should support alignas within this feature
talk about cache line and false sharing
talk about context sensitive keyword
solves a very specific issue, this could be not broad enogh for C++
would prefer all the controls in one place, unifying all the other
alignment controls padding ,layout, order, alignment
propose some form of unification, like pragma pack,
this depends on committee
suggest syntax be extendable, to alignment
2. Linear Algebra by Bob Steagall/Guy Davidson
>
> 3. BLAS by Mark Hoemmen
>
Working on implementation of the proposal with stub filled in
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1674r0.md
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1673r0.md
wrapping one of the BLAS function, takes mdspan as input and output, has
layout and accessors, not all are friendly to the BLAS
implementation has a selection process that picks out what is really needed
previous review has concerns about small matrixes which needs to pass by
value
mdarray proposal is a container version of mdspan may be useful for pass by
value
small linear algebra, but batches of them at a time
Games might want to target this as well
design is based on BLAS but that is based on larger matrixes
one optimization that is missing is when value is so small it could pass by
reference
need feedback on vector-vector, matrix-matrix operations, and these
vector-vector overlap standard algorithms,
some of them makes sense to keep, but others may not, e.g. dot-products,
norm,
copy-swap is one that overlaps standard algorithm
possible integration means implementing 1385 on top of this BLAS wrapper
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1385r2.html
Intention is not to compete with each other
Feedback request:
What about very small matrices and vectors?
Can take those as md-span or md-array by reference, so should we try to
pass by value, if you have experience with very small matrices to weigh in.
Should we drop BLAS-1 and replace with standard algorithms? This is
thin-BLAS
Can we have an engine in 1385 that would call the function in this
proposal? Yes Bob and I have thought of that, then BLAS api would be there.
Though some people prefer an explicit interface, and additional
capabilities like different data layouts for increased performance.
Reference vs value case, from games industry needs to understand needs
comparable performance between debug to release builds
debug builds have to inline more
one of the key requirement: debug builds are rare and slow, and no inlining
in most libraries we use,
so we force inlining in both debug and release, need to reduce the number
of calls if you can get the code to inline for small things
dereference and indirections kills debuggability
if matrices have compile dimensions, then we may be able to plug in our own
vector code, with built-in intrinsics, pluggable only needed for one
implementation, usually custom written code
without engine to plug in different backends, then you get what std lib
provides, this will kill it for game developers
like batch interface? yes
how about as a library? probably
single data arrays that we transform is ok
this gives value to change BE and customize
Please consider Paper 1832 shows game industry expectation:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1832r0.html
SG15 is meeting after CPPCON, Rene will be there and may proxy P1832
Any other papers?
>
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1832r0.html
Improving Debug Builds Inline With User Expectation before LA proxy by Rene
> 2.2.2 Error Size Benchmarking by Ben Craig Update.
>
> P1640R0: Error size benchmarking
>
>
> https://raw.githack.com/ben-craig/error_bench/master/error_size_benchmarking.html
> <
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__raw.githack.com_ben-2Dcraig_error-5Fbench_master_error-5Fsize-5Fbenchmarking.html&d=DwMGaQ&c=r2dcLCtU9q6n0vrtnDw9vg&r=bHyceIQQHQvbfTSwvF3b5ym3XCQIh0_iFRNJbNk-FCc&m=_OFSroXnnYHKfBQqw8TVSac0et4fEQ80IMeaj-lWcD4&s=LGjT-TVB94ptHzUmdPNh4LJr1eMpKuAcmL7pQSWzxxA&e=>
>
>
> 2 papers for Belfast: stripped down version of this same paper more focused
working on timing/speed paper, got data, will share it in the chat, need to
add words and graph
https://raw.githack.com/ben-craig/error_bench/err_gauss/results/ret_nd/happy_8.html
early data
showing exception/terminate to be less cost then other error returns
checking with implementers on the numbers
nothign surprising so far at macro level
micro level yes, returnign a struct that is trivial, is more expensive then
a non-trivial with a defined destructor, due to register filling
are you looking value in the struct, struct is a pointer to error domain
and a value, if domain is null then there is no error and i dont look
in some cases ,termnate is a recovery mechanism, when compiler running and
runs out of diskspace, then ok to terminate, could also be when u run out
of heap
2.2.3 PTF/Colony?
>
> 2.2.4 Linear Algebra update from Sept 4
>
> Next call: Oct 2: 3 PM ET
>
> 2.2.5: Any serious study on cost of Exception vs cost of Error Codes
>
Ben Craig is working on this.
> 2.2.6 any other proposal for reviews?
>
> 2.3 Domain-specific discussions
>
> 2.3.1 Embedded domain discussions: Ben Craig, Wooter and Odin Holmes ,
> John MacFarlane
> 2.3.3 Games Domain: Rene Riviera, Guy Davidson and Paul Hampson
> 2.3.4 Finance Domain: Carl Cooke, Neal Horlock, Mateusz Pusz and Clay
> Trychta
>
Peter Langford of STAC to think about the next London November event after
Belfast meeting. Discussion of what C++20 may be offering for finance
commnuiy.
SG1 concept of affinity may be different then affinity in low latency which
requires placement and explciit control
HPC rely on more the way you launch a batch job on placement on MPI and
OpenMP threads, and OpenMP deals wth first touch and thread teams
one virtual allocation that crosses numa domains
we dont use explicit control as much unless it is on GPUs
P484 thread constructor attribute
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0484r1.pdf
Should we create a scorecard to WG21 on each of our domains.
2.3.5 Linear Algenra: Bob Steagall, Mark Hoemman
>
> 2.4 Other Papers and proposals
>
> 2.5 Future F2F meetings:
>
Sept 18 CPPCON
> 2.6 future C++ Standard meetings:
> https://isocpp.org/std/meetings-and-participation/upcoming-meetings
>
> - *2019-11-04 to 09: Belfast, Northern Ireland;* Archer Yates
> -
> - 2020-02-10 to 15: Prague, Czech Republic
>
> - 2020-06-01 to 06: Bulgaria
> - 2020-11: (New York, tentative)
> - 2021-02-22 to 27: Kona, HI, USA
>
> 3. Any other business
> Reflector
> https://lists.isocpp.org/mailman/listinfo.cgi/sg14
> As well as look through papers marked "SG14" in recent standards committee
> paper mailings:
> http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/
> http://open-std.org/jtc1/sc22/wg21/docs/papers/2016/
>
> Code and proposal Staging area
> https://github.com/WG21-SG14/SG14
> 4. Review
>
> 4.1 Review and approve resolutions and issues [e.g., changes to SG's
> working draft]
>
> 4.2 Review action items (5 min)
>
> 5. Closing process
>
> 5.1 Establish next agenda
>
>
> 5.2 Future meeting
>
> Oct 9
>
> Oct 9: mailing deadline Monday Oct 7
>
> Nov 13: cancelled due to C++ Std meeting
>
> Topic: SG14 Low Latency Monthly
> Join URL: https://iso.zoom.us/j/406503386
> Time: 2:00 PM Eastern Time (US and Canada)
> Apr 17, 2019 2:00 PM
> May 8, 2019 2:00 PM
> Jun 12, 2019 2:00 PM
> Jul 10, 2019 2:00 PM
> Aug 14, 2019 2:00 PM
> Sep 11, 2019 2:00 PM
> Oct 9, 2019 2:00 PM
> Please download and import the following iCalendar (.ics) files to
> your
> calendar system.
> Monthly:
>
> https://iso.zoom.us/meeting/406503386/ics?icsToken=8d46c9bf03730dd553cc4f9306ceedfc45867014725c0aca989cb39d9602ae7c
>
> Join from PC, Mac, Linux, iOS or Android: https://iso.zoom.us/j/406503386
>
> Or iPhone one-tap :
> US: +16468769923,,406503386# or +16699006833,,406503386#
> Or Telephone:
> Dial(for higher quality, dial a number based on your current
> location):
> US: +1 646 876 9923 or +1 669 900 6833 or +1 408 638 0968 or 877
> 369 0926 (Toll Free) or 877 853 5247 (Toll Free)
> Meeting ID: 406 503 386
> International numbers available: https://zoom.us/u/abhaIjFKLZ
>
> Or Skype for Business (Lync):
> https://iso.zoom.us/skype/406503386
>
> Agenda:
>
> 1. Opening and introductions
>
> 1.1 Roll call of participants
>
Andreas Fertig, Ben Craig, Billy Baker, Grafik Robot/rene Riviera, Matthew
Butler, Hubert Tong, John McFarlane, Marco Foco, Ronen Friedman, Staffan
Tj, Michael Wong, Neil Horlock, Mark Hoemmen
> 1.2 Adopt agenda
>
Approve.
> 1.3 Approve minutes from previous meeting, and approve publishing
> previously approved minutes to ISOCPP.org
>
Approve.
> 1.4 Action items from previous meetings
>
None.
> 2. Main issues (125 min)
>
> 2.1 General logistics
>
> Plan CPPCON SG14 meeting
>
Room booking is in Gaylord Hotel, about 30-40, regular seating
Rene Riviera.Steffan TJ, Matthew Butler. Michael Wong
2.2 Paper reviews
>
> 2.2.1 Discuss Possible paper agenda for CPPCON.
>
> 1. "Member Layout Control"
> <
>
> https://raw.githack.com/grafikrobot/papers/master/wg21/member_layout/member_layout_D1605R0.html
> >
>
> C++ alliance Marsahl Clow, Vinnie
>
Allow optimizations that are difficult for embdded systems, rearranging
member of class for packing
consider interaction with alignas
should support alignas within this feature
talk about cache line and false sharing
talk about context sensitive keyword
solves a very specific issue, this could be not broad enogh for C++
would prefer all the controls in one place, unifying all the other
alignment controls padding ,layout, order, alignment
propose some form of unification, like pragma pack,
this depends on committee
suggest syntax be extendable, to alignment
2. Linear Algebra by Bob Steagall/Guy Davidson
>
> 3. BLAS by Mark Hoemmen
>
Working on implementation of the proposal with stub filled in
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1674r0.md
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1673r0.md
wrapping one of the BLAS function, takes mdspan as input and output, has
layout and accessors, not all are friendly to the BLAS
implementation has a selection process that picks out what is really needed
previous review has concerns about small matrixes which needs to pass by
value
mdarray proposal is a container version of mdspan may be useful for pass by
value
small linear algebra, but batches of them at a time
Games might want to target this as well
design is based on BLAS but that is based on larger matrixes
one optimization that is missing is when value is so small it could pass by
reference
need feedback on vector-vector, matrix-matrix operations, and these
vector-vector overlap standard algorithms,
some of them makes sense to keep, but others may not, e.g. dot-products,
norm,
copy-swap is one that overlaps standard algorithm
possible integration means implementing 1385 on top of this BLAS wrapper
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1385r2.html
Intention is not to compete with each other
Feedback request:
What about very small matrices and vectors?
Can take those as md-span or md-array by reference, so should we try to
pass by value, if you have experience with very small matrices to weigh in.
Should we drop BLAS-1 and replace with standard algorithms? This is
thin-BLAS
Can we have an engine in 1385 that would call the function in this
proposal? Yes Bob and I have thought of that, then BLAS api would be there.
Though some people prefer an explicit interface, and additional
capabilities like different data layouts for increased performance.
Reference vs value case, from games industry needs to understand needs
comparable performance between debug to release builds
debug builds have to inline more
one of the key requirement: debug builds are rare and slow, and no inlining
in most libraries we use,
so we force inlining in both debug and release, need to reduce the number
of calls if you can get the code to inline for small things
dereference and indirections kills debuggability
if matrices have compile dimensions, then we may be able to plug in our own
vector code, with built-in intrinsics, pluggable only needed for one
implementation, usually custom written code
without engine to plug in different backends, then you get what std lib
provides, this will kill it for game developers
like batch interface? yes
how about as a library? probably
single data arrays that we transform is ok
this gives value to change BE and customize
Please consider Paper 1832 shows game industry expectation:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1832r0.html
SG15 is meeting after CPPCON, Rene will be there and may proxy P1832
Any other papers?
>
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1832r0.html
Improving Debug Builds Inline With User Expectation before LA proxy by Rene
> 2.2.2 Error Size Benchmarking by Ben Craig Update.
>
> P1640R0: Error size benchmarking
>
>
> https://raw.githack.com/ben-craig/error_bench/master/error_size_benchmarking.html
> <
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__raw.githack.com_ben-2Dcraig_error-5Fbench_master_error-5Fsize-5Fbenchmarking.html&d=DwMGaQ&c=r2dcLCtU9q6n0vrtnDw9vg&r=bHyceIQQHQvbfTSwvF3b5ym3XCQIh0_iFRNJbNk-FCc&m=_OFSroXnnYHKfBQqw8TVSac0et4fEQ80IMeaj-lWcD4&s=LGjT-TVB94ptHzUmdPNh4LJr1eMpKuAcmL7pQSWzxxA&e=>
>
>
> 2 papers for Belfast: stripped down version of this same paper more focused
working on timing/speed paper, got data, will share it in the chat, need to
add words and graph
https://raw.githack.com/ben-craig/error_bench/err_gauss/results/ret_nd/happy_8.html
early data
showing exception/terminate to be less cost then other error returns
checking with implementers on the numbers
nothign surprising so far at macro level
micro level yes, returnign a struct that is trivial, is more expensive then
a non-trivial with a defined destructor, due to register filling
are you looking value in the struct, struct is a pointer to error domain
and a value, if domain is null then there is no error and i dont look
in some cases ,termnate is a recovery mechanism, when compiler running and
runs out of diskspace, then ok to terminate, could also be when u run out
of heap
2.2.3 PTF/Colony?
>
> 2.2.4 Linear Algebra update from Sept 4
>
> Next call: Oct 2: 3 PM ET
>
> 2.2.5: Any serious study on cost of Exception vs cost of Error Codes
>
Ben Craig is working on this.
> 2.2.6 any other proposal for reviews?
>
> 2.3 Domain-specific discussions
>
> 2.3.1 Embedded domain discussions: Ben Craig, Wooter and Odin Holmes ,
> John MacFarlane
> 2.3.3 Games Domain: Rene Riviera, Guy Davidson and Paul Hampson
> 2.3.4 Finance Domain: Carl Cooke, Neal Horlock, Mateusz Pusz and Clay
> Trychta
>
Peter Langford of STAC to think about the next London November event after
Belfast meeting. Discussion of what C++20 may be offering for finance
commnuiy.
SG1 concept of affinity may be different then affinity in low latency which
requires placement and explciit control
HPC rely on more the way you launch a batch job on placement on MPI and
OpenMP threads, and OpenMP deals wth first touch and thread teams
one virtual allocation that crosses numa domains
we dont use explicit control as much unless it is on GPUs
P484 thread constructor attribute
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0484r1.pdf
Should we create a scorecard to WG21 on each of our domains.
2.3.5 Linear Algenra: Bob Steagall, Mark Hoemman
>
> 2.4 Other Papers and proposals
>
> 2.5 Future F2F meetings:
>
Sept 18 CPPCON
> 2.6 future C++ Standard meetings:
> https://isocpp.org/std/meetings-and-participation/upcoming-meetings
>
> - *2019-11-04 to 09: Belfast, Northern Ireland;* Archer Yates
> -
> - 2020-02-10 to 15: Prague, Czech Republic
>
> - 2020-06-01 to 06: Bulgaria
> - 2020-11: (New York, tentative)
> - 2021-02-22 to 27: Kona, HI, USA
>
> 3. Any other business
> Reflector
> https://lists.isocpp.org/mailman/listinfo.cgi/sg14
> As well as look through papers marked "SG14" in recent standards committee
> paper mailings:
> http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/
> http://open-std.org/jtc1/sc22/wg21/docs/papers/2016/
>
> Code and proposal Staging area
> https://github.com/WG21-SG14/SG14
> 4. Review
>
> 4.1 Review and approve resolutions and issues [e.g., changes to SG's
> working draft]
>
> 4.2 Review action items (5 min)
>
> 5. Closing process
>
> 5.1 Establish next agenda
>
>
> 5.2 Future meeting
>
> Oct 9
>
> Oct 9: mailing deadline Monday Oct 7
>
> Nov 13: cancelled due to C++ Std meeting
>
Received on 2019-09-11 14:26:26