Software Catalog
Much of our knowledge and experience is embodied in the FASTMath software tools, many of which are Department of Energy (DOE) landmark packages that are widely available and used by DOE and other application scientists. A strength of the FASTMath project is its ability to build a more integrated, high-performing software base for applications, while sharing software development best practices internally and across DOE. To fully realize this potential, we must bring together software products with varying degrees of interoperability, maturity, robustness, and user support. Our efforts aim at improving quality, reducing barriers to adoption, and facilitating integration of the many FASTMath software products.
A list of FASTMath software tools is provided here, along with links for further information and for downloading the software packages.
Software quality is important to the FASTMath Institute; we note that the following FASTMath software packages are included in the xSDK release (see https://xsdk.info) : AMREX, ButterflyPACK, hypre, libEnsemble, MFEM, Omega_h, PETSc/TAO, PUMI, STRUMPACK, SUNDIALS, SuperLU, and the packages contained in Trilinos). These packages appear in bold below.
Structured Mesh Tools for Problem Discretization
AMReX
Block-structured AMR framework for mesh and particle data in regular and complex geometries
Chombo
Tools for implementing finite-difference and finite-volume methods for solving PDEs on block-structured AMR grids with complex geometries
Unstructured Mesh Tools for Problem Discretization
Omega_h
Tetrahedron and triangle mesh adaptativity, with a focus on scalable HPC performance using MPI and OpenMP or CUDA, released as part of PUMI Components.
PCMS
Parallel coupling methods for multimodel simulations released as part of PUMI Components.
PUMI/ParMA
Parallel unstructured mesh infrastructure including curved mesh adaptation and dynamic load balancing, released as part of PUMI Components.
PUMIPic
Infrastructure to support PIC operations on distributed unstructured meshes released as part of PUMI Components.
Zoltan/Zoltan2
Dynamic load balancing, partitioning, task placement, data ordering, coloring, released as part of the Trilinos package.
Tools for Time Discretization
Tools for Solution of Sparse Linear Systems
FFTX
Framework that provides run-time compilation of optimized code targeted to perform fast Fourier transforms (FFTs) and small kernels composed of FFTs with linear operators.
hypre
High-performance preconditioners and solvers for large sparse linear systems
MueLu
Algebraic multigrid methods released as part of the Trilinos package
Tools for Solution of Nonlinear Systems
KINSOL
Nonlinear solvers for algebraic systems released as part of SUNDIALS package
Tools for Solution of More General Algebraic Systems
FASTEig
Compute eigenpairs or perform spectral analysis of large sparse or structured matrices
Kokkos Kernels
Library for node-level, performance-portable, computational kernels for sparse/dense linear algebra and graph operations
ShyLU
Solver library that has implementations of domain decomposition algorithms and node-level direct solvers, released as part of the Trilinos package.
STRUMPACK
Software library that provides linear algebra routines for sparse matrices and for dense rank-structured matrices
Tools for Numerical Optimization
blackboxoptim
Surrogate model based optimization and active learning for scientific application
ParMOO
A Python library for parallel objective multiobjective simulation optimization
PyOED
PyOED brings together variational and Bayesian data assimilation algorithms for inverse problems, optimal design of experiments, and novel optimization, statistical, and reinforcement learning solvers, into an integrated extensible research environment.
ROL
C++ package for large-scale optimization released as part of the Trilinos package
Tools for Uncertainty Quantification
Dakota
Flexible interface between simulation codes and iterative systems analysis methods.
PyTUQ
Library for Python tools and workflows for uncertainty quantification.