I couldn't build my cuda program because of #include <cuda/std/variant>
:
$ cmake ..
$ make -j4
cuda-hello-world/main.cu:1:10: fatal error: cuda/std/variant: No such file or directory
1 | #include <cuda/std/variant>
| ^~~~~~~~~~~~~~~~~~
It works perfectly without that include.
And I do have file variant
in my system: /usr/include/cuda/std/detail/libcxx/include/variant
How do I fix this compilation bug to use variant
?
I'm using RTX 4050 on a laptop running Ubuntu. The driver version is Driver Version: 550.144.03
according to nvidia-smi
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Jan__6_16:45:21_PST_2023
Cuda compilation tools, release 12.0, V12.0.140
Build cuda_12.0.r12.0/compiler.32267302_0
// main.cu
#include <cuda/std/variant>
int main() {
return 0;
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.24)
set(CMAKE_CUDA_ARCHITECTURES "native")
project(cuda_hello_world CUDA)
set(CMAKE_CUDA_STANDARD 17)
message("CUDA compiler: ${CMAKE_CUDA_COMPILER}")
add_executable(cuda_hello_world main.cu)
set_target_properties(
cuda_hello_world PROPERTIES
CUDA_ARCHITECTURES native
CUDA_SEPARABLE_COMPILATION ON
)
$ apt list --installed | grep nvidia
libnvidia-cfg1-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-common-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 all [installed,automatic]
libnvidia-compute-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-decode-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-egl-wayland1/noble,now 1:1.1.13-1build1 amd64 [installed,automatic]
libnvidia-encode-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-extra-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-fbc1-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-gl-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
libnvidia-ml-dev/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
linux-modules-nvidia-550-6.11.0-24-generic/noble-security,now 6.11.0-24.24~24.04.1+1 amd64 [installed,automatic]
linux-modules-nvidia-550-6.11.0-25-generic/noble-security,now 6.11.0-25.25~24.04.1+1 amd64 [installed,automatic]
linux-modules-nvidia-550-generic-hwe-24.04/noble-security,now 6.11.0-25.25~24.04.1+1 amd64 [installed]
linux-objects-nvidia-550-6.11.0-24-generic/noble-security,now 6.11.0-24.24~24.04.1+1 amd64 [installed,automatic]
linux-objects-nvidia-550-6.11.0-25-generic/noble-security,now 6.11.0-25.25~24.04.1+1 amd64 [installed,automatic]
linux-signatures-nvidia-6.11.0-24-generic/noble-security,now 6.11.0-24.24~24.04.1+1 amd64 [installed,automatic]
linux-signatures-nvidia-6.11.0-25-generic/noble-security,now 6.11.0-25.25~24.04.1+1 amd64 [installed,automatic]
nvidia-compute-utils-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
nvidia-cuda-dev/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
nvidia-cuda-gdb/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
nvidia-cuda-toolkit-doc/noble,now 12.0.1-4build4 all [installed,automatic]
nvidia-cuda-toolkit/noble,now 12.0.140~12.0.1-4build4 amd64 [installed]
nvidia-driver-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed]
nvidia-firmware-550-550.144.03/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
nvidia-kernel-common-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
nvidia-kernel-source-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
nvidia-opencl-dev/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
nvidia-prime/noble,now 0.8.17.2 all [installed,automatic]
nvidia-profiler/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
nvidia-settings/noble,now 510.47.03-0ubuntu4 amd64 [installed,automatic]
nvidia-utils-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
nvidia-visual-profiler/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
xserver-xorg-video-nvidia-550/noble-security,now 550.144.03-0ubuntu0.24.04.1 amd64 [installed,automatic]
You have CUDA version 12.0, this does not support the full set of cuda/std/goodness
. Download the lastest version from:
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu
First, uninstall the old cuda version using apt-get remove
, see here for instructions: How to remove cuda completely from ubuntu?
Then, on the menu in the linked page, pick your version, the oldest supported Ubuntu is 20.04, the newest 24.04.
You'll then have to copy paste the instructions, here is a sample for Ubuntu 20.04.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.9.0/local_installers/cuda-repo-ubuntu2004-12-9-local_12.9.0-575.51.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-9-local_12.9.0-575.51.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-9
Don't use this set, unless you actually have Ubuntu 20.04, but use the instructions from the above link.
After that you'll have the lastest CUDA version and you should be good to go.