Proxy Applications

Proxy applications (proxy apps) are small, simplified codes that allow application developers to share important features of larger production applications without forcing collaborators to assimilate large and complex code bases. Proxy apps are frequently used to represent performance critical kernels, programming models, communication patterns, or essential numerical algorithms.  The ECP Proxy App Project curates a collection of proxy apps helps application teams, co-design centers, software technology projects, and vendors all use proxy apps as a major mechanism to drive collaborations and co-design solutions for exascale challenges.

Project Details

For traditional HPC modeling and simulation applications, proxy apps are routinely used to help developers navigate the ongoing transition from homogeneous (CPU only) computing platforms to heterogeneous (CPU+GPU) computing platforms.  Because proxy apps are easily modifiable, they are often used by both application developers and system vendors to prototype porting strategies, evaluate performance, and test compiler tool chains.  Such efforts help prepare the way for porting legacy codes as the scientific community adapts their largely MPI-based code base to run on platforms where much of the compute power resides in the GPUs.

With the increasing interest in using artificial intelligence (AI) tools, in conjunction with simulation codes, there is a growing need for proxy apps that demonstrate the use of machine learning (ML) and deep learning (DL) techniques for scientific applications on CPU+GPU platforms. Developing proxy apps for such ML/DL applications involves new challenges.  ML/DL applications tend to be data-centric in nature, as opposed to traditional scientific codes which are algorithm-centric. The ECP Proxy Apps Project is actively exploring methods to create proxy apps that will help accelerate progress in this area.

Finally, proxy apps can also serve an important educational purpose.  By combining MPI with one or more shared memory parallelization paradigms, such as RAJA, Kokkos, OpenMP 5+, DPC++, etc., well-designed proxy apps can serve as concise examples of the best techniques to exploit the available parallelism on DOE exascale platforms.  Developers can use these examples to understand the changes that must be made to transform their codes to run on a heterogeneous computing platform.

Principal Investigator(s):

Jeanine Cook, Sandia National Laboratories

Collaborators:

Los Alamos National Laboratory, Lawrence Berkeley National Laboratory, Argonne National Laboratory, Oak Ridge National Laboratory, Sandia National Laboratories

Progress to date

  • Organized and maintained the ECP Proxy App Suite that was heavily used by PathForward Projects for co-design and testing.
  • Maintains a catalog of over 60 proxy applications that can be used to model various aspects of the DOE computational workload.
  • Demonstrated the use of a cosine similarity metric that can quantitatively determine how well a proxy captures various performance characteristics of its parent code.

Visit https://proxyapps.exascaleproject.org

National Nuclear Security Administration logo U.S. Department of Energy Office of Science logo