Abstract
Task-based programming models for shared memory—such as Cilk Plus and OpenMP 3—are well established and documented. However, with the increase in parallel, many-core, and heterogeneous systems, a number of research-driven projects have developed more diversified task-based support, employing various programming and runtime features. Unfortunately, despite the fact that dozens of different task-based systems exist today and are actively used for parallel and high-performance computing (HPC), no comprehensive overview or classification of task-based technologies for HPC exists. In this paper, we provide an initial task-focused taxonomy for HPC technologies, which covers both programming interfaces and runtime mechanisms. We demonstrate the usefulness of our taxonomy by classifying state-of-the-art task-based environments in use today.
Highlights
A large number of task-based programming environments have been developed over the past decades, and the task-based parallelism paradigm has proven widely applicable for consumer applications
The shift in high-performance computing (HPC) towards task-based parallel programming paradigms has led to a broad ecosystem of different task-based technologies
We provide an initial attempt at establishing a common taxonomy and providing the corresponding categorization for many existing task-based programming environments suitable for HPC
Summary
A large number of task-based programming environments have been developed over the past decades, and the task-based parallelism paradigm has proven widely applicable for consumer applications. Task-based parallelism is increasingly employed on distributed memory systems, which constitute the most important target for HPC In this context, tasks are often combined with a global address space (GAS) programming model such as GASPI [25] and scheduled across multiple processes, which together form the distributed execution of a single task-parallel program. HPX [17] and Charm++ [18] are asynchronous GAS runtimes This already very diverse landscape is made even more complex by the recent appearance of task-based runtimes using novel concepts, such as the data-centric programming language Legion [3]. Many of these task-based programming environments are maintained by a dedicated community of developers and are often research oriented.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have