Skip to content

Remove unused sparse convolution backends#454

Merged
blackencino merged 7 commits into
openvdb:mainfrom
blackencino:feature/remove_unused_spconv
Feb 10, 2026
Merged

Remove unused sparse convolution backends#454
blackencino merged 7 commits into
openvdb:mainfrom
blackencino:feature/remove_unused_spconv

Conversation

@blackencino

@blackencino blackencino commented Feb 10, 2026

Copy link
Copy Markdown
Contributor

Remove unused sparse convolution backends

Summary

Removes all sparse convolution backends except gather-scatter, and eliminates the
SparseConvPackInfo / ConvPackBackend C++ wrapper layer entirely. Upcoming NanoVDB
changes will provide alternative convolution methods (starting with a CUTLASS-based
backend); these legacy implementations are no longer needed and were a significant
source of compile time, code complexity, and bugs.

Net: -22,500 lines across 44 files. ~1.1 MB of CUDA/C++ deleted.

What changed

Deleted backends: ImplicitGEMM (4 variants), CUTLASS, LGGS, ME (minkowski engine
gather-scatter). 20 C++ source files removed.

Deleted SparseConvPackInfo: The monolithic C++ variant class (~20 std::optional<Tensor>
fields) is gone. Replaced by two standalone C++ functions exposed to Python:

  • build_kernel_map() -- computes the gather-scatter neighbor map
  • sparse_conv_kernel_map() -- runs the autograd convolution with raw tensors

Simplified ConvolutionPlan: No longer wraps a C++ object. Stores a typed Python
backend (_GatherScatterBackend, _DenseBackend, or _MatmulBackend) directly.
Backend selection collapsed from ~130 lines to ~20.

Build: CUTLASS dependency and cmake helper retained (needed for future backend).
9 .cu + 1 .cpp removed from CMakeLists.

Tests: WIP conv tests/benchmarks deleted (used removed APIs directly). Main unit
tests updated and passing.

What this PR does NOT do

  • Bug fixes to gather-scatter: The existing gather-scatter algorithm is unchanged.
    Known issues (e.g. redundant .cpu().contiguous() in the hot path, weight permutation
    on every call) remain and will be addressed in a follow-up.
  • Remove the halo convolution: GridBatch.sparse_conv_halo() stays in the public API.
    It should be deprecated in a future PR once we have buy-in, but that is out of scope here.
  • New backends: The planned CUTLASS-based backend is not included. This PR clears
    the path for it.

Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
@blackencino blackencino self-assigned this Feb 10, 2026
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
@blackencino blackencino changed the title Removed dead spconv code Remove unused sparse convolution backends Feb 10, 2026
@blackencino blackencino marked this pull request as ready for review February 10, 2026 18:32
@blackencino blackencino requested a review from a team as a code owner February 10, 2026 18:32
@blackencino blackencino requested review from fwilliams, phapalova and sifakis and removed request for phapalova February 10, 2026 18:32
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>

@sifakis sifakis left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Nice cleanup

@blackencino blackencino enabled auto-merge (squash) February 10, 2026 18:50
@blackencino blackencino merged commit bdd807e into openvdb:main Feb 10, 2026
32 checks passed
@blackencino blackencino deleted the feature/remove_unused_spconv branch February 10, 2026 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants