Remove unused sparse convolution backends#454
Merged
blackencino merged 7 commits intoFeb 10, 2026
Conversation
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>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
Signed-off-by: Christopher Horvath <chorvath@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remove unused sparse convolution backends
Summary
Removes all sparse convolution backends except gather-scatter, and eliminates the
SparseConvPackInfo/ConvPackBackendC++ wrapper layer entirely. Upcoming NanoVDBchanges 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 (~20std::optional<Tensor>fields) is gone. Replaced by two standalone C++ functions exposed to Python:
build_kernel_map()-- computes the gather-scatter neighbor mapsparse_conv_kernel_map()-- runs the autograd convolution with raw tensorsSimplified
ConvolutionPlan: No longer wraps a C++ object. Stores a typed Pythonbackend (
_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.cppremoved from CMakeLists.Tests: WIP conv tests/benchmarks deleted (used removed APIs directly). Main unit
tests updated and passing.
What this PR does NOT do
Known issues (e.g. redundant
.cpu().contiguous()in the hot path, weight permutationon every call) remain and will be addressed in a follow-up.
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.
the path for it.