shell - 如何编写 sbatch 来处理 slurm 中的多个作业
问题描述
我有两个可执行文件需要运行:a.out
和b.out
.
(1) 我想a.out
在两个节点上运行,每个节点都有一个a.out
进程。
(2)我想b.out
在两个节点上运行,(1)中的节点相同,但每个节点有两个b.out
进程。
我的天真代码如下所示
#!/bin/bash
#SBATCH --nodes 2
#SBATCH --ntasks-per-node 2
srun a.out
srun b.out
但它无法处理上述需求。我该如何编写 sbatch 来实现这一目标?
如果这是一个愚蠢的问题,我深表歉意。谢谢你的时间。
解决方案
假设我们有 3 个节点并且想要运行第一个作业 A 和作业 B。作业 A 应该在每个节点上运行 1 个进程。作业 B 应在具有 5 个进程的每个节点上运行。
因此,sbatch 文件sbatch_input.sh
可以这样写:
#!/bin/bash
#SBATCH --nodes 3
#SBATCH --ntasks-per-node 5
#SBATCH -p cnall
# job A
srun --nodes 3 --ntasks=3 hostname
echo "-------------------------------"
# job B
srun --nodes 3 --ntasks-per-node=5 hostname
使用 sbatch 运行脚本
sbatch ./sbatch_input.sh
结果表明
c05b01n06
c05b01n08
c05b01n07
-------------------------------
c05b01n06
c05b01n08
c05b01n07
c05b01n06
c05b01n06
c05b01n06
c05b01n06
c05b01n08
c05b01n08
c05b01n08
c05b01n08
c05b01n07
c05b01n07
c05b01n07
c05b01n07
这里不要使用数字 2 以防误解。
- 参考
推荐阅读
- java - 我在 Docker 容器中找不到 postgresql 表
- javascript - luxon javascript中的时区特定日期错误
- python - 使用集合中的组件创建 3D numpy 向量数组
- java - 有没有办法在不切换的情况下获取浏览器的所有标签标题?
- firebase - Firebase Flutter - 如何从 Firebase 的文档中检索 2 个字段到我的移动应用程序?
- python - ImportError:模块“pythoncom”不在冻结的 sys.path 中
- python - 是否有 VCP 命令可以禁用诸如“进入睡眠模式”之类的消息?
- c++ - OpenGL:添加镜面光照时网格变黑
- python - “本地主机拒绝连接” - Jupyter Lab/notebook
- python - Python 和 Google Colab 中的 statsmodels.tsa.arima_model 与 arima.model