跳转到主要内容

gpucrate为docker、singularity等创建了硬链接GPU驱动卷。

项目描述

# gpucrate

[![构建状态](https://secure.travis-ci.org/jtriley/gpucrate.png?branch=master)

gpucrate为docker、singularity等创建了硬链接GPU驱动(目前仅NVIDIA)卷,这允许将确切的系统驱动链接到容器中,而无需为每个驱动版本维护一个单独的容器。

## 安装 要安装gpucrate,请使用pip命令

` $ pip install gpucrate `

或在[虚拟环境](https://virtualenv.pypa.io/en/stable/)中

` $ virtualenv gpucrate $ source gpucrate/bin/activate $ pip install gpucrate `

## 使用 要为系统当前GPU驱动创建驱动卷

` $ sudo gpucrate create `

这将默认在/usr/local/gpucrate中创建一个硬链接的驱动卷目录,可以用于将驱动链接到容器中。以下是一个驱动版本为367.48的示例卷。

` $ find /usr/local/gpucrate/367.48/ /usr/local/gpucrate/367.48/ /usr/local/gpucrate/367.48/bin /usr/local/gpucrate/367.48/bin/nvidia-cuda-mps-server /usr/local/gpucrate/367.48/bin/nvidia-debugdump /usr/local/gpucrate/367.48/bin/nvidia-persistenced /usr/local/gpucrate/367.48/bin/nvidia-cuda-mps-control /usr/local/gpucrate/367.48/bin/nvidia-smi /usr/local/gpucrate/367.48/lib /usr/local/gpucrate/367.48/lib64 /usr/local/gpucrate/367.48/lib64/libnvcuvid.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-ml.so.1 /usr/local/gpucrate/367.48/lib64/libnvidia-eglcore.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-glcore.so.367.48 /usr/local/gpucrate/367.48/lib64/libcuda.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-opencl.so.1 /usr/local/gpucrate/367.48/lib64/libnvcuvid.so.1 /usr/local/gpucrate/367.48/lib64/libnvidia-ifr.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-ml.so.367.48 /usr/local/gpucrate/367.48/lib64/libcuda.so.1 /usr/local/gpucrate/367.48/lib64/libnvidia-encode.so.1 /usr/local/gpucrate/367.48/lib64/libnvidia-tls.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-egl-wayland.so.367.48 /usr/local/gpucrate/367.48/lib64/libOpenGL.so.0 /usr/local/gpucrate/367.48/lib64/libcuda.so /usr/local/gpucrate/367.48/lib64/libnvidia-compiler.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-fatbinaryloader.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-opencl.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-ptxjitcompiler.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-fbc.so.1 /usr/local/gpucrate/367.48/lib64/libnvidia-fbc.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-glsi.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-encode.so.367.48 /usr/local/gpucrate/367.48/lib64/libnvidia-ifr.so.1 `

默认情况下,gpucrate在/usr/local/gpucrate中创建驱动卷。您可以通过gpucrate的配置文件更改此设置

` echo 'volume_root: /path/to/volume/root' > /etc/gpucrate/config.yaml `

或者通过GPUCRATE_VOLUME_ROOT环境变量

` export GPUCRATE_VOLUME_ROOT="/path/to/volume/root" `

### 与Singularity一起使用 注意:singularity-gpu需要Singularity 2.4+

一旦为当前活动的驱动创建了卷,现在可以使用singularity包装器singularity-gpu来运行启用GPU的容器。

例如,让我们将[tensorflow/tensorflow:latest-gpu](https://hub.docker.com/r/tensorflow/tensorflow/) docker镜像转换为singularity镜像

` $ singularity build tensorflow.img docker://tensorflow/tensorflow:latest-gpu `

现在使用singularity-gpu包装器以正常方式运行任何singularity命令,只需将主机的确切GPU驱动链接到容器中

` $ singularity-gpu exec tensorflow.img python -c 'import tensorflow' I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally `

默认情况下,singularity-gpu在运行时将所需的环境注入到容器中的NVIDIA/CUDA内部。如果这导致问题或您想出于任何原因禁用此功能,请在gpucrate配置文件中设置以下内容

` echo 'manage_environment: false' > /etc/gpucrate/config.yaml `

或者使用GPUCRATE_MANAGE_ENVIRONMENT环境变量

` export GPUCRATE_MANAGE_ENVIRONMENT="false" `

#### 容器要求 singularity-gpu包装器使用与NVIDIA上游docker容器相同的约定

  1. NVIDIA驱动卷绑定到容器内的/usr/local/nvidia

  2. CUDA位于/usr/local/cuda

如果您在singularity配置中具有enable overlay no,在尝试使用singularity-gpu之前,您需要确保容器内存在/usr/local/nvidia。

### 与Docker一起使用使用[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)要容易得多。如果您仍然坚持这样做,请尝试以下方法(未经测试,您需要根据您的系统调整设备、卷根和驱动程序版本)

` $ docker run -ti --rm \ --device=/dev/nvidiactl \ --device=/dev/nvidia-uvm \ --device=/dev/nvidia0 \ --device=/dev/nvidia1 \ --device=/dev/nvidia2 --device=/dev/nvidia3 \ --volume-driver=nvidia-docker \ --volume=/usr/local/gpucrate/<driver_version>:/usr/local/nvidia:ro nvidia/cuda \ nvidia-smi `

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

gpucrate-0.1.0.tar.gz (27.4 kB 查看哈希值)

上传时间 源代码

构建分发

gpucrate-0.1.0-py2-none-any.whl (34.2 kB 查看哈希值)

上传时间 Python 2

由以下支持