VIPP 0.13.0a4¶
Release: GitHub alpha pre-release and PyPI package
Maturity: Alpha pre-release
VIPP 0.13.0a4 broadens public GPU admission across compatible NVIDIA CUDA 13 devices. Auto, Prefer GPU, and explicit Custom GPU choices no longer require the model name or compute capability of the original RTX 5090 reference host. They use the same operation, data type, parameter, dependency, memory, cleanup, and environment gates on every qualifying device.
The portable scientific reference remains CPU execution. A GPU implementation is considered only for its declared scientific region. Unsupported calls stay on CPU with a visible reason; VIPP does not cast data or change an authored parameter merely to make a node GPU-eligible.
Schemas do not change in this bug-fix series
VIPP 0.13.0a4 still writes workflow schema 4 and batch configuration and manifest schema 3. Generated Python and saved batch runners remain locked to the exact VIPP version that created them, so regenerate them after an upgrade even when the workflow schema is unchanged.
What changed¶
- Public CUDA admission now accepts a probed NVIDIA CUDA device with compute capability 7.5 or newer and driver API 13.3 or newer.
- The native-Windows, CPython 3.12, CUDA runtime 13.2, NumPy 2.5.1, SciPy 1.18.0, scikit-image 0.26.0, CuPy/CuPyX 14.1.1, provider-provenance, workload, memory, and cleanup requirements remain enforced.
- cuCIM-backed regions retain the additional exact local-wheel provenance and approval checks described in the Windows CUDA guide.
- Immutable compute-policy artifact v8 records the broad compatible-device rule. RTX 5090 and RTX 4050 Laptop systems are reference validation devices, not a hardware allowlist.
- Auto may use any qualifying device but still applies its reviewed workload and performance policy. Prefer GPU requests every eligible public GPU implementation even when CPU is faster.
Cross-device reproducibility¶
Compatibility does not mean that every floating-point result is bit-for-bit identical across GPU models. VIPP continues to enforce the implementation's declared parity contract--bitwise where promised and bounded tolerance for reviewed floating-point regions--but hardware, drivers, compiler paths, and reduction order can produce minor floating-point differences.
For consequential work, retain:
- the VIPP version, workflow, source identities, and actual implementation IDs;
- GPU model and compute capability;
- NVIDIA driver and CUDA driver/runtime/toolkit-package versions;
- Python, CuPy/CuPyX/cuCIM, NumPy, SciPy, and scikit-image versions; and
- the execution report, fallbacks, cleanup outcome, and validation evidence.
Validate the analysis against the CPU reference on representative data and review results before combining runs from different environments.
Install or upgrade¶
For CPU use on CPython 3.12 or 3.13:
For the native-Windows CUDA 13 route on CPython 3.12:
& ".\.venv-vipp-gpu-cu13\Scripts\python.exe" -m pip install --upgrade "napari[pyqt6]>=0.6" "napari-vipp[gpu-cuda13]==0.13.0a4"
& ".\.venv-vipp-gpu-cu13\Scripts\vipp-compute-doctor.exe" --track cuda13 --refresh
& ".\.venv-vipp-gpu-cu13\Scripts\vipp.exe"
When upgrading an environment containing a locally built approved cuCIM wheel, keep its private wheel and build manifest. Follow the Windows CUDA and cuCIM guide and rerun the release-pinned setup helper so the approval record is recreated against the new VIPP release. Do not install an unpinned cuVS package merely to silence the optional cuCIM distance-feature warning.
Preserve the previous environment and workflow for reproducibility. Open and recalculate a duplicate on CPU first, compare decisive outputs, and only then enable Auto, Prefer GPU, or Custom. Regenerate exported Python and saved batch runners under 0.13.0a4.
Fixes retained from 0.13.0a3 and 0.13.0a2¶
- Sigma Filter now compiles with CuPy 14.1.1 without passing a duplicate NVRTC flush-to-zero option.
- Node benchmarking and Find fastest pipeline... can evaluate compatible NVIDIA devices under the pinned CUDA 13 stack.
- Fresh non-CPU planning publishes exact metadata for every dynamic Split Channels output, including nonzero source ports.
- An unresolved host transform can no longer be falsely projected as resolved through a downstream shape-preserving accelerator operation.
- A fresh object-intensity example safely chooses CPU for cuCIM measurement when cuCIM is absent instead of failing GPU preflight at Otsu.
Release verification¶
The immutable annotated tag
v0.13.0a4
resolves to application commit
4bec1e8145b31e161beaf44a290bff24aea36f5e.
The exact commit passed all seven jobs in the
Windows, Linux, macOS, Python 3.12/3.13 CI matrix.
Local release validation completed 4,018 tests, with 109 expected skips and two
documented expected failures. The exact tagged wheel was installed into an
isolated overlay over the pinned CUDA 13 environment and verified as
0.13.0a4. On an RTX 4050 Laptop GPU (compute capability 8.9), Auto and Prefer
GPU selected eligible CuPy/CuPyX/cuCIM implementations, and all 13 bundled
examples completed in fresh CPU, Auto, and Prefer-GPU runs. Selected GPU nodes
passed their production parity contracts, no fallback record was emitted, and
cleanup succeeded.
| Artifact | SHA-256 |
|---|---|
napari_vipp-0.13.0a4-py3-none-any.whl |
5FA75FC48955E2CA9AD7D5BC13218AD83EF14C23F0B72F74D8A7486CA8453085 |
napari_vipp-0.13.0a4.tar.gz |
B99B829C45BE734B705DEE17829886EF91DEAABC3C3D3C5F76C164DB87A617AF |
VIPP remains alpha software. Validate outputs before scientific interpretation, publication, or production use.