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

相关文章

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目