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 signiﬁcantly restructure their code to deliver required performance. Differences in architectures will make performance portability especially difﬁcult 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 speciﬁc 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 speciﬁc transformations not done by the vendor compilers. This technology will distribute the burden of developing the best code for hardware components and deﬁne automated domain speciﬁc code generators to address the complexity of building and maintaining specialized hardware speciﬁc code to application domains and application groups.