gpucrate为docker、singularity等创建了硬链接GPU驱动卷。
项目描述
# gpucrate
[
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容器相同的约定
NVIDIA驱动卷绑定到容器内的/usr/local/nvidia
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d198b4a0128f77e4c62953825f63bfb95480d89ec644c056b476f50bae2334ba |
|
MD5 | 57edffc9779eb88489c24a5c4953353a |
|
BLAKE2b-256 | 0d08d1d1c7682e719b71a7a84b1aeaed441d547cf9997a3f203f1f717e56a5ad |
gpucrate-0.1.0-py2-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 03fb9a90b351a2b2608857a99c04e0dfe39c2851340f93f3fabb923c6a103a47 |
|
MD5 | 336f91b97e7646e4529272759f612690 |
|
BLAKE2b-256 | da8f43eb2999fdd3844d41575de063340537ca7d1a4118429bcc22a68e877718 |