ubuntu 安裝 Cuda

      在〈ubuntu 安裝 Cuda〉中尚無留言

本篇撰寫於 2024/09/07,到目前為止各種所需的版本如下 :

ubuntu : 24.04
Python : 系統預設為 3.12.3
cuda : 最新可支援的版本 12.6
tensorflow : 最新版為 2.17.0
PyTorch : 最新版為 4.1

nVidia driver for Ubuntu 24.04

nVidia 已開放顯卡驅動程式原始碼,open source 的效能跟官網的驅動不相上下,建議安裝 open source driver,目前最新版本為 560.28.03。

安裝指令

sudo apt-get install -y nvidia-open

安裝完記得要手動重新開機,再執行 sudo lshw -C display 就可以看到 driver=nvidia latency=0

監控顯卡

nVidia 顯卡驅動如果安裝成功,可以使用如下指令每秒監控一次顯卡狀態

監控指令

watch -n 1 nvidia-smi

移除 cuda

還沒安裝 cuda 為何就要移除 cuda 呢,這是因為 cuda 一直在更新,所以需先移除舊版,再安裝新的版本。以下指令可移除徹底移除 cuda 套件。

sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*" 
sudo apt-get remove libcudnn9-cuda-12 libcudnn9-dev-cuda-12 libcudnn8-cuda-12 libcudnn8-dev-cuda-12
sudo apt autoremove

檢查是否移除

ls /usr/local 之後,cuda 的目錄就會被刪除,如果還有 cuda ,請手動刪除

安裝 Cuda for ubuntu 24.04

nVidia Cuda 已開始支援 ubuntu 24.04 ,請到 https://developer.nvidia.com/cuda-toolkit-archive 查看最新版本。本例以 Cuda 12.6.0 說明,安裝指令如下

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda-repo-ubuntu2404-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6

安裝 Cudnn for ubuntu 24.04

請到 https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/

下載 8.9 for cuda12 的最新版本。

請不要下載 9.0 的版本,因為到目前 2024/09/07 為止 9.0 的版本無法在 tensorflow 啟動GPU

wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
tar xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/
sudo cp -r include/ /usr/local/cuda/include
sudo cp -r lib/* /usr/local/cuda/lib64/

設定動態 library 搜尋路徑

Cuda 的動態 librery 在 /usr/local/cuda/lib64裏,請先輸入 sudo vim /etc/ld.so.conf.d/000_cuda.conf,在最後新增如下藍色部份。

/usr/local/cuda/targets/x86_64-linux/lib
/usr/local/cuda/lib64

接下來啟動上述的設定

sudo ldconfig

設定 PATH 變數

最後還需手動設定 PATH 變數,請先輸入 sudo vim /etc/profile,在最後新增如下設定

export PATH=/usr/local/cuda/bin:$PATH
#export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
#export CUDA_HOME=/usr/local/cuda

接下來啟動上述的設定

sudo source /etc/profile

查看 cuda 版本

使用如下指令查看 cuda 版本

nvcc --version

驗証 GPU 是否啟動

請先在 Python 專案下安裝套件

sudo apt-get install python3.12-venv
mkdir pytest
cd pytest
python3 -m venv .venv
source ./.venv/bin/activate
pip install tensorflow

然後編寫測試程式,vim test.py

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
gpus = tf.config.list_physical_devices(device_type='GPU')
print(gpus)

最後執行,python test.py,得到如下的結果就表示硬体 GPU 啟動了

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

蒙地卡羅測試

執行如下的蒙地卡羅程式,可以看到 GPU 全速在執行。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
batch=100_000_000
epochs=2000
incircle=0
#@tf.function
def cal():
    points=tf.random.uniform([2, batch], dtype=tf.float32)
    dist=tf.sqrt(tf.square(points[0])+tf.square(points[1]))
    count=tf.where(dist<=1).shape[0]
    return count
# cpus = tf.config.list_physical_devices (device_type='CPU')
# tf.config.set_visible_devices (devices=cpus[0]) #只使用 CPU, device_type預設是'CPU'
for e in range(epochs):
    count=cal()
    incircle+=count
    area=incircle /((e+1)*batch)
    pi=area*4
    print(f'epoch:{e+1}, pi={pi}')

上述程式開始跑時,開啟另一個視窗執行如下指令

watch -n 1 nvidia-smi

就可以看到顯卡的功耗到了 355瓦

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *