QUARC: An Optimized DSL Framework Using LLVM
Author/Presenters
Event Type
Workshop
Compiler Analysis and Optimization
Compilers
Debugging
Parallel Programming Languages, Libraries, Models
and Notations
Program Transformation
SIGHPC Workshop
TimeMonday, November 13th2:30pm -
3pm
Location710
DescriptionWe describe aspects of the implementation of QUARC, a
framework layered on C++ used for a domain specific
language for Lattice Quantum Chromodynamics. It is built
on top of Clang/LLVM to leverage long term support and
performance portability. QUARC implements a general
array extension to C++ with implicit data parallelism. A
notable innovation is the method for using templates to
capture and encode the high-level abstractions and to
communicate these abstractions transparently to LLVM
through an unmodified Clang. Another notable feature is
a general array transformation mechanism used to improve
memory hierarchy performance and maximize opportunities
for vectorization. This reshapes and transposes arrays
of structures containing nested complex arrays into
arrays of structures of arrays. We discuss an example
for which QUARC generated code has performance
competitive with the very best hand-optimized
libraries.




