nvidia-docker-构建容器时可以使用cuda_runtime吗?

时间:2018-12-03 10:24:04

标签: darknet nvidia-docker

尝试在docker容器的build命令中编译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库进行了引用,但是在使用gpu支持进行构建时,darknet的编译方式有所不同,因此我需要cuda_runtime.h在构建时可用。

也许我误解了nvidia-docker在做什么-我假设nvidia-docker存在,因为Nvidia代码必须安装在实际的主机上而不是容器内,并且它们使用某种机制来共享带有容器的“本机”代码,以便可以管理GPU-正确吗?

在构建容器时,我甚至应该尝试构建darknet还是应该将其安装在主机上,然后以某种方式使其可用于容器?这似乎与容器的可移植性背道而驰,但是我可以承受一些限制才能访问GPU。

1 个答案:

答案 0 :(得分:3)

  

从nvidia / cuda:9.2-runtime-ubuntu16.04

您的图像仅包含运行一个CUDA应用所需的零碎的CUDA-9.2,而没有构建一个所需的比特。

您需要使用-devel变体。