Releases: fangq/blit
Releases · fangq/blit
BLIT v0.5.0 - Block Iterative Linear Solvers
blit v0.5.0 Release Notes
- Copyright: (C) Qianqian Fang (2005, 2011, 2026) <q.fang at neu.edu>
- License: BSD-3-Clause and GPL-v3 dual-licensed
- Version: 0.5.0
- Website: https://neurojson.org/Page/blocksolver
- Github: https://github.com/fangq/blit
Click here to register and download blit v0.5
We are excited to announce BLIT v0.5.0 — a major release bringing significant performance improvements, cross-platform Python wheels, and comprehensive documentation for the Block Iterative Linear Solvers library.
🚀 Highlights
- 10-100× faster Fortran backend now available via
pip install blocksolver - Cross-platform wheels for Windows, macOS, and Linux (Python 3.7-3.12)
- Pure Python fallback with optional Numba JIT acceleration
- Optimized implementations across MATLAB, Fortran, and Python — now beats standard QMR
- Comprehensive documentation with benchmarks, API reference, and usage examples
✨ New Features
Python Package (blocksolver)
- Native Python implementation as automatic fallback when Fortran is unavailable
- Pre-built wheels with Fortran backend for all major platforms
- SciPy-compatible interface (
blqmr_scipy) - Workspace reuse for repeated solves
- Automatic backend detection via
get_backend_info()
Performance Optimizations
- Split ILU and split Jacobi preconditioners for better symmetry preservation
- Optimized block operations across all backends
- Up to 14.7× faster than direct solvers for large complex symmetric systems
- Near-ideal iteration scaling: 4 RHS requires only ~24% of 4× single-solve iterations
C/C++ Interface
- Updated
blit_solvers.hheader with template-based wrappers - RAII memory management
- Example code and code formatter
📊 Benchmarks
| Problem Size | BLQMR vs Direct | BLQMR vs QMR |
|---|---|---|
| 27k complex | 3.6× faster | 1.2× faster |
| 64k complex | 6.8× faster | 1.03× faster |
| 125k complex | 14.7× faster | 1.05× faster |
🐛 Bug Fixes
- Fixed UMFPACK preconditioner segmentation fault
- Fixed Numba import exception handling
- Fixed preconditioner implementations in MATLAB, Fortran, and Python backends
- Resolved CI build issues across all platforms
📦 Installation
# From PyPI (includes Fortran backend on supported platforms)
pip install blocksolver
# Optional: Numba acceleration for Python fallback
pip install numba📚 Documentation
- Full API reference for Python, MATLAB, Fortran, and C++
- Preconditioning guide with recommendations
- Performance optimization tips
- Troubleshooting section
Website: https://neurojson.org/Page/blocksolver
GitHub: https://github.com/fangq/blit
PyPI: https://pypi.org/project/blocksolver
🙏 Acknowledgments
This project is supported by NIH grant U24-NS124027.
📝 What's Changed
Documentation
a4eb5a4Add website URL26e1441Release blit v0.5.088ab22da5dca62Add comprehensive README
Python
e780d7bBump version to 0.8.5 with Fortran backend speedup4e93822Add native Python blqmr as fallbackde12245Add Python binding
Optimization
458aa26Optimize MATLAB, Fortran, Python backend to beat QMRb90bc18Update preconditioner for Fortran and Python (split ILU/diag)a43a58162ddd1cFix preconditioner for MATLAB (split Jacobi)
C/C++
ca9034dUpdate C/C++ blit header, example code, add formatter
Benchmarks
93cf97dUpdate Python block-size benchmark1605ef9Add RHS sweep benchmark for MATLABf2f1017Add speed and blocksize benchmarks, multi-RHS for Fortranebac2d6Add benchmark scripts for MATLAB blqmr
CI/Build
834be82Use Meson to build Linux wheels1977498Rename package toblocksolvereec3e25Support Meson build system1aeea78Add GitHub Actions for building and deploying
Bug Fixes
515a5e5Fix Numba import exception92a4963Fix UMFPACK preconditioner segfault
Full Changelog: v0.0.1...v0.5.0