$ lspci | grep VGA
VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
$ uname -m && cat /etc/*release
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
Where x86_64
means that it is a 64-bit version of the x86 instruction.
$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
You usually don't have to worry about the gcc version; the default logic comes with your OS and should function without a problem. Ubuntu 22.04 uses gcc-11 by default.
$ uname -r
6.5.0-28-generic
You can check your OS distribution and corresponding kernel on system-requirements.
Following the Nvidia, for Ubuntu 22.04.z (z <= 3) LTS
, the support kernel should be 6.2.0-26
and the gcc version should be 11.4.0
.
To switch the kernel version, follow the instructions provided in this article: how to change kernel
First and the foremost, prioritize the installation of the latest or higher version of the CUDA driver, as it typically maintains backward compatibility.
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
sudo sh cuda_12.4.1_550.54.15_linux.run
- You would probably run into X server issue, check out this article to solve it.
- You would probably run into nouveau issue, check out this article to solve it.
Do not choose nvidia-fs if your GPU is not supported.
┌──────────────────────────────────────────────────────────────────────────────┐
│ CUDA Installer │
│ - [X] Driver │
│ [X] 550.54.15 │
│ + [X] CUDA Toolkit 12.4 │
│ [X] CUDA Demo Suite 12.4 │
│ [X] CUDA Documentation 12.4 │
│ - [] Kernel Objects │
│ [] nvidia-fs │
│ Options │
│ Install │
│ │
│ Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options │
└──────────────────────────────────────────────────────────────────────────────┘
Add three lines in /home/{username}/.bashrc
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
Install the CUDA toolkit only
┌──────────────────────────────────────────────────────────────────────────────┐
│ CUDA Installer │
│ - [] Driver │
│ [] 5xx.xx.xx │
│ + [X] CUDA Toolkit 11.8 │
│ [] CUDA Demo Suite 11.8 │
│ [] CUDA Documentation 11.8 │
│ - [] Kernel Objects │
│ [] nvidia-fs │
│ Options │
│ Install │
│ │
│ Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options │
We use environment modules to simply the shell initiallization for dual CUDA toolkits.
sudo apt-get update
sudo apt-get install environment-modules
echo -e "source /usr/share/modules/init/profile.sh" >> ~/.bashrc
source ~/.bashrc
It is not recommand to overwrite your system's /etc/profile.d/modules.sh
by apt-installed third-party package configuration
Run this init_two_cuda_modules.sh as follows:
bash init_two_cuda_modules.sh {cuda_default_version} {cuda_another_version}
For example, if you want cuda-12.4 as default and cuda-11.8 as an alternative:
bash init_two_cuda_modules.sh 12.4 11.8
This script will automatically generate the required module configurations for you.
Unload the current module first before you load the other module.
module unload cuda/12.4
module load cuda/11.8