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)
显示命令执行结果
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`"
更多推荐
linux sbatch 提交作业
发布评论