只有一些并行步骤的作业数组和 shell 脚本
Job arrays and shell script with only some parallel steps
我正在使用我使用 sbatch 提交的以下 .sh 脚本。 Pairwise_3_P_a.do 和 Pairwise_3_P_c.do 是线性步骤,应该 运行 只有一次,但 Pairwise_3_P_b.do 使用数组。我在阵列完成之前遇到 Pairwise_3_P_c.do 成为 运行 的问题。
有没有办法使用 --wait 或 wait bash 命令修复此脚本?我是否需要使用 s运行,如此回答:?我不完全理解如何实现那里和文档中提到的 wait 和 --wait。
#!/bin/bash
#SBATCH --array=1-248
module load stata
stata-mp Pairwise_3_P_a.do
stata-mp Pairwise_3_P_b.do $SLURM_ARRAY_TASK_ID
stata-mp Pairwise_3_P_c.do
到目前为止,我一直在尝试将并行步骤拆分成一个单独的 .sh 脚本,但这对 运行 来说很烦人。
谢谢。
提交脚本的编写方式将创建 248 个作业,每个作业将执行完全相同的第一步和最后一步,仅在第二步有所不同。这可能不是你想要的。
您应该将这三行分成三个不同的作业,只有第二个应该是一个作业数组。我认为这里的顺序很重要。
Job1.sh:
#!/bin/bash
module load stata
stata-mp Pairwise_3_P_a.do
Job2.sh:
#!/bin/bash
#SBATCH --array=1-248
module load stata
stata-mp Pairwise_3_P_b.do $SLURM_ARRAY_TASK_ID
Job3.sh:
#!/bin/bash
module load stata
stata-mp Pairwise_3_P_c.do
设置这些文件后,运行以下命令:
FIRSTJOBID=$(sbatch --parsable Job1.sh)
SECONDJOBID=$(sbatch --parsable --dependendcy=afterok:$FIRSTJOBID Job2.sh)
sbatch --parsable --dependendcy=afterany:$SECONDJOBID Job3.sh
此外,当您开始 stata-mp
时,请求至少一个以上的核心以使 Stata 能够使用其多线程功能是有意义的,例如:
--cpus-per-task=8
我正在使用我使用 sbatch 提交的以下 .sh 脚本。 Pairwise_3_P_a.do 和 Pairwise_3_P_c.do 是线性步骤,应该 运行 只有一次,但 Pairwise_3_P_b.do 使用数组。我在阵列完成之前遇到 Pairwise_3_P_c.do 成为 运行 的问题。
有没有办法使用 --wait 或 wait bash 命令修复此脚本?我是否需要使用 s运行,如此回答:
#!/bin/bash
#SBATCH --array=1-248
module load stata
stata-mp Pairwise_3_P_a.do
stata-mp Pairwise_3_P_b.do $SLURM_ARRAY_TASK_ID
stata-mp Pairwise_3_P_c.do
到目前为止,我一直在尝试将并行步骤拆分成一个单独的 .sh 脚本,但这对 运行 来说很烦人。
谢谢。
提交脚本的编写方式将创建 248 个作业,每个作业将执行完全相同的第一步和最后一步,仅在第二步有所不同。这可能不是你想要的。
您应该将这三行分成三个不同的作业,只有第二个应该是一个作业数组。我认为这里的顺序很重要。
Job1.sh:
#!/bin/bash
module load stata
stata-mp Pairwise_3_P_a.do
Job2.sh:
#!/bin/bash
#SBATCH --array=1-248
module load stata
stata-mp Pairwise_3_P_b.do $SLURM_ARRAY_TASK_ID
Job3.sh:
#!/bin/bash
module load stata
stata-mp Pairwise_3_P_c.do
设置这些文件后,运行以下命令:
FIRSTJOBID=$(sbatch --parsable Job1.sh)
SECONDJOBID=$(sbatch --parsable --dependendcy=afterok:$FIRSTJOBID Job2.sh)
sbatch --parsable --dependendcy=afterany:$SECONDJOBID Job3.sh
此外,当您开始 stata-mp
时,请求至少一个以上的核心以使 Stata 能够使用其多线程功能是有意义的,例如:
--cpus-per-task=8