Releases: BASE-Laboratory/OpenImpala
Releases · BASE-Laboratory/OpenImpala
v4.2.6
What's Changed
- fix AMReX 25.03 CUDA archs export with reduced arch list by @jameslehoux in #264
Full Changelog: v4.2.5...v4.2.6
What's Changed
- fix AMReX 25.03 CUDA archs export with reduced arch list by @jameslehoux in #264
Full Changelog: v4.2.5...v4.2.6
v4.2.5
What's Changed
- strip _core.so explicitly to fight 3 GB GPU wheel bloat by @jameslehoux in #263
Full Changelog: v4.2.4...v4.2.5
What's Changed
- strip _core.so explicitly to fight 3 GB GPU wheel bloat by @jameslehoux in #263
Full Changelog: v4.2.4...v4.2.5
v4.2.4
What's Changed
- shrink GPU wheel under PyPI 320 MiB limit by @jameslehoux in #262
Full Changelog: v4.2.3...v4.2.4
What's Changed
- shrink GPU wheel under PyPI 320 MiB limit by @jameslehoux in #262
Full Changelog: v4.2.3...v4.2.4
v4.2.3
What's Changed
- fix GPU wheel: install upstream NVTX3 headers for CUDA 12 compat by @jameslehoux in #261
Full Changelog: v4.2.2...v4.2.3
What's Changed
- fix GPU wheel: install upstream NVTX3 headers for CUDA 12 compat by @jameslehoux in #261
Full Changelog: v4.2.2...v4.2.3
v4.2.2
What's Changed
- fix GPU wheel: patch AMReX C++ sources for CUDA 12 NVTX header by @jameslehoux in #260
Full Changelog: v4.2.1...v4.2.2
What's Changed
- fix GPU wheel: patch AMReX C++ sources for CUDA 12 NVTX header by @jameslehoux in #260
Full Changelog: v4.2.1...v4.2.2
v4.2.1
What's Changed
- Fix wheel builds and publish GPU wheels to PyPI by @jameslehoux in #259
Full Changelog: v4.2.0...v4.2.1
What's Changed
- Fix wheel builds and publish GPU wheels to PyPI by @jameslehoux in #259
Full Changelog: v4.2.0...v4.2.1
v4.2.0
What's Changed
- tutorial 01: handle ConvergenceError in parametric sweep by @jameslehoux in #250
- make visualization notebook Colab-ready with badge and live plotfile by @jameslehoux in #251
- restructure profiling notebook around bottleneck hunt by @jameslehoux in #252
- fix §7 TinyProfiler capture — run solve in subprocess by @jameslehoux in #253
- profiling notebook: surface hidden findings from full-run analysis by @jameslehoux in #254
- phase 1: close the solver-choice gap (#256) by @jameslehoux in #257
- phase 2: build_info() surface + scaling-validation harness (#256) by @jameslehoux in #258
What's Changed
- tutorial 01: handle ConvergenceError in parametric sweep by @jameslehoux in #250
- make visualization notebook Colab-ready with badge and live plotfile by @jameslehoux in #251
- restructure profiling notebook around bottleneck hunt by @jameslehoux in #252
- fix §7 TinyProfiler capture — run solve in subprocess by @jameslehoux in #253
- profiling notebook: surface hidden findings from full-run analysis by @jameslehoux in #254
- phase 1: close the solver-choice gap (#256) by @jameslehoux in #257
- phase 2: build_info() surface + scaling-validation harness (#256) by @jameslehoux in #258
Full Changelog: v4.1.2...v4.2.0
v4.1.2
What's Changed
- Fix CPU wheel build: use manylinux_2_28 image and powertools repo by @jameslehoux in #249
Full Changelog: v4.1.1...v4.1.2
What's Changed
- Fix CPU wheel build: use manylinux_2_28 image and powertools repo by @jameslehoux in #249
Full Changelog: v4.1.1...v4.1.2
v4.1.1
What's Changed
- Fix CuPy solver tolerance parameter and update tutorial installations by @jameslehoux in #246
- Fix T4 GPU TypeError in CuPy CG solver and Tutorial 2, 4 and 7 CPU install by @jameslehoux in #247
- Build compiled CPU wheels with C++ bindings on PyPI by @jameslehoux in #248
Full Changelog: v4.1.0...v4.1.1
What's Changed
- Fix CuPy solver tolerance parameter and update tutorial installations by @jameslehoux in #246
- Fix T4 GPU TypeError in CuPy CG solver and Tutorial 2, 4 and 7 CPU install by @jameslehoux in #247
- Build compiled CPU wheels with C++ bindings on PyPI by @jameslehoux in #248
Full Changelog: v4.1.0...v4.1.1
v4.1.0
v4.1.0 — Pure-Python Solver Backend
Highlights
pip install openimpala now just works — no compiled extensions, no CUDA toolkit, no MPI required. GPU acceleration is automatic when CuPy is installed.
New Features
- Pure-Python solver backend (
openimpala/_solver.py) — a drop-in replacement for the C++ HYPRE solver using SciPy/CuPy sparse matrices- 7-point stencil Laplacian with harmonic-mean face coefficients (same algorithm as C++)
- Dirichlet BCs at inlet/outlet, zero-flux Neumann on sides
- Sparse CG solve: CuPy on GPU (auto-detected), SciPy on CPU
- Flood-fill percolation check via
scipy.ndimage.label - Validated against all analytical benchmarks (uniform block, series/parallel layers)
- Automatic backend detection —
Session()transparently selects C++ or Python backend based on what's available - Two clean install paths:
pip install openimpala— pure Python, works everywhere (Colab, laptops, CI)pip install openimpala-cuda— compiled C++ HYPRE backend for HPC clusters
Bug Fixes
- Fix GPU wheel CUDA device linking — added
CUDA_SEPARABLE_COMPILATIONandCUDA_RESOLVE_DEVICE_SYMBOLSto resolve__cudaRegisterLinkedBinary_*undefined symbols in_core.so - Fix MLMG solver — reverted boundary coefficient and PFMG stability changes to match master (multiple commits)
- Fix benchmark scripts — corrected PYTHONPATH and solver list in benchmark runners
Build & Packaging
- CPU wheel workflow replaced with pure-Python
python -m build(no CMake, no cibuildwheel) - New
python/pyproject.tomlfor setuptools-based pure-Python wheel build scipy>=1.7added as a core dependency_solver.pyadded to CMake install list for compiled wheels
Documentation
- All 7 tutorials updated: install cell is now
!pip install openimpala [extras] notebooks/profiling_and_tuning.ipynbsimplified install- README, getting-started, gpu.md, index.rst updated for new install model
paper.mdupdated distribution description
What's Changed
- Fix benchmark script not found inside Apptainer container by @jameslehoux in #235
- Fix benchmark PYTHONPATH: use python/ not cmake_build_bench/ by @jameslehoux in #236
- Fix MLMG boundary coefficients and improve PFMG stability by @jameslehoux in #237
- Fix MLMG tortuosity: pin boundary cells to match HYPRE convention by @jameslehoux in #238
- Fix TortuosityMLMG build: add missing cell_active constant by @jameslehoux in #239
- Fix MLMG: adjust face Dirichlet values to match HYPRE cell-centre BCs by @jameslehoux in #240
- Revert MLMG and PFMG solver changes; fix GPU wheel install by @jameslehoux in #241
- Add CUDA runtime packages and fix GPU wheel build issues by @jameslehoux in #242
- Fix benchmark script path and improve solver configurations by @jameslehoux in #243
- Add pure-Python solver backend for simplified installation by @jameslehoux in #245
Full Changelog: v4.0.6...v4.1.0