linux系统编写程序时无可避免要把源文件编译成可执行文件,在进行运行得出结果。但在登录超级计算机等端口(linux系统),若执行文件较大可能会被软件后台查杀,无法执行得到结果。使用sbatch提交作业方法可良好解决在登录端运行程序,避免程序运行中用较大较多资源时被kill。使用sbatch作业提交的方法能很好的解决这个问题。

        sbatch提交作业时可以选择 串行(SRUN),并行(MPIRUN)运行可执行文件。

一 ,sbatch 基本参数介绍

$ cat serial.slurm #查看脚本内容

#!/bin/bash

#SBATCH -J serialtest   #指定作业名称

#SBATCH -p normal   #指定分区名称

#SBATCH -N 1#指定节点数量   

#SBATCH -n 1  #指定任务数

#SBATCH --mem=10G   #指定每节点申请的内存大小,最大 100GB

#SBATCH -D /public/home/systest/wangxh/test/sbatch    #指定工作目录

#SBATCH -o serialtest.o%j    #指定正确输出文件名称

#SBATCH -e serialtest.e%j   #指定报错信息输出文件名称

#SBATCH --gres=dcu:1    #指定使用核心环境(dcu 与 cpu 相同)

echo "Start time: `date`"   #显示开始时间

echo "SLURM_JOB_ID: $SLURM_JOB_ID"   #显示作业号

echo "SLURM_NNODES: $SLURM_NNODES"   #显示节点数

echo "SLURM_TASKS_PER_NODE: $SLURM_TASKS_PER_NODE"  #显示每节点任务数

echo "SLURM_NTASKS: $SLURM_NTASKS"   #显示总任务数

echo "SLURM_JOB_PARTITION: $SLURM_JOB_PARTITION"   #显示作业分区

srun  ./test        #此处用户需要换成自己要执行的串行程序 

(或 mpirun ./test    #此处用户需要换成自己要执行的并行程序)

echo "End time: `date`"    #显示结束时间  注 ` ` 是单反号(esc下边那个键)不是单引号

Linux date 命令 | 菜鸟教程 (runoob.com)

显示命令执行结果

echo `date`

注意: 这里使用的是反引号 `, 而不是单引号 '。

结果将显示当前运行日期。

二 ,sbatch 使用方法

1 编译成可执行文件

 例: test.c 编译成可执行文件

Gcc -o test test.c

     h5cc -o test test.c(c写的hdf5文件)

编译成功后 会多出两个文件 test  可执行文件 test.o 链接文件 以及源文件test.c

2 编写提交作业脚本

 Vi  test.slurm

3,提交

 sbatch   test.slurm

squeue 查询 已提交的作业进度

可以以次看到提交的作业编号,运行队列,名字,使用者(登录ID),状态(CG 代表完成,R 执行中) 运行时间 ,等信息。

4 查看结果

提交作业运行成功之后,可以使用 ls 命令查看 test.o test.e 文件 

        test.o  输出文件  可在里边查看程序结果

        test.o  报错文件  程序运行错误提示,没有错误时为空

提交作业脚本举例:vi test.slurm

#!/bin/bash

#SBATCH -J h5_group

#SBATCH -p normal

#SBATCH -N 1

#SBATCH -n 1

#SBATCH --mem=1G

#SBATCH -D /public/home/xxx/xxx/HDF5/h5_test

#SBATCH --gres=dcu:1

#SBATCH -o h5_group.o%j

#SBATCH -e h5_group.e%j

echo "Start time: `date` "

echo "SLURM_JOB_ID:$SLURM_JOB_ID"

echo "SLURM_NNODES:$SLURM_NNODES"

echo "SLURM_TASKS_PER_NODE:$SLURM_TASKS_PER_NODE"

echo "SLURM_NTASK:$SLURM_NTASK"

echo "SLURM_JOB_PARTITION:$SLURM_JOB_PARTITION"

srun ./h5_group

(mpirun ./test)

echo "End time: `date`" 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