Software Technology

Development Tools

Exascale Code Generation Toolkit

Principal Investigator: Dan Quinlan, Lawrence Livermore National Laboratory

This project is centered on developing an Exascale Code Generation Toolkit.  Exascale computer architectures will use fast changing and diverse hardware components, including: deeper memory hierarchies, heterogeneous processors, custom networks, vector units, etc. Each of the components will require application developers to significantly restructure their code to deliver required performance. Differences in architectures will make performance portability especially difficult and may not be addressed with separate vendor tools. The toolkit will integrate selected tools for use by application developers into the ECP software stack. The toolkit will include specific performance optimization tools (AutoPar, PolyOpt, StencilGen, TensorGen) and correctness tools (CodeThorn and PolyCheck). Both the performance optimization tools and CodeThorn are based on the ROSE compiler framework and represent static analysis tools, while PolyCheck is based on the LLVM compiler framework and is a dynamic analysis tool. Our approach will leverage high-level semantics(e.g., uniqueness of indirect array accesses) in applications and perform architecture specific transformations not done by the vendor compilers. This technology will distribute the burden of developing the best code for hardware components and define automated domain specific code generators to address the complexity of building and maintaining specialized hardware specific code to application domains and application groups.