複数のCUDAのバージョンを切り替える(WSL2 Ubuntu 22.04)
はじめに
今回はWSL2 Ubuntu 22.04の環境で、CUDAのバージョンの切り替えについて試してみました。
以前3D Gaussian Splatting (3DGS) の環境を構築するために、元々入っていたCUDAを削除するようなインストール方法をしていました。
▼こちらの記事で試していました。
今回はできるだけ他の環境に影響を与えないように、CUDAのバージョンを変更できるか試してみました。
▼以前の記事はこちら
CUDA をインストールする
WSL2のUbuntu環境で検証を行います。
▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。
▼Ubuntu 22.04の環境を複数インストールできるようになったので、その環境で実行していきます。
▼WSL2でのCUDAのサポートについては、以下のページに記述があります。
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started-with-cuda-on-wsl-2
現状のバージョンについて、nvcc -Vを実行して確認してみました。
▼nvccを実行するにはnvidia-cuda-toolkitが必要なようです。

以下のコマンドでnvidia-cuda-toolkitをインストールしました。
sudo apt update
sudo apt install nvidia-cuda-toolkit▼CUDA 11.5が入っているようです。

現時点で最新のCUDA Toolkitをインストールしてみます。
▼以下のサイトで環境に応じたインストールコマンドが表示されます。
▼この時点では13.0が最新のようでした。WSL-Ubuntuも選択肢にあります。

選択後、下部に表示されるコマンドを実行しました。
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0実行終了後、この時点ではnvcc -Vを実行してもCUDAのバージョンは13.0になっていませんでした。
ChatGPTに聞いて、以下のコマンドを実行してみました。
ls -l /usr/local
which nvcc▼/usr/localにcuda-13が追加されているようでした。

環境変数を変更するコマンドを実行してみました。
export PATH=/usr/local/cuda-13.0/bin:$PATH
nvcc -V▼CUDA 13.0に変更されました。

別のバージョンのCUDAをインストールする
先程のCUDA Toolkitは最新のものでしたが、古いバージョンのアーカイブが残っています。
▼以下のページです。
https://developer.nvidia.com/cuda-toolkit-archive
その中で、今回はCUDA 11.8を使いたかったので、CUDA Toolkit 11.8を選択しました。
▼こちらのリンクです。
以下のコマンドを実行しました。
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda▼この時点では11.8のものが見当たりませんでした。

先程はapt-getでインストールするときにCUDA Toolkitのバージョンを指定していたのですが、今回は指定せずにcudaだったのが原因ではないかと思い、以下のコマンドを実行しました。
sudo apt-get -y install cuda-toolkit-11-8▼cuda-11.8が追加されました!

この状態で環境変数を変更してみました。
export PATH=/usr/local/cuda-11.8/bin:$PATH▼CUDA 11.8に変更されました。

なおcuda-11.8、cuda-13.0にもnvccは入っており、直接パスを指定するとそのバージョンが表示されました。
▼それぞれのバージョンが出力されています。

.bashrcで設定する
これまでの実行結果から、以下のコマンドを実行して切り替えるだけで良さそうです。
export PATH=/usr/local/cuda-13.0/bin:$PATH
export PATH=/usr/local/cuda-11.8/bin:$PATH▼念のため確認しておくと、以下のように切り替えできました。

ROSのマスターやIPを設定するときにも馴染みのある、.bashrcに記載しておこうと思います。起動時に実行されて、環境変数が設定されます。
sudo nano .bashrcを実行し、一番最後に追加しました。
▼直近で使いたいのは11.8だったので、13.0はコメントアウトしておきました。

これでsource .bashrcを実行するか、新しくターミナルを開くと、CUDA 11.8の状態で起動できるかと思います。
▼新しくターミナルを開くと、CUDA 11.8として出力されました!

最後に
WSL2の環境を新たにインストールし、CUDAのバージョンも切り替えることができるようになったので、改めてWSL2 Ubuntu 22.04の環境で3DGSを実行できるようにしたいなと思っています。
環境変数の設定に関するドキュメントではLD_LIBRARY_PATHの設定も書かれていたので、実行しておいた方が良いのかもしれません。3DGSを実行してみて、問題があれば対処しようと思います。
▼以下のページに書かれていました。
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#environment-setup
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-13.0/lib64


