?
* 說明: 本教程使用wsl-ubuntu20.04, 其他發行版linux的命令可能有所區別.
*實測機型: i5-13500HX | RTX 4060 Laptop
一、下載CUDA12.X版本
這里以下載CUDA12.2為例。
- 前往cuda-12.2下載頁, 按照如圖方式選擇合適的選項:
- 按照官方給出的命令, 在bash中依此執行:
?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
- 添加環境變量
使用vim等打開~/.bashrc
,在末尾添加:
export PATH=/usr/local/cuda-12.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
- 驗證安裝是否成功
source ~/.bashrc
nvcc -V # 查看CUDA版本
二、下載cuDNN
-
前往cuDNN Archive 下載合適的cudnn版本。由于我們下載的是CUDA12.X版本,這里我們就選擇下載8.9.7版本的cudnn.
點擊后瀏覽器會接管下載, 可以通過如圖方式復制下載鏈接.
-
安裝cudnn軟件包
我們在終端中輸入以下命令:
wget -O cudnn.deb <你的下載鏈接> # 下載的文件會命名為cudnn.deb
dpkg -i cudnn.deb # 安裝前置軟件包
sudo apt update # 更新并獲取cudnn的下載源
sudo apt-get install libcudnn8 # 正式安裝cudnn軟件包
sudo apt-get install libcudnn8-dev # 安裝cudnn開發庫(可選)
完成上述工作后,可通過下述命令檢測是否安裝成功:
ls /usr/lib/x86_64-linux-gnu/libcudnn*
ls /usr/include/cudnn.h
dpkg -l | grep -i cudnn
三、安裝GPU版的pytorch
Pytorch下載地址
Pytorch包含三個庫:torch,torchvision和torchaudio;根據社區的說明,torch-cu118版本能夠兼容CUDA12.X,可通過該命令進行安裝:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
* 官方更新后通過pip默認下載的就是支持CUDA12.1的pytorch, 命令如下:
pip3 install torch torchvision torchaudio
注: 本教程安裝的是cu118版本, 讀者可嘗試第二種方法進行安裝。
四、驗證pytorch的CUDA可用性
- 先確定pytorch有沒有裝錯,可以在終端輸入
pip list
,查看torch版本,cu
后綴就表示支持GPU。
- 在python中執行
torch.cuda.is_available()
返回True
說明使用的就是GPU版本。
五、體驗Pytorch GPU和CPU運算的速度差距
import torch
from time import perf_counterdef cpu_process():x = torch.rand(1000,10000)y = torch.rand(10000,10000)start = perf_counter()x.mm(y)end = perf_counter()print('CPU process time:',end-start)def gpu_process():x = torch.rand(1000,10000).cuda()y = torch.rand(10000,10000).cuda()start = perf_counter()x.mm(y)end = perf_counter()print('GPU process time:',end-start)if __name__ == '__main__':cpu_process() # CPU process time: 0.5139300849996289gpu_process() # GPU process time: 0.02356865599995217
可以明顯看到GPU運算速度相比CPU快了20倍左右 !