Nvidia CUDA & Docker or Podman

Links For Fast Navigation
  1. Что это такое
  2. Требования
    1. Установка nvidia драйвера
  3. Параметры запуска docker
    1. Настройка nvidia hooks для podman
  4. Параметры запуска podman
  5. Ссылки

CUDA

Что это такое

  • Nvidia CUDA (Compute Unified Device Architecture) - программно-аппаратная архитектура параллельных вычислений, которая позволяет существенно увеличить вычислительную производительность благодаря использованию графических процессоров фирмы Nvidia.
  • Docker - программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами. Изначально использовал возможности LXC, с 2015 года применял собственную библиотеку, абстрагирующую виртуализационные возможности ядра Linux — libcontainer. С появлением Open Container Initiative начался переход от монолитной к модульной архитектуре.
  • Podman - What is Podman? Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Simply put: alias docker=podman.

Требования

Для того что бы уйти от проблем docker демона, можно использовать podman.

Для возможности запуска podman с CUDA в контейнере необходимо сделать некоторые манипуляции.

Инструкция для ubuntu 18.04

Установка nvidia драйвера

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

Параметры запуска docker

docker run --privileged --rm --gpus all dtulyakov/cudatest

Если не был указан параметр no-cgroups = true

docker run --rm --gpus all dtulyakov/cudatest

Настройка nvidia hooks для podman

sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install podman buildah skopeo nvidia-container-runtime-hook
cat <<EOF >> /usr/share/containers/oci/hooks.d/oci-nvidia-hook.json
{
  "hook": "/usr/bin/nvidia-container-runtime-hook",
  "arguments": ["prestart"],
  "annotations": ["sandbox"],
  "stage": [ "prestart" ]
}
EOF
cat <<EOF >> /etc/nvidia-container-runtime/config.toml
disable-require = false
#swarm-resource = "DOCKER_RESOURCE_GPU"

[nvidia-container-cli]
#root = "/run/nvidia/driver"
#path = "/usr/bin/nvidia-container-cli"
environment = []
#debug = "/var/log/nvidia-container-runtime-hook.log"
#ldcache = "/etc/ld.so.cache"
load-kmods = true
no-cgroups = true
#user = "root:video"
ldconfig = "@/sbin/ldconfig.real"
EOF

Если указать этот параметр no-cgroups = true то придётся запускать контейнер в привелигерованном режиме!

Параметры запуска podman

podman run --rm --privileged dtulyakov/cudatest

Если не был указан параметр no-cgroups = true

podman run --rm dtulyakov/cudatest

Ссылки

Share this
Submit