HPC 三个常用操作¶
读者:知道什么是集群、但没提交过作业的人。 前置:已能登录提交机
.28,会跑单点仿真(见 tutorial-first-sim.md)。 读完能做什么:看懂作业分布、配置结果落层、清掉失败残骸让派发恢复。 环境锚点:Slurm 集群(控制.16/.17、计算.18/.19/.20)、Lustre/mnt/lustre/scratch/users/rain01;核实日期 2026-10-13。
三十秒版¶
看作业用 squeue(重点看 NODELIST 有没有铺开);结果落层靠项目 .cdsinit 里两行 envSetVal;
派发卡住先 squeue 找 SE/JobHeldUser 残骸,scancel <id> 清掉即恢复。
危险分级¶
- 会毁数据的:
scancel一律带具体号,禁通配(会误杀别人的作业);进节点删 X 锁前先确认锁内 PID 已死。 - 会白跑半天的:长仿真不改
SLURM_TIME/WALL_GUARD就派发(会被超时杀掉)。 - 一般提醒:作业 stdout/stderr 记得重定向到项目 log 目录。
操作 1:看作业跑在哪、铺没铺开¶
命令:
squeue -u $USER
squeue -o "%.6i %.9P %.10j %.2t %.10M %R"
(来源:环境技能 rainchen-env / lsf-simulation-env,核实 2026-10-13)
关键列怎么读:
| 列 | 正常 | 异常与去向 |
|---|---|---|
ST(状态) |
R(运行)或短暂 PD(排队) |
SE / JobHeldUser → 是失败残骸,见操作 3 |
NODELIST / %R |
铺在多台计算节点上 | 全挤在同一台 → 负载不均,慢;见 concept.md |
TIME |
随运行增长 | 长时间不动 → 该点卡住,去查它的日志 |
失败的样子:squeue 显示作业节点全一样 → 不是错了,是没铺开,整体会慢很多。
操作 2:配置结果落层(结果放 Lustre,日志留 NFS)¶
原理见 concept.md 的「三层存储」。做法是在项目 .cdsinit 末尾追加两行:
;; --- SIM-DATA-LAYERING ---
envSetVal("asimenv.startup" "projectDir" 'string "/projects/design/rain01/proj1/simulation")
envSetVal("adexl.results" "saveResDir" 'string "/mnt/lustre/scratch/users/rain01/adexl")
(来源:项目 sim_layering_20261012/SOP.md,核实 2026-10-13)
三条硬约束:
- 必须追加在 NCSU 加载之后(放前面会被默认值覆盖)。
- 注释必须英文(Cadence 按非 UTF-8 解析,中文注释会逐行报
Skipping)。 - 新开会话才生效(GUI 已开就重启 Virtuoso)。
预期输出 / 判据:跑一次后,结果出现在 /mnt/lustre/scratch/users/rain01/adexl/...,日志仍在 /projects/...。
失败的样子:结果还在默认的 ~/cadence/simulation → 说明 .cdsinit 没被加载(它只加载第一个命中者)。
操作 3:清掉失败残骸,让派发恢复¶
症状:ADE-XL 不再派发新作业,连 /tmp/adexl_icrp_cmd.log 都不更新。
步骤:
- 找残骸:
bash
squeue -o "%.6i %.9P %.10j %.2t %.10M %R"
预期输出:看到状态 SE 或 JobHeldUser 的作业。
2. 逐个清(禁通配):
bash
scancel <id>
- 若还有节点级孤儿 X 锁(child 会话挂死留下的
.X80-lock):进该计算节点清理,/tmp是节点本地盘、不共享,须srun -w <node>进去;删前校验锁内 PID 已死。
bash
srun -p long -N1 -n1 -w <node> -t 00:05:00 bash
预期输出:清完后 ADE-XL 重新开始派发作业。
完成后检查¶
squeue里没有SE/JobHeldUser状态。- 新结果出现在 Lustre 路径下。
- 作业
NODELIST铺在多台计算节点上。
来源:
/home/rain/Documents/eda_tools_ins/design/docs/kb/howto-hpc.md| 最后更新:2026-10-13 00:46(由build/sync.py同步,请勿在站点侧修改)