The team is enhancing existing widely used performance tools and developing new tools for next-generation platforms. As node architectures become more complicated and concurrency even more necessary, impediments to performance and scalability become even harder to diagnose and fix. Development tools provide essential insight into these performance challenges and code transformation and support capabilities that help software teams generate efficient code, use new memory systems, and more.
Objective: Develop a standardized interface to hardware performance counters
Understanding the performance characteristics of exascale applications is necessary in order to identify and address the barriers to achieving performance goals. This becomes more difficult as the architectures become more complex. The Performance Application Programming Interface (PAPI) provides both library and application developers with generic and portable access to low-level performance counters found across the exascale machine.
Principal Investigators: Jack Dongarra, University of Tennessee – Knoxville
Objective: Develop an HPC Tool Kit for performance analysis
Exascale machines will be highly complex systems that couple multicore processors with accelerators and share a deep, heterogeneous memory hierarchy. Understanding performance bottlenecks within and across the nodes in extreme-scale computer systems is a first step toward mitigating them to improve library and application performance. The HPCToolkit project is providing a suite of software tools.
Principal Investigators: John Mellor-Crummey, Rice University
Objective: Develop a software tool chain for emerging architectures
Programmer productivity and performance portability are two of the most important challenges facing users of exascale architectures that include heterogeneous compute nodes, deep memory hierarchies, and persistent memory. Library and application developers targeting these architectures will find it increasingly difficult to meet these two challenges without integrated capabilities that allow for flexibility, composability, and interoperability across a mixture of programming, and runtime.
Principal Investigators: Jeffrey Vetter, Oak Ridge National Laboratory
Objective: Develop/enhance this OpenMP programming model
Exascale architectures are expected to feature a dramatic increase in the amount of intra-node threading, greater heterogeneity, and more complex hierarchical memory subsystems. OpenMP is a directive-based standard specification and runtime for programming shared-memory and accelerator systems and is used by many exascale applications for in-node programming.
Principal Investigators: Barbara Chapman, Brookhaven National Laboratory
Objective: Develop a Fortran front-end for LLVM
The Fortran programming language is an essential component of many exascale applications and broad scientific missions within the US Department of Energy (DOE). Until recently, Fortran has not had the benefit of using the widely leveraged LLVM Compiler Infrastructure and the vibrant community that supports it.
Principal Investigators: Pat McCormick, Los Alamos National Laboratory