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 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, and computational kernels have been re-implemented using PaRSEC, enabling better performance on distributed many-core systems.
Find out more at http://icl.utk.edu/parsec/