Parallel processing HPC:节点之间的多个独立串行作业提交

Parallel processing HPC:节点之间的多个独立串行作业提交,parallel-processing,mpi,hpc,gnu-parallel,Parallel Processing,Mpi,Hpc,Gnu Parallel,我有4个董事会名称:1、2、3、4。每一个都有一个名为submit的C代码的可执行文件。使用PBS-lselect=2:ncpus=2,在节点1上给了我4个worker2,在节点2上给了我2个worker2 任务:我需要在4个不同的文件夹上分别运行4个文件 #PBS -l select=2:ncpus=2 ./1/submit& ./2/submit& ./3/submit& ./4/submit& 上述分叉方法仅选择节点1,并在节点1的两个工作人员之间分叉所

我有4个董事会名称:1、2、3、4。每一个都有一个名为submit的C代码的可执行文件。使用PBS-lselect=2:ncpus=2,在节点1上给了我4个worker2,在节点2上给了我2个worker2

任务:我需要在4个不同的文件夹上分别运行4个文件

#PBS -l select=2:ncpus=2
./1/submit&
./2/submit&
./3/submit&
./4/submit&

上述分叉方法仅选择节点1,并在节点1的两个工作人员之间分叉所有4个作业,而从不转到节点2

#PBS -l select=2:ncpus=2

mpirun -np 1 -machinefile $PBS_NODEFILE ./1/submit&
mpirun -np 1 -machinefile $PBS_NODEFILE ./2/submit&
mpirun -np 1 -machinefile $PBS_NODEFILE ./3/submit&
mpirun -np 1 -machinefile $PBS_NODEFILE ./4/submit&
我尝试使用mpirun,但它仍然只在node-1工作者之间分叉。 请建议是否有任何方法在节点之间划分作业

Ole Tange回答后的问题更新

1目录结构及其内容如下:

ParentDirectory有PBS文件sub.sh和子目录1,2,3,4。每个子目录都有提交文件,该文件是使用icc编译器编译的可执行文件。 提交文件是一个分子动力学可执行代码,它将文件生成到提交作业的文件夹中

在1个节点上运行2个作业,共4个内核==>4个线程

sub.sh包含以下内容:

#PBS -l select=1:ncpus=4
cd 1;./submit&
cd ../2;./submit&
cd ../3;./submit&
cd ../4;./submit&
#PBS -l select=2:ncpus=2
seq 4 | parallel --wd . -S 2/"$node1" -S 2/"$node2" ./exx

sub.sh从父目录提交,然后进入各个目录并为每个文件夹创建线程。因此,结果文件在每个1,2,3,4目录中生成,而不会受到其他目录或线程的任何干扰

在2个节点、2个内核==>4个线程上使用gnu并行运行3个作业:

sub.sh包含以下内容:

#PBS -l select=1:ncpus=4
cd 1;./submit&
cd ../2;./submit&
cd ../3;./submit&
cd ../4;./submit&
#PBS -l select=2:ncpus=2
seq 4 | parallel --wd . -S 2/"$node1" -S 2/"$node2" ./exx

exx有它的内容

cd 1;./submit&
cd ../2;./submit&
cd ../3;./submit&
cd ../4;./submit&

sub.sh是从父目录提交的。提交sub.sh后,我看到作业在每个文件夹1、2、3、4上运行,并在目录中生成文件,速度与串行代码相当,这意味着至少所有4个工作人员都在工作。但是当我把1文件夹的结果制作成视频时,它看起来很奇怪,因为你可以看到蓝色的游泳运动员经常摆动,这可能是因为比赛的环境

这两条线之间肯定发生了奇怪的事情。我不知道。

类似于:

seq 4 | parallel --wd . -S 2/node1 -S 2/node2 ./{}/submit

在重新阅读已发布的HPC infrastructure best practices(HPC基础架构最佳实践)文档后,您是否咨询了HPC基础架构帮助热线和HPC支持团队,并给出了哪些结果?这是HPC基础设施的通用标准,不是吗?这是一种令人尴尬的并行性,最好使用作业数组而不是单个作业来运行。@user3666197是的,我问过HPC的相关人员。但他没有回答,而是说使用MPI或Openmp并行化代码,然后提交。问题是,在我的位置上,HPC分为两组,因为低队列和高队列的人,我属于低队列类别,所以当我使用1节点:10核心时,我的代码需要很长时间才能启动,但5节点:2核心启动很快。从今往后,我想以这种方式提交。作业数组也不能解决这个问题。@GillesGouaillardet作业数组提交单独的作业,我们一次只能运行10个作业。和整体平均值一样,需要提交100个代码。如果我单独提交代码或使用作业数组提交代码,这将需要很多天。如果你的应用程序不是MPI程序,那么你可以使用MPI MPMD MPI运行-np 1./1/提交:-np 1./2/提交:。。。。IIRC,pbs提供了一个pbsdsh命令,可以/应该使用它来代替mpirun。请记住,当最慢的任务完成时,mpirun将返回,如果出现一些不平衡,您将浪费资源。这就是为什么我首先建议使用作业数组。我不知道seq 4 | parallel在节点之间是否有意义。我试过了,但没有成功,错误文件显示为,parallel:command notfound@yasir你用[gnu parallel]标记了你的问题。这个错误听起来好像没有安装GNU Parallel。如果不是,您可能可以在您的开发机器上使用parallel-embed。我在某处听说,通过GNU parallel,这种并行是可能的。正如您所确认的,我将努力安装和理解GNU并行。Thanks@yasir要开始学习GNU,请从第1+2章开始:我做了下面的4 | Parallel-wd-s2/$node1-s2/$node2./file,文件内容为./1/提交和/2/提交和/3/提交和/4/提交和/提交。通过这种方式,我让所有代码在各自的目录1、2、3、4中运行并生成结果。但在结果中,我看到了一些数据的重叠。具体地说,我在分子动力学中生成了位置,从视频中可以看出,节点1的两个工人在文件夹1和2之间竞争,同样,在其他两个文件夹上也有两个工人。请检查您的命令是否缺少任何内容,如-k或-tmuxpane等。