SLURM使用

提交交互式任务

交互式任务是一种特殊的队列任务,在该模式下,用户可以直接登录到计算节点,此后 所有的操作都在这个节点上进行。这个功能主要是方便用户在服务器上调试程序, 以便能够实时看到程序的输出。
我们需要使用 salloc 命令来分配交互式任务所需的资源,它的语法为

$ salloc [申请资源]

其中,用户需要以选项的方式指定申请的资源,这些选项与 SLURM 脚本中的选项基本 相同。常用选项为:

-N <节点数量>
--cpus-per-task=<单进程 CPU 核心数>
--gres=gpu:<单节点 GPU 卡数>
-t <最长运行时间>
-p <使用的分区>
--qos=<使用的 QoS>

例如,可以使用如下方式申请资源:

salloc -N 1 --cpus-per-task=4 -t 5:00 -p compute --gres=gpu:1

执行成功后,此时的shell已经切换到计算节点。此时可以使用srun命令进行交互。例如查看GPU的使用情况

srun nvidia-smi

或是运行某python文件

srun python 1.py

交互式计算使用完毕后,使用exit命令退出计算节点。SLURM 会提示你交互式任务的资源已经被释放。

提交批处理任务

在工作站提交批处理任务需要编写 SLURM 脚本,以便明确申请的资源以及所要运行的程序。

查看可用资源

在提交任务之前,务必检查一下各个节点的状态,例如资源是否充足,当前有多少正在执行的任务等。

[name@node1]$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
compute*     up   infinite      2    mix node[3-4]
compute*     up   infinite      2   idle node[2,5]

如上所示,使用 sinfo 命令可粗略查看所有分区的节点信息,注意 ‘‘STATE’’ 一栏的输出 若为 ‘‘idle’’ 表示该节点处于闲置状态,若为 ‘‘alloc’’ 表示该节点已经没有多余的 资源了,若为 ‘‘mix’’ 表示该节点有人在占用,但是仍然有剩余资源。

[name@node1]$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
 4060   compute      123 username1  R 1-11:52:15     1 node4
 4094   compute      123 username2  R   10:31:20     1 node3
 4103   compute       d3 username3  R    9:30:20     1 node4
 4106   compute     loss username4  R      19:10     1 node3

如上所示,使用squeue命令可以查看作业调度系统中所有的作业。

Slurm脚本示例

随后可以使用sbatch命令提交作业到作业调度系统中。下面是一个作业脚本示例。

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH -p compute
#SBATCH --qos=low
#SBATCH -J FirstJob
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --gres=gpu:1 
#SBATCH --mail-type=all
#SBATCH --mail-user=youreamil
#SBATCH -w node4
#SBATCH --mem-per-cpu 10000
python test.py

常用参数说明如下:

#SBATCH -o job.%j.out         # 脚本执行的输出将被保存在job.%j.out文件下,%j表示作业号;
#SBATCH -p C032M0128G         # 作业提交的指定分区为compute;
#SBATCH --qos=low             # 指定作业的QOS为low;
#SBATCH -J myFirstJob         # 作业在调度系统中的作业名为FirstJob;
#SBATCH --nodes=1             # 申请节点数为1;
#SBATCH --ntasks-per-node=1   # 每个节点上运行一个任务,默认一情况下也可理解为每个节点使用一个核心;
#SBATCH --mail-type=<type>    # 指定状态发生时,发送邮件通知,有效种类为(NONE, BEGIN, END, FAIL, REQUEUE, ALL);
#SBATCH --mail-user=<user>    # 发送给指定邮箱;
#SBATCH -w node3             # 指定运行的节点

取消作业

使用scancel命令取消指定的作业,以下为一个示例

# 取消JOBID为123的作业
scancel 123

Slurm使用jupyter notebook

  • 使用sbatch申请notebook,sbatch文件示例如下,自行修改port与node,注意:端口号要大于1024
#!/bin/bash
#SBATCH -o jupyter.out        
#SBATCH --qos=low             
#SBATCH -J jupyter_notebook   
#SBATCH --nodes=1             
#SBATCH --ntasks-per-node=1  
#SBATCH -w node4_3060
#SBATCH --gres=gpu:1 

port=port
ip=`ifconfig |grep -m 1 inet |awk '{print$2}'`

jupyter-notebook --no-browser --port=${port} --ip=${ip}
  • 交完SLURM任务后打开生成的jupyter.out
[I 16:55:39.575 NotebookApp] Serving notebooks from local directory: /home/home_node1/pya
[I 16:55:39.575 NotebookApp] Jupyter Notebook 6.4.8 is running at:
[I 16:55:39.575 NotebookApp] http://10.40.13.214:7777/?token=4850e0a7421b4e51d1809bd617f71a48c26e83c09a4b8159
[I 16:55:39.575 NotebookApp]  or http://127.0.0.1:7777/?token=4850e0a7421b4e51d1809bd617f71a48c26e83c09a4b8159
[I 16:55:39.575 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 16:55:39.577 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/home_node1/pya/.local/share/jupyter/runtime/nbserver-14851-open.html
    Or copy and paste one of these URLs:
        http://10.40.13.214:7777/?token=4850e0a7421b4e51d1809bd617f71a48c26e83c09a4b8159
     or http://127.0.0.1:7777/?token=4850e0a7421b4e51d1809bd617f71a48c26e83c09a4b8159
  • 校内同学在本地浏览器中打开http://10.40.13.214:7777/?token=4850e0a7421b4e51d1809bd617f71a48c26e83c09a4b8159即可使用jupyter。

使用sbatch提交申请notebook后一定要记得scancel掉!!!!!!!

  • 辣鸡jupyter全是坑,狗都不用
  • 安装ipthon或者nb_conda命令提示符丢了的跑下面的代码
conda config --system --set env_prompt "({default_env})[\u@\h \W]\$ "
  • conda虚拟环境中的kernel连不上的是因为版本不对,等nb_conda修完bug吧
  • 别用辣鸡jupyter了,出问题别找我
  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于slurm使用教程,你可以参考以下步骤: 1. 首先,确保你已经在你的系统上安装了slurm。你可以从slurm官网下载适合你系统的软件包。 2. 一旦安装完成,你需要配置slurm。你可以根据你的需求修改配置文件,如slurm.conf。这个文件包含了各种有关集群和作业调度的设置。你可以根据需要设置集群的节点、作业队列、资源限制等信息。 3. 在配置完成后,你可以启动slurm服务。使用命令行工具或者slurm提供的脚本,启动slurm控制守护进程(scontrol daemon),它负责集群的管理和作业调度。 4. 现在,你可以开始使用slurm来提交作业了。使用sbatch命令来提交一个作业脚本,该脚本描述了你要运行的作业的详细信息,如任务数、CPU核心数、内存需求等。提交作业后,slurm会根据你的配置和集群的资源情况来调度作业。 5. 你可以使用squeue命令来查看当前正在运行和等待运行的作业列表。使用scontrol命令可以查看更多有关作业和集群的信息,如作业状态、节点状态等。 6. 当你的作业完成后,slurm会将结果输出到指定的文件中。你可以使用sacct命令来查询作业的运行情况和结果。 总结起来,使用slurm的基本步骤包括安装slurm、配置slurm、启动slurm服务、提交作业、监视作业状态和结果。这些步骤可以帮助你充分利用slurm来管理和调度你的集群作业。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [集群Slurm使用教程](https://blog.csdn.net/pengru120/article/details/120868403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [slurm安装指南](https://download.csdn.net/download/yttjupiter/4300960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [slurm 使用教程](https://blog.csdn.net/funnyPython/article/details/114315004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值