CHANGELOG.md
CITATION.cff
CONTRIBUTING.md
LICENSE
MANIFEST.in
README.md
pyproject.toml
LICENSES/MIT-ball-query.txt
bench/bench_ball_query_simd_ablation.py
bench/bench_chamfer_contention.py
bench/bench_chamfer_contention_large.py
bench/bench_chamfer_cpu_mps.py
bench/bench_feature_knn.py
bench/bench_flat_public.py
bench/bench_fps_multigroup.py
bench/bench_fps_production.py
bench/bench_pointops.py
bench/bench_pyg28_avg_pool.py
bench/bench_pyg_scatter_mps.py
bench/bench_scatter_fanin_mps.py
bench/bench_scatter_xyz_fanin_mps.py
bench/bench_v050_ops.py
bench/bench_voxel_api.py
bench/bench_voxel_pool_backend.py
bench/fps_multigroup.metal
bench/merge_voxel_api_fragments.py
bench/probe_feature_knn_tie.py
bench/probe_pointcept_ptv1.py
bench/probe_scatter_backward_mps.py
bench/survey_pyg_mps.py
bench/verify_ball_query_simd_contract.py
bench/results/2026-10-01-apple-m5-pro-ball-query-port-sorted.json
bench/results/2026-10-01-apple-m5-pro-ball-query-port-sorted.md
bench/results/2026-10-01-apple-m5-pro-ball-query-port.json
bench/results/2026-10-01-apple-m5-pro-ball-query-port.md
bench/results/2026-10-01-apple-m5-pro-ball-query-simd-ablation.json
bench/results/2026-10-01-apple-m5-pro-ball-query-simd-contract-fast.json
bench/results/2026-10-01-apple-m5-pro-ball-query-simd-contract-safe.json
bench/results/2026-10-01-apple-m5-pro-chamfer-contention-fast.json
bench/results/2026-10-01-apple-m5-pro-chamfer-contention-fast.md
bench/results/2026-10-01-apple-m5-pro-chamfer-contention-safe.json
bench/results/2026-10-01-apple-m5-pro-chamfer-contention-safe.md
bench/results/2026-10-01-apple-m5-pro-feature-knn-dgcnn64-fast.json
bench/results/2026-10-01-apple-m5-pro-feature-knn-dgcnn64-safe.json
bench/results/2026-10-01-apple-m5-pro-feature-knn-fast.json
bench/results/2026-10-01-apple-m5-pro-feature-knn-safe.json
bench/results/2026-10-01-apple-m5-pro-fps-multigroup.json
bench/results/2026-10-01-apple-m5-pro-fps-multigroup.md
bench/results/2026-10-01-apple-m5-pro-fps-production.json
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-fast.json
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-fast.md
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-safe.json
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-safe.md
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-solo-fast.json
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-solo-fast.md
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-solo-safe.json
bench/results/2026-10-01-apple-m5-pro-pyg-scatter-solo-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-backward-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-backward-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-backward-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-backward-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-reverse-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-reverse-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-reverse-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-reverse-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-fanin-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-b2-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-b2-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-b2-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-b2-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-reverse-fast.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-reverse-fast.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-reverse-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-reverse-safe.md
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-safe.json
bench/results/2026-10-01-apple-m5-pro-scatter-xyz-safe.md
bench/results/2026-10-01-apple-m5-pro-sorted.json
bench/results/2026-10-01-apple-m5-pro-sorted.md
bench/results/2026-10-01-apple-m5-pro-v050-experimental-fast.json
bench/results/2026-10-01-apple-m5-pro-v050-experimental-fast.md
bench/results/2026-10-01-apple-m5-pro-v050-experimental-safe.json
bench/results/2026-10-01-apple-m5-pro-v050-experimental-safe.md
bench/results/2026-10-01-apple-m5-pro-v050-final-fast.json
bench/results/2026-10-01-apple-m5-pro-v050-final-fast.md
bench/results/2026-10-01-apple-m5-pro-v050-final-safe.json
bench/results/2026-10-01-apple-m5-pro-v050-final-safe.md
bench/results/2026-10-01-apple-m5-pro.json
bench/results/2026-10-01-apple-m5-pro.md
bench/results/2026-10-02-apple-m1-chamfer-contention-large-fast.json
bench/results/2026-10-02-apple-m1-chamfer-contention-large-safe.json
bench/results/2026-10-02-apple-m5-pro-chamfer-contention-large-fast.json
bench/results/2026-10-02-apple-m5-pro-chamfer-contention-large-safe.json
bench/results/2026-10-02-apple-m5-pro-flat-public-fast.json
bench/results/2026-10-02-apple-m5-pro-flat-public-safe.json
bench/results/2026-10-01-source-sync/2026-10-01-apple-m5-pro.json
bench/results/2026-10-01-source-sync/2026-10-01-apple-m5-pro.md
bench/results/2026-10-01-source-sync/ball-sorted-only/2026-10-01-apple-m5-pro-sorted.json
bench/results/2026-10-01-source-sync/ball-sorted-only/2026-10-01-apple-m5-pro-sorted.md
bench/results/dense-simd/2026-10-01-apple-m5-pro-sorted.json
bench/results/dense-simd/2026-10-01-apple-m5-pro-sorted.md
bench/results/dense-simd/2026-10-01-apple-m5-pro.json
bench/results/dense-simd/2026-10-01-apple-m5-pro.md
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-avg-pool.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-ball-ablation.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-chamfer-contention.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-chamfer-cpu-mps-4096.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-chamfer-cpu-mps.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-feature-knn-2048.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-feature-knn-tie.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-feature-knn.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-fps-production.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-scatter-fanin.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-scatter-xyz.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-fast-simd-contract.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-avg-pool.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-ball-ablation.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-chamfer-contention.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-chamfer-cpu-mps-4096.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-chamfer-cpu-mps.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-feature-knn-2048.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-feature-knn-tie.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-feature-knn.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-fps-production.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-scatter-fanin.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-scatter-xyz.json
bench/results/physical-m1-2026-10-02/mps-pointops-m1-safe-simd-contract.json
docs/ball-query-math.md
docs/ball-query-provenance.md
docs/bench-chamfer-contention-large-apple-m1-fast-2026-10-02.log
docs/bench-chamfer-contention-large-apple-m1-safe-2026-10-02.log
docs/bench-pyg28-graph-avg-pool-fast-2026-10-01.json
docs/bench-pyg28-graph-avg-pool-safe-2026-10-01.json
docs/bench-voxel-api-m1-torch212-fast-2026-10-02.json
docs/bench-voxel-api-m1-torch212-safe-2026-10-02.json
docs/bench-voxel-api-m5pro-torch214-fast-2026-10-02.json
docs/bench-voxel-api-m5pro-torch214-safe-2026-10-02.json
docs/bench-voxel-fused-m5pro-torch214-fast-2026-10-02.json
docs/bench-voxel-fused-m5pro-torch214-safe-2026-10-02.json
docs/chamfer-api-scope-v0.8.md
docs/chamfer-contract.md
docs/chamfer-large-contention-2026-10-02.md
docs/chamfer-upstream-ci.md
docs/chamfer-upstream-parity-0.5.0.md
docs/ci-pyg28-linear-bias-probe-2026-10-01.log
docs/feature-knn.md
docs/flat-api-bench-2026-10-02.md
docs/graclus-contract.md
docs/grid-cluster-contract.md
docs/metal-fp-probe-fast.json
docs/metal-fp-probe-safe.json
docs/nearest-contract.md
docs/phase3-compatibility-matrix.md
docs/phase3-physical-m1-2026-10-02.md
docs/phase3-results-2026-10-01.md
docs/pointcept-ptv1-seg26-m5pro-fast-2026-10-02.json
docs/pointcept-ptv1-seg26-m5pro-line-fast-2026-10-02.json
docs/pointcept-ptv1-seg26-m5pro-line-safe-2026-10-02.json
docs/pointcept-ptv1-seg26-m5pro-safe-2026-10-02.json
docs/pointcept-ptv1-subset.md
docs/pointnet2-propagation.md
docs/pyg28-graph-avg-pool.md
docs/pyg28-grid-cluster-contract.md
docs/pyg28-voxel-avg-pool.md
docs/pytest-dense-simd-fast-torch214-2026-10-01.log
docs/pytest-dense-simd-safe-torch214-2026-10-01.log
docs/pytest-fast-2026-10-01.log
docs/pytest-fast-torch27-2026-10-01.log
docs/pytest-feature-knn-fast-torch214-2026-10-01.log
docs/pytest-feature-knn-safe-torch214-2026-10-01.log
docs/pytest-flat-fast-torch27-2026-10-01.log
docs/pytest-flat-safe-torch27-2026-10-01.log
docs/pytest-fps-p3d-fast-torch214-2026-10-01.log
docs/pytest-fps-p3d-safe-torch214-2026-10-01.log
docs/pytest-grid-fast-2026-10-01.log
docs/pytest-grid-safe-2026-10-01.log
docs/pytest-grid-upstream-fast-2026-10-01.log
docs/pytest-grid-upstream-safe-2026-10-01.log
docs/pytest-nearest-fast-torch214-2026-10-01.log
docs/pytest-nearest-safe-torch214-2026-10-01.log
docs/pytest-physical-m1-torch212-fast-2026-10-02.log
docs/pytest-physical-m1-torch212-safe-2026-10-02.log
docs/pytest-pyg28-graph-avg-pool-fast-2026-10-01.log
docs/pytest-pyg28-graph-avg-pool-safe-2026-10-01.log
docs/pytest-pyg28-grid-fast-2026-10-01.log
docs/pytest-pyg28-grid-optional-fast-2026-10-01.log
docs/pytest-pyg28-grid-optional-safe-2026-10-01.log
docs/pytest-pyg28-grid-safe-2026-10-01.log
docs/pytest-pyg28-voxel-avg-fast-2026-10-01.log
docs/pytest-pyg28-voxel-avg-optional-fast-2026-10-01.log
docs/pytest-pyg28-voxel-avg-optional-safe-2026-10-01.log
docs/pytest-pyg28-voxel-avg-safe-2026-10-01.log
docs/pytest-random-walk-pyg28-fast-2026-10-01.log
docs/pytest-random-walk-pyg28-safe-2026-10-01.log
docs/pytest-random-walk-torch214-fast-2026-10-01.log
docs/pytest-random-walk-torch214-safe-2026-10-01.log
docs/pytest-safe-2026-10-01.log
docs/pytest-safe-torch27-2026-10-01.log
docs/pytest-v050-fast-torch214-2026-10-01.log
docs/pytest-v050-safe-torch214-2026-10-01.log
docs/pytest-v070-m1-fused-fast-2026-10-02.log
docs/pytest-v070-m1-fused-safe-2026-10-02.log
docs/pytest-v070-m5pro-torch214-fast-2026-10-02.log
docs/pytest-v070-m5pro-torch214-safe-2026-10-02.log
docs/pytest-voxel-api-torch212-fast-2026-10-01.log
docs/pytest-voxel-api-torch212-safe-2026-10-01.log
docs/pytest-voxel-api-torch214-fast-2026-10-01.log
docs/pytest-voxel-api-torch214-safe-2026-10-01.log
docs/random-walk-contract.md
docs/voxel-api-benchmark.md
docs/voxel-api-contract.md
docs/voxel-fused-benchmark.md
docs/assets/m5-pro-speedup.svg
docs/assets/pointops-hero.svg
docs/assets/pointops-mark.svg
docs/diagnostics/mps-linear-hosted-m1virtual-torch212-fast-2026-10-01.json
docs/diagnostics/mps-linear-hosted-m1virtual-torch212-safe-2026-10-01.json
docs/diagnostics/mps-linear-m5-pro-torch212-fast-2026-10-01.json
docs/diagnostics/mps-linear-m5-pro-torch212-safe-2026-10-01.json
docs/diagnostics/mps-pointops-m1-fast-linear.json
docs/diagnostics/mps-pointops-m1-safe-linear.json
docs/parity/dgcnn-upstream-fast.json
docs/parity/dgcnn-upstream-safe.json
docs/parity/graclus-163-cpu.json
docs/parity/graclus-full-fast.log
docs/parity/graclus-full-safe.log
docs/parity/graclus-pytest-fast.log
docs/parity/graclus-pytest-safe.log
docs/parity/nearest-upstream-cpu-2026-10-01.json
docs/parity/nearest-upstream-mps-fast-2026-10-01.json
docs/parity/nearest-upstream-mps-safe-2026-10-01.json
docs/parity/pointnet2-compare-fast.json
docs/parity/pointnet2-compare-safe.json
docs/parity/pointnet2-cuda.json
docs/parity/pointnet2-e2e-full-fast.log
docs/parity/pointnet2-e2e-full-safe.log
docs/parity/pointnet2-e2e-pytest-fast.log
docs/parity/pointnet2-e2e-pytest-safe.log
docs/parity/pointnet2-mps-fast.json
docs/parity/pointnet2-mps-safe.json
docs/parity/pointnet2-segmentation-compare-fast.json
docs/parity/pointnet2-segmentation-compare-safe.json
docs/parity/pointnet2-segmentation-cuda.json
docs/parity/pointnet2-segmentation-cuda.npz
docs/parity/pointnet2-segmentation-mps-fast.json
docs/parity/pointnet2-segmentation-mps-fast.npz
docs/parity/pointnet2-segmentation-mps-safe.json
docs/parity/pointnet2-segmentation-mps-safe.npz
docs/parity/pointnet2-segmentation-selection-analysis.json
docs/parity/pointnet2-segmentation-synthetic-fixture.npz
docs/parity/pointnet2-segmentation.md
docs/parity/pointnet2-upstream.md
docs/pyg-survey/2026-10-01-m5-pro-pyg28.json
docs/pyg-survey/2026-10-01-m5-pro-pyg28.log
docs/pyg-survey/2026-10-01-m5-pro-pyg28.md
docs/pyg-survey/2026-10-01-m5-pro-scatter-backward.md
docs/pyg-survey/2026-10-01-m5-pro-scatter-fanin-large.md
docs/pyg-survey/2026-10-01-m5-pro-scatter-profile.md
docs/pyg-survey/2026-10-01-m5-pro-scatter-xyz-fanin.md
docs/pyg-survey/2026-10-02-m1-m5-scatter-decision.md
docs/results/2026-10-01-m5pro-chamfer-upstream-fast.json
docs/results/2026-10-01-m5pro-chamfer-upstream-safe.json
docs/results/2026-10-01-m5pro-chamfer-upstream-torch241-cpu.json
docs/results/2026-10-02-hosted-chamfer-upstream-fast.json
docs/results/2026-10-02-hosted-chamfer-upstream-safe.json
docs/results/voxel-fused-csr-cancellation-fast.json
docs/results/voxel-fused-csr-cancellation-safe.json
examples/mulsen_grouping.py
examples/results/mulsen_grouping.json
mps_pointops/__init__.py
mps_pointops/_ball_query_mps.py
mps_pointops/_flat_fps_mps.py
mps_pointops/_flat_search_mps.py
mps_pointops/chamfer.py
mps_pointops/compat.py
mps_pointops/flat.py
mps_pointops/graclus.py
mps_pointops/grid.py
mps_pointops/nearest.py
mps_pointops/ops.py
mps_pointops/pointcept.py
mps_pointops/pointnet2.py
mps_pointops/pyg.py
mps_pointops/pyg_grid.py
mps_pointops/pytorch3d.py
mps_pointops/random_walk.py
mps_pointops/reference.py
mps_pointops/voxel.py
mps_pointops.egg-info/PKG-INFO
mps_pointops.egg-info/SOURCES.txt
mps_pointops.egg-info/dependency_links.txt
mps_pointops.egg-info/requires.txt
mps_pointops.egg-info/top_level.txt
mps_pointops/kernels/__init__.py
mps_pointops/kernels/ball_query.metal
mps_pointops/kernels/chamfer_nn.metal
mps_pointops/kernels/feature_knn.metal
mps_pointops/kernels/flat_search.metal
mps_pointops/kernels/fps.metal
mps_pointops/kernels/fps_flat.metal
mps_pointops/kernels/fps_multigroup.metal
mps_pointops/kernels/graclus.metal
mps_pointops/kernels/knn.metal
mps_pointops/kernels/nearest.metal
mps_pointops/kernels/pointnet2.metal
mps_pointops/kernels/voxel_pool.metal
tests/test_ball_query_api.py
tests/test_ball_query_mps.py
tests/test_chamfer.py
tests/test_compat.py
tests/test_feature_knn.py
tests/test_flat.py
tests/test_flat_graph.py
tests/test_flat_ragged_mps.py
tests/test_fps.py
tests/test_graclus.py
tests/test_grid_cluster.py
tests/test_knn.py
tests/test_nearest.py
tests/test_pointcept.py
tests/test_pointcept_probe.py
tests/test_pointnet2.py
tests/test_pointnet2_e2e.py
tests/test_pyg28.py
tests/test_pyg28_avg_pool_graph.py
tests/test_pyg28_grid.py
tests/test_pyg28_voxel_avg_pool.py
tests/test_pytorch3d_adapter.py
tests/test_random_walk.py
tests/test_voxel.py
tests/test_voxel_fused.py
tools/analyze_pointnet2_selections.py
tools/build_graclus_upstream_cpu.py
tools/dgcnn_upstream_parity.py
tools/diagnose_mps_linear.py
tools/graclus_upstream_parity.py
tools/metal_fp_probe.py
tools/pointnet2-segmentation-parity.py
tools/pointnet2_segmentation_parity.py
tools/pointnet2parity.py
tools/probe_voxel_fused_cancellation.py
tools/render_readme_assets.py
tools/verify_nearest_upstream.py