GNOME software integration
The Nvidia driver repository has been updated with AppStream metadata. From Fedora 25 onward, you will be able to search for Nvidia, CUDA, GeForce or Quadro to make the driver, control panel and other programs appear in the Gnome Software window.
As far as I know, this should be enabled by default on Fedora 25.
Thanks to Richard Hughes for helping out with the metadata.
I require proper 16:10 aspect ratio pictures for both NSight and the Visual Profiler running on Fedora, so if you want to contribute just drop me an email or open an issue on the CUDA package on GitHub.
Changes to the Nvidia driver packaging
The Nvidia driver can now be installed without
nvidia-settings (the control panel utility) as requested by Red Hat, in preparation for the Gnome software integration. This means the dependencies have been reversed, and that to install the driver and the control panel you need to install
nvidia-settings or the driver and
dnf/yum -y install nvidia-settings kernel-devel
libglvnd package has been updated to the latest snapshot and now features all the changes that have been introduced by Adam Jackson for the Mesa GLVND integration in Fedora 25. This means that while installing you will be prompted to install/upgrade smaller packages that contain a subset of the
libglvnd libraries, this includes EGL support for the recently released beta drivers version 375.10. For anything lower than 375.10 (so Fedora 23-24 and CentOS/RHEL 6/7 at the moment of writing this) Nvidia’s last official note on EGL is:
“libEGL.so.1, while not a proper GLVND library, depends upon the GLVND infrastructure for proper functionality. Therefore, any driver package which aims to support NVIDIA EGL must provide the GLVND libraries […]”
So for now, in Fedora 23, 24 and CentOS/RHEL 6/7:
$ rpm -q --requires nvidia-driver-libs.x86_64 | grep libglvnd libglvnd-gles(x86-64) >= 0.1.1 libglvnd-glx(x86-64) >= 0.1.1 libglvnd-opengl(x86-64) >= 0.1.1 $ rpm -q --conflicts nvidia-driver-libs.x86_64 | grep libglvnd libglvnd-egl(x86-64) >= 0.1.1
And for Fedora 25:
$ rpm -q --requires nvidia-driver-libs.x86_64 | grep libglvnd libglvnd-egl(x86-64) >= 0.2 libglvnd-gles(x86-64) >= 0.2 libglvnd-glx(x86-64) >= 0.2 libglvnd-opengl(x86-64) >= 0.2
Not a big deal. This accommodates the ongoing modularization in Mesa but still preserves the original EGL libraries from Nvidia. The upgrade should be transparent and you should not notice any difference except some smaller packages being installed.
Vulkan is now part of Fedora, so on supported Fedora releases, the Vulkan loader and libraries can be installed and you do not need to do anything to enable support in the drivers. CentOS and Red Hat Enterprise Linux do not have Vulkan yet. I’m not sure if it’s worth installing it by default along with the drivers, though.
Let’s assume you have a freshly installed Fedora 25 system with a recent Nvidia GPU and you want to:
- Install the driver for gaming
- Play Vulkan enabled games
- Want to be comfortable with the control panel
- Play 32 bit games on a 64 bit system
- Play 32 bit Vulkan games on a 64 bit system
$ sudo dnf install nvidia-settings kernel-devel dkms-nvidia vulkan.i686 nvidia-driver-libs.i686 Last metadata expiration check: 0:33:49 ago on Mon Oct 24 14:14:30 2016. Dependencies resolved. ===================================================================================== Package Arch Version Repository Size ===================================================================================== Installing: dkms-nvidia x86_64 2:375.10-1.fc25 fedora-nvidia 6.4 M libglvnd i686 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 103 k libglvnd x86_64 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 105 k libglvnd-egl i686 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 44 k libglvnd-egl x86_64 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 42 k libglvnd-gles i686 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 29 k libglvnd-gles x86_64 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 28 k libglvnd-glx i686 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 114 k libglvnd-glx x86_64 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 110 k libglvnd-opengl i686 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 39 k libglvnd-opengl x86_64 1:0.2.999-4.20161025git28867bb.fc25 fedora-nvidia 38 k libva-vdpau-driver x86_64 0.7.4-14.fc24 fedora 61 k libvdpau i686 1.1.1-3.fc24 fedora 35 k nvidia-driver x86_64 2:375.10-3.fc25 fedora-nvidia 3.1 M nvidia-driver-NVML x86_64 2:375.10-3.fc25 fedora-nvidia 397 k nvidia-driver-libs i686 2:375.10-3.fc25 fedora-nvidia 15 M nvidia-driver-libs x86_64 2:375.10-3.fc25 fedora-nvidia 14 M nvidia-libXNVCtrl x86_64 2:375.10-1.fc25 fedora-nvidia 26 k nvidia-settings x86_64 2:375.10-1.fc25 fedora-nvidia 935 k vulkan i686 184.108.40.206-1.fc25 updates-testing 1.5 M vulkan-filesystem noarch 220.127.116.11-1.fc25 updates-testing 8.0 k Transaction Summary ===================================================================================== Install 21 Packages Total download size: 42 M Installed size: 178 M Is this ok [y/N]:
Note that the requirement on
kernel-devel is still required as otherwise the package
kernel-debug-devel is pulled in automatically in place of the normal non-debug package. There is bug opened on dnf/libsolv for this.
Changes to CUDA packaging
The CUDA packages hosted on the Nvidia repository are split into multiple subpackages, based on the library. For each library, you have the corresponding devel subpackage with the headers, the unversioned library symlink and the static library. Here, they were divided in one libs, one big extra-libs, one static and one devel subpackage for everything. Since I’m planning to enable CUDA/NVCUVID encoding/decoding in FFmpeg (I’m actually waiting to the dynamic loader patches to land in the 3.2 branch before enabling that) there should be a way to install just what is required by those functions and not the whole CUDA toolkit set of libraries.
So now, all the libraries are split into subpackages, much like in the original Nvidia CUDA repository. This allows you to install and build software relying on specific components without the need to install all the CUDA toolkit just to satisfy a library dependency. With the new packaging organization, the original
cuda-extra-libs will pull in all the specific subpackages giving you the same situation you are accustomed to. Also, for the same reason, static libraries have been included in each respective
Example, just with the basic tools:
$ sudo dnf install cuda Last metadata expiration check: 0:00:20 ago on Sun Oct 23 13:11:01 2016. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cuda x86_64 1:8.0.44-4.fc24 fedora-nvidia 95 M cuda-cufft x86_64 1:8.0.44-4.fc24 fedora-nvidia 97 M cuda-curand x86_64 1:8.0.44-4.fc24 fedora-nvidia 38 M cuda-libs x86_64 1:8.0.44-4.fc24 fedora-nvidia 6.4 M Transaction Summary ================================================================================ Install 4 Packages Total size: 236 M Installed size: 469 M Is this ok [y/N]:
The basic tools along with all the libraries (note that the NVML headers are included):
$ sudo dnf install cuda-devel Last metadata expiration check: 0:10:00 ago on Sun Oct 23 13:11:01 2016. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cuda x86_64 1:8.0.44-4.fc24 fedora-nvidia 95 M cuda-cublas x86_64 1:8.0.44-4.fc24 fedora-nvidia 21 M cuda-cublas-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 38 M cuda-cudart x86_64 1:8.0.44-4.fc24 fedora-nvidia 131 k cuda-cudart-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 659 k cuda-cufft x86_64 1:8.0.44-4.fc24 fedora-nvidia 97 M cuda-cufft-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 73 M cuda-cupti x86_64 1:8.0.44-4.fc24 fedora-nvidia 1.2 M cuda-cupti-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 213 k cuda-curand x86_64 1:8.0.44-4.fc24 fedora-nvidia 38 M cuda-curand-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 60 M cuda-cusolver x86_64 1:8.0.44-4.fc24 fedora-nvidia 23 M cuda-cusolver-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 4.1 M cuda-cusparse x86_64 1:8.0.44-4.fc24 fedora-nvidia 23 M cuda-cusparse-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 23 M cuda-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 1.6 M cuda-libs x86_64 1:8.0.44-4.fc24 fedora-nvidia 6.4 M cuda-npp x86_64 1:8.0.44-4.fc24 fedora-nvidia 91 M cuda-npp-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 47 M cuda-nvgraph x86_64 1:8.0.44-4.fc24 fedora-nvidia 4.6 M cuda-nvgraph-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 12 k cuda-nvml-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 41 k cuda-nvrtc x86_64 1:8.0.44-4.fc24 fedora-nvidia 6.6 M cuda-nvrtc-devel x86_64 1:8.0.44-4.fc24 fedora-nvidia 16 k Transaction Summary ================================================================================ Install 24 Packages Total size: 655 M Installed size: 1.4 G Is this ok [y/N]:
nvidia-driver-NVML-devel package, which was including the NVML header (for
libnvidia-ml.so) has now been made obsolete by the new headers, which are now part of CUDA 8. So the
cuda-nvml-devel package will take care of that. Again, this is the same as in the Nvidia repository. Everything that was requiring the NVML header now refers to that package instead of the previous one. I will leave it for a few releases like that and then I will remove the
Obsolete/Provides tags from the various SPEC files.
The header is also required for building the latest
nvidia-settings from the 375.10 source, this has been taken into account making the CUDA package buildable on i686 but generating only the
In addition to the libraries bundled in the CUDA toolkit, also the cuDNN library for distributed neural networks is included in the repository.
As usual, you are welcome to open bugs / request stuff / comment on the GitHub repositories.