Environment: Ubuntu (kernel 7.0), RTX 5090 (Blackwell sm_120), NVIDIA driver w/ CUDA 13.3 userland, Modly AppImage v0.4.x, embedded Python 3.11.9, data dir relocated to a large secondary disk. Found while driving Modly headlessly (REST + MCP) for a game-asset pipeline.
With fork-built spconv 2.3.8+cu128torch2.7 and PyPI cumm 0.7.11 — which satisfies the wheel's declared range cumm<0.8.0,>=0.7.11 — importing spconv raises:
arg(): could not convert default argument 'workspace: tv::Tensor' in method
'<class 'spconv.core_cc.csrc.sparse.convops.gemmops.GemmTunerSimple'>.run_with_tuned_result'
into a Python object (type not registered yet?)
Worse, that failed import partially registers pybind types process-wide, so every later import spconv.pytorch in the same (long-lived worker) process dies with:
ImportError: generic_type: cannot initialize type "ExternalAllocator": an object with that name is already defined
Installing the matching cumm 0.8.2+cu128torch2.7 from the same wheel index fixes both symptoms.
Suggested fixes: pin the exact cumm build in the spconv wheel metadata (the declared range is stale), and treat a failed spconv probe as fatal-for-process (respawn the worker) instead of continuing with a poisoned pybind registry.
Environment: Ubuntu (kernel 7.0), RTX 5090 (Blackwell sm_120), NVIDIA driver w/ CUDA 13.3 userland, Modly AppImage v0.4.x, embedded Python 3.11.9, data dir relocated to a large secondary disk. Found while driving Modly headlessly (REST + MCP) for a game-asset pipeline.
With fork-built
spconv 2.3.8+cu128torch2.7and PyPIcumm 0.7.11— which satisfies the wheel's declared rangecumm<0.8.0,>=0.7.11— importing spconv raises:Worse, that failed import partially registers pybind types process-wide, so every later
import spconv.pytorchin the same (long-lived worker) process dies with:Installing the matching
cumm 0.8.2+cu128torch2.7from the same wheel index fixes both symptoms.Suggested fixes: pin the exact cumm build in the spconv wheel metadata (the declared range is stale), and treat a failed spconv probe as fatal-for-process (respawn the worker) instead of continuing with a poisoned pybind registry.