The Parallel Runtime Scheduling and Execution Controller (PaRSEC) is a generic framework for architecture-aware scheduling and management of micro-tasks on distributed many-core heterogeneous architectures. Applications we consider are expressed as a Direct Acyclic Graph (DAG) of tasks, with edges designating data dependencies. DAGs are represented in a compact problem-size independent format that can be queried to discover data dependencies in a totally distributed fashion, a drastic shift from today’s programming models, which are based on sequential flow of execution.
PaRSEC orchestrates the execution of an algorithm on a particular set of resources, assigns computation threads to the cores, overlaps communications and computations, and uses a dynamic, fully-distributed scheduler based on architectural features such as NUMA nodes and algorithmic features such as data reuse. PaRSEC includes a set of tools to generate the DAGs and integrate them in legacy codes, a runtime library to schedule the micro-tasks on heterogeneous resources, and tools to evaluate and visualize the efficiency of the scheduling. Many dense and sparse linear algebra extensions have been implemented, as well as chemistry, and seismology applications, which produced significant speedup in production codes.
Find out more at http://icl.utk.edu/parsec/
In Collaboration With