QUARK (QUeuing And Runtime for Kernels) provides a library that enables the dynamic execution of tasks with data dependencies in a multi-core, multi-socket, shared-memory environment. QUARK infers data dependencies and precedence constraints between tasks from the way that the data is used, and then executes the tasks in an asynchronous, dynamic fashion in order to achieve a high utilization of the available resources.
QUARK is designed to be easy to use and it is intended to scale to large numbers of cores. It should enable the efficient expression and implementation of complex algorithms. The driving application behind the development of QUARK is the PLASMA linear algebra library, and the QUARK runtime contains several optimizations inspired by the algorithms in PLASMA.
An early release of QUARK is being prepared, with a well-stressed and robust implementation and an initial Users’ Guide and Reference Guide. Additional documentation will be provided in future releases.