Olav Beckmann
and
Paul H J Kelly
and
Department of Computing, Imperial College London
180 Queen's Gate, London SW7 2AZ, United Kingdom
The TaskGraph Library is a C++ library for dynamic code generation and component composition, which combines specialisation with dependence analysis and restructuring optimisation. A TaskGraph represents a fragment of code which is constructed and manipulated at run-time, then compiled, dynamically linked and executed. The TaskGraph Library is implemented purely in C++, using macros and operator overloading to define a simplified, C-like sub-language that is used for constructing TaskGraphs. The internal representation for generated code is SUIF-1, which facilitates using a range of analysis and restructuring passes.
We view the TaskGraph library as a research tool that can support effective large-scale computation in two distinct ways: dynamic component modification, leading to code that can tune itself to a particular platform at run-time, and optimisation of dynamic component composition, where the internal structure of software components is adapted at run-time to their calling context.