Статьи

Об использовании разных CUDA Runtime на одном компьютере под Linux

Информация, изложенная в данной статье,
не претендует на полноту,
является ознакомительной.

В некоторых случаях на компьютере требуется наличие не только самой современной версии CUDA, но и более старых пакетов, например, Runtime версии 12.6 плюс 10.2.

Установку нескольких версий CUDA toolkit лучше производить начиная с последней с помощью штатного offline инсталлятора Nvidia. Это поможет избежать появления возможных программных конфликтов.

Драйвер Nvidia также нужно ставить самый свежий, так как он практически всегда имеет обратную совместимость со старыми версиями CUDA:

Иногда перед установкой старой версии CUDA toolkit предварительно нужно установить совместимый пакет компилятора (установка разных версий gcc в ubuntu рассматривалась в статье «О компиляции ccminer в последних версиях ubuntu»).

Ошибка, возникающая при попытке инсталлировать CUDA toolkit 10.2 в xubuntu 24.04:

Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

При установке старых пакетов CUDA следует отключать все дополнительные опции, включая драйвер.

Также следует отказаться от автоматического обновления пути /usr/local/cuda symlink.

В дальнейшем при работе операционной системе нужно будет вручную указывать место, где находится тот или иной старый пакет CUDA, например, для дополнительно установленного пакета CUDA toolkit 11.7:

export PATH=/usr/local/cuda-11.7/bin:$PATH 
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH

Переключаться между разными версиями можно с помощью update-alternatives.

Для проверки наличия symlink, связанных с cuda, можно использовать команду:

ls -l /usr/local

Версии CUDA, установленные в системе, можно просмотреть командой:

sudo update-alternatives --display cuda

Изменить версию CUDA, сипользующуюся по умолчанию, можно командой:

sudo update-alternatives --config cuda

Местонахождение пакетов CUDA Toolkit, установленных в системе, также можно узнать командой

whereis cuda

Например, в xubuntu 24.04 искомые файлы находятся в каталоге:

/usr/local/cuda

Полная информация по установленным в системе компонентам CUDA Toolkit (CUDA SDK, CUDA Runtime, CUDA NVCC, CUDA OpenCL и другие), а также драйверам Nvidia находится в файле /usr/local/cuda/version.json

Например:

{

"cuda" : {

"name" : "CUDA SDK",

"version" : "12.6.1"

},

"cuda_cccl" : {

"name" : "CUDA C++ Core Compute Libraries",

"version" : "12.6.37"

},

"cuda_cudart" : {

"name" : "CUDA Runtime (cudart)",

"version" : "12.6.68"

},

"cuda_cuobjdump" : {

"name" : "cuobjdump",

"version" : "12.6.68"

},

"cuda_cupti" : {

"name" : "CUPTI",

"version" : "12.6.68"

},

"cuda_cuxxfilt" : {

"name" : "CUDA cu++ filt",

"version" : "12.6.68"

},

"cuda_demo_suite" : {

"name" : "CUDA Demo Suite",

"version" : "12.6.68"

},

"cuda_gdb" : {

"name" : "CUDA GDB",

"version" : "12.6.68"

},

"cuda_nsight" : {

"name" : "Nsight Eclipse Plugins",

"version" : "12.6.68"

},

"cuda_nvcc" : {

"name" : "CUDA NVCC",

"version" : "12.6.68"

},

"cuda_nvdisasm" : {

"name" : "CUDA nvdisasm",

"version" : "12.6.68"

},

"cuda_nvml_dev" : {

"name" : "CUDA NVML Headers",

"version" : "12.6.68"

},

"cuda_nvprof" : {

"name" : "CUDA nvprof",

"version" : "12.6.68"

},

"cuda_nvprune" : {

"name" : "CUDA nvprune",

"version" : "12.6.68"

},

"cuda_nvrtc" : {

"name" : "CUDA NVRTC",

"version" : "12.6.68"

},

"cuda_nvtx" : {

"name" : "CUDA NVTX",

"version" : "12.6.68"

},

"cuda_nvvp" : {

"name" : "CUDA NVVP",

"version" : "12.6.68"

},

"cuda_opencl" : {

"name" : "CUDA OpenCL",

"version" : "12.6.68"

},

"cuda_sanitizer_api" : {

"name" : "CUDA Compute Sanitizer API",

"version" : "12.6.68"

},

"fabricmanager" : {

"name" : "Fabric Manager",

"version" : "560.35.03"

},

"imex" : {

"name" : "Mapping GPU memory over NVLink",

"version" : "560.35.03"

},

"libcublas" : {

"name" : "CUDA cuBLAS",

"version" : "12.6.1.4"

},

"libcufft" : {

"name" : "CUDA cuFFT",

"version" : "11.2.6.59"

},

"libcufile" : {

"name" : "GPUDirect Storage (cufile)",

"version" : "1.11.1.6"

},

"libcurand" : {

"name" : "CUDA cuRAND",

"version" : "10.3.7.68"

},

"libcusolver" : {

"name" : "CUDA cuSOLVER",

"version" : "11.6.4.69"

},

"libcusparse" : {

"name" : "CUDA cuSPARSE",

"version" : "12.5.3.3"

},

"libnpp" : {

"name" : "CUDA NPP",

"version" : "12.3.1.54"

},

"libnvfatbin" : {

"name" : "Fatbin interaction library",

"version" : "12.6.68"

},

"libnvidia_nscq" : {

"name" : "NvSwitch Library",

"version" : "560.35.03"

},

"libnvjitlink" : {

"name" : "JIT Linker Library",

"version" : "12.6.68"

},

"libnvjpeg" : {

"name" : "CUDA nvJPEG",

"version" : "12.3.3.54"

},

"libnvsdm" : {

"name" : "CUDA NVSDM",

"version" : "560.35.03"

},

"nsight_compute" : {

"name" : "Nsight Compute",

"version" : "2024.3.1.2"

},

"nsight_systems" : {

"name" : "Nsight Systems",

"version" : "2024.4.2.133"

},

"nvidia_driver" : {

"name" : "NVIDIA Linux Driver",

"version" : "560.35.03"

},

"nvidia_fs" : {

"name" : "NVIDIA file-system",

"version" : "2.22.3"

}

}

