使用华为的超算平台已经好长时间了,一直有个疑问,那就是这个超算平台是否支持异构计算,于是用命令试验了一下,具体命令:
/opt/batch/cli/bin/dsub -n task_test -A xxxxxxxxxxxx -eo error.txt -oo output.txt -R "gpu=1" /usr/bin/nvidia-smi -pm 1
-n 为此次的计算任务名;
-A 为扣费账号,这里用xxxxxxxxxxxxx 代替;
-eo 为error的log;
-oo 为output的log;
运行命令为:/usr/bin/nvidia-smi -pm 1
上面命令关键的地方为:-R "gpu=1"
在超算计算中一个运行的总计算任务叫做job,叫做“作业”,而一个job会运行多个副本(每个副本就是mpi中的并行进程),每个副本叫做“task”,即“任务”;
如果没有使用 -N 来指定job的task个数,那么就是一个job只有一个task,而我们使用 -R "gpu=1" 用来指定每个运行的task都必须运行在有一个gpu的主机上,因此使用 -R "gpu=1" 可以保证运行的task都是可以有一个gpu进行调用的。
在华为的超算平台中采用容器的概念对资源进行调配,这里的容器并不是一个真实物理机的概念,容器的这个概念更贴近于虚拟机;假设当前我们只有一个主机名为slave-32的主机,该主机有128个可用CPU,4个可用GPU,那么我们使用 -N 20 -R “cpu=120;gpu=1” 的命令运行mpi代码,我们实际上是将slave-32主机虚拟成了20个有着120个CPU和1个GPU的容器(虚拟主机),分别在20个容器中的20个进程在通信,看似像20个容器(虚拟主机)通信,实际上都是运行在slave-32主机上。
=======================================================
标签:容器,task,20,异构计算,AI,平台,GPU,gpu From: https://www.cnblogs.com/devilmaycry812839668/p/17523846.html