如何在 Debian 12、11 或 10 上安裝 CUDA 工具包

NVIDIA 的 CUDA(統一運算設備架構)是用於平行運算的強大工具。它使用 NVIDIA 圖形處理單元 (GPU) 來提高運算任務的速度。本指南將向您展示如何在 Debian 12 Bookworm、Debian 11 Bullseye 和 Debian 10 Buster 上安裝 CUDA。我們將為每個 Debian 版本使用 NVIDIA 的 APT 儲存庫,以確保一切順利運作。

是什麼讓 CUDA 工具包脫穎而出:

  • 平行處理: CUDA 可讓您的軟體在 NVIDIA GPU 上同時執行多個任務。這對於需要大量運算能力的工作來說非常有用。
  • 支援多種語言: 您可以將 CUDA 與 C、C++ 和 Fortran 等程式語言結合使用。它還可以與 OpenCL 和 DirectCompute 等其他運算工具配合使用。
  • 完整的開發工具: NVIDIA 透過 Nsight Eclipse Edition 為開發人員提供了一整套工具。它有助於建立、調試和改進 CUDA 應用程式。
  • 即用型庫: CUDA 有其用於 GPU 任務的程式庫。例如用於數學運算的 cuBLAS 和用於資料分析的 cuFFT。
  • 面向未來的設計: CUDA 旨在與新的和即將推出的 NVIDIA GPU 配合使用。這意味著您的軟體可以在不更改大量程式碼的情況下進行改進。

在 Debian 上安裝 CUDA 之前:

  • 檢查您的系統: 確保您的電腦的硬體和軟體已為 CUDA 做好準備。 NVIDIA 有一份 GPU 和系統需求列表,您可以查看。
  • 使用正確的來源: 本指南重點介紹適用於 Debian 的 NVIDIA APT 儲存庫。這是為 Debian 系統取得穩定且運作良好的 CUDA 版本的最佳方式。
  • 保持更新: 時不時地尋找更新是個好主意。 NVIDIA 經常推出新功能和修復以使 CUDA 變得更好。

最後,了解並在 Debian 上使用 CUDA 可以顯著提升您的應用程式。隨著我們的進展,我們將更深入地了解安裝流程和最佳實踐,以便在 Debian 系統上充分利用 NVIDIA 的 CUDA 工具包。

清除現有的 CUDA 和 NVIDIA 安裝(視情況而定)

在 Debian 上安裝 NVIDIA 驅動程式或考慮版本升級之前,從頭開始至關重要。這意味著從 Debian 系統中刪除任何現有的 NVIDIA 安裝。此步驟可確保您避免因重疊安裝而產生的潛在問題。如果您不熟悉 NVIDIA 驅動程式安裝,可以跳過此部分並繼續下一步。

方法一:解除安裝透過APT安裝的NVIDIA軟體套件

如果您之前使用 APT 套件管理器安裝 NVIDIA 驅動程序,則可以使用單一命令刪除所有與 NVIDIA 相關的套件。此操作將從您的系統中有效地刪除 NVIDIA。在終端機中輸入以下命令:

sudo apt autoremove cuda* nvidia* --purge

該指令使用 autoremove 的特點是 apt 命令。它會刪除為滿足其他套件的依賴關係而自動安裝但不再需要的套件。這 nvidia* 模式標識所有以“nvidia”開頭的包。這 --purge 選項告訴 apt 不僅刪除軟體包,還刪除其關聯的設定檔。

方法2:卸載透過Runfile安裝的NVIDIA驅動程式

如果您使用以下方式安裝了 NVIDIA 驅動程式 .run 文件(通常不建議,因為有更好的替代品,如 NVIDIA CUDA 儲存庫),需要採用不同的方法來刪除它。

若要刪除執行檔案類型的安裝,請執行下列命令:

sudo /usr/bin/nvidia-uninstall

