SLURM:如何在同一计算节点或不同节点上并行运行不同的可执行文件?

its*_*tre 4 executable mpi job-scheduling slurm sbatch

目标:

  1. 了解如何通过 sbatch 作业提交来运行、共同调度或执行可执行文件/应用程序
  2. 使用 srun 或 mpirun

研究:

代码片段:

 #!/bin/bash
 #SBATCH --job-name LEBT 
 #SBATCH --partition=angel
 #SBATCH --nodelist=node38
 #SBATCH --sockets-per-node=1
 #SBATCH --cores-per-socket=1
 #SBATCH --time 00:10:00 
 #SBATCH --output LEBT.out

 # the slurm module provides the srun command
 module load openmpi


 srun  -n 1   ./LU.exe -i 100 -s 100  &
 srun  -n 1   ./BT.exe  &

 wait 
Run Code Online (Sandbox Code Playgroud)

手册页:

 [srun]-->[https://computing.llnl.gov/tutorials/linux_clusters/man/srun.txt]

 [mpirun]-->[https://www.open-mpi.org/doc/v1.8/man1/mpirun.1.php]
Run Code Online (Sandbox Code Playgroud)

dam*_*ois 5

您的脚本将以较小的修改为模进行工作。如果您不关心进程是否在同一节点上运行,请添加#SBATCH --ntasks=2

#!/bin/bash
#SBATCH --job-name LEBT 
#SBATCH --ntasks=2
#SBATCH --partition=angel
#SBATCH --nodelist=node38
#SBATCH --sockets-per-node=1
#SBATCH --cores-per-socket=1
#SBATCH --time 00:10:00 
#SBATCH --output LEBT.out

# the slurm module provides the srun command
module load openmpi

srun  -n 1 --exclusive  ./LU.exe -i 100 -s 100  &
srun  -n 1 --exclusive  ./BT.exe  &

wait 
Run Code Online (Sandbox Code Playgroud)

--exclusive的参数是srun 告诉srun以整个分配的子集运行,请参阅srun 联机帮助页

如果您希望两个进程都在 sam 节点上运行,请使用--cpus-per-task=2

#!/bin/bash
#SBATCH --job-name LEBT 
#SBATCH --cpus-per-task=2
#SBATCH --partition=angel
#SBATCH --nodelist=node38
#SBATCH --sockets-per-node=1
#SBATCH --cores-per-socket=1
#SBATCH --time 00:10:00 
#SBATCH --output LEBT.out

# the slurm module provides the srun command
module load openmpi

srun  -c 1 --exclusive  ./LU.exe -i 100 -s 100  &
srun  -c 1 --exclusive  ./BT.exe  &

wait 
Run Code Online (Sandbox Code Playgroud)

请注意,您必须运行srunwith-c 1而不是 with -n 1