松田研究室
FindingID: c33-cuda-setup-notes
Status: stable / task A.3
← Findings Index
Phase 2 prep · CUDA env setup

c33 CUDA env setup — gsplat / orig 3DGS / brush の 3 env を A6000 + NFS 共有ホームで構築

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 で実施。

neutralrank: midaccepted第 2 軸phase-2setupcudaa6000c33gsplatoriginal-3dgsbrushcondarustnfs
Δ Wallclock
~18.6 GB disk
Impact
c33 (A6000, sm_86) に gsplat-env / orig3dgs-env / Rust + brush の 3 env を build。NFS 共有ホーム経由で c32 / c34 にも継承可能。3 env とも import / --help / --version レベルで動作確認 OK。実 training (Lego 30k) は Phase 2 で。
01

本文

卒研「第 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 で実施、本タスクは環境構築 + 動作確認のみ。

実施日
2026-05-22
対象機
matsudalab-c33 (compute-0-33, RTX A6000 48GB × 3, driver 530.30.02, CUDA 12.1)
ホーム
NFS 共有 /rda5、11TB 空き — c32 / c34 と共有
累計 disk
~18.6 GB (miniconda 12G + brush target 3.9G + .rustup 1.4G + .cargo 954M + gaussian-splatting 308M)
GPU 占有 (setup 中)
GPU0 48.5/49.1 GiB、GPU1/2 16.1/49.1 GiB、Util 81-93% — 他ユーザ稼働中

TL;DR

env用途pythontorch / rustCUDA動作確認
gsplat-envgsplat (CUDA native via PyTorch extension)3.11torch 2.4.1+cu12112.1gsplat 1.5.3 import OK、cuda.is_available() True、device NVIDIA RTX A6000
orig3dgs-envgraphdeco-inria/gaussian-splatting3.11torch 2.4.1+cu12112.1diff_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 --versionbrush-cli 0.3.0、HEAD ce6ef3f
  • NFS 共有ホーム (/rda5、11TB 空き) なので c32 / c34 にもそのまま継承
  • disk 使用: 累計 ~18.6 GB (miniconda 12G + brush target 3.9G + .rustup 1.4G + .cargo 954M + gaussian-splatting 308M)
  • GPU 占有状況 (setup 中スナップショット): GPU0 48.5/49.1 GiB、GPU1/2 16.1/49.1 GiB、Util 81-93% — 他ユーザ稼働中、Phase 2 実 train は要調整

1. 状態点検 (setup 前)

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 のみ)。タスク仕様の記述を訂正済。

2. 共通 setup

2.1 Miniconda

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 が追加された。

2.2 CUDA path (.bashrc)

# >>> 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 経由で十分。

3. gsplat-env

手順

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 は走らせていない。

4. orig3dgs-env (graphdeco-inria/gaussian-splatting)

手順

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 torchModuleNotFoundError--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] ...

OKdiff_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)。

5. brush (Rust + wgpu → Vulkan)

Note

タスク仕様の "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。

GPU 選択 (Phase 2 で要設定)

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 で確認)。

6. ディスク使用量 (setup 完了時)

~/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%)。当面問題なし。

7. リモートファイル状態 (Phase 2 へ引き継ぐ参照)

/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)

8. Phase 2 への残課題

8.1 必須

  1. NeRF Synthetic Lego データセット c33 配置: 開発機 m3 mac (~/dev/3dgs-workspace/datasets/nerf_synthetic/lego) にしか無いので、rsync で c33 に。サイズ ~300 MB なので NFS で問題なし。
  2. GPU 占有予約: setup 時点で 3 枚とも 80-93% Util の他ユーザ job 走行中。Phase 2 の training run は他ユーザの状況を見つつ、空いた GPU を CUDA_VISIBLE_DEVICES で固定する。
  3. wgpu バックエンド確認: brush の Linux + NVIDIA 環境で WGPU_BACKEND=vulkan がデフォルトで通るか、vulkaninfo の有無を含めて初回 run で確認。
  4. 再現性条件の整理: 原著 3DGS は paper の Lego baseline (~35.78 PSNR、Kerbl 2023) と一致するかは hyperparameter (iter=30000 既定、--white_background 必要) に注意。gsplat は既定 strategy 設定を gsplat docs で参照、本リポの brush との直接比較は loss/refine 仕様の差を別途記録。brush は c33 (Vulkan + A6000) と m3 mac (Metal + M4 Max) で同 dataset / iter / config を回す。

8.2 任意 / 推奨

  • conda env config vars: per-env で 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 切断耐性を確保。
  • GPU メモリ予算: A6000 48GB、Lego 30k は 2-4GB なので 1 GPU を他ユーザと共有しつつも余裕あり。ただし他ユーザ job との衝突に注意 (nvidia-smi で確認後 CUDA_VISIBLE_DEVICES 設定)。
  • brush の --no-default-features 等の調査: 今回 default features で build 通った (UI deps fontconfig/xkbcommon は X11 系なしでも crate level fallback で成立)。training-only バイナリ最小化は Phase 2 でも必要なら検討。

8.3 (将来) wgpu バックエンド切替実験

第 2 軸 (wgpu 抽象コスト) の本丸として、c33 で wgpu→VulkanCUDA native (原著 / gsplat) を同 hardware で比較する。Phase 2 のメイン deliverable は同じ Lego 30k を 3 実装で回して wallclock / PSNR / VRAM を表に揃えること。

9. setup スクリプト保管

リモート (~/setup_gsplat.sh~/setup_orig3dgs_resume.sh~/setup_brush.sh) に残してあるので、c32 / c34 で再実行する際はそのまま使える。ただし NFS 共有ホームで conda env も共有されるため、c32 / c34 でも同 conda env を conda activate するだけで OK (再 install 不要)。

03

関連 finding

© 2026 大竹律輝 — 松田研究室