我有一个sbatch脚本,用于通过不同的步骤将作业数组提交到Slurm:
#!/bin/bash
#SBATCH --ntasks 1
#SBATCH --nodes 1
#SBATCH --time 00-01:00:00
#SBATCH --array=0-15
dir="TEST_$SLURM_ARRAY_JOB_ID"
org=base-case
dst=$dir/case-$SLURM_ARRAY_TASK_ID
#step 0 -> I'd like that this step was executed only by one task!
sru
Problem:在这个的启发下,我尝试编写一个包装器脚本来提交带bash变量的SLURM数组作业。但是,我遇到了像$SLURM_ARRAY_TASK_ID这样的SLURM环境变量的问题,因为它是一个空变量。
我怀疑这与test_wrapper.sh如何解析尚未定义的SLURM变量有关,但我似乎找不到解决方案。
下面我提供了一个简单python脚本的工作示例,该脚本应该以数组ID作为输入变量,但是当bash包装脚本调用它时,python脚本会在接收到空变量时崩溃。
test_wrapper.sh:
#!/bin/bash
for argument in "$@"
do
key
我正在使用下面的.sh脚本,它是我使用sbatch提交的。Pairwise_3_P_a.do和Pairwise_3_P_c.do是应该只运行一次的线性步骤,但是Pairwise_3_P_b.do使用一个数组。我在阵列完成之前运行Pairwise_3_P_c.do时遇到了问题。 有没有办法使用--wait或wait bash命令修复这个脚本?我需要使用srun吗?答案是:How to hold up a script until a slurm job (start with srun) is completely finished??我不完全理解如何实现wait和文档中提到的wait和--w
如何在下面更改slurm脚本,以便每个python作业都得到一个唯一的GPU?这个节点有4个GPU,我想每个GPU运行一个python作业。问题是所有作业都使用第一个GPU,其他GPU是空闲的。
#!/bin/bash
#SBATCH --qos=maxjobs
#SBATCH -N 1
#SBATCH --exclusive
for i in `seq 0 3`; do
cd ${i}
srun python gpu_code.py &
cd ..
done
wait
我最近在看关于mpirun vs mpiexec和关于srun vs sbatch,但是我想知道mpirun和slurm和srun有什么关系。
通常在我看到的示例中,发送到sbatch的文件中包含srun <program>来执行MPI程序,但我有时也会看到使用mpirun或mpiexec的文件。然而,我不明白为什么有人会这样做。如中所示,似乎使用mpirun或mpiexec可能会产生各种类型的(依赖于实现?)错误,没有理由不使用srun。
这是准确的吗?或者,在slurm管理的集群上执行程序时,您希望使用mpirun或mpiexec而不是srun,这是有充分理由的吗?
我完全不知道用SLURM把工作提交给一个高性能计算机,我正面临着一个我无法解决的特殊问题。
我有一个job.slurm文件,其中包含以下bash脚本
#!/bin/bash
#SBATCH --job-name singularity-mpi
#SBATCH -N 1 # total number of nodes
#SBATCH --time=00:05:00 # Max execution time
#SBATCH --partition=partition-name
#SBATCH --output=/home/users/r/usrname/slurm-reports/slurm-%j
当尝试在集群上使用MPI时,我遇到了一个奇怪的问题,它使用Slurm作为作业调度程序。在这两种情况下,我都试图运行这个简单的python程序:
from mpi4py import MPI
print('TEST')
创建一个批处理脚本(在其中,我导出合适的虚拟环境并运行这个python程序)并将它与sbatch一起使用非常有用。
但是,使用终端中的srun运行相同的程序(在同一个虚拟环境中)会产生以下错误:
*** An error occurred in MPI_Init_thread
*** on a NULL communicator
*** MPI_ERRORS_AR
如果直接从命令行运行,这个简单的脚本(simple_mail.sbatch)将发送两封邮件。它在head节点和我尝试过的任何集群节点上运行都很好:
#!/bin/bash
echo "Getting ready to send an e-mail from $HOSTNAME"
# Try using a pipe
echo 'Testing pipe version' | mailx -s 'testing mail app' user@example.com
# Try using a heredoc
mailx -s 'test