前提
歴代のnvidia-driverが混在していて動かなくなったので、きれいさっぱりにして動くようにしたい。
役立ったコマンド
作業中によく使ったコマンド
飛ばしてかまわない。
dpkg -l | grep nvidia
dpkg -l | grep cuda
cat /usr/local/cuda/version.txt
cat /usr/bin/nvcc -V
watch -n 0.1 df -h
sudo du -sh | sort -rn | head -10
過去のnvidia関係のライブラリをすべて削除
sudo apt-get --purge remove nvidia*
sudo apt-get --purge remove cuda*
sudo apt-get --purge remove cudnn*
sudo apt-get --purge remove libnvidia*
sudo apt-get --purge remove libcuda*
sudo apt-get --purge remove libcudnn*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get update
sudo rm -rf /usr/local/cuda*
新しいversionのインストール
新しいnvidia-driverとcudaをサイトからversionを選んでダウンロードする。
12.3 Update 2の場合は以下のようになる。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda-repo-ubuntu2004-12-3-local_12.3.2-545.23.08-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-3-local_12.3.2-545.23.08-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3
sudo apt-get install -y cuda-drivers-545
#sudo apt-get install -y nvidia-kernel-open-545 <- これやっちゃだめっぽいdocker動かない
この状態でnvidia-smi
が叩けるか確認。
叩けなければrebootする。
nvcc -V
はまだ打てないと思うので、
sudo apt install nvidia-cuda-toolkit
でインストールを行う。
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.3.r12.3/compiler.33567101_0
となれば完了。
versionが古いままの時は下を参照
この作業をやっても/usr/loacal
にcudaが現れない時がある。
その時はdev(net)を選んでインストールを行う。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/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-12-3
ここまで打てばcudaが入ってnvcc -V
が叩けるようになっているはず。
なぜかversionが更新されない
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
新しいcudaを入れたはずなのになぜか更新されなかった。
$ which nvcc
/usr/bin/nvcc
$ cat /usr/bin/nvcc
#!/bin/sh
exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc "$@"
参照元が /usr/lib/nvidia-cuda-toolkit/bin/nvcc
になっているので、
/usr/bin/nvcc
#!/bin/sh
exec /usr/local/cuda-12/bin/nvcc "$@"
に書き換えるとうまくいく。
localでpytorchが使えるか確認
import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name())
Dockerでエラーが出た
version: "3.2"
services:
ubuntu:
image: hogehoge
# build:
# context: .
# dockerfile: Dockerfile
shm_size: '4gb'
container_name: "hoge"
network_mode: host
volumes:
- /dev/bus/usb:/dev/bus/usb
- ./workspace:/workspace
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
- DISPLAY=$DISPLAY
tty: true
docker compose up -d
で以下のエラーが出たら
Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
以下を実行してnvidia-container-runtime
を入れなおす
sudo apt-get install nvidia-container-runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install nvidia-container-runtime
service docker restart