Skip to content

mps-pointops 0.2.0

Choose a tag to compare

@gamzerA gamzerA released this 01 Oct 04:32
· 217 commits to main since this release
3715436

Added

  • Flat, variable-length 3D fps, knn, and radius APIs with sorted batch vectors, separate reference and query point sets, global indices, and compact [query, reference] edge tensors.
  • Native Metal kernels for the flat MPS paths. Radius search uses SIMD prefix ranks to retain the first matching reference points in input order.
  • Optional torch_cluster 1.6.3-style imports and knn_graph/radius_graph wrappers. The point-cloud entry points were exercised through PyG 2.7.0 on MPS.

Numerical compatibility

  • FPS count calculation now follows the original CPU and GPU degree-conversion rules and preserves scalar versus length-one tensor ratio behavior.
  • Flat float32 radius search uses the torch-cluster threshold obtained by computing r * r in double precision and rounding to float32. Dense Ball Query keeps its PyTorch3D threshold contract.

Verification and scope

  • Apple M5 Pro, PyTorch 2.7.0: 147 passed, 7 expected skips in separate Safe and Fast Math runs. The raw logs identify the tested code commit.
  • GitHub CI covers macOS with Python 3.10 and 3.12, the oldest supported PyTorch 2.7.0 combination, Linux CPU tests, and wheel contents.
  • This release supports 3D point coordinates. PyG 2.8.0 calls separate torch.ops.pyg operators that the shim does not register. The float16 radius path and very small radii have the numerical limitations described in the README.

Install

python -m pip install "git+https://github.com/gamzerA/mps-pointops.git@v0.2.0"

The attached wheel can also be installed directly. SHA256SUMS contains hashes for the wheel and source distribution.

Full changes: v0.1.1...v0.2.0