photonoxide needs none of these: its own solvers are built in, and the default build, CI and the released app work with no library installed. An external library is optional, installed by you under its own licence, found and loaded at run time, and never redistributed with photonoxide (the plan). The studio's Libraries page shows the same guides beside what it finds on your machine, and photonoxide libraries prints it.
This page is written by photonoxide libraries --write docs/libraries.md from the guides in the program; a test fails when it is out of date.
Checked means the command was run on a clean machine, one of GitHub's runners, and photonoxide then found the library: the Libraries workflow (.github/workflows/libraries.yml) does that again every week and on every change to the guides, and fails when a method stops working. What it can't check is said with each method: the runners have no GPU, so NVIDIA's libraries are found and loaded there but their backends' smoke tests don't run; winget's installers are several gigabytes and ask for elevation, so only the index is checked for the packages; and there is no Intel Mac among the runners.
| Library | Backends | Windows | Linux | macOS |
|---|---|---|---|---|
| oneMKL | pardiso, photonoxide-mkl |
winget, conda-forge ✓, pip ✓ | conda-forge ✓, pip ✓, apt ✓ | conda-forge |
| CUDA runtime | — | winget, conda-forge ✓, pip ✓ | conda-forge ✓, pip ✓ | see below |
| cuSPARSE | cusparse |
winget, conda-forge ✓, pip ✓ | conda-forge ✓, pip ✓ | see below |
| cuDSS | cudss |
conda-forge ✓, pip ✓ | conda-forge ✓, pip ✓ | see below |
| SuperLU | superlu |
see below | conda-forge ✓, apt ✓ | conda-forge ✓ |
| MUMPS | mumps, mumps-blr |
conda-forge ✓ | conda-forge ✓, apt ✓ | conda-forge ✓ |
| Accelerate | accelerate, photonoxide-accelerate |
see below | see below | see below |
| OpenBLAS | photonoxide-openblas |
conda-forge ✓, pip | conda-forge ✓, apt ✓, pip | conda-forge ✓, pip |
| AMD AOCL | photonoxide-aocl |
see below | see below | see below |
| Arm Performance Libraries | photonoxide-armpl |
winget | see below | brew |
| HDF5 | — | conda-forge | conda-forge ✓, apt ✓ | conda-forge ✓, brew |
| Zstandard | — | conda-forge | conda-forge ✓, apt ✓ | conda-forge ✓, brew |
| AMD AOCL-Sparse | none yet (#189) | see below | see below | see below |
✓: run on a clean machine and found. A manager without it is listed by its package index alone.
For each library, in this order, and the first file that loads and passes its check is used:
- the library's own variable, naming the file or its folder (
PHOTONOXIDE_MKL, say), then the vendor's (MKLROOT,CUDA_PATH); - the active conda environment (
CONDA_PREFIX): start photonoxide from it; - the vendor's default install folders;
- Python's package folders, for the vendors' wheels: the active virtual environment's, the Python on
PATH, the user's and the system's. Nothing needs Python to load them; - the system's library paths.
Intel's oneAPI Math Kernel Library, through its single library mkl_rt: PARDISO, its sparse direct solver, and its BLAS and LAPACK as the dense kernels of photonoxide's own solver's fronts.
-
Licence: Intel Simplified Software License (October 2022). You accept it by installing.
-
The vendor's download: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-download.html
-
Backends:
pardiso,photonoxide-mkl. -
winget (Windows):
winget install --id Intel.oneMKL --exact
Intel's installer, into Program Files\Intel\oneAPI, where photonoxide looks.
Not run on a clean machine: the installer is several gigabytes and asks for elevation. The workflow checks that winget's index still has the package.
-
conda-forge (Windows, Linux, macOS):
conda install -c conda-forge mkl
Into the active conda environment: start photonoxide from it, so $CONDA_PREFIX points there. On macOS, Intel Macs only.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed mkl 2026.1.0; found oneMKL 2026.1, and the pardiso backend after its smoke test.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed mkl 2026.1.0; found oneMKL 2026.1, and the pardiso backend after its smoke test.
-
pip (Windows, Linux):
pip install mkl
The wheel puts mkl_rt beside Python (Library\bin on Windows, lib elsewhere), where photonoxide looks: the Python on PATH, or the active virtual environment's.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed mkl 2026.1.0; found oneMKL 2026.1, and the pardiso backend after its smoke test.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed mkl 2026.1.0; found oneMKL 2026.1, and the pardiso backend after its smoke test.
-
apt (Linux):
sudo apt-get install libmkl-rt
Debian's and Ubuntu's package: MKL 2020.4, from 2020, where the other methods give this year's. photonoxide finds it in the system's library path.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed libmkl-rt 2020.4.304-4; found oneMKL 2020.4, and the pardiso backend after its smoke test.
- Checked on Linux (ubuntu-22.04), 2026-10-09: installed libmkl-rt 2020.4.304-2ubuntu3; found oneMKL 2020.4, and the pardiso backend after its smoke test.
-
macos-aarch64: oneMKL has no build for Apple silicon: photonoxide's own solvers run there.
NVIDIA's CUDA runtime: the GPU backends' memory and devices. It needs NVIDIA's driver and a CUDA GPU.
-
Licence: NVIDIA CUDA Toolkit End User License Agreement. You accept it by installing.
-
The vendor's download: https://developer.nvidia.com/cuda-downloads
-
winget (Windows):
winget install --id Nvidia.CUDA --exact
The whole CUDA toolkit (several GB), with cuSPARSE; $CUDA_PATH points at it.
Not run on a clean machine: the installer is several gigabytes and asks for elevation. The workflow checks that winget's index still has the package.
-
conda-forge (Windows, Linux):
conda install -c conda-forge cuda-cudart libcusparse
The runtime and cuSPARSE alone, into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed cuda-cudart 13.4.92, libcusparse 12.8.6.72; found the CUDA runtime 13.4, which reports no GPU there.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed cuda-cudart 13.4.92, libcusparse 12.8.6.72; found the CUDA runtime's file, which reports no GPU there.
-
pip (Windows, Linux):
pip install nvidia-cuda-runtime nvidia-cusparse
NVIDIA's CUDA 13 wheels, found in site-packages/nvidia; nothing needs Python to load them.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed nvidia-cuda-runtime 13.4.92, nvidia-cusparse 12.8.6.72; found the CUDA runtime 13.4, which reports no GPU there.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed nvidia-cuda-runtime 13.4.92, nvidia-cusparse 12.8.6.72; found the CUDA runtime's file, which reports no GPU there.
-
macos: NVIDIA's libraries have no macOS build: photonoxide's own solvers run there.
The CUDA toolkit's sparse kernels: photonoxide's QMR (plain, complex symmetric, and with ILU(0)) and its GMRES with the multigrid, run on the GPU.
-
Licence: NVIDIA CUDA Toolkit End User License Agreement. You accept it by installing.
-
The vendor's download: https://developer.nvidia.com/cuda-downloads
-
Backends:
cusparse. -
Needs: CUDA runtime.
-
winget (Windows):
winget install --id Nvidia.CUDA --exact
The whole CUDA toolkit (several GB), with the runtime; $CUDA_PATH points at it.
Not run on a clean machine: the installer is several gigabytes and asks for elevation. The workflow checks that winget's index still has the package.
-
conda-forge (Windows, Linux):
conda install -c conda-forge cuda-cudart libcusparse
Into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed cuda-cudart 13.4.92, libcusparse 12.8.6.72; found cuSPARSE 12.8.6, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed cuda-cudart 13.4.92, libcusparse 12.8.6.72; found cuSPARSE 12.8.6, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
-
pip (Windows, Linux):
pip install nvidia-cuda-runtime nvidia-cusparse
NVIDIA's CUDA 13 wheels, found in site-packages/nvidia.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed nvidia-cuda-runtime 13.4.92, nvidia-cusparse 12.8.6.72; found cuSPARSE 12.8.6, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed nvidia-cuda-runtime 13.4.92, nvidia-cusparse 12.8.6.72; found cuSPARSE 12.8.6, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
-
macos: NVIDIA's libraries have no macOS build: photonoxide's own solvers run there.
NVIDIA's sparse direct solver on the GPU.
-
Licence: NVIDIA cuDSS Software License Agreement. You accept it by installing.
-
The vendor's download: https://developer.nvidia.com/cudss-downloads
-
Backends:
cudss. -
Needs: CUDA runtime.
-
conda-forge (Windows, Linux):
conda install -c conda-forge libcudss=0.8
Into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed libcudss 0.8.0.10; found cuDSS 0.8.0, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed libcudss 0.8.0.10; found cuDSS 0.8.0, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
-
pip (Windows, Linux):
pip install "nvidia-cudss-cu13==0.8.*"The CUDA 13 build (nvidia-cudss-cu12 for CUDA 12), found in site-packages/nvidia. Release 0.8: the next release's wheel (site-packages/nvidia/cu13, libcudss.so.1) isn't loaded yet.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed nvidia-cudss-cu13 0.8.0.10; found cuDSS 0.8.0, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed nvidia-cudss-cu13 0.8.0.10; found cuDSS 0.8.0, loaded; the runner has no GPU, so the backend's smoke test couldn't run.
-
macos: NVIDIA's libraries have no macOS build: photonoxide's own solvers run there.
A supernodal sparse LU with partial pivoting (Demmel, Eisenstat, Gilbert, Li, Liu 1999), the sequential library, releases 5 to 7.
-
Licence: BSD-3-Clause. You accept it by installing.
-
The vendor's download: https://portal.nersc.gov/project/sparse/superlu/
-
Backends:
superlu. -
conda-forge (Linux, macOS):
conda install -c conda-forge superlu
Into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed superlu 7.0.1; found SuperLU 7.0.0 by its file's name, and the superlu backend after its smoke test and its tests.
- Checked on macOS (macos-latest (Apple silicon)), 2026-10-09: installed superlu 7.0.1; found SuperLU 7.0.0 by its file's name, and the superlu backend after its smoke test and its tests.
-
apt (Linux):
sudo apt-get install libsuperlu-dev
Debian's and Ubuntu's package, older than conda-forge's: 6.0.1 on Ubuntu 24.04, 5.3.0 on 22.04.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed libsuperlu-dev 6.0.1; found SuperLU 6.0.1 by its file's name, and the superlu backend after its smoke test and its tests.
- Checked on Linux (ubuntu-22.04), 2026-10-09: installed libsuperlu-dev 5.3.0; found SuperLU 5.3.0 by its file's name, and the superlu backend after its smoke test and its tests.
-
windows: conda-forge has no superlu for Windows (the install fails with PackagesNotFoundInChannelsError, 2026-10-09), and no package there names SuperLU's library by its release, which is how photonoxide tells the releases apart: photonoxide's own solvers run there.
A multifrontal sparse direct solver (Amestoy, Duff, L'Excellent, Koster 2001; Amestoy, Buttari, L'Excellent, Mary 2019), its sequential build, and its block low-rank factorization (Amestoy et al. 2015) as a backend of its own, lossy to a tolerance and refined. MUMPS asks that work using it cite it. photonoxide knows the structure of releases 5.4.1 to 5.9.1 and refuses others; no package manager had 5.9 yet on 2026-10-11, and 5.9.1 is checked built from mumps-solver.org's source. From 5.9, MUMPS isn't used while MUMPS_CONFIG_FILE is set: its file's settings would replace photonoxide's.
-
Licence: CeCILL-C. You accept it by installing.
-
The vendor's download: https://mumps-solver.org/
-
Backends:
mumps,mumps-blr. -
conda-forge (Windows, Linux, macOS):
conda install -c conda-forge mumps-seq
The sequential build, into the active conda environment: start photonoxide from it. On Windows it brings conda-forge's mkl with it, and so oneMKL's PARDISO too.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed mumps-seq 5.8.2; found MUMPS 5.8.2, and the mumps backend after its smoke test and its tests.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed mumps-seq 5.8.2, mkl 2026.1.0; found MUMPS 5.8.2, and the mumps backend after its smoke test and its tests.
- Checked on macOS (macos-latest (Apple silicon)), 2026-10-09: installed mumps-seq 5.8.2; found MUMPS 5.8.2, and the mumps backend after its smoke test and its tests.
-
apt (Linux):
sudo apt-get install libmumps-seq-dev
Debian's and Ubuntu's package, older than conda-forge's (5.6.2 on Ubuntu 24.04, 5.4.1 on 22.04): both are releases photonoxide knows.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed libmumps-seq-dev 5.6.2; found MUMPS 5.6.2, and the mumps backend after its smoke test and its tests.
- Checked on Linux (ubuntu-22.04), 2026-10-09: installed libmumps-seq-dev 5.4.1; found MUMPS 5.4.1, and the mumps backend after its smoke test and its tests.
Apple's Accelerate framework, its sparse direct solvers, and its BLAS and LAPACK as the dense kernels of photonoxide's own solver's fronts: part of macOS, nothing to install. Complex LU from macOS 15.5, complex symmetric L D Lᵀ from macOS 26.
-
Licence: Part of macOS, under Apple's software licence agreement for it. You accept it by installing.
-
The vendor's download: https://developer.apple.com/documentation/accelerate/sparse_solvers
-
Backends:
accelerate,photonoxide-accelerate. -
macos: Built in: nothing to install. Its complex LU needs macOS 15.5, its complex symmetric L D Lᵀ macOS 26; on an older macOS photonoxide's own solvers run.
-
windows: Accelerate is part of macOS: photonoxide's own solvers run here.
-
linux: Accelerate is part of macOS: photonoxide's own solvers run here.
An open BLAS and LAPACK: the dense kernels of photonoxide's own solver's fronts, in place of faer's. Its count of threads is the process's, not a thread's: photonoxide runs it on one thread, and a front that threads sets the count around itself while no other call into OpenBLAS runs. Its LU stays on one thread: its threaded zgetrf needs more stack than a thread has.
-
Licence: BSD-3-Clause. You accept it by installing.
-
The vendor's download: https://github.com/OpenMathLib/OpenBLAS/releases
-
Backends:
photonoxide-openblas. -
conda-forge (Windows, Linux, macOS):
conda install -c conda-forge openblas
Into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed openblas 0.3.34; found OpenBLAS 0.3.34, and the photonoxide-openblas backend after its smoke test and its tests.
- Checked on Windows (windows-2025-vs2026), 2026-10-09: installed openblas 0.3.34; found OpenBLAS 0.3.34, and the photonoxide-openblas backend after its smoke test and its tests.
- Checked on macOS (macos-latest (Apple silicon)), 2026-10-09: installed openblas 0.3.34; found OpenBLAS 0.3.34, and the photonoxide-openblas backend after its smoke test and its tests, on one thread.
-
apt (Linux):
sudo apt-get install libopenblas-dev
Debian's and Ubuntu's package: 0.3.26 on Ubuntu 24.04, 0.3.20 on 22.04, older than conda-forge's. Before 0.3.27 photonoxide doesn't use OpenBLAS's zgemmt: 0.3.26's crashed the solver.
- Checked on Linux (ubuntu-24.04), 2026-10-09: installed libopenblas-dev 0.3.26; found OpenBLAS 0.3.26, and the photonoxide-openblas backend after its smoke test and its tests, on one thread.
- Checked on Linux (ubuntu-22.04), 2026-10-09: installed libopenblas-dev 0.3.20; found OpenBLAS 0.3.20, and the photonoxide-openblas backend after its smoke test and its tests, on one thread.
-
pip (Windows, Linux, macOS):
pip install scipy-openblas32
The OpenBLAS that NumPy and SciPy build with, its routines named scipy_zgemm_ beside zgemm_, found in site-packages/scipy_openblas32. scipy-openblas64, whose zgemm_ takes 64-bit integers, is used if PHOTONOXIDE_OPENBLAS names its file.
Not run on a clean machine.
AMD's Optimizing CPU Libraries: AOCL-BLAS (AMD's BLIS) and AOCL-LAPACK (AMD's libFLAME), tuned for AMD's Zen processors, as the dense kernels of photonoxide's own solver's fronts. Its iterative solvers (AOCL-Sparse) are #189's. Not yet run with photonoxide on an AMD processor: its loader and interface checks are tested, the library itself isn't.
-
Licence: BSD-3-Clause (AOCL-BLAS, AOCL-LAPACK and AOCL-Utils). You accept it by installing.
-
The vendor's download: https://www.amd.com/en/developer/aocl.html
-
Backends:
photonoxide-aocl. -
windows: AMD's installer (AOCL 5.2: AOCL_Windows-setup-5.2.0-AMD.exe), from its page: no package manager has it. It installs into Program Files\AMD\AOCL-Windows, where photonoxide looks (amd-blis\lib\LP64, amd-libflame\lib\LP64, amd-utils\lib), or set AOCL_ROOT or PHOTONOXIDE_AOCL.
-
linux: AMD's .deb, .rpm or tar file, from its page: into /opt/AMD/aocl, where photonoxide looks (lib_LP64), or set AOCL_ROOT or PHOTONOXIDE_AOCL.
-
macos: AMD has no macOS build.
Arm's BLAS and LAPACK, tuned for Arm processors, as the dense kernels of photonoxide's own solver's fronts: Windows on Arm, Linux on AArch64 and Apple silicon. Not yet run with photonoxide on an Arm processor: its loader and interface checks are tested, the library itself isn't.
-
Licence: End User License Agreement for Arm Performance Libraries, free of charge. You accept it by installing.
-
The vendor's download: https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Libraries
-
Backends:
photonoxide-armpl. -
winget (Windows):
winget install --id Arm.ArmPerformanceLibraries --exact
Windows on Arm only: winget has no installer for x86-64. Into Program Files\Arm Performance Libraries, where photonoxide looks.
Not run on a clean machine: the installer is several gigabytes and asks for elevation. The workflow checks that winget's index still has the package.
-
brew (macOS):
brew install --cask arm-performance-libraries
Apple silicon only. Into /opt/arm, where photonoxide looks.
Not run on a clean machine.
-
linux: Arm's .deb or .rpm, from its page, for AArch64: into /opt/arm, where photonoxide looks, or set ARMPL_DIR or PHOTONOXIDE_ARMPL.
The HDF Group's Hierarchical Data Format 5, the library libhdf5, release 1.10 or later: a job's [task.export] container = "hdf5" writes its exported fields as .h5 files with it, one dataset an array, complex ones as h5py's {r, i} compound, the file's meta.json text as the root's attribute meta, deflated by libhdf5's own filter. NumPy's .npz, photonoxide's own, stays the default and needs nothing. The same file from the same arrays and library on every run (no modification times are kept).
-
Licence: BSD-3-Clause. You accept it by installing.
-
The vendor's download: https://www.hdfgroup.org/download-hdf5/
-
conda-forge (Windows, Linux, macOS):
conda install -c conda-forge hdf5
Into the active conda environment: start photonoxide from it.
- Checked on Linux (ubuntu-24.04), 2026-10-23: installed hdf5 2.2.0; found HDF5 2.2.0, and its tests: an exported .h5 read back to the arrays of photonoxide's own .npz, and the same file twice.
- Checked on macOS (macos-latest (Apple silicon)), 2026-10-23: installed hdf5 2.2.0; found HDF5 2.2.0, and its tests: an exported .h5 read back to the arrays of photonoxide's own .npz, and the same file twice.
-
apt (Linux):
sudo apt-get install libhdf5-dev
Debian's and Ubuntu's serial build, older than conda-forge's: libhdf5.so in /usr/lib/x86_64-linux-gnu/hdf5/serial, where photonoxide looks.
- Checked on Linux (ubuntu-24.04), 2026-10-23: installed libhdf5-dev 1.10.10; found HDF5 1.10.10, and its tests: an exported .h5 read back to the arrays of photonoxide's own .npz, and the same file twice.
- Checked on Linux (ubuntu-22.04), 2026-10-23: installed libhdf5-dev 1.10.7; found HDF5 1.10.7, and its tests: an exported .h5 read back to the arrays of photonoxide's own .npz, and the same file twice.
-
brew (macOS):
brew install hdf5
Into Homebrew's lib folder (/opt/homebrew/lib, /usr/local/lib on Intel), where photonoxide looks.
Not run on a clean machine.
Zstandard's compression (Collet and Kucherawy, RFC 8878), the reference library libzstd, release 1.4 or later: a job's [task.export] compression = "zstd" compresses its exported .npz files with it, each member one frame (ZIP method 93, which Python's zipfile and so NumPy read from Python 3.14). Deflate, photonoxide's own, stays the default and needs nothing. The same frames from the same library on every run.
-
Licence: BSD-3-Clause or GPL-2.0, at your choice. You accept it by installing.
-
The vendor's download: https://github.com/facebook/zstd/releases
-
conda-forge (Windows, Linux, macOS):
conda install -c conda-forge zstd
Into the active conda environment: start photonoxide from it. Many environments have it already, as a dependency.
- Checked on Linux (ubuntu-24.04), 2026-10-23: installed zstd 1.5.7; found Zstandard 1.5.7, and its tests: an exported .npz read back to the bytes of photonoxide's own.
- Checked on macOS (macos-latest (Apple silicon)), 2026-10-23: installed zstd 1.5.7; found Zstandard 1.5.7, and its tests: an exported .npz read back to the bytes of photonoxide's own.
-
apt (Linux):
sudo apt-get install libzstd1
Debian's and Ubuntu's package, on most systems already: 1.5.5 on Ubuntu 24.04, 1.4.8 on 22.04.
- Checked on Linux (ubuntu-24.04), 2026-10-23: installed libzstd1 1.5.5; found Zstandard 1.5.5, and its tests: an exported .npz read back to the bytes of photonoxide's own.
- Checked on Linux (ubuntu-22.04), 2026-10-23: installed libzstd1 1.4.8; found Zstandard 1.4.8, and its tests: an exported .npz read back to the bytes of photonoxide's own.
-
brew (macOS):
brew install zstd
Into Homebrew's lib folder (/opt/homebrew/lib, /usr/local/lib on Intel), where photonoxide looks.
Not run on a clean machine.
How each installs, for the issue that adds its backend. photonoxide doesn't look for them yet.
AMD's sparse library, part of AOCL: iterative solvers on AMD processors. Its backend: #189.
-
Licence: MIT (to confirm in #189).
-
windows: AMD's installer, with the rest of AOCL, from its page: no package manager has it, and it wasn't run here.
-
linux: AMD's packages, with the rest of AOCL, from its page: not run here.
-
macos: AMD has no macOS build.
Every Monday the Releases workflow (.github/workflows/releases.yml) runs photonoxide libraries --releases. It reads each library's newest release where it is published: PyPI's and anaconda.org's APIs for the wheels and conda-forge's packages, NVIDIA's redistributables' manifests for CUDA and cuDSS, the GitHub releases of SuperLU and OpenBLAS, MUMPS's download page, and, for Accelerate, the macOS of GitHub's runner images. It sets each beside the version checked above and the releases photonoxide-native accepts, with a link to the release's notes, and keeps that table in one issue, New releases of external libraries, commenting there when a release appears.
A new release isn't supported until it has been checked:
- Read its release notes for what photonoxide calls: MUMPS's
ZMUMPS_STRUC_Cand SuperLU's options change between releases, and NVIDIA's, oneMKL's and OpenBLAS's file names carry a major release. - Outside what photonoxide-native accepts, it is refused until its support is added: the release's layout in
native/src/mumps.rs(from itszmumps_c.h), its major release innative/src/superlu.rs, its file names innative/src/nvidia.rs. - Install it on clean machines: the Libraries workflow on a branch (
gh workflow run libraries.yml --ref <branch>) installs each method, asks photonoxide what it finds, and runs each backend's tests with its library required. - Check it against photonoxide's own solvers on a machine that has it (and a GPU, for NVIDIA's): the backend's tests (
cargo test -p photonoxide-native --release --test <backend>, withPHOTONOXIDE_REQUIRE_<LIBRARY>set where the test has one) and the benchmark's problems (photonoxide bench --tier standard --backends <backend>), whose answers are checked. - Then record it: its
Checkedentries instudio/src-tauri/src/libraries.rs, andphotonoxide libraries --write docs/libraries.md. Only then do the guides call it checked.
- Debian's and Ubuntu's oneMKL is MKL 2020.4.
aptinstalls a library six years older than Intel's, conda-forge's or pip's. photonoxide finds it and its PARDISO passes the smoke test; prefer the others for a current library. - A conda environment must be the active one when photonoxide starts: it is found by
CONDA_PREFIX. - pip installs into the Python that runs it. photonoxide looks in the active virtual environment and in the Python on
PATH; a wheel installed into another Python isn't found unless the library's variable points at it. - NVIDIA's wheels for CUDA 13 keep their libraries in two folders (
nvidia/cu13/binandbin/x86_64on Windows). photonoxide adds the second to the folders Windows searches when cuDSS needs it. - conda-forge's mumps-seq on Windows brings oneMKL with it, and so the
pardisobackend. - Every NVIDIA library needs NVIDIA's driver and a CUDA GPU to do anything: found and loaded isn't yet a backend.