---
# System prepended metadata

title: 建置 GPU 環境
tags: [cuda, GPU, NVIDIA, nvidia driver]

---

建置 GPU 環境
===
###### tags: `NVIDIA`
###### tags: `NVIDIA`, `GPU`, `nvidia driver`, `cuda`

<br>

[TOC]

<br>

## 如何在全新的 Ubuntu 20.04 上，安裝 nvidia driver (520 以上), cuda (11.8以上), docker with nvidia runtime？
[ChatGPT]
要在全新的 Ubuntu 20.04 上安裝 NVIDIA 驅動程式（版本 520 或以上）、CUDA（版本 11.8 或以上）、以及 Docker 並啟用 NVIDIA Runtime，您可以按照以下步驟進行操作：

1. **安裝 NVIDIA 驅動程式：**
    請使用以下命令來安裝 NVIDIA 驅動程式。您可以使用 ubuntu-drivers 工具來自動安裝適合您的硬體的驅動程式：
    ```bash
    sudo ubuntu-drivers autoinstall
    ```
    或者，如果您知道您的 GPU 型號，也可以直接安裝特定版本的驅動程式。例如，如果要安裝版本 520.39.01：

    ```bash
    sudo apt-get install nvidia-driver-520
    ```
2. **安裝 CUDA：**
    NVIDIA CUDA 是一個並行計算平台和應用程式程式庫的集合，可以加速 GPU 上的計算工作。要安裝 CUDA，您可以使用 NVIDIA 提供的官方安裝程式，它會自動下載並安裝所需版本的 CUDA。
    
    首先，前往 NVIDIA 官方網站的 CUDA 下載頁面(https://developer.nvidia.com/cuda-downloads) 選擇適合您的系統配置的 CUDA 版本，然後按照安裝指南中的步驟進行操作。
    
    - [Linux + Ubuntu 20.04](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local)
        ```bash
        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.2.2/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.2-535.104.05-1_amd64.deb
        sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.2-535.104.05-1_amd64.deb
        sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
        sudo apt-get update
        sudo apt-get -y install cuda
        ```

3. **安裝 Docker：**
    您可以使用以下命令安裝 Docker：

    ```bash
    sudo apt-get update
    sudo apt-get install docker.io
    ```
4. **安裝 NVIDIA Container Toolkit：**
    NVIDIA Container Toolkit 是用於 Docker 的 NVIDIA GPU 支援工具，它使容器可以與主機上的 NVIDIA GPU 進行通信。

    首先，添加 NVIDIA Container Toolkit 存儲庫：

    ```bash
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-archive-keyring.gpg

    echo "deb [signed-by=/usr/share/keyrings/nvidia-archive-keyring.gpg] https://nvidia.github.io/nvidia-docker/ubuntu20.04 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    ```
    然後，更新套件資料庫並安裝 NVIDIA Container Toolkit：

    ```bash
    sudo apt-get update
    sudo apt-get install nvidia-container-toolkit
    ```
    - ### 備註：[官方] 安裝特定版本
        - [Installing the NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#with-apt-ubuntu-debian)
            ```bash=
            # 1. Configure the production repository:
            curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
              && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
                sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
                sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

            # 2. Optionally, configure the repository to use experimental packages:
            sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

            # 3. Update the packages list from the repository:
            sudo apt-get update

            # 4. Install the NVIDIA Container Toolkit packages:
            export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
              sudo apt-get install -y \
                  nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
                  nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
                  libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
                  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
            ```

5. **啟用 NVIDIA Runtime：**
    為了在 Docker 容器中使用 NVIDIA GPU，您需要在 Docker 守護程序的配置中啟用 NVIDIA Runtime。請打開 Docker 守護程序配置文件 `/etc/docker/daemon.json`，如果不存在，則創建它：

    ```bash
    sudo nano /etc/docker/daemon.json
    ```
    將以下內容添加到配置文件中：

    ```json
    {
      "runtimes": {
        "nvidia": {
          "path": "nvidia-container-runtime",
          "runtimeArgs": []
        }
      },
      "default-runtime": "nvidia"
    }
    ```
    保存配置文件，然後重新啟動 Docker 服務：

    ```bash
    sudo systemctl restart docker
    ```
    現在，您已經成功在 Ubuntu 20.04 上安裝了 NVIDIA 驅動程式（版本 520 或以上）、CUDA（版本 11.8 或以上）和 Docker，並且已啟用 NVIDIA Runtime，以便在 Docker 容器中使用 NVIDIA GPU。請確保您的硬體和系統配置與這些軟體版本相容。

<br>

## 參考資料
- [Azure / 虛擬機器(VM) (包含GPU) / 查看 GPU 資訊](https://hackmd.io/bMasy0__T3-lqFnNFklgvw#%E6%9F%A5%E7%9C%8B-GPU-%E8%B3%87%E8%A8%8A)