Using GPU from a docker container?

后端 未结 10 1732
名媛妹妹
名媛妹妹 2020-11-27 09:12

I\'m searching for a way to use the GPU from inside a docker container.

The container will execute arbitrary code so i don\'t want to use the privileged mode.

<
10条回答
  •  没有蜡笔的小新
    2020-11-27 09:42

    Updated for cuda-8.0 on ubuntu 16.04

    • Install docker https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

    • Build the following image that includes the nvidia drivers and the cuda toolkit

    Dockerfile

    FROM ubuntu:16.04
    MAINTAINER Jonathan Kosgei 
    
    # A docker container with the Nvidia kernel module and CUDA drivers installed
    
    ENV CUDA_RUN https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run
    
    RUN apt-get update && apt-get install -q -y \
      wget \
      module-init-tools \
      build-essential 
    
    RUN cd /opt && \
      wget $CUDA_RUN && \
      chmod +x cuda_8.0.44_linux-run && \
      mkdir nvidia_installers && \
      ./cuda_8.0.44_linux-run -extract=`pwd`/nvidia_installers && \
      cd nvidia_installers && \
      ./NVIDIA-Linux-x86_64-367.48.run -s -N --no-kernel-module
    
    RUN cd /opt/nvidia_installers && \
      ./cuda-linux64-rel-8.0.44-21122537.run -noprompt
    
    # Ensure the CUDA libs and binaries are in the correct environment variables
    ENV LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
    ENV PATH=$PATH:/usr/local/cuda-8.0/bin
    
    RUN cd /opt/nvidia_installers &&\
        ./cuda-samples-linux-8.0.44-21122537.run -noprompt -cudaprefix=/usr/local/cuda-8.0 &&\
        cd /usr/local/cuda/samples/1_Utilities/deviceQuery &&\ 
        make
    
    WORKDIR /usr/local/cuda/samples/1_Utilities/deviceQuery
    
    1. Run your container

    sudo docker run -ti --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm ./deviceQuery

    You should see output similar to:

    deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GRID K520 Result = PASS

提交回复
热议问题