SEPS Tutorial: Task-Based Programming Everywhere from Supercomputing to Embedded Multicore Systems
This tutorial presents task-based programming models, such as the OmpSs and OpenMP 4.0 Models. OmpSs is a programming model developed at Barcelona Supercomputing Center (BSC). Like OpenMP, it is based on compiler directives. It is the base platform where BSC has developed OpenMP tasking, support for dependences, priorities, task reductions, and it also includes support for heterogeneous devices.
We will introduce the OmpSs basic concepts related to task-based parallelism for Symmetric Multi-Processor (SMP) cores and then quickly move to the support for heterogeneous devices. OmpSs allows to leverage existing OpenCL and CUDA kernels without the burden to have to deal with data copies to/from the devices. Data copies are just triggered automatically by the OmpSs runtime, based on the task dependence annotations. Furthermore, we will talk about the backend engine that enables the whole tasking model: the runtime system. For example, Nanos++ runtime system for OmpSs and OpenMP, and GOMP, IOMP, MTSP runtime systems for OpenMP. They provide services to support task parallelism using synchronizations based on data-dependencies, and they map task to threads in order to run them.
MTSP (Multicore Task Scheduling Platform) is a lightweight runtime system developed from scratch at UNICAMP (Brazil) for OpenMP 4.0. It focuses on supporting OpenMP 4.0 tasks with the least possible overhead, thus enabling task-based programming on embedded multicore systems, such as smartphones, tablets, etc. MTSP provides a hierarchical API to manage the creation, synchronization, and retirement of tasks, which eases the process of integrating a hardware accelerator into its pipeline, thus lowering the task management overhead and improving application scalability.
In addition to the presentations at the tutorial, there will also be a demo for some tools that ease programming and debugging taskified applications. In order to make the most out of the tutorial, it is highly recommended to visit https://pm.bsc.es/ompss-downloads, and download the OmpSs Virtual Machines before coming to the tutorial. The virtual machine contains the OmpSs environment already preinstalled, which helps the participants to quickly experiment with task-based programming.