Lab Home | Phone | Search | ||||||||
|
||||||||
Over the past four decades, the "semantic gap" has been growing between conflicting needs to program productively in high-level languages and to simultaneously exploit the performance potential of increasingly complex computing systems. To address this problem, we are developing QUARC, a framework for the optimized compilation of domain-specific extensions to C++. QUARC defines a high-level array language using template meta-programming. The templates instantiate become calls to pseudo-procedures that are then transformed into an abstract intermediate representation suitable for optimization at the object level. Extensions to the back end compiler (CLANG/LLVM) implement code transformations as well as innovative data transformations such as transposition, reshaping, and partitioning for vectorization, parallelism, and memory locality prior to scalarization. This work is driven by the need to propagate "ninja programmer" performance successes on solvers in the US Lattice QCD community to more parts of the QCD applications as well as to a broader group of physicists exploring new physics and methods. A key goal is to accelerate future development on emerging systems. Host: Curt Canada |