該命令運行 nvidia-uninstall 運行文件安裝附帶的腳本。該腳本有條不紊地刪除使用執行檔案安裝的 NVIDIA 驅動程式。

方法3:卸載透過Runfile安裝的CUDA Toolkit

如果您使用執行檔安裝了 CUDA 工具包,則也必須刪除它。刪除過程與 NVIDIA 驅動程式類似。若要刪除 CUDA 工具包,請執行下列命令:

sudo /usr/local/cuda-X.Y/bin/cuda-uninstall

在上面的命令中,替換 X.Y 與您安裝的 CUDA 工具包的版本號碼。該命令運行 cuda-uninstall 腳本,包含在 CUDA 工具包的運行文件安裝中。該腳本旨在有條不紊地從 Debian 系統中刪除 CUDA 工具包。

啟動 Contrib 和非免費儲存庫

第一步是將「contrib」和「non-free」儲存庫新增至您的 Debian 儲存庫清單。從 Debian 12 Bookworm 開始,該過程有所不同,因此使用與您的 Debian 發行版的特定版本相對應的命令至關重要。

首先也是最重要的,驗證您的 Debian 系統上是否安裝了以下軟體:

sudo apt install software-properties-common -y

書蟲及以後:

sudo add-apt-repository contrib non-free-firmware

Bullseye 和 Buster 向下:

sudo add-apt-repository contrib non-free

在繼續之前,請確保運行快速 APT 更新以刷新包索引:

sudo apt update

在 Debian 上新增 NVIDIA APT 儲存庫

最有效的 CUDA 安裝方法是直接從 NVIDIA CUDA 儲存庫安裝。此方法可確保使用者及時收到更新,包括新功能、錯誤修復、安全性修補程式和增強功能。

安裝 CUDA 前準備 Debian 系統

在開始安裝程序之前,正確準備 Debian 系統至關重要。這意味著您需要安裝幾個必備包。即使其中一些軟體包已經在您的系統上,仔細檢查也是明智的做法。在終端機中執行以下命令:

sudo apt install build-essential gcc dirmngr ca-certificates software-properties-common apt-transport-https dkms curl -y

此命令將安裝對於後續步驟至關重要的基本軟體包。他們之中, dirmngr 管理密鑰, ca-certificates 處理 SSL 證書, software-properties-common 管理軟體儲存庫, apt-transport-https 確保安全的套件下載, dkms 管理內核模組,以及 curl 方便從網路下載檔案。

使用 NVIDIA 儲存庫 GPG 金鑰驗證安裝

確保軟體包的真實性和完整性至關重要。匯入特定 Debian 版本的 GPG 金鑰時,您可以驗證儲存庫包的真實性。金鑰對包進行簽名,透過匯入它們,您可以告訴系統信任這些簽名的包。

書蟲,跑:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

靶心,奔跑:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

巴斯特,使用:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

將 NVIDIA 儲存庫整合到您的 Debian 系統中

使用 GPG 金鑰,您現在可以將 NVIDIA 儲存庫新增至您的 Debian 系統。此儲存庫包含 CUDA 安裝所需的軟體包。

書蟲,使用:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

靶心,使用:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

巴斯特,使用:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

第四步:刷新套件列表

在新增 NVIDIA 儲存庫後,更新系統的軟體包清單至關重要。這可確保您的系統能夠識別 NVIDIA 儲存庫中的新軟體套件。要更新,請運行:

sudo apt update

使用 NVIDIA 驅動程式安裝 CUDA

搜尋 CUDA 驅動程式

滿足先決條件後,您就可以安裝 CUDA 和最新的 NVIDIA 驅動程式。但是,我們建議在繼續之前使用 APT show 命令檢查可用的驅動程式版本:

apt show cuda-drivers -a

這將輸出各種 NVIDIA 驅動程式版本的可用軟體包清單。

或者,您也可以使用 APT 策略指令確認可用的 CUDA 版本:

sudo apt policy cuda