Информацию о пакетах nvidia, имеющихся в системе можно также по команде

dpkg -l | grep nvidia

например, для системы с драйвером версии 560.35.03:

ii libnvidia-cfg1-560:amd64 560.35.03-0ubuntu1 amd64 NVIDIA binary OpenGL/GLX configuration library

ii libnvidia-common-560 560.35.03-0ubuntu1 all Shared files used by the NVIDIA libraries

rc libnvidia-compute-535:amd64 535.183.01-0ubuntu0.24.04.1 amd64 NVIDIA libcompute package

rc libnvidia-compute-535-server:amd64 535.183.06-0ubuntu0.24.04.1 amd64 NVIDIA libcompute package

ii libnvidia-compute-560:amd64 560.35.03-0ubuntu1 amd64 NVIDIA libcompute package

ii libnvidia-compute-560:i386 560.35.03-0ubuntu1 i386 NVIDIA libcompute package

ii libnvidia-decode-560:amd64 560.35.03-0ubuntu1 amd64 NVIDIA Video Decoding runtime libraries

ii libnvidia-decode-560:i386 560.35.03-0ubuntu1 i386 NVIDIA Video Decoding runtime libraries

ii libnvidia-encode-560:amd64 560.35.03-0ubuntu1 amd64 NVENC Video Encoding runtime library

ii libnvidia-encode-560:i386 560.35.03-0ubuntu1 i386 NVENC Video Encoding runtime library

ii libnvidia-extra-560:amd64 560.35.03-0ubuntu1 amd64 Extra libraries for the NVIDIA driver

ii libnvidia-fbc1-560:amd64 560.35.03-0ubuntu1 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library

ii libnvidia-fbc1-560:i386 560.35.03-0ubuntu1 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library

ii libnvidia-gl-560:amd64 560.35.03-0ubuntu1 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD

ii libnvidia-gl-560:i386 560.35.03-0ubuntu1 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD

rc nvidia-compute-utils-535 535.183.01-0ubuntu0.24.04.1 amd64 NVIDIA compute utilities

rc nvidia-compute-utils-535-server 535.183.06-0ubuntu0.24.04.1 amd64 NVIDIA compute utilities

ii nvidia-compute-utils-560 560.35.03-0ubuntu1 amd64 NVIDIA compute utilities

rc nvidia-dkms-535 535.183.01-0ubuntu0.24.04.1 amd64 NVIDIA DKMS package

rc nvidia-dkms-535-server 535.183.06-0ubuntu0.24.04.1 amd64 NVIDIA DKMS package

ii nvidia-dkms-560 560.35.03-0ubuntu1 amd64 NVIDIA DKMS package

ii nvidia-driver-560 560.35.03-0ubuntu1 amd64 NVIDIA driver metapackage

ii nvidia-firmware-560-560.35.03 560.35.03-0ubuntu1 amd64 Firmware files used by the kernel module

rc nvidia-kernel-common-535 535.183.01-0ubuntu0.24.04.1 amd64 Shared files used with the kernel module

rc nvidia-kernel-common-535-server 535.183.06-0ubuntu0.24.04.1 amd64 Shared files used with the kernel module

ii nvidia-kernel-common-560 560.35.03-0ubuntu1 amd64 Shared files used with the kernel module

ii nvidia-kernel-source-560 560.35.03-0ubuntu1 amd64 NVIDIA kernel source package

ii nvidia-prime 0.8.17.2 all Tools to enable NVIDIA's Prime

ii nvidia-settings 560.35.03-0ubuntu1 amd64 Tool for configuring the NVIDIA graphics driver

ii nvidia-utils-560 560.35.03-0ubuntu1 amd64 NVIDIA driver support binaries

ii screen-resolution-extra 0.18.3 all Extension for the nvidia-settings control panel

ii xserver-xorg-video-nvidia-560 560.35.03-0ubuntu1 amd64 NVIDIA binary Xorg driver

При необходимости, удалить все драйвера nvidia в linux можно командой:

sudo apt --purge remove "*nvidia*" "libxnvctrl*"

Все файлы cuda удаляются командой:

sudo apt --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

Все каталоги cuda удаляются командой:

sudo rm -rf /usr/loca/cuda*

Еще одним действенным способом решения проблем с запуском приложений, созданных для разных версий CUDA, является применение контейнеров (Docker и nvidia-docker):

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *