У меня рабочая станция с процессором AMD (EPYC 7H12) и графическим процессором Nvidia (RTX 3090). Система работает на Ubuntu 20.04. При работе с тензорным потоком я неоднократно получаю предупреждения, как описано в этом связанном ТАК вопрос.
Я tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:939] успешный узел NUMA, прочитанный из SysFS, имел отрицательное значение (-1), но должен быть хотя бы один узел NUMA, поэтому возвращаем нулевой узел NUMA
Ан отвечать предлагает определить идентификатор шины PCI графического процессора, а затем установить для параметра numa_node для этого устройства значение 0. В моем случае сработало следующее. После идентификации PCI-ID с помощью лспци | grep NVIDIA:
# 1) Определите PCI-ID графического процессора (с идентификатором домена)
# В моем случае: PCI_ID="0000.81:00.0"
lspci-D | grep NVIDIA
# 2) Запишите привязку NUMA в файл numa_node устройства.
эхо 0 | sudo tee -a "/sys/bus/pci/devices/<PCI_ID>/numa_node"
Однако это лишь поверхностное исправление. Во-первых, параметр numa_node сбрасывается (до значения -1) при каждом перезапуске системы. Во-вторых, похоже, что драйверы Nvidia игнорируют этот флаг, т.к. nvidia-smi (Nvidia инструмент управления драйверами) по-прежнему отображает:
nvidia-smi топо-м
#
# Сопоставление ЦП GPU0 Сопоставление ЦП NUMA
# GPU0 X 0-127 Н/Д
Как я могу постоянно указывать привязку NUMA к графическому процессору? Это конфигурация драйвера Nvidia, Ubuntu или BIOS? Я знаю, что ядро Linux NUMA в курсе, но мне было трудно найти ресурсы о том, как это настроить.
Обновлять: я добавил crontab от имени пользователя root, что устраняет проблему более постоянно. Однако исправление остается «поверхностным», поскольку драйвер Nvidia не знает об этом.
судо кронтаб -е
#Â Добавьте следующую строку
@reboot (echo 0 | tee -a "/sys/bus/pci/devices/<PCI_ID>/numa_node")