View analytic
Tuesday, September 26 • 9:00am - 10:00am
C++17 ParallelSTL: A Standardization Experience Report for CPU and GPU on SYCL

Log in to save this to your schedule and see who's attending!

The most significant improvement in C++17 will be Parallel Algorithms in the STL. But it is meant only for CPUs, as C++ does not define heterogeneous devices yet (though SG14 is working on that). How would you like to learn how to run Parallel STL algorithms on both CPU and GPU?

Parallel STL is an implementation of the Technical Specification for C++ Extensions for Parallelism for both CPU and GPU with SYCL Heterogeneous C++ language. This technical specification describes a set of requirements for implementations of an interface that C++ programs may use to invoke algorithms with parallel execution. In practice, this specification allows users to specify execution policies to traditional STL algorithms which will enable the execution of those algorithms in parallel. The various policies can specify different kinds of parallel execution. For example,

std::vector<int> v = ...
// Traditional sequential sort:
std::sort(vec.begin(), vec.end());
// Explicit sequential sort:
std::sort(seq, vec.begin(), vec.end());
// Explicit parallel sort if possible:
std::sort(par, vec.begin(), vec.end());
// Explicit parallel and vectorized sort if possible:
std::sort(par_unseq, vec.begin(), vec.end());

So how does a Technical Specification become a Standard? As it turns out, in this case, not without harrowing twists and turns worthy of an Agatha Christie novel. This talk will also be the story behind the C++17 standardization process of the Parallelism TS and why we made so many changes. While it started life as a Technical Specification (TS), did you know all the changes we made to it before we added it to C++17 and why? For example, we changed the names of the execution policies, removed exception handling support, disabled dynamic execution, unified some of the numeric algorithm names, allowed copying arguments to function objects given to parallel algorithms, and addressed complexity and iterator concerns as we lived through it as a member of SG1 and the editor of several TSes.

The implementation is available here: https://github.com/KhronosGroup/SyclParallelSTL/blob/master/README.md

avatar for Gordon  Brown

Gordon Brown

Staff Software Engineer, SYCL & C++, Codeplay Software
Gordon Brown is a senior software engineer at Codeplay Software specializing in heterogeneous programming models for C++. He has been involved in the standardization of the Khronos standard SYCL and the development of Codeplay's implementation of the standard from its inception... Read More →

Ruyman Reyes

Ruyman Reyes Ruyman Reyes works at Codeplay Software as Senior Software Engineer for ComputeCpp, Codeplay's SYCL implementation. He contributes to the C++ and SYCL specifications and leads ComputeCpp (Codeplay's SYCL implementation) and coordinates the efforts in the Khronos Para... Read More →
avatar for Michael Wong

Michael Wong

VP Research & Development, Codeplay
Michael Wong is VP of R&D at Codeplay Software. He is a current Director and VP of ISOCPP , and a senior member of the C++ Standards Committee with more then 15 years of experience. | He chairs the WG21 SG5 Transactional Memory and SG14 Games Development/Low Latency/Financials C++ groups and is the co-author of a number C++/OpenMP/Transactional memory features including generalized attributes, user-defined literals, inheriting constructors, weakly ordered memory models, and explicit conversion operators. He has published numerous research papers and is the author of a book on C++11. He has been in invited speaker and keynote at numerous conferences. | | He is currently the editor of SG1 Concurrency TS and SG5 Transactional Memory TS. He is also the Chair of the SYCL standard and all Programming Languages for Standards Council of Canada. | | Previously, he was CEO of OpenMP involved with taking OpenMP toward Acceelerator support and the Technical Strategy Architect responsible for moving IBM's compilers to Clang/LLVM after leading... Read More →

Tuesday September 26, 2017 9:00am - 10:00am
Meydenbauer TBA #7 Meydenbauer Center
Feedback form isn't open yet.

Attendees (25)