Skip to content

Releases: fangq/blit

BLIT v0.5.0 - Block Iterative Linear Solvers

31 Jan 04:41
a4eb5a4

Choose a tag to compare

blit v0.5.0 Release Notes

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.h header 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

  • a4eb5a4 Add website URL
  • 26e1441 Release blit v0.5.0
  • 88ab22d a5dca62 Add comprehensive README

Python

  • e780d7b Bump version to 0.8.5 with Fortran backend speedup
  • 4e93822 Add native Python blqmr as fallback
  • de12245 Add Python binding

Optimization

  • 458aa26 Optimize MATLAB, Fortran, Python backend to beat QMR
  • b90bc18 Update preconditioner for Fortran and Python (split ILU/diag)
  • a43a581 62ddd1c Fix preconditioner for MATLAB (split Jacobi)

C/C++

  • ca9034d Update C/C++ blit header, example code, add formatter

Benchmarks

  • 93cf97d Update Python block-size benchmark
  • 1605ef9 Add RHS sweep benchmark for MATLAB
  • f2f1017 Add speed and blocksize benchmarks, multi-RHS for Fortran
  • ebac2d6 Add benchmark scripts for MATLAB blqmr

CI/Build

  • 834be82 Use Meson to build Linux wheels
  • 1977498 Rename package to blocksolver
  • eec3e25 Support Meson build system
  • 1aeea78 Add GitHub Actions for building and deploying

Bug Fixes

  • 515a5e5 Fix Numba import exception
  • 92a4963 Fix UMFPACK preconditioner segfault

Full Changelog: v0.0.1...v0.5.0