使用集群提交作业步骤

首先,先在terminal中创建脚本

vi job.slurm

vi命令:打开文件

文本内容为:

#!/bin/bash
#sbatch -j test #作业名为test,可以自定义
#sbatch -w,--nodelist= #提交到节点1跑代码
#sbatch -o test.out #屏幕上的输出文件重定向到test.out
#sbatch -ntasks-per-node=4 #单节点启动的进程数为1
#sbatch --cpus-per-task=4 #单任务使用的cpu核心数为4

#以下是具体需要集群执行的任务,下面只是个例子,初始化conda,激活环境,并运行train.py
source ~/.bashrc
conda activate py39
python -u main.py

一些脚本常涉及到的参数

-o job.out       # 脚本执行的输出将被保存在当job.out文件下
-J myFirstJob       # 作业在调度系统中的作业名为myFirstJob;
--ntasks-per-node=1 # 每个节点上运行一个任务,默认一情况下也可理解为每个节点使用一个核心,如果程序不支持多线程(如openmp),这个数不应该超过1;
--help    # 显示帮助信息;
-D, --chdir=<directory>      # 指定工作目录;
--get-user-env    # 获取当前的环境变量;
--gres=<list>    # 使用gpu这类资源,如申请两块gpu则--gres=gpu:2
-J, --job-name=<jobname>    # 指定该作业的作业名;
-n, --ntasks=<number>    # sbatch并不会执行任务,当需要申请相应的资源来运行脚本,默认情况下一个任务一个核心,--cpus-per-task参数可以修改该默认值;
-c, --cpus-per-task=<ncpus>      # 每个任务所需要的核心数,默认为1;
--ntasks-per-node=<ntasks>    # 每个节点的任务数,--ntasks参数的优先级高于该参数,如果使用--ntasks这个参数,那么将会变为每个节点最多运行的任务数;
-o, --output=<filename pattern>    # 输出文件,作业脚本中的输出将会输出到该文件;
-t, --time=<time>    # 允许作业运行的最大时间
-w, --nodelist=<node name list>  # 指定申请的节点;
-x, --exclude=<node name list>   # 排除指定的节点;

最后编辑完了之后,按Esc,退出编辑模式。
退出/保存文件

:w   #保存文件
:wq  #保存文件并退出vi
:q!  #强制退出vi,即使该文件被修改,也不保存该文件

还有如果要进入编辑模式,那就之前按“i”即可。

最后,提交脚本即可运行程序啦~

sbatch job.slurm

使用集群提交作业步骤_第1张图片

你可能感兴趣的:(科研,linux)