Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ authors:
given-names: Silvio
repository-code: "https://github.com/alpsaur/MinkowskiEngine"
url: "https://github.com/alpsaur/MinkowskiEngine"
version: "0.5.7"
version: "0.5.8"
date-released: "2026-07-17"
license: MIT
keywords:
Expand Down
2 changes: 1 addition & 1 deletion MinkowskiEngine/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# Please cite "4D Spatio-Temporal ConvNets: Minkowski Convolutional Neural
# Networks", CVPR'19 (https://arxiv.org/abs/1904.08755) if you use any part
# of the code.
__version__ = "0.5.7"
__version__ = "0.5.8"

import os
import sys
Expand Down
14 changes: 12 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
- See the [performance guide](docs/performance.md): combined with TF32, a real training pipeline measured ~2x faster per step at ~25% less memory vs stock-ME fp32
3. **It's tested and installable**: [prebuilt wheels](https://github.com/alpsaur/MinkowskiEngine/releases/latest) (one `pip install`, no compile), CI on every change, a repaired test suite, working Docker, [hosted docs](https://alpsaur.github.io/MinkowskiEngine/), and built-in `torch.profiler` ranges (`ME::*`) for diagnosing your own workloads.

### Quick Install (v0.5.7)
### Quick Install (v0.5.8)

**Prebuilt wheels** (fastest, no compilation; CUDA 12.8 / sm_120, built against **torch 2.9.x cu128**, Python 3.10–3.12):

```bash
# pick the wheel matching your Python from the release page
pip install https://github.com/alpsaur/MinkowskiEngine/releases/download/v0.5.7/minkowskiengine-0.5.7-cp312-cp312-linux_x86_64.whl
pip install https://github.com/alpsaur/MinkowskiEngine/releases/download/v0.5.8/minkowskiengine-0.5.8-cp312-cp312-linux_x86_64.whl
```

All wheels: [Releases](https://github.com/alpsaur/MinkowskiEngine/releases/latest). The wheel dynamically links your torch install, so it needs a **torch 2.9.x + cu128** runtime; for other torch lines, build from source instead.
Expand All @@ -50,6 +50,14 @@ docker build -t minkowski_engine docker

The build no longer wipes `build/` on every run, `python setup.py build_ext --inplace` works out of the box (a `MinkowskiEngineBackend/` namespace stub is included), and a minimal `pyproject.toml` is provided for PEP 517 installs. `FORCE_CUDA=1` (env var) forces a CUDA build on machines without a visible GPU.

### New in v0.5.8

**Correct interpolation at sparse boundaries.** `MinkowskiInterpolation` / `features_at_coordinates` renormalizes weights over the lattice corners that actually exist, fixing the long-standing upstream bug ([#477](https://github.com/NVIDIA/MinkowskiEngine/issues/477)) where queries next to valid data decayed toward zero. Exact-on-voxel and full-neighborhood results are bit-identical to before; only previously-broken boundary queries change.

**Opt-in deterministic convolution.** `ME.set_deterministic(True)` sorts conv inputs into a canonical coordinate order so outputs are reproducible run-to-run regardless of input row ordering (upstream [#554](https://github.com/NVIDIA/MinkowskiEngine/issues/554)). Off by default; costs one sort per conv.

Also: regression tests locking in empty-pruning behavior ([#579](https://github.com/NVIDIA/MinkowskiEngine/issues/579)) and TensorField backprop ([#395](https://github.com/NVIDIA/MinkowskiEngine/issues/395)); a new [operations cookbook](docs/operations.md) (memory, DDP, torch.compile, determinism).

### New in v0.5.7

**Fused + vectorized gather/scatter.** The copy-GEMM convolution path used to launch tiny gather/scatter kernels once per kernel offset (27x per layer for a 3^3 kernel); profiling a real sparse U-Net showed these copies eating **56% of total GPU time** across ~358k launches per 50 steps. They are now a single vectorized gather and a single vectorized scatter-accumulate per direction (16/8/4-byte chunks per thread), and the backward input-gradient GEMM is reoriented so its scatter is coalesced. Measured on the same workload: copy-kernel GPU time **5.9s → 1.7s**, kernel launches **358k → 14k**, total GPU time per step **−38%**. Enabled by default; `ME_FUSED_COPY=0` restores the legacy path, `ME_FUSED_COPY_MAX_MB` caps staging memory (default 2048).
Expand Down Expand Up @@ -91,6 +99,8 @@ The Minkowski Engine is an auto-differentiation library for sparse tensors. It s

## News

- 2026-07 **v0.5.8: correctness release.** Boundary interpolation fixed (upstream #477, open since 2022), opt-in deterministic convolution (#554), regression tests for #579/#395, and an operations cookbook (memory, DDP, torch.compile).

- 2026-07 **v0.5.7: fused gather/scatter, 38% less GPU time per training step.** Profiling showed the per-kernel-offset copy kernels were the engine's biggest cost (56% of GPU time); they are now fused and vectorized. On by default with an opt-out (`ME_FUSED_COPY=0`).
- 2026-07 **v0.5.6 released: [prebuilt wheels](https://github.com/alpsaur/MinkowskiEngine/releases/tag/v0.5.6), half precision, faster training.** One-line install for Blackwell GPUs (no more compiling from source). fp16/bf16 now work across all ops with tensor-core GEMMs and `torch.autocast`; in our training runs this cut peak GPU memory by ~20%. An opt-in `ME_LAZY_SYNC=1` flag removes redundant GPU synchronizations for ~7–11% faster training steps.
- 2026-07 **v0.5.5, project infrastructure**: CI (build + tests on every change), working `pip install` / Docker / [docs](https://alpsaur.github.io/MinkowskiEngine/), a repaired test suite, and packaging/build-system fixes throughout.
Expand Down
6 changes: 6 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,12 @@ def _gradcheck_compat(*args, **kwargs):
"non-differentiable extras (kernel maps) that modern gradcheck's "
"numerical-jacobian filtering no longer aligns with analytical outputs"
),
"tests/python/interpolation.py::TestInterpolation::test_gpu": (
"same torch 2.x gradcheck IndexError as ::test (non-differentiable "
"extras); pre-existing, unrelated to the renormalization fix -- "
"verified failing identically on the pre-fix build. Gradient "
"correctness is covered by interpolation_renorm.py gradcheck tests"
),
}


Expand Down
Loading