AMG | C
AMG is a parallel algebraic multigrid solver for linear systems arising from problems on unstructured grids.
Basic Hartree-Fock Proxy Application | Fortran-90
This proxy application simulates the compute load and data-movement of the kernel of the Hartree-Fock method in quantum chemistry. The proxy features a simplified algorithm for computing electron repulsion integrals that is easily offloaded to GPUs, together with integral screening to avoid small terms.
CabanaPIC | C++, MPI
A mini-PIC (particle-in-cell) code based on the Cabana library, which is developed in the ECP COPA project. The algorithm employed in the code is standard explicit PIC in Cartesian geometry solving relativistic Vlasov-Maxwell equations.
Cburgers | C++/Python
The purpose of this mini-application is to demonstrate how one may deploy scientific machine learning within a computational physics workflow. We claim that this code represents a *practical* deployment because it satisfies the following features:
1. The computation is performed using a compiled language as is the case with most legacy codes (C++).
2. We avoid disk-IO through in-situ transfer of data from the numerical computation to the machine learning computation (in Python).
In addition, this code also highlights the advantages of integrating the Python ecosystem with C++. We now have the following capabilities:
1. Utilizing arbitrary data science libraries such as TensorFlow through their Python APIs.
2. Easy in-situ visualization in matplotlib from a C++ computation.
3. A potential interface (if there are no issues with security) to streaming data from the internet (from say, a Python API).
4. Easy ability to save data using formats like HDF5 or NetCDF4.
The test-case demonstrated here is representative of several Sci-ML workloads. We aim to build a surrogate model using TensorFlow in Python from data generated by a C++ computation. The methodology we utilize is something called the "POD-LSTM" - here snapshots of the solution field are linearly compressed using an SVD and the compressed representations are used as training data within a long short-term memory (LSTM) neural network. The LSTM is used to forecast compressed representations of the solution field in the future (for more details please visit our Editor's pick article [here](https://doi.org/10.1063/5.0019884)). However, this educational proxy-app may easily be modified to solve more complex problems (for example: closure modeling, data assimilation, and control) which assess the interplay of compute and ML.
CLAMR | C++
CLAMR is a cell-based adaptive mesh refinement mini-app developed as a testbed for hybrid algorithm development using MPI and OpenCL.
E3SM-kernels | Fortran
Climate kernels for Co-design
These kernels originate from the Energy Exascale Earth System Model (E3SM). They are intended for sharing with interested parties for co-design purposes.
Ember | C and MPI/SHMEM
Ember code components represent highly simplified communication patterns that are relevant to DOE application workloads.
ExaCMech Miniapp | C++ / RAJA
This miniapp represents how ExaCMech, a constitutive modelling library, might be used in real application codes such as ExaConstit.
exawind-virtuals-app | C++, CMake
This application contains a minimal example of device virtual functions used in Exawind/Nalu-Wind codebase. This tests virtual function capability on device. The core physics kernels are implemented as sub-classes of Kernel and Algorithm is the driver that holds a vector of user-registered computational kernels as pointers to the base class. These instances are created on device using placement new and run on device.
GAMESS_RI-MP2_MiniApp | Fortran (90)
This mini-app computes the resolution-of-the-identity Moeller-Plesset second-order perturbation theory (RI-MP2) energy - a quantum chemistry method for estimating the electron correlation error.
Goulash | C/C++/Fortran/Python
Goulash is an interoperability proxy and test suite for heterogeneous programming models and compilers.
HyPar | c
Finite-difference Algorithm for solving Time-Dependent Hyperbolic-Parabolic Partial Differential Equations (with source term)
hypre-mini-app | C++, CMake
A mini-app to use HYPRE solvers and preconditioners on linear systems generated by the Nalu-Wind low-Mach code. This app reads the linear system matrix, RHS, and reference solution data in MatrixMarket and HYPRE IJ formats.
IAMR | c++
A parallel, adaptive mesh refinement (AMR) code that solves the variable-density incompressible Navier-Stokes equations.
Laghos | C++
Laghos solves the Euler equation of compressible gas dynamics in a Lagrangian frame using unstructured high-order finite elements.
miniGAN | Python, MPI
The objective of the miniGAN miniapp is to model performance for training generator and discriminator networks. The GAN's generator and discriminator generate plausible 2D/3D maps and identify fake maps, respectively. Related applications exist in cosmology (CosmoFlow, ExaGAN) and wind energy (ExaWind).
miniMDock | C, C++, Cuda, HIP, Kokkos
A GPU-accelerated performance portable particle-grid based protein ligand molecular docking tool that can be used for virtual drug discovery compound screens based on a molecular recognition model, that analysis a three-dimensional model of an interaction between a protein and a small molecule (ligand).
miniQMC | C++, OpenMP
This miniapp contains a simplified but computationally accurate implementation of the real space quantum Monte Carlo algorithms implemented in the full production QMCPACK application.
miniRL | Python, C/C++
miniRL is a reinforcement learning (RL) proxy application derived from the
Easily eXtendable Architecture for Reinforcement Learning (EXARL) framework,
which is being developed by the ExaLearn Control project. The EXARL framework is
designed to be used by researchers interested in using RL for control and
optimization of their applications or experiments without worrying about the
details of the RL implementations. Any RL problem consists of an agent
(controller) and an environment (system to be controlled), and EXARL uses an
extension of the OpenAI Gym framework, which not only
allows existing benchmark environments in Gym to be used but also provides easy
integration of new scientific environments. The agent is nothing but a
collection of RL algorithms with a state table or associated neural network
architectures. EXARL also includes distributed learning workflows, which define
how the agent and environment interact with each other.
miniVite | C++, MPI, OpenMP
miniVite is a proxy application that implements a single phase of Louvain method in distributed memory for graph community detection.
minq | C++ MPI CUDA
Minq is a proxy app that replicates the linear algebra components of a plane-wave or real-space density functional theory code. It is based on the inq code (https://gitlab.com/npneq/inq). The parallel linear algebra operations are done using the Slate parallel linear algebra library (https://icl.utk.edu/slate/).
minTally | C, OpenMP
A mini-app that abstracts the key components of the tallying system from a full Monte Carlo neutron transport application
mlperf-cosmoflow | Python, TensorFlow
The CosmoFlow training application benchmark from the MLPerf HPC v0.5 benchmark suite. It involves training a 3D convolutional neural network on N-body cosmology simulation data to predict physical parameters of the universe.
mlperf-deepcam | python, PyTorch
The DeepCAM training application benchmark from the MLPerf HPC v0.5 benchmark suite, based on the Exascale Deep Learning for Climate Analytics paper which shared the 2018 Gordon Bell prize. The application trains a deep learning segmentation model for identifying extreme weather phenomena in climate simulation data.
PGAS-FMO Proxy Application | fortran-90+ / MPI
This proxy application simulates the compute load and data-movement of the kernel of the Fragment Molecular Orbital (FMO) method in quantum chemistry. The proxy implements a parallel global address space (PGAS) in order to support FMO.
PICSARlite | Fortran, MPI
PICSARlite is a subset of the PICSAR suite that allows testing of smaller electromagnetic Particle-In-Cell kernels.
ProfugusMC | C++, MPI, CUDA
ProfugusMC is a multigroup Monte Carlo neutron transport mini-app based on ORNL's production Shift code.
Quicksilver | C++
Quicksilver is a open source proxy app that represents the key elements of the Mercury workload by solving a simplified dynamic monte carlo particle transport problem. OpenMP and MPI are used for parallelization. A GPU version is available.
RAJA Performance Suite | C++
The RAJA performance suite is designed to explore performance of loop-based computational kernels of the sort found in HPC applications. In particular, it is used to assess, monitor, and compare runtime performance of kernels implemented using RAJA and variants implemented using standard or vendor-supported parallel programming models directly.
SNAP | Fortran
SNAP serves as a proxy application to model the performance of a modern discrete ordinates neutral particle transport application.
SW4lite | C, Fortran
Sw4lite is a bare bone version of SW4 intended for testing performance optimizations in a few important numerical kernels of SW4.
TeaLeaf | Fortran
A miniapp that solves the linear heat conduction equation on a spatially decomposed regularly grid using a 5 point stencil with implicit solvers.
Thornado-mini | Fortran
A mini-app for finite element, moment-based radiation transport. The method — ultimately targeted at simulation of neutrino transport in core-collapse supernovae — includes the use of curvilinear coordinates and tabulated microphysics.
XSBench | C
XSBench is a mini-app representing a key computational kernel of the Monte Carlo neutronics application OpenMC.