Some Useful Command for SGE
原文链接 https://hlthu.github.io/2017/06/05/sge-use.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
做语音的人很多都会用到的 kaldi,而在 kaldi 里使用最多的并行计算环境是 Sun Grid Engine(SGE),本人也在自己的服务器上部署了 SGE 环境。
部署 SGE
在管理节点上
$ sudo apt-get install gridengine-master gridengine-client
增加管理员(am=add manager)
$ sudo qconf -am <your-user-id>
删除管理员(dm=delete manager)
$ sudo qconf -dm <your-user-id>
显示所有管理员(sm=show manager)
$ sudo qconf -sm
在所有计算节点上(管理节点也可以是计算节点)
$ sudo apt-get install gridengine-client gridengine-exec
使用下面的命令来查看当前自己的任务、查看其它用户的任务、以及集群的状态
huanglu@DeepNet1:~$ qstat
job-ID prior name user state submit/start at queue slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
342675 0.75000 train.431. huanglu r 06/05/2017 10:03:20 all.q@DeepNet1.speech.local 1
342677 0.25000 progress.4 huanglu r 06/05/2017 10:00:20 all.q@DeepNet1.speech.local 1
342678 0.75000 train.431. huanglu r 06/05/2017 10:03:20 all.q@DeepNet1.speech.local 1
huanglu@DeepNet1:~$ qstat -u liuzuozhen
huanglu@DeepNet1:~$ qhost -q
HOSTNAME ARCH NCPU NSOC NCOR NTHR LOAD MEMTOT MEMUSE SWAPTO SWAPUS
----------------------------------------------------------------------------------------------
global - - - - - - - - - -
DeepNet1.speech.local lx-amd64 48 2 24 48 12.93 126.1G 9.3G 7.5G 20.8M
all.q BIP 0/3/15
上面最后一行如果没有增加集群是不会显示的。
增加集群
使用下面的命令增加集群
$ qconf -aq
把 qname
由 template
改为 all.q
,然后需要把 hostlist
处增加主机,以及想使用的主机的 cpu 线程数,如
qname all.q
hostlist speech-WorkStation
......
slots 18
...
之后我们可以通过下面的命令修改 all.q
的配置。
$ qconf -mq all.q
SGE 使用的是资源的概念,我们可以修改或增加资源,使用下面的命令
$ qconf -mc
将 mem_free
一行的 0G
改为 1G
,即
#name shortcut type relop requestable consumable default urgency
#------------------------------------------------------------------------------------------
<snip>
mem_free mf MEMORY <= YES YES 1G 0
同样在最下面增加两行,分别对应 GPU 和 内存
#name shortcut type relop requestable consumable default urgency
#------------------------------------------------------------------------------------------
<snip>
gpu g INT <= YES YES 0 10000
ram_free ram_free MEMORY <= YES JOB 1G 0
然后我们根据自己机器的内存和 GPU 数量,设置资源值,使用下面的命令
$ qconf -me <some-hostname>
后面接的是主机名,修改 complex_values
域,如
complex_values ram_free=112G,gpu=2
之后还需要执行
$ qconf -ap smp
并将 slots
修改为9999。
最后执行 qconf -mq all.q
,将 pe_list
修改为
pe_list make smp
常用的 command
查看状态
查看本人、他人、集群状态
$ qstat
$ qstat -u huanglu
$ qhost -q
管理资源
管理要使用的 CPU 核心数,下面命令,修改 slots
。
$ qconf -mq all.q
管理内存和 GPU 资源,后面接的是主机名,修改 complex_values
域。
$ qconf -me <some-hostname>
调整任务提交的等待时间,修改 schedule_interval
。
$ qconf -msconf
任务管理
删除任务
$ qdel <job-id>
删除自己的所有任务
$ qdel -u <user-name>