Перейти к основному содержанию

Supermicro, Ubuntu 22, NVIDIA A100 — проблемы

NVIDIA A100

Ставили две видеокарты в сервер Supermicro с операционной системой Ubuntu 22.04 LTS. При этом, кажется, наступили на все возможные грабли.

Стенд:

Проблемы начались уже на этапе установке операционной системы. При установке в случайное время возникала ошибка:

Sorry, there was a problem completing the installation.
Information is being collected from the system that will help the developers diagnose the report.

linux

После нескольких попыток установки пришлось сделать обходной ход конём:

  1. Установить Ubuntu Server 20.04 LTS
  2. Обновить до Ubuntu Server 22.04 LTS

Supermicro и Ubuntu Server — ошибка установки

Быстро воткнул первые попавшиеся драйверы.

nvidia-smi

Видим две видеокарты NVIDIA A199-SXM4-80GB. Драйвер 550.127.05б Версия CUDA 12.4.

nvidia

Сервер отдали разработчикам.

На следующий день разработчики спрашивают: "А GPU где?"

nvidia-smi

No devices were found.

Так, не смешно. Смотрим dmesg.

# dmesg -T

NVRM: GPU 0000:17:00.0: Failed to enable MSI-X.
NVRM: GPU 0000:17:00.0: RmInitAdapter failed! (0x22:0x56:774)
NVRM: GPU 0000:17:00.0: rm_init_adapter failed, device minor number 0
NVRM: GPU 0000:65:00.0: Failed to enable MSI-X.
NVRM: GPU 0000:65:00.0: RmInitAdapter failed! (0x22:0x56:774)
NVRM: GPU 0000:65:00.0: rm_init_adapter failed, device minor number 1
nvidia

После перезагрузки оба адаптера по очереди через некоторое время отваливаются.

Решение проблемы

Не буду описывать как мы пробовали 100500 разный версий драйверов, напишу что помогло.

В первую очередь, нужно установить версию ядра минимум до 6 версии, HWE.

apt install linux-generic-hwe-22.04

Перезагружаем сервер и проверяем версию ядра.

# uname -a

Linux mr-gpu00 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov  6 17:42:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

После этого нужно установить рекомендуемые драйвера NVIDIA.

https://ubuntu.com/server/docs/nvidia-drivers-installation

И CUDA.

apt install gcc
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
dpkg -i cuda-keyring_1.1-1_all.deb
apt update
apt install cuda -y
echo 'export PATH="/sbin:/bin:/usr/sbin:/usr/bin:${PATH}:/usr/local/cuda/bin"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

Если вы используете Docker, то нужно установить пакет nvidia-docker2.

apt install -y nvidia-docker2
systemctl restart docker

Автоматизация

А потом я нашёл готовый скрипт, который всё это делает сам.

https://hostkey.ru/documentation/technical/gpu/nvidia_gpu_linux

https://github.com/antirek/nvidia-cuda.sh

#!/bin/bash

# Update and upgrade the system using apt
sudo apt update
sudo apt upgrade -y

#Check Ubuntu 22.04 and update kernel
lsb_release=$(lsb_release -a | grep "22.04")
if [[ -n "$lsb_release" ]]; then

    # Check if there's a video card with Nvidia (10de) H100 model (23xx)
    lspci_output=$(lspci -nnk | awk '/\[10de:23[0-9a-f]{2}\]/ {print $0}')
    if [[ -n "$lspci_output" ]]; then
        echo "H100 detected"
        # If yes install the necessary kernel package
        sudo apt install -y linux-generic-hwe-22.04
    fi

    # Check if there's a video card with Nvidia (10de) A100 model (20xx)
    lspci_output=$(lspci -nnk | awk '/\[10de:20[0-9a-f]{2}\]/ {print $0}')
    if [[ -n "$lspci_output" ]]; then
        echo "A100 detected"
        # If yes install the necessary kernel package
        sudo apt install -y linux-generic-hwe-22.04
    fi
fi

# Install GCC compiler for CUDA install
sudo apt install gcc -y

# Get the release version of Ubuntu
RELEASE_VERSION=$(lsb_release -rs | sed 's/\([0-9]\+\)\.\([0-9]\+\)/\1\2/')

# Download and install CUDA package for Ubuntu and Nvidia drivers
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${RELEASE_VERSION}/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# Update and upgrade the system again to ensure all packages are installed correctly
sudo apt update
sudo apt install cuda -y
sudo apt install nvidia-cuda-toolkit -y

# Add PATH and LD_LIBRARY_PATH environment variables for CUDA in .bashrc file
echo 'export PATH="/sbin:/bin:/usr/sbin:/usr/bin:${PATH}:/usr/local/cuda/bin"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

#Initialize kernel modules without reboot

sudo rmmod -f nouveau
sudo nvidia-smi

nvcc -V

#Installing Docker binding for Nvidia

if command -v docker &> /dev/null; then
  echo "Docker is installed."
  sudo apt install -y nvidia-docker2
  sudo systemctl restart docker
else
  echo "Docker is not installed."
fi

Перезагружаем сервер.

nvidia-smi
nvidia

Версия драйверов 550.120. Версия CUDA 12.4.

Сервер работает уже 4 часа. Пока без нагрузки, но это уже хорошо.

Добавка из Интернета

Встречал ещё в сети Интернет такие кейсы:

Включить SR-IOV в BIOS

https://bugs.launchpad.net/ubuntu/+bug/1915413

Отказ от совмещения H100 и A100 в одном сервере

https://forums.developer.nvidia.com/t/nvrm-gpu-000000-0-rminitadapter-failed-driver-530-30-02/247691

/etc/modprobe.d/nvidia.conf и смена драйверов

https://forums.developer.nvidia.com/t/nvidia-smi-no-devices-were-found-vmware-esxi-ubuntu-server-20-04-03-with-rtx3070/202904/38

https://forums.developer.nvidia.com/t/solved-rminitadapter-failed-to-load-530-41-03-or-any-nvidia-modules-other-than-450-236-01-linux-via-esxi-7-0u3-passthrough-pci-gtx-1650/253239

pcie_aspm=off iommu=soft idle=nomwait

https://stackoverflow.com/questions/46107222/nvrm-rminitadapter-failed-xid-79-gpu-has-fallen-off-the-bus

Цены

 

Похожие материалы