Skip to content

AIP 简明使用手册

灵犀易算
二 〇 二一 年 十 月 十二 日

一 、 提交作业

1.1 、 通过脚本提交作业

通过脚本提交作业,更容易阅读,同类型的作业可以复用脚本,修改关键的几个参数即可。 提交作业脚本 提交作业方法

run_xhpl.aip.offload csub < run_xhpl.aip.offload

脚本内容如下:

#!/bin/bash #CSUB -J aip_xhpltest %指定作业名称 #CSUB -q medium %指定队列,必须指定 #CSUB -n 40 %指定作业使用的 cpu 核数,建议为每节点核数的整数倍 #CSUB -R span[ptile=20] %每节点分配 20 核,若不写此项,AIP 将自动分配 #CSUB -o out.%J %输出文件。%代表作业号 #CSUB -e error.%J
##CSUB -m “n07196 ” %指定节点或节点组提交作业,若无必要不建议指定节点,若要使用此项,前面的#只保留一个即可

Source /es01/software/intel2020/parallel_studio_xe_2020.4.912/psxevars.sh >/dev/null 2>&1 %加载 intel 编译器环境变量,若使用了其他方式加载,可以省略这一行

mpirun --bootstrap lsf /share/apps/bin/helloworld %执行程序,请修改为需要执行程序的路径和参数

一个示例:

#CSUB -J aip_xhpltest #CSUB -q medium #CSUB -n 1 #CSUB -R span[ptile=1] #CSUB -o out.%J #CSUB -e error.%J ##CSUB -m "n07196" source /es01/software/intel2020/parallel_studio_xe_2020.4.912/psxevars.sh >/dev/null 2>&1 mpirun ~aiptest/mp_linpack/xhpl_intel64_dynamic

1.2 、 通过命令行提交作业

命令 参数

