NVIDIA Releases Linux GPU Kernel Modules As Open-Source With Dual GPL/MIT License, Starting With The R515 Driver Release

This Article Is Based On The NVIDIA Article 'NVIDIA Releases Open-Source GPU Kernel Modules'. All Credit For This Research Goes To The Researchers of This Project 👏👏👏

Please Don't Forget To Join Our ML Subreddit

So, it’s finally here. Starting with the R515 driver version, NVIDIA is making its Linux GPU kernel modules open-source under a dual GPL/MIT license. The embargo on this super-exciting milestone that many of us have been waiting to see for many years has expired, much to our delight and as a sign of the times. NVIDIA’s proprietary driver stack has provided excellent Linux driver support for two decades. Still, with AMD’s open-source driver work in its tenth year, many have called for NVIDIA to give up its drivers. Their user-space software remains closed-source, but as of today, they have fully opened up and will be supporting their Linux GPU kernel modules. Here’s the lowdown on NVIDIA’s historic open-source move.

This release represents a substantial step forward in enhancing the experience of utilizing NVIDIA GPUs in Linux, tighter connection with the OS, and developer debugging, integration, and contribution. The open-source components make it easier for Linux distribution providers to use. They also sign and distribute the NVIDIA GPU driver to improve the out-of-the-box user experience. Canonical and SUSE may package the open kernel modules right away with Ubuntu and SUSE Linux Enterprise Distributions.

According to NVIDIA, the support for GeForce and Workstation GPUs in this release is “alpha-quality,” according to NVIDIA. Users of GeForce and Workstation can use this driver to run Linux desktops on NVIDIA Turing and NVIDIA Ampere Architecture GPUs.

Nvidia’s driver package will include both the binary and open-source drivers, with the choice made during the installation process.

The GPU maker acknowledged that its driver was not ready for upstreaming into the Linux kernel but said it would collaborate with Canonical, Red Hat, and Suse to improve it.

The business stated that “in the meanwhile, public source code serves as a reference to assist enhance the Nouveau driver.”

“Nouveau can use the same firmware as the Nvidia driver, exposing numerous GPU operations like clock control and heat management, giving the in-tree Nouveau driver new functionality.”

What is covered by this NVIDIA open-source initiative? 

NVIDIA’s open kernel modules for data center GPUs are already considered “production-ready, opt-in.” The open kernel module code for GeForce and workstation GPUs is rated “alpha quality,” but it will be improved in future editions. For their data center GPU support, NVIDIA has abandoned the monolithic kernel module method in favor of an open kernel driver option (and their proprietary kernel module using the GSP). This open-source kernel driver will only work with Turing and newer GPUs. Due to its reliance on the GPU System Processor, Turing and more recent is a strict requirement. Pre-Turing GPUs must rely on existing proprietary kernel drivers and the Nouveau DRM driver.

The GPU System Processor and this new driver architecture are designed to transfer some GPU startup and administration activities to the GPU rather than the CPU. The GSP is a RISC-V-based block that replaced the Falcon microcontroller on early NVIDIA GPUs. The GSP is run-time-loaded binary-only firmware. The GSP-supported graphics processors are expressly required by the open-source kernel driver. The NVIDIA kernel driver, NVIDIA-DRM integration, NVIDIA-Modeset driver for display/mode-setting, and NVIDIA-UVM for Unified Video Memory are the kernel module components.

Differences in this new kernel driver’s features

Being an open-source kernel driver will ultimately reap certain benefits; for example, this open driver already supports DMA-BUF, unlike their proprietary driver. However, NVIDIA claims it will eventually achieve feature and performance parity with the proprietary kernel code. However, with the consumer/workstation hardware of “alpha” level support, there may be performance discrepancies and other areas for improvement until this code is mature.

Conclusion:

The support for GeForce and Workstation GPUs in this release is “alpha-quality.” Users of GeForce and Workstation can use this driver to run Linux desktops on NVIDIA Turing and NVIDIA Ampere Architecture GPUs. Users may trace through code pathways for faster root-cause debugging and understand how kernel event scheduling interacts with their workload. Furthermore, corporate software developers may simply integrate the driver into their project’s customized Linux kernel.

Github: https://github.com/NVIDIA/open-gpu-kernel-modules

References:

  • https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/
  • https://80.lv/articles/nvidia-released-open-source-linux-gpu-kernel-modules/