Git Product home page Git Product logo

cgpu's Introduction

1. 安装与卸载。
a. 依赖:本产品依赖于nVidia docker,请先安装nvidia docker的相关组件
b. 安装:请运行./install.sh来安装cGPU的所有组件。
c. 卸载:请通过运行./uninstall.sh来卸载所有程序。

2. 运行。
a. 环境变量,cGPU组件会检测以下docker的环境变量,进行相应操作:
- ALIYUN_COM_GPU_MEM_DEV:为正整数,表示为host上每张卡的总显存大小。
- ALIYUN_COM_GPU_MEM_CONTAINER: 为正整数,指定容器内可见的显存容量。此参数同ALIYUN_COM_GPU_MEM_DEV一起设定cGPU内可见的显存大小。如在一张4G显存的显卡上,我们可以通过-e ALIYUN_COM_GPU_MEM_DEV=4 -e ALIYUN_COM_GPU_MEM_CONTAINER=1的参数为容器分配1G显存。如果不指定此参数,则cGPU不会启动,此时会默认使用nvidia容器。
- ALIYUN_COM_GPU_VISIBLE_DEVICES:为正整数或uuid,指定容器内可见的GPU设备。如在一个有4张显卡的机器上,我们可以通过-e ALIYUN_COM_GPU_VISIBLE_DEVICES=0,1来为容器分配第一和第二张显卡。或是-e ALIYUN_COM_GPU_VISIBLE_DEVICES=uuid1,uuid2,uuid3为容器分配uuid为uuid1,uuid2,uuid3z的3张显卡。
- CGPU_DISABLE:总开关,用于禁用cGPU。可以接受的参数是-e CGPU_DISABLE=true或-e CGPU_DISABLE=1,此时cGPU将会被禁用,默认使用nvidia容器。
- 混布:在多卡情况下,可以通过设定不同的ALIYUN_COM_GPU_VISIBLE_DEVICES和NVIDIA_VISIBLE_DEVICES变量来达到cGPU实例与nvidia容器实例混布的效果。例如在一张4卡的机器上,采用-e ALIYUN_COM_GPU_VISIBLE_DEVICES=2 -e NVIDIA_VISIBLE_DEVICES device=0,1,2的参数,容器内就会看到原生的nvidia GPU实例0和实例1,以及显卡2的cGPU实例。此时容器内只有显卡2会被cGPU进行分片化处理。

b. procfs节点。cGPU组件会系统的/proc/cgpu_km下生成多个节点,cGPU的组件会自动处理这些节点,普通用户不需要访问这些节点,这里仅就其做个基本描述。
- default_memsize: 读/写。默认的cGPU实例显存大小,为正整数。
- inst_ctl:读/写。 实例的控制节点。
- major:只读。cGPU内核驱动的主设备号。
- 0...N: 目录,针对宿主机上每个GPU设备,都会生成一个对应id的目录,其内容如下:
-- max_inst:读/写。用于设定最大的cGPU实例数,范围为1~16。
-- policy:读/写。用于对此GPU上的实例设定不同的调度策略:00 表示每个cGPU实例占用固定的时间片,时间片占比为1/max_inst; 1 表示每个cGPU实例可以占用尽量多的时间片,时间片比例为1/当前实例数。
-- 容器实例目录: 针对此GPU上运行的每个cGPU容器实例,都会有个对应的目录,目录名为容器名,可以通过docker ps命令来查看。每个实例目录下有3个节点:
--- id: 只读。cGPU的实例号。
--- memsize:读写。用于设定cGPU容器实例内的显存大小。cGPU用户组件会根据ALIYUN_COM_GPU_MEM_DEV参数自动设定此值。
--- meminfo:只读。容器内显存用量信息。输出如下所示,表示容器内剩余显存容量以及当前正在使用GPU的进程id及其显存用量。
        Free: 6730809344
        PID: 19772 Mem: 200278016

cgpu's People

Contributors

lvmxh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.