英伟达下一款驱动程序开源了,但又没完全开源
GPU巨头的软件仍然让人头痛,但Fedora和AMD正在努力寻求应对之策。
英伟达表示,其即将发布的560版驱动程序将与515版和555版一样开放——并将支持更多设备。
从这条最新消息来看,GPU巨头似乎正在全面拥抱开源GPU内核模块。
但事实上,英伟达此举是对2022年图形驱动程序开源计划的延续。根据当时的相关报道,有观察人士发现其并不像宣传中的那么开放(详情请参阅文末脚注)。首先明确一点,我们并不是在贬低英伟达的开源举措,只不过……英伟达当时曾有所保留,而如今依然有所保留。
该公司最新公告强调称,他们将继续推进此项计划并扩大支持范围。2023年,英伟达下一款驱动程序开源了,但又没完全开源英伟达增加了对新款Turing硬件的支持。如今,该公司在声明中表示:
对于英伟达GraceHopper以及英伟达Blackwell等前沿平台,您只能使用开源GPU内核模块。这些平台不支持专有驱动程序。
而对于隶属于Turing、Ampere、AdaLovelace或者Hopper架构的较新GPU,英伟达建议您切换至开源GPU内核模块。
如果大家使用的是较旧的GPU或者混合应用场景,则将别无选择,只能继续使用单体专有驱动程序。而即使您使用的是受到开源支持的现代GPU,也仍然摆脱不了固件BLOB。
各Linux发行版如何处理这个问题
这对支持UEFI安全启动的Linux发行版们来说明显是个问题,此机制要求对内核进行加密签名。Ubuntu直接包含驱动程序以及配套安装工具,所以情况相对简单。
但Fedora并不包含英伟达驱动程序等专有元素,甚至根本不在GNOME软件应用商店中提供相关选项。这是个长期存在的老问题了,但也许很快就能得到解决。
在新的变更提案中,Fedora将为用户添加一个自行签署模块的选项。此项变更仍在讨论当中,但如果顺利获批,则有望在Fedora41中尽快落地。
将CUDA从英伟达手中解放出来
除了拥有高端显卡的游戏玩家以外,英伟达GPU的另一个重要用途,就是把计算任务由GPU芯片接管过来。这种并行处理方式能够极大发挥现代GPU的计算能力。英伟达方面称之为CUDA,全名叫做计算统一设备架构(computeunifieddevicearchitecture),但如今人们普遍使用GPGPU计算来表达。
问题在于,如果我们面向CUDA编写代码,那么它就只能在使用英伟达驱动程序的英伟达芯片上运行。举例来说,大家无法使用全FOSSNouveau驱动程序运行CUDA代码。
AMD也有自己的类似GPGPU软件栈,名为ROCm,它允许用户将数字运算转移到AMDGPU上……但同样的,如果面向ROCm编写代码,那它也无法在英伟达平台上运行。如果想要保持跨GPU可移植性,AMD方面也提供Hip替代方案,即异构计算可移植性接口。但需要注意的是,并非所有功能都受到支持,例如内联PTX汇编语言就无法起效。
如今,新的独立竞争者也加入战团:来自SpectralCompute的SCALE语言。项目文档提到:
SCALE是一套GPGPU编程工具包,允许CUDA应用程序面向AMDGPU进行本地编译。
SCALE不需要修改CUDA程序或其构建系统。
SCALE确实能支持内联PTX汇编,该项目还提供了与同类竞争技术的效果比较,包括AMDHIP和FOSSZLUDA工具。
除此之外,还有其他产品可以实现供应商中立的GPGPU计算。OpenCL标准自2008年起就已存在,并于2020年迎来3.0版本。预计今年晚些时候,还将有名为UXL的新竞争对手参与进来。
不过,这一切都无法阻止英伟达拿下令人印象深刻的3万亿美元市场估值。在我们看来,能提升这一领域的竞争烈度肯定是件好事。
脚注:多开放才算真“开放”?
整天嚷嚷着开源驱动程序,并不代表英伟达的整个驱动程序栈现在都已经转向开源。人家根本不开源。只能说与Linux操作系统相交互的部分是开源的,而这是英伟达将代码中的专有部分集中在一个几MB的“固件”文件内实现的——毫无疑问,这个文件仍然保持闭源、秘不示人。
在发布515驱动程序时,AsahiLinux项目负责人HectorMartin专门查看了英伟达公开了多少代码可供研究。在现已删除的Twitter账户上,他公布了如下发现:
就是说英伟达“发布”了他们的开源内核驱动程序。
但更准确地讲,他们只是把大部分代码转移到了固件当中,再让开源驱动程序调用该固件。据我所知,这个34MB大小的固件中实现了近900个函数。
博通直呼内行……
简单比较,苹果的GPU固件约为400KB。哪怕同样是疯狂与混乱RPC复合体的苹果显示控制器,大小也只有7MB左右,而且其中大部分是数据表(代码部分只占约1.5MB)。
千万别误会我的意思,内核里blob少一点其实是好事……但英伟达并没有像他们嘴上说的那样开源自家“驱动程序”。
至少他们的内核端代码可是有“区区”58MB。AMD在这方面仍然遥遥领先,他们用某种方法成功把近300MB的自动生成内容塞进了上游Linux内核树当中……
这种在大型软件项目中留黑箱的作法近年越来越常见。根据2022年时的相关报道:人们对专有固件BLOB范围不断扩大的趋势感到担忧。这种状况影响深远,甚至逼迫Debian项目改变了其延续30年的政策,从Debian12开始引入专有固件。