gpucrate创建硬链接gpu驱动程序卷,用于docker、singularity等。

gpucrate的Python项目详细描述


#gpucrate

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

gpucrate创建供使用的硬链接gpu驱动程序(当前仅限nvidia)卷 对于Docker、Singularity等,这使得精确的系统驱动程序 链接到一个容器中,而不需要根据 驱动程序版本。

##安装 要安装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" `

与奇点一起使用 :奇点GPU需要奇点2.4+

为当前活动的驱动程序创建卷后,您现在可以使用 运行启用gpu的容器的奇点包装器singularity-gpu

例如,我们可以转换[tensorflow/tensorflow:latest gpu](https://hub.docker.com/r/tensorflow/tensorflow/) Docker图像到奇点图像:

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

现在使用singularity-gpu包装器正常运行任何奇点命令 仅当主机的确切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" `

####集装箱要求 奇点GPU包装器使用与NVIDIA上游相同的约定 码头集装箱:

  1. nvidia驱动程序卷绑定到容器中的/usr/local/nvidia
  2. CUDA住在/usr/local/CUDA

如果在奇点配置中有enable overlay no,则需要 在尝试之前,确保/Ur/Prime/Nvidia存在于容器内 使用singularity-gpu

###与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 `

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么我们不能将ArrayList<Integer>传递给具有(Integer…)的方法参数   java Spring RestTemplate映射JSON对映射的响应引发不匹配的PutException   在系统中找到java Selenium元素,但在Jenkins中未找到   java在Android中使用JavaMail API发送电子邮件,而不使用默认/内置应用程序   数组如何在Java数据结构中同时存储数字和相应的单词?   为什么“+”运算符未定义?JAVA   java如何在游戏中添加高分系统?   java在球门碰撞中区分球和球员   java如何使用SpringSecurity4.0.1使用Auth令牌实现Rest完整Web服务。释放   java如何解决这个错误:Android资源链接失败?   java多线程文件处理和数据库批插入   导致Tomcat失败的java无用块线程   java主线程做了太多的工作,尽管我使用了异步线程(laggy UI)   在Java FX 2.0中滚动锚定节点时,锚定始终可见?   java使用EJB3中的客户机jar和设计模式