首先,先在terminal中创建脚本
vi job.slurm
vi命令:打开文件
文本内容为:
#!/bin/bash
#sbatch -j test #作业名为test,可以自定义
#sbatch -w,--nodelist=<Node1> #提交到节点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