A High Performance Backend for Array-Oriented Programming on Next-Generation Processing Units

Simon Andreas Frimann Lund

Abstract

The financial crisis, which started in 2008, spawned the HIPERFIT research center as a
preventive measure against future financial crises. The goal of prevention is to be met
by improving mathematical models for finance, the verifiable description of them in
domain-specific languages and the efficient execution of them on high performance
systems.
This work investigates the requirements for, and the implementation of, a high
performance backend supporting these goals. This involves an outline of the hardware
available today, in the near future and how to program it for high performance. The
main challenge is to bridge the gaps between performance, productivity and portability.
A declarative high-level array-oriented programming model is explored to achieve
this goal and a backend implemented to support it. Different strategies to the backend
design and application of optimizations are analyzed and experimentally tested. Resulting
in the design and implementation of Bohrium a runtime-system for transforming,
scheduling and executing array-oriented programs.
Multiple interfaces for existing languages such as Python, C++, C#, and F# have
been built which utilize the backend. A suite of benchmarks applications, implemented
in these languages, demonstrate the high-level declarative form of the programming
model. Performance studies show that the high-level declarative programming model
can be used to not only match but also exceed the performance of hand-coded implementations
in low-level languages.
Original languageEnglish
PublisherThe Niels Bohr Institute, Faculty of Science, University of Copenhagen
Number of pages181
Publication statusPublished - 2015

Cite this