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.
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.
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.
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).
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.
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/).
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.
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.