In computational science, making efficient use of modern multicore based computer hardware is necessary in order to deal with complex real-life application problems. However, with increased hardware complexity, the cost in man hours of writing and re-writing software to adapt to evolving computer systems is becoming prohibitive. Task based parallel programming models aim to allow the application programmers to focus on the algorithms and applications, while the performance is handled by a runtime system that schedules the tasks onto nodes, cores, and accelerators. In this paper we describe a task parallel programming model where dependencies are represented through data versioning. The benefits of using this type of model are that it is easy to represent different types of dependencies and that scheduling decisions can be made locally. We implement this as a freely available C++ header-only template library, and show experimental results indicating that our implementation scales well, and performs well in comparison to other related efforts.
Available as PDF (2.76 MB, no cover)
Download BibTeX entry.