繼續安裝 Cuda 驅動程式

此命令將顯示可用的 CUDA 版本。選擇最適合您需求的版本。本指南將示範如何安裝最新的可用版本。

記得更換 545535,530, 525, 520, 515等等,依照您的選擇。

sudo apt install nvidia-driver cuda-drivers-545 cuda

完成安裝並重啟

安裝完成後,重新啟動系統以確保所有變更生效:

sudo reboot

此步驟完成 Debian 系統上的 CUDA 設置,確保您可以有效地利用其功能。

CUDA 入門

評估 GPU 能力

在深入 CUDA 程式設計之前,了解 GPU 的功能至關重要。不同的 GPU 支援不同的 CUDA 版本,每個版本都有獨特的屬性,例如核心數量、記憶體大小等。要獲取有關 GPU 的詳細信息,請使用 nvidia-smi 命令:

nvidia-smi

此命令提供對各種 GPU 屬性的深入了解,例如其名稱、總記憶體和支援的 CUDA 版本。

建立您的第一個 CUDA 程序

首先,我們將開發一個基本的 CUDA 程序,編譯並執行它以確保一切正常運作。首先建立一個新文件 .cu 擴展,這是 CUDA 程序的標準。您可以使用任何文字編輯器來執行此操作:

nano helloworld.cu

將以下程式碼插入文件中。這個簡單的程式顯示“Hello, World!”來自 GPU 的訊息:

#include <stdio.h>

__global__ void helloFromGPU (void) {
    printf("Hello World from GPU!\n");
}

int main(void) {
    printf("Hello World from CPU!\n");
    helloFromGPU <<<1, 10>>>();
    cudaDeviceReset();
    return 0;
}

若要編譯程序,請使用 nvcc 指令,代表 NVIDIA CUDA 編譯器:

nvcc helloworld.cu -o helloworld

現在,運行編譯後的程式:

./helloworld

輸出應顯示以下內容:

CPU 的世界你好! GPU 的你好世界!

進階 CUDA 程式設計:矩陣乘法

為了進一步示範 CUDA 的功能,讓我們發展一個使用 CUDA 執行矩陣乘法的程式。這將顯示 CUDA 如何有效地處理高度並行的任務。

首先建立一個新檔案:

nano matrixmul.cu

將以下程式碼插入到 matrixmul.cu 文件。此程式在GPU上進行矩陣乘法:

__global__ void gpu_matrix_mult(int *a,int *b, int *c, int m, int n, int k)
{ 
    // Calculate the row & column index of the element
    int row = blockIdx.y * blockDim.y + threadIdx.y; 
    int col = blockIdx.x * blockDim.x + threadIdx.x;

    int sum = 0;
    if( row < m && col < k ) 
    {
        for(int j = 0; j < n; j++) 
        {
            sum += a[row * n + j] * b[j * k + col];
        }
        // Each thread computes one element of the block sub-matrix
        c[row * k + col] = sum;
    }
} 

使用以下命令編譯程式 nvcc 命令:

nvcc matrixmul.cu -o matrixmul

然後,執行編譯後的程式:

./matrixmul

輸出將呈現矩陣乘法運算的結果。此範例說明了 CUDA 如何有效處理矩陣乘法等並行任務,與傳統 CPU 執行相比,顯著提升效能。

結論

在這份綜合指南中,我們精心在 Debian 12 Bookworm、Debian 11 Bullseye 和 Debian 10 Buster 上安裝了 CUDA 工具包。透過遵循概述的步驟,使用者可以利用 NVIDIA GPU 的運算能力,釋放高效能運算任務的可能性。確保安裝與特定的 Debian 版本一致對於確保穩定性和最佳性能至關重要。隨著技術的發展,保持最新版本和官方文件的更新至關重要。對於那些希望深入研究 CUDA 功能或解決特定問題的人來說,NVIDIA 官方資源和論壇非常寶貴。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言