libCEED
libCEED is a free BSD-2-Clause library for matrix-free operator representation, providing runtime selection of implementations for CPUs and GPUs.
What libCEED is
libCEED is a free BSD-2-Clause library for matrix-free operator representation, providing runtime selection of implementations for CPUs and GPUs. Its low-level C99 API is intended for application code with its own discretization infrastructure, including PETSc, MFEM, and Nek5000. The project focuses on high-order finite elements, while its algebraic method also applies to other discretizations in factored form. Interfaces are available for Fortran, Python, Julia, and Rust. Documented CPU backends include pure C, AVX, ARM SVE and SME, and LIBXSMM; GPU options include CUDA, HIP, SYCL, and optional MAGMA kernels. The library has no required dependencies, though optional GPU backends need their toolchains and libraries, and SYCL requires oneAPI compilers. It can integrate with new or legacy software through an algebraic interface, build for WebAssembly with Emscripten, and support OpenMP host applications. Some backends are nondeterministic, while documentation identifies those supporting reproducible results with suitable compilation options. HIP backends require ROCm 4.2 or newer, and MAGMA backends require MAGMA 2.5.0 or newer.
Good
- Free C99 library with no required dependencies
- Provides Fortran, Python, Julia, and Rust interfaces
- Runtime CPU and GPU backend selection
- Supports CUDA, HIP, SYCL, and MAGMA
- Can integrate with new and legacy software
Watch out
- Some backends use nondeterministic operations
- Optional GPU backends require corresponding toolchains
- HIP requires ROCm 4.2 or newer
- MAGMA requires version 2.5.0 or newer
Who it suits
It suits application developers whose codes provide their own discretization infrastructure and need optimized CPU or GPU kernels. Users should be comfortable configuring optional backend toolchains and considering reproducibility requirements.
Verdict
libCEED offers a lightweight, low-level foundation for matrix-free operators across varied CPU and GPU implementations. Its flexibility depends on the application’s discretization infrastructure and the backend requirements selected during build.
Plans and prices
From libCEED's own pricing page, checked 12 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| libCEED | Free | C99 library · no required dependencies · Fortran, Python, Julia, and Rust interfaces |
The facts
Each one read from libCEED's own pages, with the date it was checked.
Where it runs
- Application integrations
- The documentation names PETSc, MFEM, and Nek5000 as applications that can use libCEED’s core operations.checked 12 Oct 2026
What it does
- Backend requirements
- The documented HIP backends require ROCm 4.2 or newer, and the MAGMA backends require MAGMA 2.5.0 or newer.checked 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.checked 5 Oct 2026
- Build requirements
- The C99 library has no required dependencies, while optional GPU backends require corresponding toolchains and libraries.checked 12 Oct 2026
- CPU and GPU backends
- Documented backends include CPU implementations and GPU implementations using CUDA, HIP, SYCL, and MAGMA.checked 5 Oct 2026
- CPU backends
- CPU backends include pure C, AVX, ARM SVE and SME, and LIBXSMM implementations.checked 12 Oct 2026
- Determinism
- Some backends use nondeterministic operations such as atomicAdd, and the documentation identifies which listed backends support reproducible results.checked 12 Oct 2026
- GPU backends
- GPU backends include CUDA, HIP, and SYCL, with optional MAGMA kernels.checked 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.checked 5 Oct 2026
- Intended users
- The library is designed for application developers whose codes have their own discretization infrastructure and need optimized discretization kernels.checked 12 Oct 2026
- Language interfaces
- The library has a C99 interface plus Fortran, Python, Julia, and Rust interfaces.checked 12 Oct 2026
- License
- The repository states that libCEED is distributed under the BSD 2-Clause License.checked 12 Oct 2026
- Methods
- The library focuses on high-order finite elements, while its algebraic approach also applies to other discretizations in factored form.checked 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.checked 12 Oct 2026
- Performance portability
- It provides runtime selection of implementations tuned for CPUs and GPUs through a unified low-level API.checked 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.checked 12 Oct 2026
- Reproducibility limit
- Some backends use nondeterministic operations, and the manual identifies which backends can produce reproducible results with proper compilation options.checked 5 Oct 2026
- Support
- The libCEED team can be reached by email at [email protected] or through comments in the issue tracker.checked 12 Oct 2026
- Target users
- Its low-level API is intended for application code with its own discretization infrastructure, including PETSc, MFEM, and Nek5000.checked 5 Oct 2026
- WebAssembly
- libCEED can be built for WebAssembly using Emscripten.checked 12 Oct 2026
Money
- Free plan
- Yeschecked 24 Sep 2026
Alternatives to libCEED
- 1

SimFlow
Free planWebLinuxmacOSWindows8.2From €8,000 a year - 2

COMSOL Multiphysics
WebAPILinuxmacOS7.7 - 3
FeenoX
Free planWebAPILinuxSelf-hosted7.5Free plan - 4
myPhysicsLab
Free planWebLinuxmacOSSelf-hosted7.5Free plan - 5

OpenFOAM
Free planLinuxmacOSSelf-hostedWindows7.3Free plan - 6
MPTRAC
Free planWebLinuxSelf-hosted7.2Free plan
