Repository navigation
mps-pointops v0.5.0
mps-pointops v0.5.0
This release adds experimental PointNet++ feature propagation and squared-L2 Chamfer operators on Apple Silicon MPS. Dense SIMD Ball Query, the PyTorch3D Ball Query adapter, large single-cloud FPS, and the PyG 2.8 bridge remain available.
New experimental APIs
three_nn(unknown, known): three nearest points, Euclidean distances and int32 indices.three_interpolate(features, indices, weights): three-point feature interpolation with first-order feature gradient. Its requested weight gradient is an explicit zero tensor to match the original PointNet++ wrapper; see the contract.chamfer_distance(x, y, ...): bidirectional squared-L2 distance with supported lengths, weights, point/batch reductions and first-order gradients; see the contract.
These APIs remain experimental. High-dimensional kNN, complete PointNet++ segmentation validation, and broader Chamfer options are still on the roadmap.
Validation and measurements
- Original PointNet++ CUDA comparison: two fixed fixtures passed on MPS Safe and Fast against the executed official CUDA extension on an RTX 2080. Indices matched exactly; the largest Fast Math distance difference was
2.384185791e-7. - PyTorch3D Chamfer comparison: 160 finite-input cases and 1,080 checks per port device passed against a compiled official CPU extension; the largest MPS loss difference was
9.5367e-7. - M5 Pro full regression: 260 passed, 12 skipped in separate Safe and Fast processes with MPS fallback disabled. The Safe and Fast logs record the skips.
- Synchronized M5 Pro public-API timings, all raw samples, environment, and source SHA-256: Safe and Fast. The README shows the six measured cases. These measurements do not claim a CPU or CUDA speedup.
Install with python -m pip install mps-pointops==0.5.0.
Version DOI: 10.5281/zenodo.23080506. The archive uses the existing concept DOI lineage. The repository is Apache-2.0 with the documented MIT Ball Query component notice.