RedHat 桌面、图形、信息娱乐和 i18n 总监 Christian F.K. Schaller 分享了他对 NVIDIA 开源 Linux GPU 内核模块的一些看法,并分析了 NVidia 的开源驱动对 Linux 社区的重要性。
开源的驱动是什么
首先需要明确的是:NVIDIA 开源了 out of tree 源代码内核驱动程序。这些驱动程序已经过测试,它在作为数据中心的 GPU 上支持 CUDA 用例,但尚未支持图形显示。尽管也有支持图形显示的代码,但这些代码还没有写完或完全测试。
此外,开源的只是内核部分,然而现代图形驱动的很大一部分是在固件和用户空间组件中,而这些仍然是闭源的。因此,对于普通的 Linux 桌面用户来说,目前 NVIDIA 的开源驱动程序并不能带来一些显而易见的好处。
但无论如何,现在有了一个 NVidia 内核驱动,它能够使用 linux 内核中仅支持 gpl 的 API ,这就为后面的以切打下了基础。
开源驱动能取代二进制驱动程序吗?
目前还不能,该开源驱动程序只支持 NVidia 图灵芯片及更新版本的图形处理器,这意味着它对 2018 年之前的图形处理器都不起作用。另外,在开源内核模块经过全面测试和扩展,以用于图形显示用例之前,即使你使用的是图灵或更新版本的 GPU,仍需要在系统中使用二进制驱动。
此外,正如上面所说的,现代图形驱动的很大一部分是在固件和用户空间组件中,因此,即使开源内核驱动程序有图形显示能力,二进制驱动程序仍将继续存在。
开源驱动对 Nouveau 有何影响
Nouveau 是一个旨在为 NVIDIA GPU 建立高质量的、自由的开源驱动项目,它最初是作为逆向工程驱动程序开发的,但近年来实得到了 NVIDIA 的积极支持。Nouveau 功能齐全,但由于无法重新计算 NVidia 显卡的时钟等功能而受到严重阻碍,这意味着它不能像二进制驱动那样提供完整的性能,此次 NVIDIA 开源的 GPU 内核模块对 Nouveau 社区和项目都大有帮助。
需要注意的是: Linux 内核不允许同一个硬件有多个驱动程序,所以要想让新的 NVidia 内核驱动程序在当前的 Linux 版本中运行,就必须退出现在的 Nouveau,或者至少被限制在一套不同的硬件上。就像二进制驱动一样,Nouveau 的很大一部分不在内核中,而是在 Mesa 和 NVidia 目前提供的 Nouveau 特定固件中发现的用户空间部分。
目前 NVIDIA 和 RadHat 等发行版讨论的计划是让 NVidia 的二进制驱动和 Mesa 共享一个内核驱动,这可能是一个全新的驱动程序,旨在同时满足 NVidia 用户空间和 Mesa 用户空间的需求。但这可能需要几年的时间来实现。这对开源社区和 NVidia 都有明显的优势。对于开源社区来说,这意味着现在将拥有一个内核驱动程序和固件,它允许更改 GPU 的时钟,以提供人们期望从 NVidia 显卡获得的显示性能,这意味着 Linux 将拥有一个可以在第一时间访问新一代 NVidia 硬件的固件和内核更新的驱动程序。
开源驱动对 Linux 发行版意味着什么?
就近期而言,它不会产生重大影响。但随着时间的推移,它提供了一种从根本上简化对 NVidia 硬件支持的途径。从长远来看,用户有机会能在 NVidia 硬件上获得与 Linux 为 Intel 和 AMD 的硬件提供的的体验,即一些开箱即用的功能
开源还意味着 Linux 发行版可以第一时间支持新的 NVIDIA 芯片,一个高性能的 NVidia 开源 Mesa 驱动程序将允许 Linux 发行版签署 NVidia 驱动程序和内核的其他部分,以实现安全重启等功能。
由于第一个开源驱动版本 R515 是针对计算 GPU 的,所以可以预期这些选项也将首先为计算用户提供,然后再为显卡用户提供。
下一步是什么?
NVidia 需要继续努力完成这个新的驱动程序功能,无论是计算还是图形显示用例。而 Linux 社区和 NVIDIA 需要共同为未来的统一内核驱动程序制定一个计划,并围绕它制定一个适用于它的模型。无论是 Linux 社区还是 NVidia,都需要添加 Mesa Vulkan 驱动程序之类的东西,类似于为 AMD 提供 RADV 的方式。