csub -I | -Ip | -Is 交互方式 -i input_file 输入文件 -J job_name 作业名称 -m "host_name" 使用机器 -n core_num 使用核数量 -o output_file 输出文件 -q "queue_name" 队列 -R "res_req" 资源需求表达式 -R "affinity[core(1):cpubind=core:distribute=balance] span[ptile=28]" 可以负载均衡,使之均匀分布。 无参数缺省队列,非交互模式,1 个核。 More: [-h] [-V] [-B] [-H] [-I | -Ip | -Is | -K] [-N] [-r] [-x] [-a esub_parameters] [-b [[month:]day:]hour:minute] [-C core_limit] [-c [hour:]minute[/host_name | /host_model] | -cn] [-cwd job_current_work_dir] [-cwdc job_current_work_dir] [-app|-A profile_name] [-D data_limit] [-e | -eo err_file] [-E "pre_exec_command [argument ...]"] [-ENV "none" | "[~var_name[,~var_name]...][var_name=value[,var_name=value]...]"] [-f "local_file op [remote_file]" ...] [-F file_limit] [-G user_group] [-g job_group] [-i input_file | -is input_file] [-J job_name | -J "job_name[index_list]%job_limit" [-k "checkpoint_dir [checkpoint_period] [method=method_name]" [-L login_shell] [-m "host_name[+[pref_level]] | host_group[+[pref_level]] ..."] [-M mem_limit] [-n min_processors[,max_processors]] [-o | -oo out_file] [-P project_name][-p process_limit] [-q "queue_name ..."][-R "res_req"] [-sp priority] [-rnc resize_notify_command] [-S stack_limit] [-t [[month:]day:]hour:minut] [-u mail_user] [-w ’dependency_expression’] [-W [hours:]minutes[/host_name | /host_model]] [-XF] [-Zs] [-pack job_submission_file]

两种提交方式:

1. 提交后台运行作业

2. 提交交互式作业

% csub -o %J.out ls (其中 ls 为作业命令) % csub -I hostname (其中 hostname 为作业命令)

例子:

#csub -J test -q medium -n 40 -R "span[ptile=20]" -o out.%J.txt mpirun --bootstrap lsf /share/apps/bin/helloworld

以上命令行提交的作业和前例脚本提交的作业,实现效果是一样的。

二 、 查看作业

2.1 、 查看作业输出

命令 功能 参数

cview 查看运行中的作业输出 [-h] [-V] [-f] [-m host_name | -q queue_name | -J job_name | jobId | "jobId[index]"]

例子:

[aiptest@aip_usp3 single_mini_linpack]$ cview 81645 Job 81645 standard output ... Sample data file lininput_xeon64.

Current date/time: Wed Apr 7 16:23:43 2021

CPU frequency: 3.391 GHz Number of CPUs: 2 Number of cores: 56 Number of threads: 1

Parameters are set to:

Number of tests: 1 Number of equations to solve (problem size) : 19500 Leading dimension of array : 19500 Number of trials to run : 2
Data alignment value (in Kbytes) : 4

Maximum memory requested that can be used=3042394096, at the size=19500

================== Timing linear equation system solver ==================

Size LDA Align. Time(s) GFlops Residual Residual(norm) Check

Job 81645 standard error ... [aiptest@aip_usp3 single_mini_linpack]$ cview 81645 Job 81645 standard output ... Sample data file lininput_xeon64.

Current date/time: Wed Apr 7 16:23:43 2021

CPU frequency: 3.391 GHz Number of CPUs: 2 Number of cores: 56 Number of threads: 1

Parameters are set to:

Number of tests: 1 Number of equations to solve (problem size) : 19500 Leading dimension of array : 19500 Number of trials to run : 2
Data alignment value (in Kbytes) : 4

Maximum memory requested that can be used=3042394096, at the size=19500 ================== Timing linear equation system solver ==================

Size LDA Align. Time(s) GFlops Residual Residual(norm) Check

Job 81645 standard error ...

2.2 、 查看作业状态

命令 参数 功能

cjobs -l 作业详细信息 -C 查看指定时间段的作业 -q 查看指定队列上的作业 -u 查看指定用户 、 用户组的作业 注:无参数为做作业概要信息,例子如下 [mwang@cnshalinmgt01 ~]$ cjobs JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME 735 mwang RUN normal cnshalinmgt cnshalinhpc tweaker -t Mar 21 20:40 741 mwang RUN normal cnshalinmgt cnshalinhpc icc2_shell Mar 22 10:46 755 mwang RUN normal cnshalinmgt cnshalinhpc pt_shell Mar 22 13:45

作业状态说明:

参数 功能

WAIT 等待,进一步说明参考 WaitReason WSTOP 等待时被暂停,进一步说明参考 WaitReason RUN 运行 SYSSTOP 被调度策略暂停,进一步说明参考 StopReason USRSTOP 被用户或管理员暂停,进一步说明参考 StopReason ZOMBIE 作业进程异常,处于僵尸状态,需要人工干预 EXIT 退出或以非 0 退出码结束,进一步说明参考 EndReason FINISH 作业正常结束 UNKNOWN 由于作业运行主机失去联系,状态未知 ERROR 未知原因出错

查看作业信息相关模板:

命令 功能

cjobs -l <jobid> 查看某个作业详细信息
cjobs -u <用户名> 查看某个用户作业
cjobs -u all 管理员查看所有用户作业

2.3 、 查看历史作业

命令 参数

chist -d 显示已完成作业 -e 显示退出作业 -p 显示 pending 作业 -s 显示 suspended 作业 -r 显示正在运行作业 不加参数显示 all pending, suspended, and running jobs More: [-h] [-V] [-l] [-b] [-w] [-a] [-d] [-e] [-p] [-s] [-r] [-j] [-f logfile_name | -n num_logfiles | -n min_logfile, max_logfile] [-C time0,time1] [-S time0,time1] [-D time0,time1][-N host_spec] [-P project_name] [-q queue_name][-m host_name] [-J job_name] [-u user_name | -u all] [jobId | "jobId[index]" ...] chist [-h] [-V] -t [-f logfile_name] [-T time0,time1]

显示指定用户某个时间段内的作业:

[root@aip_master3 bin]# chist -C "2021/4/6,2021/4/7" -u aiptest Summary of time in seconds spent in various states: JOBID USER JOB_NAME PEND PSUSP RUN USUSP SSUSP UNKWN TOTAL 81524 aiptest *hpltest 0 0 40 0 0 0 40
81525 aiptest *hpltest 0 0 15 0 0 0 15
81526 aiptest *hpltest 0 0 82 0 0 0 82
81527 aiptest *hpltest 0 0 79 0 0 0 79
81528 aiptest *hpltest 0 0 83 0 0 0 83
81529 aiptest *hpltest 0 0 84 0 0 0 84
81530 aiptest *hpltest 0 0 85 0 0 0 85
81531 aiptest *hpltest 0 0 82 0 0 0 82
81532 aiptest *hpltest 0 0 87 0 0 0 87
81533 aiptest *hpltest 0 0 86 0 0 0 86
81534 aiptest *hpltest 0 0 85 0 0 0 85
81535 aiptest *hpltest 0 0 86 0 0 0 86
81536 aiptest *hpltest 0 0 87 0 0 0 87
81537 aiptest *hpltest 0 0 88 0 0 0 88

三 、 杀作业

杀作业使用 ckill 命令

命令 参数

ckill [-h] [-V] [-l] [-m host_name] [-q queue_name] [-g job_group] [-u user_name | -u all] [0] [-r | -s sigval] [-J job_name] [jobId | "jobId[index_list]"]...

3.1 、 杀指定作业

ckill <jobid>
[aiptest@aip_usp3 single_mini_linpack]$ ckill 81645
Job <81645> is being terminated

3.2 、 某用户杀自己所有作业

ckill 0

[aiptest@aip_usp3 single_mini_linpack]$ cjobs
JOBID USER STAT QUEUE FROM*HOST EXEC_HOST JOB_NAME SUBMIT_TIME
81646 aiptest RUN medium aip_usp3 n07199 *\_xhpltest Apr 7 16:27  
81647 aiptest RUN medium aip*usp3 n07097 *\_xhpltest Apr 7 16:27  
81648 aiptest RUN medium aip*usp3 n07198 *\_xhpltest Apr 7 16:27  
81649 aiptest RUN medium aip*usp3 n07299 *\_xhpltest Apr 7 16:27  
81650 aiptest RUN medium aip*usp3 n07197 *\_xhpltest Apr 7 16:27  
81651 aiptest RUN medium aip*usp3 n07298 *\_xhpltest Apr 7 16:27  
[aiptest@aip_usp3 single_mini_linpack]$ ckill 0
Job <81646> is being terminated
Job <81647> is being terminated
Job <81648> is being terminated
Job <81649> is being terminated
Job <81650> is being terminated
Job <81651> is being terminated

3.3 、 管理员杀所有用户所有作业

ckill -u all 0

[root@aip_master3 bin]# cjobs -u all
JOBID USER STAT QUEUE FROM*HOST EXEC_HOST JOB_NAME SUBMIT_TIME
81652 aiptest RUN medium aip_usp3 n07199 *\_xhpltest Apr 7 16:28  
81653 aiptest RUN medium aip*usp3 n07096 *\_xhpltest Apr 7 16:28  
81654 aiptest RUN medium aip*usp3 n07197 *\_xhpltest Apr 7 16:28  
81655 aiptest RUN medium aip*usp3 n07298 *\_xhpltest Apr 7 16:28  
[root@aip_master3 bin]# ckill -u all 0
Job <81652> is being terminated
Job <81653> is being terminated
Job <81654> is being terminated
Job <81655> is being terminated

四 、 集群管理

4.1 、AIP 服务管理

AIP 服务通过 systemctl 管理 启动/停止/重新启动/状态 systemctl start/stop/restart/status aip

4.2 、AIP 状态检查-查看集群基本信息

启动完成后,检查状态 查看集群基本信息 [root@aip_master3 bin]# lsid SkyFormAIP 9.21.1, Mar 24 2021

My cluster name is aip My master name is aip_master1

Primary administrator: cadmin Number of server hosts: 1698

The key is valid until July 01 2021 11:59 for 20000 units Subscribed by 济南超算 CPU sockets + GPUs detected is: 3396

4.3 、AIP 状态检查-查看节点作业状态

aip host info 或 aip h i,### 主机太多,仅截取部分 [root@aip_master3 bin]# aip h i HOST STAT CPU GPU MEM MAX TOTAL RUN USTOPPED SSTOPPED
aip_usp1 Closed-Admin 32 0 509952 M 32 0 0 0 0
aip_usp2 Closed-Admin 32 0 510208 M 32 0 0 0 0
aip_usp3 Closed-Admin 32 0 509952 M 32 0 0 0 0
n08700 Ok 56 0 188416 M 56 0 0 0 0
n08701 Ok 56 0 188416 M 56 0 0 0 0
n08600 Ok 56 0 189056 M 56 0 0 0 0
n08702 Ok 56 0 188416 M 56 0 0 0 0
n08601 Ok 56 0 189056 M 56 0 0 0 0
n08500 Ok 56 0 189056 M 56 0 0 0 0
n08703 Ok 56 0 188416 M 56 0 0 0 0
n08602 Ok 56 0 189056 M 56 0 0 0 0
n08501 Ok 56 0 189056 M 56 0 0 0 0
n08400 Ok 56 0 188416 M 56 0 0 0 0
n08704 Ok 56 0 188416 M 56 0 0 0 0
n08603 Ok 56 0 189056 M 56 0 0 0 0
n08502 Ok 56 0 189056 M 56 0 0 0 0
n08401 Ok 56 0 188416 M 56 0 0 0 0
n08300 Ok 56 0 189056 M 56 0 0 0 0
n08705 Ok 56 0 188416 M 56 0 0 0 0
n08604 Ok 56 0 189056 M 56 0 0 0 0
n08503 Ok 56 0 189056 M 56 0 0 0 0
n08402 Ok 56 0 188416 M 56 0 0 0 0
n08301 Ok 56 0 189056 M 56 0 0 0 0
n08200 Ok 56 0 189056 M 56 0 0 0 0
n08706 Ok 56 0 188416 M 56 0 0 0 0
n08605 Ok 56 0 189056 M 56 0 0 0 0
n08504 Ok 56 0 189056 M 56 0 0 0 0

节点状态说明:

参数 功能

"OK" 正常 "Unavail" 主机异常,无法通讯 "Unreach" 主机上的 cbjm 异常,无法分发作业 "Closed-Admin" 主机被管理员关闭,处于运维状态 "Closed-Excl" 主机上运行独占作业,不接受其他作业 "Closed-Lock" 主机由于调度策略被锁,不接受其他作业 "Closed-LS" 主机上的 cbls 工作异常,无法分发作业 "Closed-Wind" 主机由于配置的时间窗关闭,不接受新的作业 "Closed-Full" 主机所有 CPU 核都被占用,不接受新的作业 "Closed-Busy" 主机负载超过配置的阈值,不接受新的作业 "Resuming" 主机电源开机中(管理员通过命令 csadmin 开机, 或节电调度唤醒中) "Suspending" 主机关闭过程中(管理员通过 csadmin 关机,或节电调度停机中) "Restarting" 主机关闭过程中(管理员通过 csadmin 重启主机中) "OK-Power" 主机处于节电调度停机状态 "Closed-Power" 主机已被管理员通过 csadmin 关机 "Unknown" 未知

4.4 、AIP 状态检查-查看主机负载

cload,主机太多,仅截取部分

[root@aip_master3 bin]# cload HOST_NAME status r15 s r1 m r15 m ut pg up it tmp swp mem aip_master2 ok 0.0 0.0 0.0 0% 0.0 2 e+04 2 e+08 422 G 0 M 498 G aip_usp1 ok 0.0 0.0 0.0 0% 0.0 2 e+04 6988 427 G 0 M 498 G aip_usp2 ok 0.0 0.0 0.0 0% 0.0 2 e+04 2 e+08 428 G 0 M 498 G aip_master3 ok 0.0 0.0 0.0 0% 0.0 2 e+04 3 422 G 0 M 498 G aip_usp3 ok 0.0 0.0 0.0 0% 0.0 2 e+04 367 427 G 0 M 498 G aip_master1 ok 0.1 0.1 0.1 0% 0.0 2 e+04 3 418 G 0 M 492 G n08682 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08683 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08684 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08685 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08686 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08687 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08688 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08689 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08690 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08691 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08692 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08694 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08681 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n08693 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 185 G n07350 ok 0.0 0.0 0.0 0% 0.0 7 e+03 2 e+08 328 G 64 G 184 G n07789 ok 0.0 0.0 0.0 0% 0.0 2 e+03 2 e+08 328 G 64 G 184 G

输出信息说明:

参数 功能

r15 s 15 秒 CPU 平均运行队列长度 r1 m 1 分钟 CPU 平均运行队列长度 r15 m 15 分钟 CPU 平均运行队列长度 ut CPU 利用率 0 - 1,表示 0 - 100% pg 虚拟内存分页速率,单位: 每秒每 CPU 分页数 io 网络上传+下载 KB/秒 up 主机正常运行时间,单位:分钟 it 无作业运行时间,单位:分钟 tmp: /tmp 可用存储空间,单位:GB swp 可用交换区空间,单位:GB mem 可用内存,单位:GB gpu 可用 GPU 数

4.5 、AIP 状态检查-查看队列

集群队列

队列名称 优先级 节点 核数

medium 3 D1 机房 1692 台计算节点 94752

查看队列信息

#aip queue info 或 aip q i

用法 选项

aip queue info [command options] [queue ...] --long, -l
--user value, -u value
--host value, -m value
--help, -h -l 队列详细信息 -m 查看可使用指定机器名 、 机器组的队列

-u 查看指定用户 、 用户组可使用的队列

无参数为队列概要信息

[root@aip_master3 bin]# aip q i NAME PRIO STATUS MAX TOTAL WAIT RUN STOPPED SL/U SL/H
medium 3 OK - 0 0 0 0 - -
d1 test 3 OK - 0 0 0 0 - -
[root@aip_master3 bin]# aip q I -l medium [ { "Name": "medium", "Priority": 3, "Status": "OK", "MaxJ": "-", "AvailSlots": "94752", "MaxAvailSlots": "94752", "AvailGPUs": 0, "MaxAvailGPUs": 0, "AvailMemGB": 224073.21875, "MaxAvailMemGB": 317069.625, "UserJLimit": "-", "ProcJLimit": "-", "HostJLimit": "-", "NJobs": 0, "NPend": 0, "NRun": 0, "NStop": 0, "Users": "all users", "Hosts": "d1 group/ ", "Description": "No description provided.", "JobIdleFactor": "0", "Exclusive": "Yes", "ResReq": " ", "Fairshare": { "TotalSlots": 94752, "FreeSlots": 94752, "Shares": [ { "User": "aiptest", "Shares": 1, "Priority": 5.240053286683011, "NPend": 0, "NRun": 0 }, { "User": "default", "Shares": 1, "Priority": 3, "NPend": 0, "NRun": 0 } ] }, "Interactive": "yes" } ]

4.6 、 查看节点 cpu 的使用情况

aip host info -e hostname Hostname:节点的名字,如 n00002 该命令可以查看具体节点内 cpu 的使用的情况。从而可以看是否为均衡分布。信息是 15 秒更新一次。因此刚运行立马看 cpu 情况有可能不是,现在的情况。

五 、mpi 与 openmp 的运行

下表列出各种 MPI 与 AIP 的集成支持:

MPI MPI 自动识别 AIP 分配的节点和 CPU 不依赖免密 ssh 监控并在杀作业时自动清理所有 MPI 远程进程 Intel MPI 支持 支持 支持 MPICH 支持 支持 支持 MVAPICH 支持 支持 支持

OpenMPI 通过特殊编译的 OpenMPI 或 MPI 启动脚本实现 支持 支持

Platform/HP/IBM MPI 通过特殊编译的 OpenMPI 或 MPI 启动脚本实现 支持 支持

mpirun:天云那边的意思不推荐使用,但是遇到遇到一些奇怪的问题之后可以用 mpirun 去运行,找出一些原因。 例子:递交一个需要总数为 128 个核,每个节点上 32 个核的 MPI 作业。 $ module load mpi/mpich-x86_64 $ csub -n 128 -R span[ptile=32] mpirun myprogram

5.1 、Intel MPI

Intel MPI 使用内置的 Hydra 分发和管理远程 MPI 任务。Hydra 能自动识别 AIP 为作业分配的节点和 CPU 核。 注意 Intel MPI 使用的 Hydra 里对调度的集成存在缺陷,当总核数超过 1000 时会出错。对于大规模 MPI,需要使用 AIP 脚本 impi-mpirun 替代 mpirun 来启动。 impi-mpirun:适合纯 mpi 时候使用,并且大于 1000 核时使用。 例子:csub -n 1024 -R span[ptile=32] impi-mpirun myprogram

5.1.1 、Intel MPI 2018 和以前的版本

提交命令示例(需要先 source MPI 环境变量): csub -n 1344 -R span[ptile=32] impi-mpirun myprogram csub -n 1344 -R span[ptile=32] mpirun myprogram (核数小于 1000 可以使用)

5.1.2 、Intel MPI 2019 、2020 和 Intel oneAPI

提交命令示例(需要先 source MPI 环境变量): csub -n 1344 -R span[ptile=32] mpirun myprogram (核数小于 1000 可以使用) csub -n 1344 -R span[ptile=32] impi-mpirun2020 myprogram

5.2 、MPICH 和 MVAPICH

5.2.1 、 提交命令示例(需要先 source MPI 环境变量)

csub -n 1344 -R span[ptile=32] impi-mpirun2020 myprogram csub -n 1344 -R span[ptile=32] mpirun myprogram (核数小于 1000 可以使用)

注意 MPICH 和 MVAPICH 中使用的 Hydra 里对调度的集成存在缺陷,当总核数超过 1000 时会出错。对于大规模 MPI,需要使用 AIP 脚本 impi-mpirun 替代 mpirun 来启动。 impi-mpirun:适合纯 mpi 时候使用,并且大于 1000 核时使用。 例子:csub -n 1024 -R span[ptile=32] impi-mpirun2020 myprogram

5.3 、OpenMPI 和 Platform/HP/IBM MPI

这几种 MPI 需要编写作业脚本,把 AIP 分配的节点名转换生成 host 文件,并告诉 mpirun 总核数。 ompi-mpirun:在运行 openmpi 或者 mpi 和 openmp 混合运行时使用。 AIP 里面包含了脚本 ompi-mpirun 实现以上的功能,可以用于作业递交: $ csub -n 1344 -R span[ptile=32] ompi-mpirun myprogram 或 export
csub -n 1344 -R span[ptile=32] mpirun myprogram

5.4 、MPI 和 OpenMP 混合作业

若 MPI 的任务进程是多线程的 OpenMP,递交作业时需要定义 3 个参数 (1)-n m 参数制定作业总 CPU 核数,m 值等于: 节点数 _ 每节点任务数 _ 每任务 CPU 核数 (2)-R spen[ptile=x] 其中 x 为每个节点上的分配的核数,等于: 每节点任务数 * 每任务 CPU 核数 (3)-ENV OMP_NUM_THREADS=y 其中 y 值等于:每任务 CPU 核数 例如:csub -n 128 -ENV OMP_NUM_THREADS=8 -R span[ptile=32] ompi-mpirun ./myprog 这个 OpenMP 作业一共用 4 个节点,每个节点上 4 个任务,每个任务 8 个核。