这一天终于到来了:NVIDIA 正在以开源的形式发布他们的 LINUX GPU 内核模块!令人兴奋的是,禁运刚刚结束,这是我们许多人多年来一直希望看到的超级激动人心的里程碑。在过去的二十年中,NVIDIA 以其专有的驱动程序堆栈提供了出色的 Linux 驱动程序支持,但随着 AMD 的开源驱动程序工作十多年的成功,许多人一直呼吁 NVIDIA 开放他们的驱动程序。他们的用户空间软件仍然是封闭源代码,但截至今天,他们已经正式开放了他们的 Linux GPU 内核模块,并将继续保持下去。以下是 NVIDIA 这一具有里程碑意义的开源决定的独家新闻。
近年来,许多人一直想知道该公司一直在开发什么样的 NVIDIA 开源游戏……回到 2019 年底,已经出现了某种开源驱动程序努力的信号,自那以后,各种传言仍在继续观点。上个月,我还指出了一个新的开源内核驱动程序,该驱动程序作为 NVIDIA Tegra 源代码的一部分出现。好吧,现在禁运刚刚到期,可以揭开盖子 – NVIDIA 正在为其图形产品提供完全开源的内核驱动程序解决方案。这不仅限于 Tegra 左右,而且不仅涵盖他们的桌面图形,而且已经为数据中心 GPU 的使用做好了生产准备。
自从得知 NVIDIA 的开源内核驱动程序计划后,我一直非常兴奋。为了涵盖所有重要方面,我在下面列出了所有关键位,以便轻松了解这个 NVIDIA 开源内核驱动程序的最激动人心的细节。
此 NVIDIA 开源计划涵盖的内容 – NVIDIA 的开放内核模块已被视为数据中心 GPU 的“生产就绪,可选择加入”。对于 GeForce 和工作站 GPU,开放内核模块代码被认为是“alpha 质量”,但会随着未来版本的推出而增加。NVIDIA 已经弃用其数据中心 GPU 支持的单片内核模块方法,以专注于这种开放内核驱动程序解决方案(以及他们现有的使用 GSP 的专有内核模块)。此开源内核驱动程序仅支持 Turing 和更新的 GPU。就此而言,图灵前 GPU 只能使用现有的专有内核驱动程序或 Nouveau DRM 驱动程序。由于依赖于 GPU 系统处理器 (GSP),因此图灵和更新版本是一项硬性要求。
GPU 系统处理器和最近出现的这种驱动架构是为了将一些 GPU 初始化/管理任务卸载到 GPU上,而不是在 CPU 上执行。GSP 是在运行时加载的纯二进制固件。开源内核驱动程序明确依赖于 GSP 支持的图形处理器。GSP 是一个基于 RISC-V 的块,在早期的 NVIDIA GPU 上继承了他们早期的 Falcon 微控制器。
内核模块组件包括 NVIDIA 内核驱动程序、NVIDIA-DRM 集成、用于显示/模式设置的 NVIDIA-Modeset 驱动程序、用于统一显存的 NVIDIA-UVM。
它是真正的开源内核代码– MIT/GPL 双许可!NVIDIA 表示 Canonical/Ubuntu、Red Hat 和 SUSE 都在准备打包和使用开放内核模块。从 NVIDIA Linux 驱动程序的新 R515 分支开始,驱动程序安装程序将为用户提供是否要使用现有专有内核模块或切换到开放驱动程序代码的选项。开放内核驱动程序代码也将在GitHub 上提供。NVIDIA 还将接受社区对存在优点或错误的代码的贡献,但确实需要 CLA 才能将代码签署给 NVIDIA。NVIDIA 的用户空间库和 OpenGL / Vulkan / OpenCL / CUDA 驱动程序仍然是闭源的——今天的公告几乎是内核空间的所有兴奋点。
NVIDIA 的 Linux 内核驱动程序的主线野心——尽管近期/以目前的形式,它不会向上游发展。此时 API/ABI 还不稳定,开放的内核驱动程序代码将与特定的驱动程序版本相关联。NVIDIA 最终致力于稳定其 API/ABI 以及 GSP 固件接口。一旦他们完成了所有这些技术性工作,驱动程序(或将来的任何形式)可能会考虑将其上游化到内核中。根据 Linux 内核上游实践,还需要使用此内核驱动程序的开源用户空间支持。
这个开源内核代码目前分为与操作系统无关的和内核接口层组件。这源于 NVIDIA 在 Linux 上的专有驱动程序主要是跨 Windows / Linux / FreeBSD / Solaris 的共享代码。要使其在 Linux 内核中上游化,它可能需要进行更多重构以迎合 Linux,就像 AMD 的 DAL/DC 最初由于其众多抽象而难以上游化一样。
围绕这个新内核驱动程序的 Nouveau(开源社区)前景——最终,是的,Nouveau 可能会利用今天开放的这个代码。在向 NVIDIA 询问此事时,他们说希望 Nouveau 能够利用 GSP 固件/开放内核模块,但首先可能需要时间来稳定 GSP 固件接口和其他因素。因此,将来当这个内核驱动程序处于更好的状态时,Nouveau 的 Mesa 代码可能最终与这个内核驱动程序接口,作为 Nouveau DRM 内核驱动程序的替代品. 另外,要使这个内核代码被上游化,它需要一个开放的用户空间——即没有 NVIDIA 决定稍后开放他们的用户空间库的 Nouveau Mesa 代码。
NVIDIA 最终变得更加开源的动机——这似乎是为了改进他们的 Linux 集成和支持。NVIDIA 今天发布的公告称:“此版本是在改进 Linux 中使用 NVIDIA GPU 的体验方面迈出的一大步,能够与操作系统更紧密地集成,并让开发人员能够调试、集成和回馈。” 看起来企业/数据中心的使用在这一战略中也发挥了作用,还谈到了机密计算,以及数据中心 GPU 支持如何被认为是工作站和消费者 GeForce GPU 支持之前的“生产”质量。英伟达’
与这个新内核驱动程序的功能差异——作为一个开源内核驱动程序最终会带来一些好处——现在这个开源驱动程序已经支持 DMA-BUF,这与他们的专有驱动程序不同。但在此代码成熟之前,与“alpha”质量支持的消费者/工作站硬件可能存在性能差异和其他需要改进的地方。但最终 NVIDIA 表示他们将拥有与专有内核代码相同的功能和性能。
现在这是一个仅限 Linux 的更改– 至少从 R515 分支开始,NVIDIA 只为 Linux 系统提供开源内核驱动支持。鉴于 NVIDIA 长期以来通过其专有驱动程序支持 BSD,我询问了 FreeBSD 支持,以及这个开源代码是否足够便携,可以在任何 BSD 上工作。有人告诉我,对于 R515,它仅适用于 Linux。我们将看看 NVIDIA 以后是否决定开放他们的 FreeBSD 内核 GPU 驱动程序,这也可以帮助 NVIDIA 堆栈在其他一些 BSD 上运行。尽管如此,NVIDIA 专有的 FreeBSD 驱动程序仍为 FreeBSD 用户提供了当今最好的图形选项。
这就是 NVIDIA 的开源内核驱动程序工作的概要。请继续关注 NVIDIA R515 Linux 驱动程序测试,并查看将这个开放内核驱动程序与他们的闭源 OpenGL/Vulkan 用户空间驱动程序等一起使用的当前体验和性能。NVIDIA 确实对我发表了评论,尽管“这些超出 -树开放内核模块只是朝着更好地支持 Linux 迈出的一步。”
多年前 NVIDIA 提供了良好的 Linux GPU 驱动程序支持,尽管是闭源的(除非算上前者,xf86-video-nv DDX 的用处最小)……现在他们终于冒险进入开源内核驱动程序。
祝贺 NVIDIA 终于为他们的图形产品系列推出了开源内核驱动程序解决方案。可以说,他们迟迟没有开源他们的用户空间驱动程序组件,但这是一个了不起的举措,而且比现状更好。这个开放的内核驱动程序在很大程度上仍然是一个正在进行中的工作,特别是对于 GeForce Linux 游戏玩家来说,但这是一个很好的开始,应该有助于实现更好的内核集成/改进的设置体验以及更好地管理跨发行版的 NVIDIA 专有驱动程序安装——一旦拥有为驱动程序提供稳定的 API/ABI,尤其是当/超过阈值时,能够上游内核驱动程序。一旦开源 Nouveau 项目能够直接利用 GSP 或这个驱动程序,这样他们就可以专注于他们的开源 Mesa 驱动程序支持,这也将是一件好事。
至少在短期内,AMD 的 Radeon Linux 图形驱动程序以其独立显卡的开源堆栈领先——用户和内核空间驱动程序组件都是开源的,并且仅限于闭源微码/固件。即将推出的 Intel Arc Graphics 采用与 AMD 类似的路线,具有完全开放的内核和用户空间组件以及专有的 GuC/HuC 固件/微代码。我们将看到这如何改变 Linux 游戏玩家对仅具有开放内核驱动程序的接受度,但如果一切按照他们的开放驱动程序开发计划进行,至少从长远来看应该提供更合适的集成/易用性。由于缺乏开源用户空间支持,自由软件纯粹主义者仍会认为 NVIDIA 是禁区——至少在 Nouveau 适应使用此驱动程序并拥有开放的 Vulkan 驱动程序等之前。
是的,Linux 游戏市场份额很小,NVIDIA 可能不会仅仅为了激发开源爱好者而努力。这里真正的作用可能在于确保 NVIDIA 在数据中心 Linux 上的持续吸引力。开放内核驱动程序将解决组织对安全问题的一些担忧,二进制驱动程序会污染内核,而 NVIDIA 模块通常是许多 Linux 系统上唯一的闭源内核驱动程序。开放的 NVIDIA 内核驱动程序还将允许与围绕机密/安全计算和其他领域的新 Linux 功能更好地集成。大型 HPC 客户和数据中心用户通常不太关心闭源用户空间软件(并且通常无论如何都运行闭源用户应用程序),而更关心质量和功能——NVIDIA 在 CUDA 方面享有盛誉以及他们所有用于 GPU 计算的成熟但领先的用户空间软件。
近二十年来,我一直密切关注 NVIDIA 的 Linux 驱动程序支持,这是他们在这段时间所做的最好的开源工作。
作为一个开放的内核驱动程序,它现在将能够利用 GPL-only 内核符号/功能。该驱动程序已经具有 DMA-BUF 支持,某些企业/数据中心使用会感兴趣。这可以帮助的其他领域是与 HWMON 子系统的更好集成,例如,在那里提供更好的集成,并使用与其他开源 DRM/KMS 内核显示/图形驱动程序相同的接口,而不是现在依赖用于监控的各种 NVIDIA 特定工具和接口。
看看这个 NVIDIA Open GPU Kernel Modules 是否会弃用 Nouveau DRM 内核驱动程序也会很有趣……好吧,它不会完全因为我们不要忘记这个新的内核驱动程序只适用于 Turing GPU 和更新的 GPU。同时,目前 Nouveau 内核驱动程序较旧的最佳位置是 GTX 600/700 Kepler 系列(和 GTX 750 Maxwell1),但较新的 GPU 缺乏适当的电源管理固件/重新计时,因此性能不佳。最近几代 NVIDIA GPU 上的 Nouveau 基本上只能驱动显示器,因为它能够重新时钟到峰值性能状态,坦率地说,它的 3D 图形性能是垃圾。
随着时间的推移,我们将看到社区如何为这个开源的 NVIDIA 内核驱动程序代码做出贡献,因为还有 CLA 可能会关闭一些贡献者。但希望 Nouveu 会接受使用这个内核驱动程序,这样他们就可以将精力集中在 Mesa 内的开源 NVIDIA 支持上,以改进他们的用于 OpenCL 和 OpenGL 的 Gallium3D 驱动程序,并希望继续制作功能强大的 Vulkan 驱动程序。
继续从GitHub克隆,享受开源的 NVIDIA 内核驱动程序源。R515 Linux beta 驱动程序可以在NVIDIA.com上下载。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun164514.html