slurm作业管理:一次提交运行多个任务 短命女 2022-05-16 13:55 1148阅读 0赞 针对抢占式的作业调度系统,如果分配节点时候是独占节点,那么每次申请的资源最少就是1个节点。如何实现一次提交作业,计算多个任务呢?(包括串行、openmp或mpi的任务)。最简单的方式就是按照自己的需求写一个运行脚本,然后通过作业管理系统提交即可。下面给出一个具体的例子加以说明,先给出实例,然后给出详细解释: #!/bin/bash cd ~/helloworld yhrun -N1 -n1 ./helloworld & cd ~/gaussian export OMP_NUM_THREADS=2 yhrun -N1 -n1 ./g09 cd ~/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,让脚本等待以上后台任务运行结束后再停止 # 不添加的话,脚本运行到末尾就结束了,作业也就结束了。 当然,其实还有一种更为“精确”的控制每个进程运行哪个任务的高阶写法,但对于普通用户,一般没这个需求,故不在此介绍了。如确实有这个需求的欢迎留言。 我的个人网站:[传送门][Link 1] [Link 1]: http://mrzhenggang.com
还没有评论,来说两句吧...