Construct your prompt from the instructions below then use the E4S Guide Bot

Chat with the E4S Guide Bot

Introduction

Mathematical libraries are the foundation of most scientific computing applications. They provide optimized, scalable implementations of key algorithms such as solvers, transforms, and discretizations that allow applications to leverage the performance of modern hardware while maintaining numerical accuracy and reproducibility.

When selecting a math library from the E4S ecosystem, users should consider their problem domain, the computational architecture they target, and the development and runtime environments in which they operate. The following attributes can help newcomers and experienced developers alike identify which math library (or combination of libraries) best fits their needs.

Example prompt:
“I am developing a simulation that requires solving large sparse linear systems on NVIDIA GPUs using mixed-precision arithmetic. The code is written in C++ and must support MPI-based distributed memory parallelism. Suggest E4S math libraries that provide GPU-accelerated solvers and support mixed precision.”


Broadly Meaningful Attributes for Math Libraries

Attribute Description
Problem type The mathematical problem addressed, such as linear systems, eigenvalue problems, nonlinear equations, optimization, or PDEs.
Current library use Listing libraries you already use can influence advice to use compatible libraries.
Data structure support Types of data layouts and structures supported (dense, sparse, block, hierarchical, etc.).
Precision support Floating-point and mixed-precision capabilities (e.g., FP64, FP32, BF16, FP16).
Parallelism model Types of parallel execution supported (MPI, OpenMP, CUDA, HIP, SYCL, Kokkos, etc.).
Portability Ability to run across different architectures (CPU, GPU, manycore, etc.) and vendors (NVIDIA, AMD, Intel).
Language bindings Programming languages supported (C, C++, Fortran, Python).
Numerical robustness Degree of numerical stability, accuracy, and tolerance to ill-conditioned systems.
Scalability Ability to scale efficiently on many nodes and GPUs.
Performance portability Support for tuned kernels and auto-tuning across platforms.
Composability Ease of integration with other libraries, frameworks, or application layers.
Licensing Open-source license type and implications for use.
Community support Availability of documentation, user forums, and active development.
E4S integration level Degree of integration and testing within E4S releases (core, optional, experimental).

Situation-Specific Attributes for Math Libraries

Linear Solvers

Attribute Description
Matrix type Sparse, dense, structured, or unstructured matrices supported.
Solver method Direct, iterative (Krylov), multigrid, or hybrid methods.
Preconditioners Availability of preconditioners such as ILU, Jacobi, AMG.
GPU acceleration Availability of GPU-enabled solver implementations.
Mixed-precision support Ability to use different precisions for performance or energy efficiency.

Eigensolvers

Attribute Description
Problem type General, symmetric, or Hermitian eigenproblems.
Spectrum range Targeted portion of the spectrum (smallest, largest, interior).
Scalability Performance for large-scale distributed eigenproblems.
Algorithm type Davidson, Lanczos, Krylov-Schur, or other methods.

Nonlinear Solvers

Attribute Description
Solver strategy Newton-based, quasi-Newton, trust-region, or fixed-point.
Jacobian computation Analytic, automatic differentiation, or finite difference.
Line search and globalization Methods for improving convergence stability.

DAE/ODE Solvers

Attribute Description
Problem type Ordinary (ODE), differential-algebraic (DAE), or stiff/nonstiff systems.
Integration methods Runge–Kutta, BDF, Adams–Moulton, or Rosenbrock schemes.
Adaptive control Time-step adaptivity and error estimation.
Sensitivity analysis Support for derivative and adjoint methods.

Optimization Solvers

Attribute Description
Problem type Linear, nonlinear, convex, or stochastic optimization.
Constraints Support for bound, equality, and inequality constraints.
Gradient/Hessian support Use of analytic, automatic, or approximated derivatives.
Parallel capabilities Distributed-memory or GPU-enabled optimization routines.

Meshing, Discretization, and AMR

Attribute Description
Mesh type Structured, unstructured, or hybrid meshes supported.
Discretization method Finite element, finite volume, finite difference, or spectral.
Adaptivity Support for adaptive mesh refinement and error-based refinement.
Geometry handling Curvilinear or high-order geometric representations.
Coupling Ability to integrate with solver libraries and I/O formats.

Stochastic and Advanced Capabilities

Attribute Description
Randomization Support for randomized algorithms and Monte Carlo methods.
Uncertainty quantification Integration with UQ frameworks or polynomial chaos.
Surrogate modeling Use of reduced-order or data-driven surrogate models.
Multi-physics coupling Ability to link to external solvers for coupled systems.