← Research Timeline Aditya Jain / Apple Maps · 3D Reconstruction
Nov 2025
Topic 22 Nov 2025 FVDB · CUDA · Setup & Build

FVDB —
Sparse-Voxel Build on RTX 3060.

Install + build log for NVIDIA's FVDB (Feature Volume Deep Learning) on Ubuntu 24.04, CUDA 12.6, RTX 3060 (compute capability 8.6). Documents the four-issue cascade hit during bring-up: venv pip failure, conda environment conflict, PyTorch-vs-system C++11 ABI mismatch, and the TORCH_CUDA_ARCH_LIST="8.6" flag that has to be set for Ampere-only builds. The successful build enables the FVDB-based work later referenced from the MambaFlow3D (Topic 26) and G-Splats-vs-VDB (Topic 23) topics.

00 — Motivation

Get NVIDIA's sparse-voxel library running on a consumer card.

FVDB is the PyTorch-integrated differentiable sparse-voxel library NVIDIA ships as the deep-learning replacement for OpenVDB. The thesis line wants it for two reasons: (i) training networks on sparse-voxel data without writing custom CUDA kernels, (ii) the procedural-pipeline integration leg of the G-Splats-vs-VDB decision (Topic 23) — VDB is Houdini-native, FVDB is its differentiable cousin.

The target rig: rented Vast.ai instance, RTX 3060 12 GB, Ubuntu 24.04, CUDA 12.6 (later 12.9), nvcc 12.6.85. The reference install instructions in the FVDB repo assume Ubuntu 22.04 + CUDA 11.8 + pre-built wheels — the bring-up on the current stack hits four distinct failure modes before the build succeeds.

01 — The Four-Issue Cascade

Bring-up failures and the fix for each.

#SymptomCauseFix
1python3 -m venv fvdb fails on Ubuntu 24.04ensurepip is not bundled with the system python on Ubuntu 24.04 Docker imagesUse python3 -m venv --without-pip, then bootstrap pip via get-pip.py; alternative: apt install python3-venv python3-pip python3-dev
2conda env create -f env/dev_environment.yml fails with prefix already existsConda environment from a previous attempt is still on diskEither conda activate fvdb (reuse it) or conda env remove -n fvdb + recreate
3FVDB build fails with C++11 ABI mismatch against system PyTorchPyPI PyTorch wheel uses pre-C++11 ABI; conda-forge PyTorch uses C++11 ABI; FVDB build inherits the wrong oneInstall PyTorch from conda-forge (not pip) so the ABI matches FVDB's expectation
4Build emits warnings about non-Ampere compute capabilities; runtime fails on Ampere cardFVDB build defaults to compile-for-all-architectures, which fails on some non-Ampere pathsSet TORCH_CUDA_ARCH_LIST="8.6" before ./build.sh install -v; restricts compile to Ampere only
Core Recipe

conda-forge PyTorch + TORCH_CUDA_ARCH_LIST="8.6".
Two flags, build succeeds.

The two non-obvious requirements that together unstick an otherwise vanilla FVDB install: install PyTorch from conda-forge rather than pip (C++11 ABI alignment), and set TORCH_CUDA_ARCH_LIST="8.6" before invoking the build script (restricts compile to Ampere only). With both set, the install on a Vast.ai RTX 3060 12 GB takes ~20–30 minutes and produces a working FVDB import in PyTorch.

02 — Successful Recipe

Reproducible bring-up.

# System: Ubuntu 24.04, CUDA 12.6, RTX 3060 12 GB (compute 8.6) # 1. System deps apt update && apt install -y python3-venv python3-pip python3-dev # 2. Conda environment (conda-forge PyTorch — critical for C++11 ABI) git clone https://github.com/AcademySoftwareFoundation/openvdb \ --branch feature/fvdb cd openvdb/fvdb conda env create -f env/dev_environment.yml conda activate fvdb # 3. Verify PyTorch + CUDA python -c "import torch; print('CUDA:', torch.cuda.is_available(), torch.cuda.get_device_name(0))" # Expected: CUDA: True NVIDIA GeForce RTX 3060 # 4. Build cache + Ampere-only compile flag export CPM_SOURCE_CACHE=$HOME/.cache/CPM mkdir -p $HOME/.cache/CPM export TORCH_CUDA_ARCH_LIST="8.6" # 5. Build (20–30 min on Vast.ai) ./build.sh install -v # 6. Verify python -c "import fvdb; print(fvdb.__version__)"

Interactive Demo · Live

Step through the four-issue cascade. Each button replays one bring-up failure; the right pane shows the diagnostic output and the one-line fix.

01 — Cascade step STEP 1 / 4
02 — Error output stderr

      
03 — The fix one-line

      
Related Thesis Chapters
G-Splats vs VDB
The architectural decision that promoted VDB to "procedural-pipeline backend" in the thesis line. This topic is the practical setup that makes the decision actionable.
MambaFlow3D
Downstream consumer — the sparse-cube tokens MambaFlow3D operates on are stored / manipulated via FVDB primitives.
Triplane Deep Dive
FVDB is the "voxel" leg of the triplane-vs-voxel-vs-G-Splat trio; the triplane work uses FVDB primitives internally for the dense-grid query step in mesh extraction.
Appendix — Raw Materials
Transcripts & Source References
████████████████████████████████████████████████

██████████████████████████████████████
█████████ · ████ · █████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
Restricted Access