我有一个如下所示的提交脚本,它尝试在具有 3 个节点的后台运行大量 csce.py 实例......在笔记本电脑中,这通常可以成功地将所有后台任务自动分配到 16 个核心中。 ..但是,我不确定在集群中是否也会自动将4*13*9任务分配到3个节点(48核)中。
#!/bin/bash
#SBATCH -N 3 # Total number of nodes requested (16 cores/node)
#SBATCH -n 48 # Total number of mpi tasks requested
for simplify in 0.1 0.15 0.2 0.25
do for lmbda in 0.5 1 2 5 10 20 50 100 200 500 1000 2000 5000
do for mu in 0.005 0.01 0.05 0.1 0.5 1 5 10 50
do rm eci.out
csce.py --mu $mu --lmbda $lmbda --simplify $simplify --favor-low-energy 0.01 --bias-stable --save-energies lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_ce-energies.dat --save-weights lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_ce-weights.dat --casm-eci-file eci.in lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_eci.out --save-hull lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_ce-hull.dat --preserve-ground-state 10000 2> lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_error 1> lmbda_$lmbda\_mu_$mu\_simplify_$simplify\_output &
done
done
done
wait
答案1
不,如果您有多个节点(机器),则没有任何东西可以利用它,所有内容都将在您运行此脚本的机器上运行。
&
该行末尾的只会csce.py
使操作在当前计算机的后台运行。因此,通过此设置,您将在当前计算机上并行运行 4x12x9 任务。
GNU 并行支持远程执行,为此,您需要设置对其他计算机的自动访问,并考虑如何访问任何输入数据(如果它不是存储在所有计算机共享的某个卷上供读取,您可能需要复制数据才能处理)。