slurm作业管理:一次提交运行多个任务

2024-01-24 21:18

本文主要是介绍slurm作业管理:一次提交运行多个任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

针对抢占式的作业调度系统,如果分配节点时候是独占节点,那么每次申请的资源最少就是1个节点。如何实现一次提交作业,计算多个任务呢?(包括串行、openmp或mpi的任务)。最简单的方式就是按照自己的需求写一个运行脚本,然后通过作业管理系统提交即可。下面给出一个具体的例子加以说明,先给出实例,然后给出详细解释:

#!/bin/bash

cd ~/helloworld
yhrun -N1 -n1 ./helloworld &cd ~/gaussian
export OMP_NUM_THREADS=2 
yhrun -N1 -n1 ./g09cd ~/vasp
yhrun -N1 -n3 ./vasp &cd ~/lmp
export OMP_NUM_THREADS=3
yhrun -N1 -n2 ./lmp < in.lj & wait

详细解释如下:

#!/bin/bash
# 这是一个bash的脚本
# 脚本里面写什么,就会执行什么
# 我将会申请1个有12cpu核的计算节点,具体如何分配这些核做计算,我自己说了算# 先用1个核运行一个helloworld吧
cd ~/helloworld # 进入到helloworld所在目录
yhrun -N1 -n1 ./helloworld &# yhrun 是天河系列的集群的"mpirun"
# -N1表示1个节点
# -n1表示一个核
# helloworld 是 可执行程序的名字
# & 表示放到后台执行(计算节点的后台),如果不写的话,脚本就会卡在这一行,
#   直到执行完这一行,才会往下执行。而我们希望同时执行多个任务,所以放到后台# 再用2个核,运行一个openmp的程序吧
cd ~/gaussian
export OMP_NUM_THREADS=2 
yhrun -N1 -n1 ./g09 &# OMP_NUM_THREADS=2 表示用OMP线程数=2
# ./g09 是一个openmp程序的名字(举例)# 再用3个核,运行一个mpi的程序吧
cd ~/vasp
yhrun -N1 -n3 ./vasp &# -n3 启用3个mpi进程,运行mpi任务# 最后用6个核,运行一个mpi+openmp的程序吧
cd ~/lmp
export OMP_NUM_THREADS=3
yhrun -N1 -n2 ./lmp < in.lj & # 设置n=2,omp=3 开启2个mpi进程,每个mpi进程开启3个omp线程
# ./lmp 是mpi+openmp的程序名
# < in.lj 给定输入文件# 末尾增加
wait# 增加wait,让脚本等待以上后台任务运行结束后再停止
# 不添加的话,脚本运行到末尾就结束了,作业也就结束了。

当然,其实还有一种更为“精确”的控制每个进程运行哪个任务的高阶写法,但对于普通用户,一般没这个需求,故不在此介绍了。如确实有这个需求的欢迎留言。

我的个人网站:传送门

这篇关于slurm作业管理:一次提交运行多个任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/641018

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景