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

相关文章

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】控制台输出总结背景

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