Freedom251 › Physics Simulation Software
libCEED

What libCEED is
libCEED is a C99 library for representing operators without assembling matrices, with runtime choice among implementations for CPUs and GPUs. It focuses on high-order finite elements, and its algebraic method can also work with other discretizations expressed in factored form. Its low-level API is intended for application code that supplies its own discretization infrastructure, including PETSc, MFEM, and Nek5000. The library provides Fortran, Python, Julia, and Rust interfaces. CPU options include pure C, AVX, ARM SVE and SME, and LIBXSMM; GPU implementations use CUDA, HIP, and SYCL, with optional MAGMA kernels. It has no required dependencies, while GPU support can be enabled at build time; SYCL requires oneAPI compilers. The algebraic interface is intended to fit new and existing software, and OpenMP host applications can create and apply operators from different threads within a parallel region. WebAssembly builds are also possible using Emscripten. Some backends use nondeterministic operations, though the documentation identifies backends that can produce reproducible results with suitable compile options. HIP implementations require ROCm 4.2 or newer, and MAGMA implementations require MAGMA 2.5.0 or newer. The project uses the BSD-2-Clause license and offers support by email or through its issue tracker.
Who it suits
libCEED suits developers building scientific applications that already provide their own discretization infrastructure and need optimized discretization kernels. It is intended for low-level use and names PETSc, MFEM, and Nek5000 among applications that can use its core operations.
What it does well
- No required dependencies for the C99 library.
- Interfaces are available for Fortran, Python, Julia, and Rust.
- CPU and GPU implementations can be selected at runtime.
- Supports OpenMP host applications and WebAssembly builds.
- BSD-2-Clause licensed.
What to know first
- GPU support requires optional toolchains or libraries.
- SYCL support requires oneAPI compilers.
- HIP backends require ROCm 4.2 or newer; MAGMA requires 2.5.0 or newer.
- Some backends use nondeterministic operations.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| libCEED | C99 library · no required dependencies · Fortran, Python, Julia, and Rust interfaces | Free |
As libceed.org lists them, read 12 Oct 2026. The maker's own page has the final word.
Getting started
- Open the libCEED documentation website.
- Choose the C99 library or one of its Fortran, Python, Julia, or Rust interfaces.
- Build the library; enable CUDA, HIP, or SYCL support if needed.
- Use the algebraic interface to integrate it into application code.
- Contact the team by email or through the issue tracker for support.
Verdict
Choose libCEED if your application has its own discretization infrastructure and needs a low-level algebraic library with CPU and GPU implementation choices. It may be a poor fit if you need a turnkey application rather than a library to integrate, or if required GPU toolchains are unavailable.
Questions
How much does libCEED cost?
The listed plan is free.
Which languages can use libCEED?
The C99 library has interfaces for Fortran, Python, Julia, and Rust.
Which CPU and GPU implementations are available?
CPU implementations include pure C, AVX, ARM SVE and SME, and LIBXSMM. GPU implementations use CUDA, HIP, and SYCL, with optional MAGMA kernels.
Does libCEED have required dependencies?
The library has no required dependencies. Optional GPU support needs corresponding toolchains and libraries.
Is libCEED open source?
The project identifies it as BSD-2-Clause licensed.
Can results be reproducible?
Some backends use nondeterministic operations. The documentation identifies backends that can produce reproducible results with appropriate compilation options.
Facts from libCEED's own pages
- Application integrations
- The documentation names PETSc, MFEM, and Nek5000 as applications that can use libCEED’s core operations. · libceed.org, 12 Oct 2026
- Backend requirements
- The documented HIP backends require ROCm 4.2 or newer, and the MAGMA backends require MAGMA 2.5.0 or newer. · libceed.org, 5 Oct 2026
- Build dependencies
- The library has no required dependencies; CUDA, HIP, and SYCL support can be enabled during the build, and SYCL requires oneAPI compilers. · libceed.org, 5 Oct 2026
- Build requirements
- The C99 library has no required dependencies, while optional GPU backends require corresponding toolchains and libraries. · libceed.org, 12 Oct 2026
- CPU and GPU backends
- Documented backends include CPU implementations and GPU implementations using CUDA, HIP, SYCL, and MAGMA. · libceed.org, 5 Oct 2026
- CPU backends
- CPU backends include pure C, AVX, ARM SVE and SME, and LIBXSMM implementations. · libceed.org, 12 Oct 2026
- Determinism
- Some backends use nondeterministic operations such as atomicAdd, and the documentation identifies which listed backends support reproducible results. · libceed.org, 12 Oct 2026
- Free plan
- Yes · libceed.org, 24 Sept 2026
- GPU backends
- GPU backends include CUDA, HIP, and SYCL, with optional MAGMA kernels. · libceed.org, 12 Oct 2026
- Integration
- The manual describes libCEED as a lightweight library that can be integrated into new and legacy software through a purely algebraic interface. · libceed.org, 5 Oct 2026
- Intended users
- The library is designed for application developers whose codes have their own discretization infrastructure and need optimized discretization kernels. · libceed.org, 12 Oct 2026
- Language interfaces
- The library has a C99 interface plus Fortran, Python, Julia, and Rust interfaces. · libceed.org, 12 Oct 2026
- License
- The repository states that libCEED is distributed under the BSD 2-Clause License. · github.com, 12 Oct 2026
- Methods
- The library focuses on high-order finite elements, while its algebraic approach also applies to other discretizations in factored form. · libceed.org, 5 Oct 2026
- OpenMP
- It can be configured for OpenMP host applications to create and apply operators from different threads within an OpenMP parallel region. · libceed.org, 12 Oct 2026
- Performance portability
- It provides runtime selection of implementations tuned for CPUs and GPUs through a unified low-level API. · libceed.org, 12 Oct 2026
- Purpose
- libCEED is a library for matrix-free operator representation focused on high-order finite elements and other discretizations in factored form. · libceed.org, 12 Oct 2026
- Reproducibility limit
- Some backends use nondeterministic operations, and the manual identifies which backends can produce reproducible results with proper compilation options. · libceed.org, 5 Oct 2026
- Support
- The libCEED team can be reached by email at [email protected] or through comments in the issue tracker. · github.com, 12 Oct 2026
- Target users
- Its low-level API is intended for application code with its own discretization infrastructure, including PETSc, MFEM, and Nek5000. · libceed.org, 5 Oct 2026
- WebAssembly
- libCEED can be built for WebAssembly using Emscripten. · libceed.org, 12 Oct 2026
Where libCEED stands on Freedom251
- Physics Simulation Software#14 of 89