# Pytorch
## GPUを使う
#### 必須環境
- Nvidia製 GPU
- CUDA
- (AMD製 GPU は CUDA に代わる ROCm がある.ただ,まだまだ)
#### CUDA version の確認
GPU 演算をするためには,Pytorch が要求する CUDA バージョンが必要
[公式ページ](https://pytorch.org)より Pytorch と CUDA のバージョンを確認する
※ Pytorch 2.1.0の場合,CUDA11.8 or CUDA12.1
> 古いバージョンの場合
> [Previous Version](https://pytorch.org/get-started/previous-versions/)のコマンドを見て判断
#### CUDAのインストール
[Install_CUDA](../linux/install_cuda.md) を参照
`$ nvcc -V` が実行できていれば良い
## Error解決法
1.**import torchで以下のエラー**
`ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory`
**解決方法**
libcudnn8をインストールする(Dockerのコンテナ内で発生した場合は,以下をコンテナ内で実行する)
[https://developer.download.nvidia.com/compute/cuda/repos/](https://developer.download.nvidia.com/compute/cuda/repos/) でdistributionを選択し,x86_64へ
そして,libcudnn8_8.5.0.96-1+cuda11.7_amd64.debのURLをコビー(自身の環境にあったcudaバージョンを選ぶ)
※cudaバージョンは,`nvcc -V`というコマンドを実行するとわかる.`nvidia-smi`は違うので注意
URLはコピーしたものに変更し,以下のコマンドを実行 (devファイルをダウンロードするため,tempフォルダなどで実行すると良い)
```bash
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/libcudnn8_8.5.0.96-1+cuda11.7_amd64.deb
$ sudo dpkg -i libcudnn8_8.5.0.96-1+cuda11.7_amd64.deb
```
2.**import torchで以下のエラー**
`ImportError: libnccl.so.2: cannot open shared object file: No such file or directory`
**解決方法**
libncclをインストールする
[https://developer.nvidia.com/nccl/nccl-download](https://developer.nvidia.com/nccl/nccl-download) にアクセス(Nvidia Developerのアカウント登録が必要)
Licenseの同意チェックボックスにチェックを入れて,バージョンのリストを表示する
ない場合は,Legacy Downloadから探す
今回は,"Download NCCL 2.18.3, for CUDA 12.1, June 13th, 2023"の Local installer for Ubuntu 22.04 を手動でダウンロード(自身の環境にあったcudaバージョンを選ぶ)
以下のようにコマンドを実行する(各自,公式ページみて置き換える)
```bash
# ダウンロードした Installer を指定
$ sudo dpkg -i nccl-local-repo-ubuntu2204-2.18.3-cuda12.1_1.0-1_amd64.deb
# dpkgコマンドの出力結果にあるコマンドの実行
$ sudo cp /var/nccl-local-repo-ubuntu2204-2.18.3-cuda12.1/nccl-local-xxxxxx-keyring.gpg /usr/share/keyrings/
# libnccl2のインストール
$ sudo apt update
$ sudo apt install libnccl2=2.18.3-1+cuda12.1 libnccl-dev=2.18.3-1+cuda12.1
```