As outlined in yesterday’s extensive article about NVIDIA’s new open-source Linux kernel GPU driver, currently for consumer GeForce RTX GPUs the driver is considered of “alpha quality” while NVIDIA’s initial focus has been on data center GPU support. In any event with having lots of Turing/Ampere GPUs around, I’ve been trying out this new open-source Linux kernel driver on the consumer GPUs. In particular, I’ve been curious about the performance of using this open-source kernel driver relative to the default, existing closed-source kernel driver. Here are some early benchmarks.
Looking at the license information from modinfo nvidia will tell whether you are using the open-source (MIT/GPL dual licensed) driver or not.
My testing of the NVIDIA 515.43.04 beta driver while opting for the open-source kernel driver has been going well. I’ve tried several different GeForce RTX GPUs while for this article I am benchmarking with the high-end GeForce RTX 3090.
The quick primer on opting to use this open-source kernel driver with the closed-source driver components is passing the -m=kernel-open argument to the NVIDIA driver installer. This will build the open-source kernel driver for your system rather than using the default binary modules. In addition to that though, you need to set the NVreg_OpenRmEnableUnsupportedGpus=1 module option so this “alpha quality” driver will load for the consumer/workstation GPUs. With these two alterations made, the NVIDIA Turing/Ampere GPUs should successfully initialize with the open-source kernel driver build.
One additional tip is that if you normally just use “nomodeset” at the kernel command-line for preventing the Nouveau DRM driver from loading so you can gracefully use the NVIDIA proprietary driver stack, this interferes with using the open-source kernel driver. On one of my systems nomodeset was set and worked fine with the closed driver but when booting with the open driver, the screen wouldn’t light up and when SSH’ing in there were many NVRM messages around “RmInitAdapter failed” and “rm_init_adapter failed”, etc. Switching to just blacklisting the Nouveau DRM driver rather than using the nomodeset option works around that issue.
With the GeForce RTX 3090 I was quite curious to see how the performance was for this open-source kernel driver code against the closed-source driver… All while using the same OpenGL/Vulkan/OpenCL/CUDA NVIDIA 515.43.04 user-space driver components each time. Since, again, the consumer GPU support is currently considered “alpha quality” and NVIDIA acknowledging that there would be performance issues to ultimately address with this open-source kernel driver — including some power management features yet to be implemented.
So I fired up a number of Linux gaming benchmarks followed by GPU compute benchmarks for looking at the RTX 3090 difference between these two kernel driver options.