道歉,但我无法在Google上找到解决方案。我想通过MPI使用并行化为列表中的每个染色体(在下面的代码中称为CHROMS
)分别运行一个脚本。我正在调用的脚本(some_script.sh
)具有一个我要为每个调用更改的染色体参数,以及另一个我想在所有调用中保持不变的参数。基本上,我想要下面的代码做什么,但是要使用mpiexec而不是后台进程。
#Run the pipeline for each chromosome separately.
#run_chromosome_iteration.sh
SOME_OTHER_PARAM="blah blah"
for c in $CHROMS;
do
$SCRIPTS/some_script.sh $c $SOME_OTHER_PARAM &
done
编辑:我的项目实际上有两个并行化级别:我使用100个作业运行我的模型100次,并且我想在一组染色体上并行化每个作业(在这种情况下为11个)。请参见下面的代码:
#Submit all jobs.
for i in {1..100};
do
qsub -v ITER=${i} run_chromosome_iteration.sh
done
因此,我可以在较低的并行化级别使用作业数组,但是它将导致1100个独立的作业,并且与在并行进程之间共享内存相比,内存效率较低。我也不能简单地使用后台进程,因为要使用的内存量需要集群中有两个计算节点。这就是为什么我要使用MPI。