有没有办法在 HPC 上的多个节点之间 运行 代码

Is there any way to Run codes between multiple Nodes on HPC

我正在尝试 运行 假设有 10 个不同的代码,每个代码都保存在各自的目录中,名为 1,2,3,..,10。

#PBS -l nodes=10:cores=1

这意味着我在 10 个不同的 CPU 上各有 1 个线程。现在我必须提交一份工作,以便每个目录仅获得 1 CPU 的 1 个线程,类似地其他目录 2,3..,10。
代码是分子动力学的,运行s 好几个小时,也是独立的。我尝试使用 Gnu Parallel,但未能使用每 10 个 CPU。可能是 Gnu Parallel 用于在 1 CPU 个核心之间分配作业。我知道 MPI 可以,但我不知道具体怎么做。有没有人可以推荐一下。

我无权访问 PBS 集群,但示例 2 来自 https://www.nas.nasa.gov/hecc/support/kb/using-gnu-parallel-to-package-multiple-jobs-in-a-single-pbs-job_303.html 可能是您要找的:

#PBS -lselect=6:ncpus=4:model=san
#PBS -lwalltime=4:00:00

cd $PBS_O_WORKDIR

seq 64 | parallel -j 4 -u --sshloginfile $PBS_NODEFILE \
 "cd $PWD; ./myscript.csh {}"

适应您的情况(未经测试):

#PBS -l place=scatter
#PBS -l nodes=10:cores=1

cd $PBS_O_WORKDIR

seq 10 | parallel -j 1 --sshloginfile $PBS_NODEFILE --wd $PBS_O_WORKDIR ./myscript {}

您需要 place=scatter,否则同一主机可能会在 $PBS_NODEFILE 中列出两次,而 GNU Parallel 会忽略重复项。