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

我有4个目录(名称:1、2、3、4)。每个文件都有一个名为提交的C代码可执行文件。使用#PBS -l select=2:ncpus=2,给了我4个工作人员(2个在节点1上,2个在节点2上)。

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

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

上述分叉方法仅选择节点1,并且将所有4个作业分叉到节点1的2个工作线程之间,而从未进行到节点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编译器编译的可执行文件。 提交文件是分子动力学可执行代码,可将文件生成到提交作业的文件夹中。

(2)在1个节点上运行作业,4个核==>总共4个线程;

sub.sh包含内容,

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

sub.sh是从父目录提交的,然后进入各个目录,并为每个文件夹创建线程。因此,生成的文件在每个1,4目录内生成,而不受其他目录或线程的干扰。 The resulting video looks like this which is correct

(3)使用gnu-parallel在2个节点上运行作业,共2个内核==>总共4个线程:

sub.sh包含内容,

#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,4上运行并在目录内生成文件,并且速度与串行代码相当,这意味着至少所有4个工人都在工作。但是,当我制作1文件夹结果的视频时,它看起来很奇怪,如您所见,蓝色游泳者经常摆动,这可能是因为条件video

肯定在线程之间发生了奇怪的事情。我不知道。

hao0303hao 回答:HPC:节点之间提交多个独立的串行作业

类似的东西:

seq 4 | parallel --wd . -S 2/node1 -S 2/node2 ./{}/submit
本文链接:https://www.f2er.com/3065642.html

大家都在问