linux slurm - 在 1 个节点上并行地为任务 运行 分离 .out 文件

linux slurm - separate .out files for tasks run in paralell on 1 node

我在 linux 上并行 运行 作业,通过请求一个节点使用 slurm 并且 运行 每个 cpu 一个任务。

但是,指定的输出将两个流连接到单个输出文件中。我在 epxectation 上尝试了 %t 标志,它将分隔任务,但它只是在输出文件中记录所有内容并附加 _0(例如 sample_output__XXX_XX_0.out)。

任何有关如何最好地为每个任务生成单独的 .out 日志的建议将不胜感激

#!/bin/bash

#SBATCH --job-name=recon_all_06172021_1829
#SBATCH --output=/path/recon_all_06172021_1829_%A_%a_%t.out
#SBATCH --error=/path/recon_all_06172021_1829_%A_%a.err
#SBATCH --ntasks=2
#SBATCH --ntasks-per-node=2
#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --time=23:59:00

#! Always keep the following echo commands to monitor CPU, memory usage
echo "SLURM_MEM_PER_CPU: $SLURM_MEM_PER_CPU"
echo "SLURM_MEM_PER_NODE: $SLURM_MEM_PER_NODE"
echo "SLURM_JOB_NUM_NODES: $SLURM_JOB_NUM_NODES"
echo "SLURM_NNODES: $SLURM_NNODES"
echo "SLURM_NTASKS: $SLURM_NTASKS"
echo "SLURM_CPUS_PER_TASK: $SLURM_CPUS_PER_TASK"
echo "SLURM_JOB_CPUS_PER_NODE: $SLURM_JOB_CPUS_PER_NODE"

command 1 &
command 2
wait


您可以从命令本身重定向标准输出,例如:

command 1 > file1 2>&1
command 2 > file2 2>&1

不像使用 sbatch 文件名模式那样简洁,但它会将每个命令的输出分开。