相关疑难解决方法(0)

关于并行任务的 `srun ... >output_file` 的语义

对不起,这个问题需要大量的积累,但总而言之,它是关于许多并行实例srun ... >output_file将或不会导致某些进程/任务对其他进程/任务产生的输出造成破坏的条件.


案例 0:仅 bash(无 SLURM)

假设这prog-0.sh是以下玩具脚本:

#!/bin/bash

hostname >&2

if [[ $JOB_INDEX = 0 ]]
then
    date
fi
Run Code Online (Sandbox Code Playgroud)

此脚本将一些输出打印到stderr,并可能将当前日期打印到stdout

case-0.sh下面显示的“驱动程序”脚本产生$NJOBS进程,所有写入prog-0-stdout.txt

#!/bin/bash

for i in $( seq 0 $(( NJOBS - 1 )) )
do  
    JOB_INDEX=$i ./prog-0.sh >prog-0-stdout.txt &
done
Run Code Online (Sandbox Code Playgroud)

运行后

% NJOBS=100 ./case-0.sh 2>prog-0-stderr.txt
Run Code Online (Sandbox Code Playgroud)

...我的期望是prog-0-stderr.txt将包含 100 行,并且prog-0-stdout.txt将是空的

我的期望实现了:

 % wc prog-0-std*.txt
  100  100 3000 prog-0-stderr.txt
    0    0    0 prog-0-stdout.txt …
Run Code Online (Sandbox Code Playgroud)

slurm

4
推荐指数
1
解决办法
1191
查看次数

标签 统计

slurm ×1