Как запустить OpenCL + OpenGL внутри контейнера Docker? - PullRequest
0 голосов
/ 17 января 2019

Цель - запустить приложение OpenCL / OpenGL (interop) внутри док-контейнера.Но я пока не добился успеха.

Intro

У меня есть ноутбук с графической картой NVidia, поэтому я подумал, что использование NVidia Dockerfiles [1,2] будет хорошей отправной точкой.

Следующий Dockerfile:

# Dockerfile to run OpenGL app
FROM nvidia/opengl:1.0-glvnd-runtime-ubuntu16.04
ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES},display
RUN apt-get update && apt-get install -y --no-install-recommends \
        mesa-utils && \
    rm -rf /var/lib/apt/lists/*

работает довольно хорошо, и я смог запустить glxgears.

Запуск OpenCL на его собственном контейнере также не был большой проблемой:

# Dockerfile to run OpenCL app
FROM nvidia/opengl:1.0-glvnd-runtime-ubuntu16.04
RUN apt-get update && apt-get install -y --no-install-recommends \
        ocl-icd-libopencl1 \
        clinfo && \
    rm -rf /var/lib/apt/lists/*
RUN mkdir -p /etc/OpenCL/vendors && \
    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

и clinfo успешно отображают информацию о моем устройстве.


Попытка

Наконец, вот моя попытка создать контейнер с драйверами OpenGL и OpenCL:

# Dockerfile mixing OpenGL and OpenCL
FROM nvidia/opengl:1.0-glvnd-runtime-ubuntu16.04
ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES},display
RUN apt-get update && apt-get install -y --no-install-recommends \
        mesa-utils \
        ocl-icd-libopencl1 \
        clinfo && \
    rm -rf /var/lib/apt/lists/*
RUN mkdir -p /etc/OpenCL/vendors && \
    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

И теперь, хотя clinfo все еще печатает информацию об устройстве OpenCL, glxgears, с другой стороны, завершается ошибкой со следующей ошибкой:

Error: couldn't get an RGB, Double-buffered visual 

Любая идея, как это сделатьРабота?Заранее спасибо.


Отзывы

...