Programming with Lightweight Threads: Argobots
Pavan Balaji and Shintaro Iwasaki (Argonne National Laboratory)
Room: Seattle Ballroom 3
Threading models already play an important role in intranode programming and will continue to do so. Over the past few decades, lightweight threading models such as Argobots, Qthreads, OmpSs, and Con- verse have been developed and have been shown to outperform traditional Pthreads by several orders of magnitude. Consequently, they are already used in a number of large software projects including LLVM OpenMP (through BOLT), Intel DAOS, Chapel, Charm++, Mercury, and are supported by a number of MPI implementations such as MPICH, Open MPI, and MVAPICH, for hybrid MPI+threads program- ming. In this tutorial, we will focus on Argobots as the primary user-level threads example, although we will briefly introduce other user-level threading models too. We will start with the fundamentals of lightweight threading models and go on to cover advanced features that would allow users to achieve the best performance for their specific applications. We will also cover high-level programming interfaces that use lightweight threads, including OpenMP, focusing on aspects that users should watch out for. The tutorial will include short hands-on “breaks” after each concept is introduced, so attendees can apply these concepts in additional exercises.