终端
终端提供了交互式计算环境,您可以在这里进行计算任务的提交、监控和管理。
点击 终端,进入终端页面与登录节点交互。
常用 Linux 命令
基础命令
cd:切换目录ls:查看目录内容pwd:查看当前目录mkdir:创建目录rm:删除文件或目录cp:复制文件或目录mv:移动文件或目录rmdir:删除空目录cat:查看文件内容head:查看文件前几行more:分页查看文件内容echo:输出字符串wc:统计行数、字数、字节数tail:查看文件后几行top:查看系统资源使用情况touch:创建空文件clear:清屏history:查看历史命令exit:退出终端vi:文本编辑器- vi 基础命令
i:进入编辑模式esc:退出编辑模式:wq:保存并退出:q!:不保存并退出
- vi 进阶命令
a:在当前光标后插入o:在当前光标下插入O:在当前光标上一行插入A:在当前行末尾插入I:在当前行首部插入dd:删除当前行yy:复制当前行p:粘贴u:撤销ctrl + r:恢复撤销gg:跳到文件首行G:跳到文件末尾/:搜索?:反向搜索n:搜索下一个N:搜索上一个:%s/old/new/g:替换字符串:set number:显示行号:set nonumber:隐藏行号:set hlsearch:高亮搜索结果:set nohlsearch:取消高亮搜索结果
- vi 基础命令
进阶命令
chmod:修改文件权限chown:修改文件所有者chgrp:修改文件所属组sed:流编辑器awk:文本处理工具grep:搜索字符串find:查找文件sort:排序uniq:去重cut:按列切分
Slurm 命令
sbatch:提交批处理作业squeue:排队作业状态scancel:取消作业sinfo:查看集群状态srun:提交作业scontrol:查看和修改作业参数sreport:查看作业报告sacct:已完成作业记录
sinfo 查看集群状态
sinfo -N:查看节点级信息
sinfo -N --states=idle:查看空闲节点
sinfo --partition=AMD_9654:查看队列信息
sinfo --help:查看所有选项
节点状态包括:
- alloc(节点在用)
- drain(节点故障维护中)
- down(节点下线)
- idle(节点可用)
- mix(节点部分占用,但仍有剩余资源)
squeue 查看作业信息
squeue -j jobid:查看作业信息
squeue -l:查看作业详细信息
squeue -n HOST:查看特定节点作业信息
squeue --state=RUNNING:查看运行中作业
squeue --help:查看所有选项
scontrol 修改作业参数
scontrol show job JOB_ID:查看排队或正在运行的作业的信息
scontrol hold JOB_ID:暂停 JOB_ID
scontrol release JOB_ID:恢复 JOB_ID
scontrol update dependency=JOB_ID:添加作业依赖性 ,以便仅在 JOB_ID 完成后才开始作业
sacct 查看作业记录
sacct -l:查看详细的帐户作业信息
sacct --states=R:查看具有特定状态的作业的帐号作业信息
sacct -S YYYY-MM-DD:在指定时间后选择处于任意状态的作业
sacct --format=“LAYOUT”:使用给定的 LAYOUT 自定义 sacct 输出
sacct -X -j <job_id> --format=JobID,JobName,Node,Start,End,Elapsed:查看指定作业的详细信息
sacct -X -j <job_id> -o "jobid,partition,alloccpus,cputimeraw,state,workdir":查看指定作业的详细信息
sacct --help:查看所有选项
srun 提交作业
srun -N 1 -n 4 -p AMD_9654 hostname:在计算主机上运行 hostname
srun -N 1 -n 1 -p AMD_9654 --pty /bin/bash:启动远程主机 bash 终端
Slurm 脚本示例
部分参数在提交任务时可以省略,默认使用集群配置。以下脚本仅供参考,具体参数请以实际情况为准。
#!/bin/bash
#SBATCH --job-name=test # 任务名称,必填,默认是提交脚本名
#SBATCH --partition=INTEL_8581 # 分区名称
#SBATCH --nodes=1 # 节点数,必填,否则默认 1 节点
#SBATCH --ntasks-per-node=1 # 每节点任务数,必填,否则默认 1 任务
#SBATCH --cpus-per-task=1 # 每任务 CPU 核数
#SBATCH --output=test_%j.out # 标准输出和错误输出文件,%j 是任务 ID
#SBATCH --error=test_%j.err # 错误输出文件,%j 是任务 ID
#SBATCH --time=00:00:10 # 任务时间限制,格式为 HH:MM:SS
#SBATCH --account=test # 账户
#SBATCH --mail-user=test@example.com # 邮件通知用户
#SBATCH --mail-type=END,FAIL # 邮件通知类型
#SBATCH --hint=nomultithread # 禁用超线程
#SBATCH --qos=qos_test # QOS
#SBATCH --constraint=gpu # 约束条件
#SBATCH --gres=gpu:1 # GPU 卡数
#SBATCH --mem=1G # 内存限制
#SBATCH --exclusive # 独占节点
#SBATCH --nodelist=node101 # 指定节点
#SBATCH --exclude=node102 # 排除节点
#SBATCH --dependency=afterany:123456 # 依赖任务
# module 加载环境
module purge
module use /home/software/modulefiles
module load openmpi/4.1.6
module load gcc/12.2.0
# spack 加载环境
spack load openmpi@4.1.6
spack load gcc@12.2.0
# source 环境
source /opt/AMD/aocc-compiler-4.2.0/setenv_AOCC.sh
source /opt/AMD/aocl/aocl-linux-aocc-4.2.0/aocc/amd-libs.cfg
# export 环境变量
export PATH=/home/software/openmpi/4.1.6-aocc/bin:$PATH
export LD_LIBRARY_PATH=/home/software/openmpi/4.1.6-aocc/lib:$LD_LIBRARY
# 运行计算任务示例
echo "Job start at $(date)"
mpirun xxx
echo "Job end at $(date)"SBATCH 常用参数
-n [count]:总进程数
--ntasks-per-node=[count]:每台节点上的进程数
-p [partition]:作业队列
--job-name=[name]:作业名
--output=[file_name]:标准输出文件
--error=[file_name]:标准错误文件
--time=[dd-hh:mm:ss]:作业最大运行时长
--exclusive:独占节点
--mail-type=[type]:通知类型,可选 all, fail, end,分别对应全通知、故障通知、结束通知
--mail-user=[mail_address]:通知邮箱
--nodelist=[nodes]:偏好的作业节点
--exclude=[nodes]:避免的作业节点
--depend=[state:job_id]:作业依赖
--array=[array_spec]:序列作业
--no-requeue:作业异常后不会重新进入队列,可以避免重新计算覆盖之前的计算结果
Slurm 环境变量
$SLURM_JOB_ID:作业 ID
$SLURM_JOB_NAME:作业名
$SLURM_JOB_PARTITION:队列的名称
$SLURM_NTASKS:进程总数
$SLURM_NTASKS_PER_NODE:每个节点请求的任务数
$SLURM_JOB_NUM_NODES:节点数
$SLURM_JOB_NODELIST:节点列表
$SLURM_LOCALID:作业中流程的节点本地任务 ID
$SLURM_ARRAY_TASK_ID:作业序列中的任务 ID
$SLURM_SUBMIT_DIR:工作目录
$SLURM_SUBMIT_HOST:提交作业的主机名