Phase 2 (A.3) の準備。c33 (A6000 × 3, sm_86, CUDA 12.1) に gsplat-env / orig3dgs-env / Rust + brush の 3 env を build。NFS 共有ホーム (/rda5、11TB 空き) なので c32 / c34 へ継承可能、累計 ~18.6 GB。実 training は Phase 2 で実施。
卒研「第 2 軸 (wgpu 抽象コスト) 三層対比表」用に、c33 (compute-0-33, RTX A6000 48GB × 3, driver 530.30.02, CUDA 12.1) で gsplat-env / orig3dgs-env / Rust + brush の 3 env を構築。NFS 共有ホーム (/rda5、11TB 空き) なので c32 / c34 にも継承される。3 env とも import / --help / --version レベルで動作確認 OK。実 training (Lego 30k) は Phase 2 で実施、本タスクは環境構築 + 動作確認のみ。
| env | 用途 | python | torch / rust | CUDA | 動作確認 |
|---|---|---|---|---|---|
gsplat-env | gsplat (CUDA native via PyTorch extension) | 3.11 | torch 2.4.1+cu121 | 12.1 | gsplat 1.5.3 import OK、cuda.is_available() True、device NVIDIA RTX A6000 |
orig3dgs-env | graphdeco-inria/gaussian-splatting | 3.11 | torch 2.4.1+cu121 | 12.1 | diff_gaussian_rasterization + simple_knn + fused_ssim 全 import OK、train.py --help OK |
| Rust (system-wide, conda 外) | brush (wgpu → Vulkan) | — | rustc stable | — (Vulkan 1.2.131 loader) | ~/repos/brush/target/release/brush --version → brush-cli 0.3.0、HEAD ce6ef3f |
/rda5、11TB 空き) なので c32 / c34 にもそのまま継承hostname: compute-0-33
user: otake_26 (Domain Users, NFS home /rda5/users/otake_26)
OS: Ubuntu 20.04 系 (Linux 5.4.0-148-generic)
shell: /bin/bash
home: 空 (.bashrc / .profile のみ、conda / cargo / python venv なし)
disk: NFS 192.168.2.226:/data2 → /rda5、Size 55T / Avail 11T / Use 80%
nvcc: /usr/local/cuda/bin/nvcc → 12.1.105 (cuda_12.1.r12.1)
CUDA 候補: cuda-11.4, 11.5, 11.6, 12, 12.1, cuda (default → 12.1)
GPU driver: 530.30.02, RTX A6000 48GB × 3
Vulkan loader: /usr/lib/x86_64-linux-gnu/libvulkan.so.1.2.131 (brush の wgpu→Vulkan path 用)
tmux: 3.0a (長時間 install は tmux session 分離)
gcc: 既存 (toolchain 確認略)
判断: driver 530.30.02 が CUDA 12.1 までサポート、system nvcc が 12.1 なので PyTorch も cu121 で統一。advisor 推奨どおり cu118/12.1 ミスマッチを避ける。
tiny-cuda-nn は 原著 3DGS には不要 (advisor 指摘、graphdeco-inria/gaussian-splatting 本来の依存は diff-gaussian-rasterization + simple-knn + 任意 fused-ssim のみ)。タスク仕様の記述を訂正済。
mkdir -p ~/miniconda3 && cd ~/miniconda3
wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O install.sh
bash install.sh -b -u -p ~/miniconda3
~/miniconda3/bin/conda init bash
# Anaconda TOS (conda 26 系で必須):
~/miniconda3/bin/conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
~/miniconda3/bin/conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
conda 26.3.2 がインストールされた。.bashrc に conda init block が追加された。
# >>> CUDA toolkit (added 2026-05-22 for 3DGS env setup) >>>
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:${LD_LIBRARY_PATH:-}
# <<< CUDA toolkit <<<
NFS 共有ホームで c32 / c34 にもこの block が反映される。c32 / c34 で別 CUDA 系を使う場合は per-env で CUDA_HOME を上書きする (conda env config vars set) 方が安全だが、現状 3 機とも /usr/local/cuda 経由で十分。
conda create -y -n gsplat-env python=3.11
conda activate gsplat-env
pip install --upgrade pip
pip install torch==2.4.1 torchvision --index-url https://download.pytorch.org/whl/cu121
pip install ninja gsplat
$ python -c "import gsplat, torch; print(gsplat.__version__, torch.__version__, torch.version.cuda, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
GSPLAT_VER 1.5.3
TORCH_VER 2.4.1+cu121
TORCH_CUDA_BUILT 12.1
TORCH_CUDA_AVAIL True
DEVICE_NAME NVIDIA RTX A6000
OK。gsplat 1.5.3 は JIT で CUDA extension をビルド (初回 import 時)、本タスクでは cuda.is_available() のみで alloc は走らせていない。
conda create -y -n orig3dgs-env python=3.11
conda activate orig3dgs-env
export TORCH_CUDA_ARCH_LIST="8.6" # sm_86 = A6000 / 3090 / A40
pip install torch==2.4.1 torchvision --index-url https://download.pytorch.org/whl/cu121
pip install ninja plyfile tqdm opencv-python joblib
mkdir -p ~/repos && cd ~/repos
git clone --recursive https://github.com/graphdeco-inria/gaussian-splatting.git
cd gaussian-splatting
# build isolation を切らないと subprocess で torch を find できない
pip install --no-build-isolation submodules/diff-gaussian-rasterization
pip install --no-build-isolation submodules/simple-knn
pip install --no-build-isolation submodules/fused-ssim
pip install submodules/diff-gaussian-rasterization がデフォルトで build-isolated subprocess を作るので setup.py から import torch が ModuleNotFoundError。--no-build-isolation が必須。
$ python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
2.4.1+cu121 12.1 True NVIDIA RTX A6000
$ python -c "import diff_gaussian_rasterization, simple_knn, fused_ssim"
(no error)
$ cd ~/repos/gaussian-splatting && python train.py --help | head -10
usage: train.py [-h] [--sh_degree SH_DEGREE] [--source_path SOURCE_PATH] ...
OK。diff_gaussian_rasterization 0.0.0、simple_knn 0.0.0、fused_ssim 0.0.0 (Kerbl 公式 commit)、いずれも cu121 + sm_86 でビルド成功 (advisor 懸念点 "diff-gaussian-rasterization HEAD が cu121 で建つか" → OK)。
タスク仕様の "wgpu cuda backend" は誤り (advisor 指摘)。wgpu は Linux 上では Vulkan、Apple は Metal、Windows は DX12 を採用。c33 では libvulkan.so.1.2.131 を loader として wgpu→Vulkan で NVIDIA driver にディスパッチする。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
source ~/.cargo/env
mkdir -p ~/repos && cd ~/repos
git clone https://github.com/ArthurBrussee/brush.git
cd ~/repos/brush
cargo build --release # 5m 54s
target は target/release/brush (217 MB ELF、ldd 動的リンク)。--bin brush_app 指定は不要 (workspace default で main binary brush が出る)。
$ ~/repos/brush/target/release/brush --version
brush-cli 0.3.0
$ ~/repos/brush/target/release/brush --help | head
Brush - universal splats
Usage: brush [OPTIONS] [PATH_OR_URL]
Arguments:
[PATH_OR_URL] Source to load from (path or URL)
Options:
--with-viewer Spawn a viewer to visualize the training
-h, --help Print help
-V, --version Print version
...
$ cd ~/repos/brush && git rev-parse HEAD
ce6ef3f8e4c03c231020ebf8049e5c19259a2923
OK。HEAD ce6ef3f (2026-05-xx 時点 main)。--with-viewer 省略すれば server (CLI training) mode。
wgpu は WGPU_BACKEND env (vulkan / dx12 / metal / gl) と WGPU_ADAPTER_NAME / WGPU_POWER_PREF でバックエンド・物理 GPU を選ぶ。c33 で 3 枚ある A6000 から特定の GPU を指定する場合、Phase 2 で WGPU_BACKEND=vulkan WGPU_ADAPTER_NAME="NVIDIA RTX A6000" あたりを試す (詳細は Phase 2 で確認)。
~/miniconda3 12 G ← gsplat-env + orig3dgs-env (それぞれ torch + cu121 wheels)
~/repos/brush 3.9 G ← incl. target/release (debug 含まず)
~/repos/gaussian-splatting 308 M
~/.cargo 954 M ← cargo registry
~/.rustup 1.4 G ← rustc toolchain
合計 ~18.6 G
NFS 全体は 55T / 11T 空き (Use 80%)。当面問題なし。
/home/otake_26/
├── .bashrc (conda init + CUDA toolkit block 追加済)
├── miniconda3/ (base + gsplat-env + orig3dgs-env)
├── .cargo/, .rustup/ (Rust stable toolchain)
├── repos/
│ ├── brush/ (HEAD ce6ef3f8e4c03c231020ebf8049e5c19259a2923)
│ │ └── target/release/brush (217 MB, brush-cli 0.3.0)
│ └── gaussian-splatting/ (graphdeco-inria, --recursive で submodule clone 済)
│ └── submodules/{diff-gaussian-rasterization, simple-knn, fused-ssim}/ (build 済、pip にも install 済)
├── setup_gsplat.sh, setup_orig3dgs_resume.sh, setup_brush.sh (再現用 script)
├── gsplat_verify.log, orig_verify.log, brush_verify.log (動作確認 output)
└── *_done.flag (setup 完了マーカー、すべて POST_RC=0)
~/dev/3dgs-workspace/datasets/nerf_synthetic/lego) にしか無いので、rsync で c33 に。サイズ ~300 MB なので NFS で問題なし。CUDA_VISIBLE_DEVICES で固定する。WGPU_BACKEND=vulkan がデフォルトで通るか、vulkaninfo の有無を含めて初回 run で確認。--white_background 必要) に注意。gsplat は既定 strategy 設定を gsplat docs で参照、本リポの brush との直接比較は loss/refine 仕様の差を別途記録。brush は c33 (Vulkan + A6000) と m3 mac (Metal + M4 Max) で同 dataset / iter / config を回す。CUDA_HOME を pin しておくと c32 / c34 への移行時に CUDA path 衝突を避けられる (例: conda env config vars set CUDA_HOME=/usr/local/cuda-12.1 -n orig3dgs-env)。tmux の常用: setup でも有効だったが、Phase 2 の 30k run (推定 ~15-30 min/run) も tmux session で分離して、SSH 切断耐性を確保。nvidia-smi で確認後 CUDA_VISIBLE_DEVICES 設定)。--no-default-features 等の調査: 今回 default features で build 通った (UI deps fontconfig/xkbcommon は X11 系なしでも crate level fallback で成立)。training-only バイナリ最小化は Phase 2 でも必要なら検討。第 2 軸 (wgpu 抽象コスト) の本丸として、c33 で wgpu→Vulkan と CUDA native (原著 / gsplat) を同 hardware で比較する。Phase 2 のメイン deliverable は同じ Lego 30k を 3 実装で回して wallclock / PSNR / VRAM を表に揃えること。
リモート (~/setup_gsplat.sh、~/setup_orig3dgs_resume.sh、~/setup_brush.sh) に残してあるので、c32 / c34 で再実行する際はそのまま使える。ただし NFS 共有ホームで conda env も共有されるため、c32 / c34 でも同 conda env を conda activate するだけで OK (再 install 不要)。