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

Parallel processing 有没有办法在HPC上的多个节点之间运行代码,parallel-processing,mpi,Parallel Processing,Mpi,我试着运行10个不同的代码,每个代码保存在各自的目录中,命名为1,2,3,…,10 #PBS -l nodes=10:cores=1 这意味着我在10个不同的CPU上各有1个线程。现在我必须提交一个作业,以便每个目录只获得1个CPU的1个线程,以及类似的其他目录2,3..10 代码用于分子动力学,运行数小时,并且它们也是独立的。我尝试使用Gnu并行,但未能使用每10个CPU。可能是Gnu并行,用于在1个CPU核之间分配作业。我知道MPI可以,但我不知道具体怎么做。任何人都可以提出建议。我没有访

我试着运行10个不同的代码,每个代码保存在各自的目录中,命名为1,2,3,…,10

#PBS -l nodes=10:cores=1
这意味着我在10个不同的CPU上各有1个线程。现在我必须提交一个作业,以便每个目录只获得1个CPU的1个线程,以及类似的其他目录2,3..10

代码用于分子动力学,运行数小时,并且它们也是独立的。我尝试使用Gnu并行,但未能使用每10个CPU。可能是Gnu并行,用于在1个CPU核之间分配作业。我知道MPI可以,但我不知道具体怎么做。任何人都可以提出建议。

我没有访问PBS群集的权限,但示例2来自 可能是您正在寻找的:

#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 {}"
适应您的情况(未经测试):


您需要
place=scatter
,否则同一主机可能会在
$PBS\u NODEFILE
中列出两次,GNU Parallel会忽略重复的主机。

您可能希望熟悉数组作业的概念。是的,但如果我是正确的,然后,假设我提交了一个包含10个数组作业的作业,然后PBS将运行10个个人作业,并合并到一个主提交作业中。但我有一个限制,我在大学里一次只能做20份工作。这就是学习节点作业分布的全部要点,因为我想要整体平均值,需要运行1000个作业。
pbsdsh
可以帮助您,看到这可能会以一个次优解决方案结束,其中所有节点都必须等待最慢的一个。因此,与其尝试玩系统游戏,不如与系统管理员聊聊,解释一个包含200个单节点作业的作业数组比在10个节点上运行20个作业更有效。我非常感谢它解决了我的问题。我稍微修改了myscript.csh(删除了最后一行,添加了cd$1;/a,其中a是保存在各自目录中的预编译文件。)我仍然存在一些奇怪的问题,一旦找到明确的原因,我将更新这些问题。在10个文件夹中,前5个文件夹并行运行,其余5个文件夹只有在前5个文件夹完成后才会启动。我不能问这个问题,因为我不太明白why@yasir
cat$PBS\u NODEFILE
的内容是什么?问题是,PBS显然重复相同的服务器。GNU Parallel只查看唯一的服务器名称,因此如果同一个服务器被提及4次,它实际上只算作一个。如果你想在上面运行4个进程,你可以这样做:-j100%-S4/chas005.hpc.iitd.ac.inI在PBS上添加了以下行,“PBS-l place=scatter”,现在它给了我不同的节点。因此,您提到的第一个脚本工作顺利。谢谢
#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 {}