nvidia-docker - может ли cuda_runtime быть доступным при сборке контейнера? - PullRequest
0 голосов
/ 03 декабря 2018

При попытке скомпилировать 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 должен быть установлен на фактической хост-машине ине внутри контейнера, и они используют какой-то механизм для обмена «родным» кодом с контейнерами, чтобы можно было управлять графическим процессором - это правильно?

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

1 Ответ

0 голосов
/ 05 декабря 2018

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

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

Вам необходимо использовать вариант -devel.

...