nvidia-docker - может ли cuda_runtime быть доступным при сборке контейнера?

При попытке скомпилировать darknet в команде сборки контейнера-докера я постоянно сталкиваюсь с исключением include/darknet.h:11:30: fatal error: cuda_runtime.h: No such file or directory,

Я строю контейнер из инструкции здесь: https://github.com/NVIDIA/nvidia-docker/wiki/Deploy-on-Amazon-EC2. У меня простой Dockerfile Я тестирую с - соответствующие части:

FROM nvidia/cuda:9.2-runtime-ubuntu16.04
...
WORKDIR /
RUN apt-get install -y git
RUN git clone https://github.com/pjreddie/darknet.git
WORKDIR /darknet
# Set OpenCV makefile flag
RUN sed -i '/OPENCV=0/c\OPENCV=1' Makefile
RUN sed -i '/GPU=0/c\GPU=1' Makefile
#RUN ln -s /usr/local/cuda-9.2 /usr/local/cuda
# HERE I have been playing with commands to show me the state of the docker image to try to troubleshoot the problem
RUN find / -name "cuda_runtime.h"
RUN ls /usr/local/cuda/lib64/
RUN less /usr/local/cuda/README
RUN make

Большую часть документации я вижу в ссылках, использующих библиотеки nvidia при запуске контейнера, но darknet компилируется по-разному при сборке с gpu поддержка, так что мне нужно cuda_runtime.h доступны во время сборки.

Возможно, я неправильно понимаю, что nvidia-docker делает - я предполагаю, что nvidia-docker существует, потому что код Nvidia должен быть установлен на фактическом хост-компьютере, а не внутри контейнера, и они используют некоторый механизм для обмена "родным" кодом с контейнерами, чтобы можно было управлять GPU - это правильно?

Должен ли я даже пытаться построить darknet при сборке моего контейнера или я должен установить его на хост-машине, а затем сделать его доступным для контейнера? Кажется, это идет вразрез с переносимостью контейнеров, но я могу жить с некоторыми ограничениями, чтобы получить доступ к графическому процессору.

1 ответ

Решение

ОТ nvidia/cuda:9.2-runtime-ubuntu16.04

Ваше изображение содержит только кусочки CUDA-9.2, необходимые для запуска приложения CUDA, но не имеет битов, необходимых для его создания.

Вам нужно использовать вариант -devel.

Другие вопросы по тегам