英伟达下一款Linux驱动程序开源了,但又没完全开源

系统 Linux 开源
对于英伟达Grace Hopper以及英伟达Blackwell等前沿平台,您只能使用开源GPU内核模块。这些平台不支持专有驱动程序。

GPU巨头的软件仍然让人头痛,但Fedora和AMD正在努力寻求应对之策。

英伟达表示,其即将发布的560版驱动程序将与515版和555版一样开放——并将支持更多设备。

从这条最新消息来看,GPU巨头似乎正在全面拥抱开源GPU内核模块。

但事实上,英伟达此举是对2022年图形驱动程序开源计划的延续。根据当时的相关报道,有观察人士发现其并不像宣传中的那么开放(详情请参阅文末脚注)。首先明确一点,我们并不是在贬低英伟达的开源举措,只不过……英伟达当时曾有所保留,而如今依然有所保留。

该公司最新公告强调称,他们将继续推进此项计划并扩大支持范围。2023年,英伟达增加了对新款Turing硬件的支持。如今,该公司在声明中表示:

对于英伟达Grace Hopper以及英伟达Blackwell等前沿平台,您只能使用开源GPU内核模块。这些平台不支持专有驱动程序。

而对于隶属于Turing、Ampere、Ada Lovelace或者Hopper架构的较新GPU,英伟达建议您切换至开源GPU内核模块。

如果大家使用的是较旧的GPU或者混合应用场景,则将别无选择,只能继续使用单体专有驱动程序。而即使您使用的是受到开源支持的现代GPU,也仍然摆脱不了固件BLOB。

各Linux发行版如何处理这个问题

这对支持UEFI安全启动的Linux发行版们来说明显是个问题,此机制要求对内核进行加密签名。Ubuntu直接包含驱动程序以及配套安装工具,所以情况相对简单。

但Fedora并不包含英伟达驱动程序等专有元素,甚至根本不在GNOME软件应用商店中提供相关选项。这是个长期存在的老问题了,但也许很快就能得到解决。

在新的变更提案中,Fedora将为用户添加一个自行签署模块的选项。此项变更仍在讨论当中,但如果顺利获批,则有望在Fedora 41中尽快落地。

将CUDA从英伟达手中解放出来

除了拥有高端显卡的游戏玩家以外,英伟达GPU的另一个重要用途,就是把计算任务由GPU芯片接管过来。这种并行处理方式能够极大发挥现代GPU的计算能力。英伟达方面称之为CUDA,全名叫做计算统一设备架构(compute unified device architecture),但如今人们普遍使用GPGPU计算来表达。

问题在于,如果我们面向CUDA编写代码,那么它就只能在使用英伟达驱动程序的英伟达芯片上运行。举例来说,大家无法使用全FOSS Nouveau驱动程序运行CUDA代码。

AMD也有自己的类似GPGPU软件栈,名为ROCm,它允许用户将数字运算转移到AMD GPU上……但同样的,如果面向ROCm编写代码,那它也无法在英伟达平台上运行。如果想要保持跨GPU可移植性,AMD方面也提供Hip替代方案,即异构计算可移植性接口。但需要注意的是,并非所有功能都受到支持,例如内联PTX汇编语言就无法起效。

如今,新的独立竞争者也加入战团:来自Spectral Compute的SCALE语言。项目文档提到:

SCALE是一套GPGPU编程工具包,允许CUDA应用程序面向AMD GPU进行本地编译。

SCALE不需要修改CUDA程序或其构建系统。

SCALE确实能支持内联PTX汇编,该项目还提供了与同类竞争技术的效果比较,包括AMD HIP和FOSS ZLUDA工具。

除此之外,还有其他产品可以实现供应商中立的GPGPU计算。OpenCL标准自2008年起就已存在,并于2020年迎来3.0版本。预计今年晚些时候,还将有名为UXL的新竞争对手参与进来。

不过,这一切都无法阻止英伟达拿下令人印象深刻的3万亿美元市场估值。在我们看来,能提升这一领域的竞争烈度肯定是件好事。

脚注:多开放才算真“开放”?

整天嚷嚷着开源驱动程序,并不代表英伟达的整个驱动程序栈现在都已经转向开源。人家根本不开源。只能说与Linux操作系统相交互的部分是开源的,而这是英伟达将代码中的专有部分集中在一个几MB的“固件”文件内实现的——毫无疑问,这个文件仍然保持闭源、秘不示人。

在发布515驱动程序时,Asahi Linux项目负责人Hector Martin专门查看了英伟达公开了多少代码可供研究。在现已删除的Twitter账户上,他公布了如下发现:

就是说英伟达“发布”了他们的开源内核驱动程序。

但更准确地讲,他们只是把大部分代码转移到了固件当中,再让开源驱动程序调用该固件。据我所知,这个34 MB大小的固件中实现了近900个函数。

博通直呼内行……

简单比较,苹果的GPU固件约为400 KB。哪怕同样是疯狂与混乱RPC复合体的苹果显示控制器,大小也只有7 MB左右,而且其中大部分是数据表(代码部分只占约1.5 MB)。

千万别误会我的意思,内核里blob少一点其实是好事……但英伟达并没有像他们嘴上说的那样开源自家“驱动程序”。

至少他们的内核端代码可是有“区区”58 MB。AMD在这方面仍然遥遥领先,他们用某种方法成功把近300 MB的自动生成内容塞进了上游Linux内核树当中……

这种在大型软件项目中留黑箱的作法近年越来越常见。根据2022年时的相关报道:人们对专有固件BLOB范围不断扩大的趋势感到担忧。这种状况影响深远,甚至逼迫Debian项目改变了其延续30年的政策,从Debian 12开始引入专有固件。

责任编辑:庞桂玉 来源: 至顶网
相关推荐

2023-05-29 10:39:51

开源模型

2021-07-09 05:56:28

云计算IaaS公有云

2021-11-17 16:20:49

Linux 系统 树莓派

2022-05-13 09:14:47

NVidia开源Linux

2020-12-10 10:00:59

监控Java可视化

2022-05-23 13:17:32

Linux开源NVIDIA

2022-02-23 14:21:20

Chrome插件浏览器

2024-08-16 08:31:05

2021-07-23 16:50:19

httpJava框架

2022-05-12 13:09:18

Linux英伟达开源

2023-01-09 15:11:23

LinuxVulkan X11

2022-06-22 10:13:05

开源驱动程序

2016-02-15 11:44:23

源码开源项目watch

2020-12-18 08:38:22

开源前端mitojs

2022-04-14 11:09:17

开源项目搜索

2022-09-24 19:44:14

AMD开源

2020-10-13 10:26:54

DrawingLinux桌面应用

2015-09-28 09:56:17

Github开源工具编程

2023-08-07 15:46:48

Anytype开源

2021-06-09 09:52:29

开源Pyroscope代码
点赞
收藏

51CTO技术栈公众号