5406
Comment:
|
7252
|
Deletions are marked like this. | Additions are marked like this. |
Line 13: | Line 13: |
* RHEL/CentOS 8/Fedora {{{ sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo sudo dnf clean all sudo dnf module disable nvidia-driver sudo dnf -y install cuda }}} |
|
Line 14: | Line 20: |
sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.1.105-1.x86_64.rpm | sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all |
Line 18: | Line 25: |
sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.1.105-1.x86_64.rpm | sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-rhel6.repo sudo yum clean all |
Line 20: | Line 28: |
}}} * Fedora 29 (and later) {{{ sudo dnf install https://developer.download.nvidia.com/compute/cuda/repos/fedora29/x86_64/cuda-repo-fedora29-10.1.105-1.x86_64.rpm sudo dnf install cuda |
|
Line 31: | Line 35: |
* RHEL/CentOS 8 / Fedora {{{ sudo dnf install https://developer.download.nvidia.com/compute/machine-learning/repos/rhel8/x86_64/nvidia-machine-learning-repo-rhel8-1.0.0-1.x86_64.rpm sudo dnf install libcudnn7 libcudnn7-devel libnccl libnccl-devel }}} |
|
Line 33: | Line 43: |
sudo yum install libcudnn7 libcudnn7-dev }}} * Fedora {{{ sudo dnf install https://developer.download.nvidia.com/compute/machine-learning/repos/rhel7/x86_64/nvidia-machine-learning-repo-rhel7-1.0.0-1.x86_64.rpm sudo dnf install libcudnn7 libcudnn7-dev |
sudo yum install libcudnn7 libcudnn7-devel libnccl libnccl-devel |
Line 42: | Line 47: |
=== TensorRT repository === You can download the TensorRT component using the appropriate version from https://developer.nvidia.com/nvidia-tensorrt-download This requires to login with the NVIDIA CUDA program subscription. |
|
Line 43: | Line 55: |
This repository contains a legacy version of CUDA 6.5 that will works with the NVIDIA 340xx serie | This repository contains a legacy version of CUDA 6.5 that will works with the NVIDIA 340xx series |
Line 63: | Line 75: |
* Tweak the /usr/local/cuda-9.2/targets/x86_64-linux/include/host_defines.h to accept the Fedora default compiler. (Not recommended). | Install an older gcc for dedicated for CUDA from COPR (Recommended on Fedora). |
Line 65: | Line 77: |
* Install the appropriate gcc version from developper toolset. It will install in parallel. Please see https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/ | * GCC9 Works for Fedora 32 and later (default to GCC10) and compatible with cuda-11 |
Line 68: | Line 80: |
sudo dnf install http://centos.mirrors.ovh.net/ftp.centos.org/7/extras/x86_64/Packages/centos-release-scl-rh-2-2.el7.centos.noarch.rpm sudo dnf install http://centos.mirrors.ovh.net/ftp.centos.org/7/updates/x86_64/Packages/libgfortran4-7.2.1-1.2.1.el7_5.x86_64.rpm sudo dnf install devtoolset-7-toolchain |
dnf copr enable kwizart/cuda-gcc-11 -y dnf install cuda-gcc cuda-gcc-c++ -y |
Line 72: | Line 83: |
You cannot install the whole devtoolset-7 collection, but the toolchain is enough , then each time you need to build using cuda, you start by | * GCC8 Works up to Fedora 31 for cuda-10.1 and later (up to CUDA 11) |
Line 74: | Line 86: |
scl run devtoolset-7 bash | dnf copr enable kwizart/cuda-gcc-10.1 -y dnf install cuda-gcc cuda-gcc-c++ -y }}} You will need to tell CUDA to use it instead of using the default g++ this can be done for the cuda-samples with: {{{ export HOST_COMPILER=cuda-g++ }}} * Install the appropriate gcc version from developer toolset. It will install in parallel. Please see https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/ {{{ sudo dnf install https://rpmfind.net/linux/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm sudo dnf install devtoolset-8-toolchain }}} You cannot install the whole devtoolset-8 collection, but the toolchain is enough , then each time you need to build using cuda, you start by {{{ scl run devtoolset-8 bash |
Line 76: | Line 105: |
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) Copyright (C) 2017 Free Software Foundation, Inc. |
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3) Copyright (C) 2018 Free Software Foundation, Inc. |
Line 82: | Line 111: |
gcc (GCC) 8.1.1 20180712 (Red Hat 8.1.1-5) Copyright (C) 2018 Free Software Foundation, Inc. |
gcc (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1) Copyright (C) 2019 Free Software Foundation, Inc. |
Line 88: | Line 117: |
* Tweak the /usr/local/cuda*/targets/x86_64-linux/include/crt/host_defines.h to accept the Fedora default compiler. (Not recommended - not always working). |
|
Line 89: | Line 120: |
Both "CUDA" and "RPM Fusion" repositories provide the nvidia driver packages. Usually, the package provided by RPM Fusion is higher. But in case you want to avoid the risk, add this: | Both "CUDA" and "RPM Fusion" repositories provide the nvidia driver packages. Unfortunately, the packaging method is way too different and can conflicts. We recommends to use the publicly and community based packaging method (RPM Fusion) and avoid the NVIDIA packaged nvidia-driver. From time to time, NVIDIA uses non-publictly released driver, so you will have to wait for a public driver for the RPM Fusion counterpart... With current RHEL8 repositories, the nvidia-driver is packaged as a module. So it's easy to disable with: {{{ sudo dnf module disable nvidia-driver }}} |
Line 95: | Line 132: |
exclude=xorg-x11-drv-nvidia*,akmod-nvidia*,kmod-nvidia*,nvidia-driver*,nvidia-settings,nvidia-xconfig,nvidia-persistenced,cuda-nvidia-kmod-common,dkms-nvidia,nvidia-libXNVCtrl | exclude=akmod-nvidia*,kmod-nvidia*,*nvidia*,nvidia-*,cuda-nvidia-kmod-common,dkms-nvidia,nvidia-libXNVCtrl |
Line 97: | Line 134: |
=== NVIDIA driver higher in CUDA repo === Often when NVIDIA release a newer CUDA version or even in the case of pre-release software the NVIDIA driver is at a higher version than the driver provided by RPM Fusion. There is no way for us to provide a version that will match the newer CUDA requirement "ahead" of any NVIDIA public driver release. With that said, the dependencies can sometime be faked at the RPM level with: {{{ dnf download cuda-drivers rpm -Uvh cuda-drivers*.rpm --nodeps dnf update }}} Please remind to remove the cuda-drivers package when the RPM Fusion provided driver is high enough. Complain to NVIDIA for this bad behaviour, not to us. |
Contents
Installation
This Howto provides a way to install the official NVIDIA packages for CUDA.
NVIDIA official repositories
These repositories contain versions of CUDA that are parallel installables along with another version.
CUDA Toolkit
Please use the Official link: https://developer.nvidia.com/cuda-downloads
RHEL/CentOS 8/Fedora
sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo sudo dnf clean all sudo dnf module disable nvidia-driver sudo dnf -y install cuda
RHEL/CentOS 7
sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all sudo yum install cuda
RHEL/CentOS 6
sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-rhel6.repo sudo yum clean all sudo yum install cuda
Machine Learning repository
Please use the official link: https://developer.nvidia.com/nccl/nccl-download
RHEL/CentOS 8 / Fedora
sudo dnf install https://developer.download.nvidia.com/compute/machine-learning/repos/rhel8/x86_64/nvidia-machine-learning-repo-rhel8-1.0.0-1.x86_64.rpm sudo dnf install libcudnn7 libcudnn7-devel libnccl libnccl-devel
RHEL/CentOS 7
sudo yum install https://developer.download.nvidia.com/compute/machine-learning/repos/rhel7/x86_64/nvidia-machine-learning-repo-rhel7-1.0.0-1.x86_64.rpm sudo yum install libcudnn7 libcudnn7-devel libnccl libnccl-devel
TensorRT repository
You can download the TensorRT component using the appropriate version from https://developer.nvidia.com/nvidia-tensorrt-download
This requires to login with the NVIDIA CUDA program subscription.
Legacy NVIDIA 340xx/CUDA 6.5
This repository contains a legacy version of CUDA 6.5 that will works with the NVIDIA 340xx series
Please use the Official link: https://developer.nvidia.com/cuda-toolkit-65
RHEL/CentOS 6
sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-6.5-14.x86_64.rpm sudo yum install cuda
Fedora 20 (and later)
sudo yum install install http://developer.download.nvidia.com/compute/cuda/repos/fedora20/x86_64/cuda-repo-fedora20-6.5-14.x86_64.rpm sudo yum install cuda
Please verify to have a compatible compiler.
Known issues
GCC version
When using a later version of Fedora than what is supported by the NVIDIA CUDA Official repository, you might be unable to compile. You can either:
Install an older gcc for dedicated for CUDA from COPR (Recommended on Fedora).
- GCC9 Works for Fedora 32 and later (default to GCC10) and compatible with cuda-11
dnf copr enable kwizart/cuda-gcc-11 -y dnf install cuda-gcc cuda-gcc-c++ -y
- GCC8 Works up to Fedora 31 for cuda-10.1 and later (up to CUDA 11)
dnf copr enable kwizart/cuda-gcc-10.1 -y dnf install cuda-gcc cuda-gcc-c++ -y
You will need to tell CUDA to use it instead of using the default g++ this can be done for the cuda-samples with:
export HOST_COMPILER=cuda-g++
Install the appropriate gcc version from developer toolset. It will install in parallel. Please see https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/
sudo dnf install https://rpmfind.net/linux/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm sudo dnf install devtoolset-8-toolchain
You cannot install the whole devtoolset-8 collection, but the toolchain is enough , then each time you need to build using cuda, you start by
scl run devtoolset-8 bash gcc --version gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. exit gcc --version gcc (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- Tweak the /usr/local/cuda*/targets/x86_64-linux/include/crt/host_defines.h to accept the Fedora default compiler. (Not recommended - not always working).
Which driver Package
Both "CUDA" and "RPM Fusion" repositories provide the nvidia driver packages. Unfortunately, the packaging method is way too different and can conflicts. We recommends to use the publicly and community based packaging method (RPM Fusion) and avoid the NVIDIA packaged nvidia-driver. From time to time, NVIDIA uses non-publictly released driver, so you will have to wait for a public driver for the RPM Fusion counterpart...
With current RHEL8 repositories, the nvidia-driver is packaged as a module. So it's easy to disable with:
sudo dnf module disable nvidia-driver
#/etc/yum.repos.d/cuda.repo [cuda] name=cuda ... exclude=akmod-nvidia*,kmod-nvidia*,*nvidia*,nvidia-*,cuda-nvidia-kmod-common,dkms-nvidia,nvidia-libXNVCtrl
NVIDIA driver higher in CUDA repo
Often when NVIDIA release a newer CUDA version or even in the case of pre-release software the NVIDIA driver is at a higher version than the driver provided by RPM Fusion. There is no way for us to provide a version that will match the newer CUDA requirement "ahead" of any NVIDIA public driver release. With that said, the dependencies can sometime be faked at the RPM level with:
dnf download cuda-drivers rpm -Uvh cuda-drivers*.rpm --nodeps dnf update
Please remind to remove the cuda-drivers package when the RPM Fusion provided driver is high enough. Complain to NVIDIA for this bad behaviour, not to us.
NVIDIA provided libOpenCL
NVIDIA only advertise OpenCL 1.2 with the binary driver at this time. As a consequence, they provide an old version of libOpenCL.so.1 which works fine with their binary driver. As most software in Fedora and RPM Fusion are built using a newer libOpenCL, the system linker detects that and issues the following message:
/usr/local/cuda-9.2/targets/x86_64-linux/lib/libOpenCL.so.1: no version information available (required by ffmpeg)
You can either ignore the message or manually delete the libOpenCL.so.1 provided by NVIDIA (run sudo ldconfig once deleted). Please verify to not have other OpenCL providers that might interfere with NVIDIA OpenCL usage. (looking at /etc/OpenCL/vendors ).
Running blender
Even when only running blender, you need a CUDA compatible compiler as described above. This is because blender will compile the "CUDA Kernels" optimized for your own GPU. You can run blender with:
scl run devtoolset-7 blender
Once the "CUDA kernels" are compiled, you can run blender normally
References
CUDA whatsnew : https://developer.nvidia.com/cuda-toolkit/whatsnew
CUDA documentation: https://docs.nvidia.com/cuda/index.html