借助 R515 驱动程序,NVIDIA 于 2022 年 5 月发布了一套开源的 Linux GPU 内核模块,该模块采用双许可证,即 GPL 和 MIT 许可。初始版本主要面向数据中心计算 GPU,而 GeForce 和工作站 GPU 则处于 Alpha 状态。
当时,我们宣布,在后续版本中将提供更可靠、功能齐全的 GeForce 和工作站 Linux 支持,NVIDIA 开放内核模块最终将取代闭源驱动。
NVIDIA GPU 共享一个通用的驱动程序架构和功能集。您的台式机或笔记本电脑所使用的相同驱动程序能够在云端运行世界上最先进的 AI 工作负载,对我们来说,把它做到恰到好处一直都极其重要。
两年过去了,我们利用开源的 GPU 内核模块实现了与原来的应用程序性能相当或更好的性能,并添加了大量新的功能。
异构内存管理 (HMM) 支持
机密计算
Grace 平台的连贯内存架构
其他功能
现在,我们处于完全过渡到开源 GPU 内核模块的时刻。在即将发布的 R560 驱动版本中,我们将作出这一改动。
支持的 GPU
并不是每个 GPU 都能与开源 GPU 内核模块兼容。
对于 NVIDIA Grace Hopper 或 NVIDIA Blackwell 等尖端平台,您必须使用开源的 GPU 内核模块,因为这些平台不支持专有的驱动程序。
对于来自 Turing、Ampere、Ada Lovelace 或 Hopper 架构的较新 GPU,NVIDIA 建议将其切换到开源的 GPU 内核模块。
对于 Maxwell、Pascal 或 Volta 架构中的旧版 GPU,其开源 GPU 内核模块不兼容您的平台。因此,请继续使用 NVIDIA 专有驱动。
对于在同一系统中使用较旧和较新的 GPU 的混合部署,请继续使用专有驱动程序。
如果您不确定,NVIDIA 提供了一种新的检测辅助脚本的方式,以帮助指导您选择合适的驱动程序。有关更多信息,请参阅本文后面的使用安装辅助脚本部分。
安装程序更改
通常情况下,通过各种安装方法安装的驱动程序默认版本正在从专有驱动程序切换到开源驱动程序。这有一些特定情况值得特别注意:
具有 CUDA 元软件包的软件包管理器
运行文件
安装辅助脚本
软件包管理器详细信息
适用于 Linux 的 Windows 子系统
CUDA 工具包
将软件包管理器与 CUDA 元软件包结合使用
当您使用包管理器(而非 .run 文件)安装 CUDA 工具包时,安装元包是存在并常用的。通过安装顶级 cuda 软件包,您将安装 CUDA 工具包和相关驱动版本的组合。例如,在 CUDA 12.5 发布时间范围内安装 cuda 时,您将获得专有的 NVIDIA 驱动 555 以及 CUDA 工具包 12.5。
图 1 显示此软件包结构。
图 1. CUDA 工具包 12.6 之前的 CUDA 软件包
以前,使用开源 GPU 内核模块意味着您可以使用顶级元软件包。这意味着您需要安装发行版特定的 NVIDIA 驱动开放软件包,同时还需要安装您选择的 cuda-toolkit-X-Y 软件包。
从 CUDA 12.6 版本开始,流的位置将有效切换(图 2)。
图 2. CUDA 工具包 12.6 版本发布后的 CUDA 软件包
使用运行文件
如果您使用 .run 文件安装 CUDA 或 NVIDIA 驱动,安装程序将查询您的硬件,并自动安装最适合您系统的驱动。此外,您还可以使用 UI 开关来选择专有驱动或开源驱动。
如果您通过 CUDA .run 文件并使用 ncurses 用户界面进行安装,现在将看到一个类似于以下内容的菜单:
CUDA Driver [ ] Do not install any of the OpenGL-related driver files [ ] Do not install the nvidia-drm kernel module [ ] Update the system X config file to use the NVIDIA X driver - [X] Override kernel module type [X] proprietary [ ] open Change directory containing the kernel source files Change kernel object output directory Done Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options
如果您通过驱动 .run 文件进行安装,将看到类似的选择(图 3)。
图 3. 新的运行文件交互式选择(驱动安装程序)
如果您使用 Ansible 等自动化工具,也可以使用命令行传递 overrides,以在不使用用户界面的情况下进行安装。
# sh ./cuda_12.6.0_560.22_linux.run --override --kernel-module-type=proprietary # sh ./NVIDIA-Linux-x86_64-560.run --kernel-module-type=proprietary
使用安装辅助脚本
如前所述,如果您不确定为系统中的 GPU 选择哪种驱动程序,NVIDIA 创建了一个辅助脚本,以指导您完成驱动程序的选择过程。
要使用它,请首先使用包管理器安装nvidia-driver-assistant包,然后运行该脚本。
$ nvidia-driver-assistant
软件包管理器详细信息
为了获得一致的体验,NVIDIA 建议您使用包管理器来安装 CUDA Toolkit 和驱动程序。但是,不同发行版使用哪些包管理系统或包的结构方式的具体细节可能因您的特定发行版而异。
本节概述了各种平台所需的具体细节、注意事项和迁移步骤。
apt: 基于 Ubuntu 和 Debian 的发行版
运行以下命令:
$ sudo apt-get install nvidia-open
要在 Ubuntu 20.04 上使用 cuda 元软件包进行升级,请先切换到开启的内核模块。
$ sudo apt-get install -V nvidia-kernel-source-open $ sudo apt-get install nvidia-open
dnf: Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linux
运行以下命令:
$ sudo dnf module install nvidia-driver:open-dkms
要在基于 DNF 的发行版上使用 cuda 元软件包进行升级,必须首先禁用模块流。
$ echo "module_hotfixes=1" | tee -a /etc/yum.repos.d/cuda*.repo $ sudo dnf install --allowerasing nvidia-open $ sudo dnf module reset nvidia-driver
zypper: SUSE Linux Enterprise Server 或 OpenSUSE
运行以下命令之一:
# default kernel flavor $ sudo zypper install nvidia-open # azure kernel flavor (sles15/x86_64) $ sudo zypper install nvidia-open-azure # 64kb kernel flavor (sles15/sbsa) required for Grace-Hopper $ sudo zypper install nvidia-open-64k
软件包管理器摘要
为简化起见,我们已将包管理器建议压缩为表格格式。从驱动版本 560 和 CUDA 工具包 12.6 开始的所有版本都将使用这些打包规范。
表 1. 软件包管理器安装建议
有关更多信息,请参阅 NVIDIA 数据中心驱动:
https://docs.nvidia.com/datacenter/tesla/drivers/index.html
适用于 Linux 的 Windows 子系统
适用于 Linux 的 Windows 子系统(WSL)使用来自主机 Windows 操作系统的 NVIDIA 内核驱动程序。因此,您不应该专门为此平台安装任何驱动程序。如果您使用的是 WSL,则无需进行任何更改或操作。
CUDA 工具包
通过软件包管理器,CUDA 工具包的安装保持不变。请运行以下命令:
$ sudo apt-get/dnf/zypper install cuda-toolkit
更多信息
如需详细了解如何安装 NVIDIA 驱动程序或 CUDA 工具包,包括如果此时无法迁移到开源 GPU 内核模块,如何确保安装专有驱动程序,请参阅《CUDA 安装指南》中的驱动程序安装部分。
-
NVIDIA
+关注
关注
14文章
4769浏览量
102385 -
gpu
+关注
关注
27文章
4573浏览量
128052 -
Linux
+关注
关注
87文章
11116浏览量
207752
原文标题:NVIDIA 全面转向开源 GPU 内核模块
文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Linux 内核模块工作原理及内核模块编译案例
![Linux <b class='flag-5'>内核模块</b>工作原理及<b class='flag-5'>内核模块</b>编译案例](https://file.elecfans.com/web1/M00/C7/3B/o4YBAF9qpsyACZgaAABwEWXfsvI775.png)
Linux内核模块间通讯方法
![Linux<b class='flag-5'>内核模块</b>间通讯方法](https://file1.elecfans.com/web2/M00/89/4E/wKgaomSAQsyAOh-6AADd7_xq52A238.png)
评论