45169


Dockerfileに

[code]

    FROM nvidia/cuda:9.0-runtime-ubuntu16.04
    RUN apt-get update
    RUN apt-get -y install python3-pip
    RUN pip3 install keras tensorflow-gpu
    
[/code]

このように記載してコンテナを立てて

[code]

    git clone https://github.com/pjreddie/darknet
    cd darknet
    vim #GPU=1に変更
    make
    
[/code]

すると

[code]

    In file included from ./src/utils.h:5:0,
        from ./src/gemm.c:2:
    include/darknet.h:14:30: fatal error: cuda_runtime.h: No such file or directory
    compilation terminated.
    Makefile:85: recipe for target 'obj/gemm.o' failed
    make: *** [obj/gemm.o] Error 1`
    
[/code]

のようなエラーがでます。

おそらくdarknetのMakefile(下記)`COMMON+= -DGPU
-I/usr/local/cuda/include`部分で指定しているincludeフォルダがないからではないかと思っています。

[code]

    ifeq ($(GPU), 1)
        COMMON+= -DGPU -I/usr/local/cuda/include/
        CFLAGS+= -DGPU
        LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
    endif
    
[/code]

質問はdockerでyoloをGPU=1にしてmakeするにはどのようにMakefileを設定すればよいのでしょうか。またCOMMON+=、CFLAGS+=、LDFLAGS+=はそれぞれ何を設定しているのでしょうか。


CC BY-SA 3.0
2018-04-29T10:26:45.643
43652
2018-06-29T10:47:54.790
2018-04-30T05:46:28.963
3060
25909
question
python ubuntu docker 深層学習
dockerを利用したyolov3のmake エラーについて


ご自分でも指摘しておられる”COMMON+= -DGPU
-I/usr/local/cuda/include”の部分ですが、cudaをインストールしたときにパスがcudaで登録されていない場合があります。ですのでcuda9のパスが”cuda-9.0”になっている可能性があります（要確認）。  
この場合は”COMMON+= -DGPU -I/usr/local/cuda-9.0/include”のパスにすればmakeが通るはずです。


CC BY-SA 3.0
2018-04-29T15:07:21.557
43657
2018-04-29T15:07:21.557
26893
43652
answer


このページ <https://github.com/NVIDIA/nvidia-docker/wiki/CUDA>
にあるように，`runtime`コンテナには静的ライブラリなどは入っておらず，CUDAを使用するアプリケーションをビルドするには`devel`コンテナを使用する必要があります．

ですから，Dockerfileの

`FROM nvidia/cuda:9.0-runtime-ubuntu16.04`を  
`FROM nvidia/cuda:9.0-devel-ubuntu16.04`

とすればビルドできるようになります．


CC BY-SA 4.0
2018-06-29T10:47:54.790
45169
2018-06-29T10:47:54.790
5506
43652
answer