Quickstart | Integration | Documentation | Roadmap |
NeoN is an open-source, high-performance C++ CFD library for modern heterogeneous computing systems. It currently provides data structures, parallel algorithms, and numerical infrastructure for the finite volume method.
By combining finite-volume abstractions with modern C++ and performance-portable backends, NeoN enables developers to build maintainable, scalable, and high-performance fluid-flow solvers without writing architecture-specific code for each hardware platform.
Its modular architecture enables performance-portable execution and solver backends, currently using Kokkos and Ginkgo while remaining flexible to adopt alternative technologies as the framework evolves.
Important
The NeoN project needs you! If you're interested in contributing to NeoN please open a PR! If you have any questions on where to start please contact us here or on gitter. All participants are expected to follow our Code of Conduct.
- Execution on
- serial CPU
- multithreaded CPU
- MPI-based distributed systems
- GPUs from NVIDIA, AMD, and Intel
- Portability across Linux, macOS, and Windows
- Performance-portable parallel and memory abstractions
- Unified GPU execution model for NVIDIA, AMD, and Intel GPUs
To build the C++ library from source you need CMake ≥ 3.22, a C++20 compiler (gcc >= 13 or clang >= 19), Ninja (only when using the CMake presets) and, optionally, MPI (disable with -DNeoN_WITH_MPI=OFF). Kokkos, Ginkgo and other C++ dependencies are managed through CPM <https://github.com/cpm-cmake/CPM.cmake> and fetched automatically when suitable system installations are unavailable.
git clone https://github.com/exasim-project/NeoN.git && cd NeoN
cmake --preset production -DNeoN_WITH_MPI=OFF
cmake --build --preset production
Alternatively, try NeoN from Python via the prebuilt CPU package from PyPI (Python 3.9–3.13):
pip install neon_pde
import neon
neon.initialize()
executor = neon.CPUExecutor()
v = neon.ScalarVector(executor, 10, 1.0)
print(neon.__version__, v.size())
del v, executor
neon.finalize()Further installation options (GPU builds, conda/pixi packages, CUDA wheels, Spack), the full list of requirements and how to run the tests are described in the installation guide and the Python bindings guide.
Currently, NeoN is not a standalone CFD framework. It is designed to be used with other CFD Frameworks. Examples how to integrate NeoN into CFD frameworks and how to write applications is demonstrated in the NeoFOAM repository.
The online documentation can be found here. Since NeoN is evolving quickly, the documentation might not always reflect the latest state.
- Contributing: see the contributing guide for the code style, the pull request workflow and how to build the documentation.
- Reporting bugs and requesting features: open an issue on the GitHub issue tracker. The contributing guide lists what to include in a bug report.
- Questions and help: ask on GitHub Discussions or in the Gitter chat.
