Можно ли запустить nvidia-docker без графического процессора? - PullRequest
0 голосов
/ 27 августа 2018

Официальный образ PyTorch Docker основан на nvidia/cuda, который может работать на Docker CE без какого-либо графического процессора.Он также может работать на nvidia-docker , я полагаю, с включенной поддержкой CUDA.Можно ли запустить nvidia-docker на процессоре x86 без использования графического процессора?Есть ли способ создать один образ Docker, который использует поддержку CUDA, когда он доступен (например, при работе внутри nvidia-docker), и использует ЦП в противном случае?Что происходит, когда вы используете torch.cuda изнутри Docker CE?В чем разница между Docker CE и почему nvidia-docker нельзя объединить с Docker CE?

1 Ответ

0 голосов
/ 14 сентября 2018

nvidia-docker является ярлыком для docker --runtime nvidia.Я надеюсь, что однажды они сливаются, но сейчас это сторонняя среда исполнения.Они объясняют, что это такое и что он делает, на своей странице GitHub .

Модифицированная версия runc, добавляющая пользовательский перезапуск для всех контейнеров.Если переменная окружения NVIDIA_VISIBLE_DEVICES установлена ​​в спецификации OCI, ловушка настроит доступ к графическому процессору для контейнера, используя nvidia-container-cli из проекта libnvidia-container.

Ничто не мешает запускать образы, предназначенные дляnvidia-docker с нормальным docker.Они работают просто отлично, но если вы запустите в них что-то, требующее графического процессора, это не получится.

Я не думаю, что вы можете запустить nvidia-docker на машине без графического процессора.Он не сможет найти нужные ему файлы CUDA и выдаст ошибку.

Чтобы создать образ, который может работать как на docker, так и на nvidia-docker, ваша программа внутри него должна иметь возможностьзнать, где он работает.Я не уверен, что есть официальный способ, но вы можете попробовать один из следующих способов:

  • Проверить, доступен ли nvidia-smi
  • Проверить, указан ли каталог в $CUDA_LIB_PATHСуществует
  • Проверьте, может ли ваша программа успешно загрузить библиотеки CUDA, и если она не может просто отступить
...