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 版本。選擇最適合您需求的版本。本指南將示範如何安裝最新的可用版本。
記得更換 545
和 535,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 官方資源和論壇非常寶貴。