nekRS Documentation

repository·master·Indexed 19 days ago

https://github.com/nek5000/nekrs

nekRS is a fast and scalable computational fluid dynamics (CFD) solver for High-Performance Computing (HPC) applications, targeting incompressible and low Mach-number Navier-Stokes equations using high-order spectral elements.

Tokens
326.8K
Snippets
897
Records
1.4K
Agent score
64%

What's inside nekRS

  1. Overview of OCCA

    master
    OCCA is an open-source library designed to simplify heterogeneous programming across different device types such as CPUs, GPUs, and FPGAs. It provides a unified API to interact with various backend device APIs (including OpenMP, CUDA, and OpenCL) and utilizes just-in-time (JIT) compilation to build kernels. To abstract programming across different backends, OCCA uses OKL (the OCCA Kernel Language), which is a minor extension to C.
  2. Overview of GSLIB

    master

    GSLIB is a library providing two primary functionalities:

    1. Scalable Many-to-Many (neighborhood) gather-scatter collectives: Optimized communication patterns for distributed computing.
    2. Robust GLL interpolation: Interpolation on hexahedral spectral element meshes using Gauss-Lobatto-Legendre (GLL) points.
  3. Overview of GoogleTest features

    master

    GoogleTest provides a comprehensive suite of testing capabilities for C++ projects, including:

    • xUnit framework: Standardized testing structure.
    • Test discovery: Automatically finding tests in your code.
    • Assertions: A rich set of built-in assertions and support for user-defined assertions.
    • Failure modes: Support for both fatal and non-fatal failures.
    • Parameterized tests: Support for both value-parameterized and type-parameterized tests.
    • Death tests: Testing that code fails as expected (e.g., via assertions or crashes).
    • Reporting: XML test report generation and various options for running tests.
  4. Overview of CVODE and the SUNDIALS suite

    master

    CVODE is a C-language solver for Ordinary Differential Equations (ODEs) and is part of the SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers) software family. The suite includes several specialized solvers:

    • CVODE: For ODE initial value problems.
    • ARKODE: For additive Runge-Kutta methods.
    • KINSOL: For nonlinear algebraic systems.
    • IDA: For Differential-Algebraic Equations (DAEs).

    CVODE combines the capabilities of the historical Fortran solvers VODE (general purpose for stiff and nonstiff systems) and VODPK (a variant using preconditioned Krylov methods for large stiff systems).

  5. Overview of the ADIOS2 I/O Framework

    master

    ADIOS2 (Adaptable Input Output System) is a high-performance, unified I/O framework designed for extreme-scale scientific data. It provides a single abstraction API to transport and transform self-describing data variables and attributes across various media, including files, wide-area networks, in-memory staging, and more.

    Key Characteristics

    • Streaming-oriented: The framework is optimized for transferring groups of variables asynchronously. Synchronous, single-variable transfers are treated as special cases.
    • Step-based: Data is organized into "steps" representing groups of variables, supporting both streaming and random-access (file) media.
    • MPI-based & Serial-capable: It supports both parallel MPI applications and serial codes.
    • Modular Architecture: Built using C++11, it combines runtime polymorphism and template meta-programming to provide intuitive abstractions.
    • Language Support: While native in C++, it provides bindings for Python, C, Fortran, and Matlab.
    • Scalability: Designed for supercomputer applications handling petabytes of data in a single simulation run.

    What ADIOS2 is NOT

    • Not a file-only library: While it supports high-performance file system I/O, it also uses engines for TCP, RDMA, and MPI communication to facilitate code coupling and in situ analysis.
    • Not a Hierarchical Model: It provides a layer of abstraction beneath application-specific data hierarchies.
    • Not a Memory Manager: It does not own or manage the application's memory.
  6. Overview of LAPACK

    master

    LAPACK (Linear Algebra PACKage) is a library of Fortran subroutines designed to solve common problems in numerical linear algebra.

    Key components included in the distribution:

    1. Fortran source for LAPACK routines.
    2. Testing programs for verification.
    3. BLAS (Basic Linear Algebra Subprograms): A Fortran reference implementation (Level 1, 2, and 3). Note that LAPACK efficiency is highly dependent on the BLAS implementation used; it is recommended to use a high-performance BLAS if available on your system.
    4. CBLAS: A C interface to the BLAS.
    5. LAPACKE: A Standard C language API for LAPACK.

    LAPACK is available under a modified BSD license.

  7. Overview of the Googletest Mocking (gMock) Framework

    master

    gMock is a C++ framework used for creating and using mock classes. It is designed to help developers derive better system designs and write more effective tests by providing a declarative syntax for defining mocks and controlling their behavior. It is a component of the larger GoogleTest C++ testing framework.

    Key features include:

    • Declarative Syntax: Define mocks using a clear, declarative style.
    • Partial (Hybrid) Mocks: Create objects that are a mix of real and mock implementations.
    • Complex Function Support: Handles overloaded functions and functions of arbitrary types.
    • Rich Matchers: Includes a wide set of matchers to validate function arguments.
    • Behavior Control: Uses intuitive syntax to specify how mocks should behave during tests.
    • Automatic Verification: Automatically verifies expectations without requiring a manual record-and-replay cycle.
    • Ordering Constraints: Allows expressing arbitrary (partial) ordering constraints on function calls.
    • Extensibility: Users can define custom matchers and actions.
    • Exception-Free: Does not rely on C++ exceptions.

    For detailed usage, refer to the official documentation: gMock for Dummies, gMock Cookbook, or the gMock Cheat Sheet.

  8. What is ENet?

    master

    ENet is a lightweight, simple, and robust networking library written in pure C that provides a communication layer on top of UDP. Its primary features include:

    • Optional reliable, in-order delivery of packets.
    • Packet fragmentation.

    ENet intentionally omits high-level features like authentication, encryption, or server discovery to remain flexible, portable, and easily embeddable. This specific version is a fork of the original lsalzman/enet that includes integrated IPv6 support, monotonic time, and single-header style code.

  9. Overview of CVODE ODE Solver

    master

    CVODE is a package designed to solve stiff and nonstiff ordinary differential equation (ODE) systems (initial value problems) provided in the explicit form:

    dy/dt = f(t,y), y(t0) = y0.

    It offers two primary variable-order, variable-coefficient multistep methods:

    1. Adams-Moulton methods: For non-stiff problems.
    2. BDF (Backward Differentiation Formula) methods: For stiff problems (in fixed-leading-coefficient form).

    CVODE is part of the SUNDIALS Suite and is written in ANSI standard C. It is designed for modularity, allowing it to run in serial, shared memory, distributed memory, and accelerator-based (e.g., GPU) environments by leveraging shared vector, matrix, linear solver, and nonlinear solver APIs.

  10. What is OCCA?

    master

    OCCA is an open source, portable, and vendor-neutral framework for parallel programming on heterogeneous platforms. It provides unified models for heterogeneous programming concepts such as devices, memory, and kernels.

    Key features include:

    • Multiple backends: Supports CUDA, HIP, Data Parallel C++, OpenCL, OpenMP (CPU), and Metal.
    • JIT compilation: Supports Just-In-Time compilation and caching of kernels.
    • Language support: Compatible with C, C++, and Fortran.
    • Interoperability: Works with backend APIs and kernels.
  11. Overview of the 3D Advection-Reaction Benchmark

    master

    This benchmark implements a 3D advection-reaction equation using the RAJA performance portability layer. It simulates the advection and reaction of three chemical species based on a variation of the Brusselator problem.

    The system solves for chemical concentrations u, v, and w using first-order upwind finite differences on a uniform spatial grid. It supports various integration methods and nonlinear solvers, allowing for testing of different performance backends including serial, CUDA, and HIP.