daf0304243
Make cupy import optional (try/except), replace @cupy.memoize with a dict cache, add _pytorch_softsplat() using scatter_add for bilinear splatting, and update forward() dispatch to fall back to PyTorch when cupy is unavailable or tensor is on CPU. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>