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, и если она не может просто отступить