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

NVIDIA 的 CUDA(即计算统一设备架构)是一种强大的并行计算工具。它使用 NVIDIA 图形处理单元 (GPU) 来提高计算任务的速度。本指南将向您展示如何在 Debian 12 Bookworm、Debian 11 Bullseye 和 Debian 10 Buster 上安装 CUDA。我们将使用 NVIDIA 的每个 Debian 版本的 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 驱动程序安装新手,则可以跳过此部分并继续下一步。

方法 1:卸载通过 APT 安装的 NVIDIA 软件包

如果您之前使用过 APT 软件包管理器安装过 NVIDIA 驱动程序,则可以使用单个命令删除所有与 NVIDIA 相关的软件包。此操作将有效地从您的系统中删除 NVIDIA。在您的终端中输入以下命令:

sudo apt autoremove cuda* nvidia* --purge

此命令使用 autoremove 特点 apt 命令。它会删除那些为了满足其他软件包的依赖关系而自动安装但不再需要的软件包。 nvidia* 模式识别所有以“nvidia”开头的软件包。 --purge 选项告诉 apt 不仅删除软件包,还删除其相关的配置文件。

方法 2:卸载通过 Runfile 安装的 NVIDIA 驱动程序

如果你使用 .run 文件(由于有更好的替代方案,如 NVIDIA CUDA 存储库,通常不推荐),需要采用不同的方法来删除它。

要删除 runfile 类型的安装,请执行以下命令:

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

靶心和破坏者向下:

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

步骤 4:刷新软件包列表

添加 NVIDIA 存储库后,更新系统的软件包列表至关重要。这可确保您的系统识别来自 NVIDIA 存储库的新软件包。要更新,请运行:

sudo apt update

使用 NVIDIA 驱动程序安装 CUDA

搜索 CUDA 驱动程序

满足先决条件后,您可以安装 CUDA 和最新的 NVIDIA 驱动程序。但是,我们建议在继续操作之前使用 APT show 命令检查可用的驱动程序版本:

apt show cuda-drivers -a

这将输出适用于各种 NVIDIA 驱动程序版本的可用软件包列表。

或者,您也可以使用 APT Policy 命令确认可用的 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

将以下代码插入文件。这个简单的程序显示来自 GPU 的“Hello, World!”消息:

#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 的 Hello World!来自 GPU 的 Hello World!

高级 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 的最新帖子 (查看全部)

发表评论