All notable changes to this project will be documented in this file.
The format is based on "Keep a Changelog" (https://keepachangelog.com/).
Changes since v2.0.0
ops_translator: the code-generator virtual environment is now built automatically, replacing the previous manualsetup_venv.sh/source ops_venv/bin/activateworkflow. Users no longer need to manually create or activate the venv. Two flows exist: the Makefile build creates the venv viamake pythonatops_translator/.python/(uses thepython3onPATH, with automatic fallback to/usr/bin/python3whenimport sslfails); the CMake build creates the venv at${CMAKE_INSTALL_PREFIX}/translator/ops_translator/ops_venv/automatically during the configure step viasetup_venv_cmake.sh.
ops_translator/.gitignoreto exclude the generated.python/venv,python_source/,ops_venv/, and__pycache__from version control.
Major changes since v1.0.0 (high-level)
-
New
ops_translator(Primary / most important)- A new OPS code-generation engine (
ops_translator) replaces the legacy translator. - Based on Python/Clang/Fparser/Jinja2 — produces improved C/C++/Fortran backends.
- Enables broader target support and improved codegen quality (SYCL, HIP, CUDA, OpenMP offload, etc.).
- All apps (including CloverLeaf, CloverLeaf_3D, wave_test, halfprecision) now use the new translator.
- Migration notes: translator runtime requires updated Python dependencies (see
ops_translator/requirements.txt), and generated output paths/filenames may differ from the legacy translator — review build scripts when upgrading.
- A new OPS code-generation engine (
-
New back-end & language support:
- SYCL targets and improved SYCL integration (CPU/GPU).
- HIP support and HIP/CUDA codegen fixes.
- Added/expanded OpenMP offload MPI backend.
- Fortran offload support and improved Fortran templates.
- OpenCL and OpenACC: no longer supported in this release. Legacy codegen and example targets referencing OpenCL/OpenACC remain in the tree for historical/reference purposes but are unmaintained. Users should migrate to SYCL, HIP, or OpenMP offload paths where possible.
-
Precision & computation features:
- Half-precision (float16) and mixed-precision support on GPUs and in code generation.
- Multiblock mixed-precision halo-exchange fixes and enhancements.
-
I/O, tooling & utilities:
- HDF5 improvements including SoA output mode and robustness fixes for MPI HDF5 writes.
- Energy and power measurement hooks (RAPL/powercap and GPU power capture).
-
Bug fixes:
- Fixed SYCL device selection (
OPS_SYCL_DEVICE=gpu) crashing on empty device list. - Fixed Fortran I/O deadlock when using
print/WRITEinside OpenMP parallel regions with Intel Fortran runtime.
- Fixed SYCL device selection (
-
Build, CI and testing:
- Numerous CMake and Makefile improvements (F90/CMake additions, device selection, build flags).
- Added
EXTRA_CLEAN_FILESsupport inMakefile.c_appfor app-specific clean targets. - Added
clean_all_apps.shutility script. - CI/test additions and config changes (expanded tests, GPU_NUMBER config update).
- Added
test.shfor multiple C and Fortran apps.
-
Documentation and developer experience:
- Major documentation refreshes across the docs, developer guide updates and a new
doc/quickstart.md. - Added example/test scripts for apps and updated tutorial timings.
- Updated AUTHORS.
- Major documentation refreshes across the docs, developer guide updates and a new
Notes:
- This section lists high-level, user-facing and potentially breaking changes since
v1.0.0. - For a detailed per-commit log see the git history; specific fixes and smaller changes remain in commit messages since the release.
Guidance:
- Add short, one-line entries under the relevant category for each PR.
- Keep
Unreleasedupdated during development; on release, copyUnreleasedto a new versioned section with the release date, then clearUnreleased. - Link PRs or commits where helpful (e.g. "Fix memory leak (PR #123)").