Tag: Kokkos

MDSPAN – A Deep Dive Spanning C++, Kokkos & SYCL – Nevin Liber – CppCon 2022

  • Lobby
  • Tag Archives: Kokkos

https://cppcon.digital-medium.co.uk/tag/cppcon/">cppcon.org/
---

MDSPAN - A Deep Dive Spanning C++, Kokkos & SYCL - Nevin Liber - CppCon 2022
https://github.com/CppCon/CppCon2022

This talk is a deep dive into the history behind MDSPAN (it’s roots being in Kokkos::View), the C++ standardization effort behind it (current status, various tradeoffs made over time, and language changes to help support it) and how SYCL is looking to leverage it in the future. MDSPAN is a non-owning multidimensional array reference, currently slated to be one of the flagship libraries added to C++23. View/reference vocabulary types first entered C++17 with string_view (a non-owning string reference), followed by span (a non-owning single dimension contiguous memory reference) and the ranges library. MDSPAN is the natural progression of this, and one that is critical to distributed (eg. CPU/GPU cppcon.digital-medium.co.uk/tag/programming/">programming) and high-performance computing.

MDSPAN got its roots from Kokkos::View, One key difference between Kokkos::View & MDSPAN: Kokkos::View may be owning (reference-counted reference semantics) or non-owning. The former is also being standardized for C++26 as MDARRAY, although with value and not reference-counted semantics. Separately, in 2014 Microsoft proposed a similar type, array_view, be added to the standard. After a year and a half and seven revisions, it was ultimately abandoned in favor of what is now MDSPAN because it did not provide a zero-overhead abstraction.

The MDSPAN proposal itself has taken seven years and has been through 17 revisions (so far), with input from many different companies as well as the C++ Committee. What changed over the years and why did it change? In parallel, two key language changes were made which ultimately improved the interface: deprecating the comma operator inside square brackets, and the addition of the multidimensional subscript operator. This allows the natural syntax of a[I, j, k] instead of inferior alternatives like a(i, j, k), a[I][j][k] or even a[Index(i), j, k].
---

Nevin Liber

Nevin “:-)” Liber is a Computer Scientist in the ALCF (Argonne Leadership Computing Facility) division of Argonne National Laboratory, where he works on the oneAPI/DPC++/SYCL backend for Kokkos for Aurora. He also represents Argonne on the SYCL and C++ Committees, the latter as Vice Chair of LEWGI/SG18. Back when he started out working at Bell Labs over three decades ago, a friend of his called and asked “What do you know about C++? You folks invented it!” That was enough to get a relatively shy junior engineer to go find the local expert so he could go play with it, and the rest is history! He has worked in C++ across various industries and platforms (big data, low-latency, operating systems, embedded, telephony and now exascale computing, just to name a few). He has also been a C++ Committee member since 2010 and hosted both the C++ and C standards meetings in Chicago.
__

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon.digital-medium.co.uk/tag/cppcon/">cppcon #cppcon.digital-medium.co.uk/tag/programming/">programming #cpp

Filed under: UncategorizedTagged with: , , , , , , , ,

C++ Performance Portability – Decade of Challenges Developing Kokkos – Christian Trott – CppCon 2022

  • Lobby
  • Tag Archives: Kokkos

https://cppcon.org/
---

C++ Performance Portability - Decade of Challenges Developing Kokkos - Christian Trott - CppCon 2022
https://github.com/CppCon/CppCon2022

Over the last decade, scientific computing had to deal with a diversifying hardware and programming model environment. Today’s scientific software engineers have to account for at least four vendor provided eco-systems: CUDA (NVIDIA), HIP (AMD), SYCL (Intel - OneAPI) and OpenMP. Performance Portability solutions attempt to relieve domain experts from the need to become experts in all of these, by providing an interface which enables developers to write their code once, and then execute it efficiently on any HPC platform.
This talk will discuss lessons learned from the last 10 years of developing and deploying Kokkos, a C++ based Performance Portability EcoSystem which is arguably the most widely used non-vendor solution for writing single source performance portable scientific applications. We will dive into some of the key challenges for designing performance portable software, and how to address them through appropriate API design. The talk will also show how some of the fundamental concepts for performance portability are getting introduced into the ISO C++ standard through upcoming features.
---

Christian Trott

Christian Trott is a high performance computing expert working at the Sandia National Laboratories. He leads the multi-institutional Kokkos C++ Performance Portability Programming Model development team and is member of the ISO C++ Standards Committee focusing on future C++ capabilities for parallel and heterogeneous computing. Christian is currently focused on making sure that Kokkos is ready for the exa-scale era high performance computing architectures. He also leads the mdspan proposal for the C++23 standard, which will provide multidimensional array views with configurable data layouts and data access functions.

His prior scientific work focused on computational material research using ab-initio calculations, molecular dynamic simulations and monte carlo methods for investigations of ion-conducting glass materials.
---

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com
YouTube Channel Managed by Digital Medium Ltd https://events.digital-medium.co.uk

#cppcon #programming #software

Filed under: UncategorizedTagged with: , , , , , , , , , , , ,