For loop 如何将脚本部分作为数组提交

For loop 如何将脚本部分作为数组提交,for-loop,parallel-processing,cluster-computing,slurm,For Loop,Parallel Processing,Cluster Computing,Slurm,我正在实验室的服务器上使用Slurm,我想提交一份如下所示的作业: #SBATCH ... mkdir my/file/architecture echo "#HEADER" > my/file/architecture/output_summary.txt for f in my/dir/*.csv; do python3 myscript.py $f done 是否有任何方法可以运行它,以便它完成第一条指令,然后并行运行for循环?每个步骤都是独立的,

我正在实验室的服务器上使用Slurm,我想提交一份如下所示的作业:

#SBATCH ...

mkdir my/file/architecture
echo "#HEADER" > my/file/architecture/output_summary.txt

for f in my/dir/*.csv; do
    python3 myscript.py $f
done
是否有任何方法可以运行它,以便它完成第一条指令,然后并行运行
for
循环?每个步骤都是独立的,因此它们可以同时运行

最初的步骤不是很复杂,因此如果需要,我可以将其分离为一个单独的SBATCH脚本<但是,code>my/dir/包含大约7000个要处理的csv文件,因此手动将它们全部输入将是一件痛苦的事情。

可能非常适合这里,或者
xargs
,尽管我更喜欢在Slurm作业中使用
并行

下面是一个运行8路并行
sbatch
脚本的示例:

#/垃圾箱/垃圾箱
#斯拜奇。。。
#SBATCH--节点=1
#SBATCH--ntasks=
srun=“srun——独占-N1-N1”
#-j是并行运行的任务数,因此我们将其设置为$SLURM_NTASKS
#注意--ntasks=1和--cpu per task=8将使srun一次启动一个程序副本。我们使用“find”生成要操作的文件列表。
find/my/dir/*.csv-type f| parallel-j$SLURM_NTASKS“$srun python3 myscript.py{}”

最简单的方法是在单个节点上运行,
parallel
可以使用SSH(我相信)在多台计算机上运行。

很抱歉延迟回复,我正忙于我项目的另一部分!您能解释一下
srun=“srun--exclusive-N1-N1”
行的作用吗?我的理解是,当在
parallel
部分调用srun时,它会为srun设置“参数”,但我想确定:)正确,它只是为
srun
创建了一种别名,带有一些默认参数。