Skip to content

终端

终端提供了交互式计算环境,您可以在这里进行计算任务的提交、监控和管理。

点击 终端,进入终端页面与登录节点交互。

常用 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:取消高亮搜索结果

进阶命令

  • 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 脚本示例

部分参数在提交任务时可以省略,默认使用集群配置。以下脚本仅供参考,具体参数请以实际情况为准。

bash
#!/bin/bash
#SBATCH --job-name=test # 任务名称,必填,默认是提交脚本名
#SBATCH --partition=TJZS_test # 分区名称,必填
#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=normal # 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]:序列作业

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:提交作业的主机名

成都天玑智算科技有限公司