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