0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVIDIA全面转向开源GPU内核模块

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 2024-07-25 09:56 次阅读

借助 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 HopperNVIDIA 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 显示此软件包结构。

634facb2-48e1-11ef-b8af-92fbcf53809c.png

图 1. CUDA 工具包 12.6 之前的 CUDA 软件包

以前,使用开源 GPU 内核模块意味着您可以使用顶级元软件包。这意味着您需要安装发行版特定的 NVIDIA 驱动开放软件包,同时还需要安装您选择的 cuda-toolkit-X-Y 软件包。

从 CUDA 12.6 版本开始,流的位置将有效切换(图 2)。

636ee71c-48e1-11ef-b8af-92fbcf53809c.png

图 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)。

6393b2f4-48e1-11ef-b8af-92fbcf53809c.png

图 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 开始的所有版本都将使用这些打包规范。

63a6c3c6-48e1-11ef-b8af-92fbcf53809c.png

表 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

    文章

    4862

    浏览量

    102752
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4685

    浏览量

    128646
  • Linux
    +关注

    关注

    87

    文章

    11216

    浏览量

    208806

原文标题:NVIDIA 全面转向开源 GPU 内核模块

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux 了解内核模块的原理 《Rice linux 学习开发》

    内核模块是一种没有经过链接,不能独立运行的目标文件,是在内核空间中运行的程序。
    的头像 发表于 07-16 10:08 4607次阅读
    linux 了解<b class='flag-5'>内核模块</b>的原理 《Rice linux 学习开发》

    Linux 内核模块工作原理及内核模块编译案例

    一个内核模块至少包含两个函数,模块被加载时执行的初始化函数init_module()和模块被卸载时执行的结束函数cleanup_module()。
    发表于 09-23 09:39 2471次阅读
    Linux <b class='flag-5'>内核模块</b>工作原理及<b class='flag-5'>内核模块</b>编译案例

    Linux内核模块间通讯方法

    Linux内核模块间通讯方法非常的多,最便捷的方法莫过于函数或变量符号导出,然后直接调用。默认情况下,模块模块之间、模块内核之间的全局变
    发表于 06-07 16:23 2464次阅读
    Linux<b class='flag-5'>内核模块</b>间通讯方法

    错误:无法加载内核模块'nvidia.ko'

    ,nvidiafb或nouveau存在并阻止了 NVIDIA内核模块获得NVIDIA显卡的所有权 设备,或者不支持在此系统中安装的NVIDIA GP
    发表于 09-05 09:35

    内核模块的原理以及其模块编写

    内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行。
    的头像 发表于 01-02 11:11 4476次阅读
    <b class='flag-5'>内核模块</b>的原理以及其<b class='flag-5'>模块</b>编写

    什么是内核模块?如何编写一个简单的模块

    内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux
    发表于 08-24 17:15 20次下载

    什么是 Linux 内核模块?

    lsmod 命令能够告诉你当前系统上加载了哪些内核模块,以及关于使用它们的一些有趣的细节。
    的头像 发表于 08-09 17:01 3209次阅读

    嵌入式LINUX系统内核内核模块调试教程

    本文档的主要内容详细介绍的是嵌入式LINUX系统内核内核模块调试教程。
    发表于 11-06 17:32 21次下载
    嵌入式LINUX系统<b class='flag-5'>内核</b>和<b class='flag-5'>内核模块</b>调试教程

    如何在Petalinux创建Linux内核模块

    创建内核模块 Petalinux可以帮助工程师简化内核模块的创建工作。在petalinux工程目录下,使用命令“ petalinux-create -t modules --name
    的头像 发表于 03-02 11:10 4293次阅读

    Asterisk内核模块介绍

    主要阐述Asterisk内核模块的基础知识。
    发表于 03-17 13:47 7次下载

    嵌入式LINUX系统内核内核模块调试

    嵌入式LINUX系统内核内核模块调试(嵌入式开发和硬件开发)-嵌入式LINUX系统内核内核模块调试                 
    发表于 07-30 13:55 10次下载
    嵌入式LINUX系统<b class='flag-5'>内核</b>和<b class='flag-5'>内核模块</b>调试

    什么是内核模块签名?内核如何开启模块签名

    驱动可以直接编译进内核镜像,也可以单独编译成ko文件(内核模块),然后再进行加载。内核从3.7后开始支持模块签名,该功能使能以后,内核只允许
    发表于 08-08 16:14 1134次阅读

    Linux内核模块参数传递与sysfs文件系统

    函数传参的内核传参机制,编写内核程序时只要实现传参接口,用户在加载内核模块时即可传入指定参数,使得内核模块更加灵活。
    发表于 06-07 16:23 2058次阅读

    深入分析Linux kernel安全特性: 内核模块签名

    顾名思义,在开启该功能之后,内核在加载内核模块时,会对内核模块的签名进行检查。
    的头像 发表于 10-18 12:32 4389次阅读

    英伟达将全面转向开源GPU内核模块

    英伟达公司近期宣布了一项重大决策,即全面转向开源GPU内核模块,并计划最终以此取代闭源驱动程序。这一战略转变标志着英伟达在
    的头像 发表于 07-19 15:26 532次阅读