“英伟达是我们遇见的硬件厂商中最麻烦的一个。”这是Linux内核总设计师LinusTorvalds六年前说过的一句原话。
当时,Linus正在荷兰鹿特丹阿尔托学院举行的中学生和开发者研讨会议上接受专访。
在会上,一位现场听众称其买过一款搭载了集成主板以及NVIDIA独立显存的电脑笔记本,并且在Linux下通过NVIDIAOptimus技术进行独立显存与集成主板之间的切换却得不到驱动的支持(NVIDIAOptimus是英伟达开发的双主板切换技术,它可以实现电脑笔记本中独立显存与显卡外置主板之间无缝、自动、实时的切换),并就此寻问Linus的看法。就是在这些语境下,Linus说出了前面那句话,之后转向摄像机镜头竖起了手指并爆了脏话。
作为开源操作系统Linux之父,Linus仍然是开源的忠实拥护者,他仍然希望英伟达才能开源她们的驱动。现在linux内核驱动api手册,这三天真的来了。
就在明天,英伟达宣布,她们开源了自己的GPU内核驱动模块,此事在开发者社区造成风靡。
有人评价说,“这是近六年来开源操作系统硬件支持方面发生的最大风波之一。”
还有人戏称,这是一个“活久见”时刻。
此次开源使用双GPL/MIT许可,从R515驱动程序版本开始。开发者们可以在GitHub上的NVIDIAOpenGPUKernelModulesrepo中找到这种内核模块的源代码。
英伟达表示,这次开源将急剧提高用户在Linux系统中使用英伟达GPU的体验,可使其更紧密地与操作系统集成,有利于开发人员的调试、集成和反馈。对于Linux发行版提供商,开源的内核模块降低了易用性,还改善了开箱即用的用户体验,以订立和分发NVIDIAGPU驱动程序。Canonical和SUSE就能立刻将这种开源的内核模块与Ubuntu和SUSELinuxEnterpriseDistributions打包在一起。
开发人员可以跟踪代码路径linux 电子书,了解内核风波调度怎样与她们的工作负载交互,便于更快地进行症结调试。据悉,企业软件开发人员如今可以将该驱动无缝集成到为她们的项目订制的Linux内核中。这将进一步提升NVIDIAGPU驱动的质量和安全性,并得到Linux终端用户社区的反馈。
支持的功能
这次GPU内核模块发布的第一个版本是R515,不仅公布源代码之外,该版本还提供了驱动程序的完整重构和打包版本。对于NVIDIATuring、NVIDIAAmpere构架系列中的数据中心GPU来说,这种代码可用于生产。这得益于过去一年英伟达分阶段推出的GSP驱动程序构架,借以让英伟达的顾客轻松过渡。研制团队专注于测试各类工作负载,以确保与专有内核模式驱动程序的功能和性能相同。
未来,HMM等功能将成为NVIDIAHopper构架上绝密估算的基础组件。
英伟达此次的开源版本对GeForce和WorkstationGPU的支持度很高。GeForce和Workstation用户可以在NVIDIATuring、NVIDIAAmpere构架GPU上使用此驱动程序来运行Linux桌面,并在Vulkan和NVIDIAOptiX中使用多显示器、G-SYNC和NVIDIARTX光线追踪等功能。用户可以选择使用文档中突出显示的内核模块参数NVreg_EnableUnsupportedGpus。更强悍、功能更全的GeForce和工作站支持将在后续版本中发布,英伟达开源内核模块将最终代替闭源驱动程序。
拥有Turing和AmpereGPU的顾客可以自主选择安装什么模块。而使用Turing之前硬件的顾客将继续运行闭源模块。
开源内核模式驱动程序使用相同的固件和相同的用户模式堆栈,比如CUDA、OpenGL和Vulkan。并且,驱动程序堆栈的所有组件都必须与发行版中的版本相匹配。比如,用户不能使用曾经或未来版本的用户模式堆栈发布源代码、构建或运行它。
为何英伟达的开源驱动对Linux这么重要?
在英伟达宣布开源后不久,开源解决方案供应商RedHat的桌面中级总监ChristianF.K.Schaller发表了篇题为《WhyistheopensourcedriverreleasefromNVidiasoimportantforLinux?》的博客文章,深入剖析了英伟达这次开源对Linux的影响,我们来瞧瞧他是如何说的。
新驱动包含哪些?
英伟达这次发布的是源代码树外内核驱动程序,该驱动程序经过测试可支持数据中心GPU上的CUDA用例。其中富含支持显示的代码,但仍未完成测试。据悉,这只是内核部份,现代图形驱动程序的很大一部份才能在固件和用户空间组件中找到,但它们仍是闭源的。
不过,此次开源确实意味着NVidia早已发布了一个才能使用Linux内核中GPL-onlyAPI的内核驱动程序,虽然这个初始版本不使用旧驱动程序未使用的任何API。
该驱动程序还仅支持NVidiaTuring芯片GPU及以后的更新版本arm linux,这意味着它不能用于2018年之前的GPU。因而,对于大多数Linux桌面用户来说,并不是立刻可用。
对于英伟达二补码驱动程序意味着哪些?
Turing芯片之前的英伟达GPU将继续须要英伟达的二补码内核驱动程序。在开源内核模块经过全面测试和扩充以显示用例之前,虽然用户使用的是Turing以后的GPU,也可能须要继续使用该二补码驱动程序。同样,二补码驱动程序的很大一部份可以在固件和用户空间中找到。
对于Nouveau意味着哪些?
Nouveau是当前英伟达GPU的内核内图形驱动程序。它功能完备,但因不能re-clock而未能像二补码驱动程序那样为用户提供完整的性能。
Linux内核不容许同一硬件有多个驱动程序,因而为了让新的英伟达内核驱动程序步入当前驱动程序,必须退出或起码限制一组不同的硬件,当前驱动程序就是Nouveau。
如同二补码驱动程序一样,Nouveau的很大一部份不在内核中,而是在Mesa的用户空间片断和NVidia当前发布的Nouveau特定固件中。因而,英伟达会保留Nouveau以支持Turing之前的硬件。
我们正在努力探求一种能让英伟达二补码驱动和Mesa共享内核驱动程序的方式,这可能须要几年的时间才会完全实现。我们目前预期推出一种全新的驱动程序,借以同时满足英伟达用户空间和Mesa用户空间的需求。我们也希望在此过程中与英伟达的工程师合作。
综上所述,对于开源社区来说,这意味着我们将有一个内核驱动程序和固件,容许改变GPU时钟,以提供研究者期望从英伟达主板获得的性能;意味着我们将拥有一个开源驱动程序linux内核驱动api手册,从开源第三天起我们就可以访问新一代英伟达硬件固件和内核更新;意味着我们可以开始使用Linux内核中的GPL-onlyAPI。
对于Fedora、RHEL等Linux发行版意味着哪些?
实际上,英伟达的开源GPU内核近日并不会对Fedora、RHEL等Linux发行版形成重大影响。但随着时间的推移,因为这次开源提供了一种从根本上简化英伟达硬件支持的途径。从长远来看,我们希望还能在英伟达硬件上获得与英特尔和AMD类似的体验,即开箱即用的功能。
接出来英伟达会有好多工作要做,她们须要使这个新的驱动程序在估算和图形显示应用中愈发完整,我们须要做的是,共同努力为未来统一内核驱动程序制订一个计划,并围绕该计划拟定一个适用于社区和英伟达的模型,比如添加MesaVulkan驱动程序之类的东西。
参考链接:
文章评论