Go to file
2015-11-17 15:03:20 -08:00
samples Add a new sample using a custom CUDA kernel 2015-11-13 10:40:35 -08:00
ubuntu-14.04/cuda Add a CUDA 6.5 Dockerfile for Ubuntu 14.04 2015-11-15 16:35:53 -08:00
CLA Update CLA 2015-11-13 10:05:15 -08:00
LICENSE Initial commit 2015-11-04 13:00:25 -08:00
nvidia-docker Use the docker command from environment if provided 2015-11-17 15:03:20 -08:00
README.md Fix line break in README 2015-11-16 16:58:56 -08:00
ubuntu Initial commit 2015-11-04 13:00:25 -08:00

NVIDIA Docker

This repository includes utilities to build and run NVIDIA Docker images.
Please be aware that this project is currently experimental.

docker
Example of how CUDA integrates with Docker

Benefits of GPU containerization

  • Reproducible builds
  • Ease of deployment
  • Isolation of individual devices
  • Run across heterogeneous driver/toolkit environments (e.g. CUDA 7.0 and 7.5 on a single host machine)
  • Requires only the NVIDIA driver

Building images

Images can be built on any machine running Docker, it doesn't require a NVIDIA GPU nor any driver installation.

Building images is done through the Docker CLI or using the nvidia-docker wrapper similarly:

# With latest versions
$ docker build -t cuda ubuntu/cuda/latest
# With specific versions
$ docker build -t cuda:7.5 ubuntu-14.04/cuda/7.5

Alternatively, one can build an image directly from this repository:

# With latest versions
$ docker build -t cuda github.com/NVIDIA/nvidia-docker#:ubuntu/cuda/latest
# With specific versions
$ docker build -t cuda:7.5 github.com/NVIDIA/nvidia-docker#:ubuntu-14.04/cuda/7.5

NVIDIA Docker wrapper

The nvidia-docker script is a drop-in replacement for docker CLI. In addition, it takes care of setting up the NVIDIA host driver environment inside Docker containers for proper execution.

GPUs are exported through a list of comma-separated IDs using the environment variable GPU. The numbering is the same as reported by nvidia-smi or when running CUDA code with CUDA_DEVICE_ORDER=PCI_BUS_ID, it is however different from the default CUDA ordering.

$ GPU=0,1 ./nvidia-docker <docker-options> <docker-command> <docker-args>

CUDA requirements

Running a CUDA container requires a machine with at least one CUDA-capable GPU and a driver compatible with the CUDA toolkit version you are using.
The machine running the CUDA container only requires the NVIDIA driver, the CUDA toolkit doesn't have to be installed.

NVIDIA drivers are backward-compatible with CUDA toolkits versions

CUDA toolkit version Minimum driver version Minimum GPU architecture
6.5 >= 340.29 >= 2.0 (Fermi)
7.0 >= 346.46 >= 2.0 (Fermi)
7.5 >= 352.39 >= 2.0 (Fermi)

Samples

Once you have built the required images, a few examples are provided in the folder samples.
The following assumes that you have an image in your repository named cuda (see samples/deviceQuery/Dockerfile):

# Run deviceQuery with one selected GPU
$ docker build -t device_query samples/deviceQuery
$ GPU=0 ./nvidia-docker run device_query

[ NVIDIA ] =INFO= Driver version: 352.39
[ NVIDIA ] =INFO= CUDA image version: 7.5

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 980"
  [...]

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 980
Result = PASS

Issues and Contributing