# Windows WSL2 安裝tensorflow、Cuda、Cudnn
## 確認安裝版本
版本對照表:https://blog.csdn.net/ly869915532/article/details/124542362
請確認要的tensorflow版本、對應的python、Cuda、Cudnn版本
ex.
我要想安裝tensorflow 2.13
對應Python 3.8-3.11、CUDA11.8、Cudnn8.6
## 安裝WSL2
請參考:https://hackmd.io/@Kailyn/BkMi80IeF
## 安裝cuda
這邊示範cuda 11.8
https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local

若不是跟我相同版本的,請確認上方為Linux、x86_64、WSL-Ubuntu、deb(local)
- 安裝指令(請一行一行複製執行):
(安裝指令會依據版本不同有所改變,這邊以Cuda11.8做範例)
```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
```
若是其他Cuda版本可以將上面指令中的**11-8**改為自己的版本試試,或到[上面連結](https://developer.nvidia.com/cuda-11-8-0-download-archive)(將網址中11-8改為自己的版本)找相對應的指令
- 驗證安裝
```bash
/usr/local/cuda/bin/nvcc -V
```
安裝成功應該會出現這樣

## 安裝cudnn
- 下載cudnn: https://developer.nvidia.com/rdp/cudnn-archive

這邊是使用Ubuntu 22.04所以下載Ubuntu22.04 x86_64(Deb)

下載後放入**使用者資料夾(/home/使用者名稱)**
- 安裝指令
(會依據版本不通有所改變,這邊以Ubuntu 22.04+Cuda 11.8+Cudnn 8.7做範例)
```bash
cd $HOME
# 安裝下載下來的檔案(-i 後面請更改為你下載的檔案名稱)
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.7.0.84_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-8.7.0.84/cudnn-local-BF23AD8A-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.7.0.84-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.7.0.84-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.7.0.84-1+cuda11.8
sudo apt-get install libfreeimage3 libfreeimage-dev
```
下載出來的檔案名稱:cudnn-local-repo-**ubuntu2204**-**8.7.0.84**_1.0-1_amd64.deb
可以看出是使用Ununtu 22.04、Cudnn 8.7.84、Cuda 11.8,再去改指令中相對應的版本
或參考[Nvidia Cudnn install guide](https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#package-manager-ubuntu-install)
- 驗證安裝
```bash
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
sudo make
./mnistCUDNN
```
安裝沒錯的話應該會出現**Test passed!**

## 安裝miniconda、tensorflow
- 安裝miniconda
``` bash
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
```
確認shell
```base
echo "$SEHLL"
```
- bash
```bash
~/miniconda3/bin/conda init bash
```
- zsh
```bash
~/miniconda3/bin/conda init zsh
```
- 創建環境
請取代「環境名稱」為你喜歡的名字,「版本」為python版本
```bash
conda create --name 環境名稱 python=版本
```
- 進入環境
```bash
conda activate 環境名稱
```
- 安裝tensorflow
請取代你要的「tensorflow版本」
```bash
pip install tensorflow[and-cuda]==tensorflow版本
```
- 驗證
```bash
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
```
出現GPU名稱大致就成功了
