У меня есть новая установка Ubuntu 16.04 только с AMDGPU-Pro (собственным) установленным драйвером и механизм докера (от PPA apt.dockerproject.org).
Я хочу запустить программы OpenCL внутренние контейнеры Докера. Я фигурирую: ядро совместно используется, таким образом, модуль (модули) GPU должен быть доступен для контейнеров, что отсутствует, освобождение для доступа к модулю (модулям).
Я настроил контейнер и скомпилировал программу OpenCL в нем. Выполнение программы в нем возвраты, которыми не были найдены никакие устройства. Таким образом, я скопировал двоичный файл в хост, и выполнение двоичного файла там работает (оба моих устройства GPU были обнаружены).
Я попытался создать новый контейнер (из Ubuntu:16.04) и скопировал двоичный файл, и все освобождает требуемый от контейнера, используемого для компиляции И папки /usr/lib/x86_64-linux-gnu/amdgpu-pro
от хоста.
К сожалению, это также не работало. Что я мог пропускать?
Управляемый, чтобы заставить это работать. Сводка:
Вот сценарий в качестве примера для создания изображения докера: https://gist.github.com/anonymous/fea9c0a9e986eeda7cf58e47f47c89f2
И вот команда в качестве примера для выполнения контейнера с созданным изображением:
docker run -it --device /dev/dri:/dev/dri climage
В случае, если любой спотыкается в подобную проблему, я также перечислю, как я узнал "решение":
strace ./cltest &> host.strace
docker run --rm --security-opt seccomp:unconfined -v $(pwd):/external climage strace /external/cltest &> ./container.strace
vimdiff
vimdiff container.strace host.strace