提交到队列后,MPI程序的计时会发生显着变化

时间:2014-09-05 20:41:36

标签: mpi cluster-computing sungridengine qsub

我有一个MPI程序,它创建一个文件,每次迭代一定数量的计算时间。当我在不提交队列的情况下运行此代码(此集群运行SGE)时,它会以秒为单位给出以下时间。我使用mpirun -np8抓取了8个处理器。

STEP    ITIME     
-------------
 1  0.868128 
 2  0.426714 
 3  0.409768 
 4  0.427312 
 5  0.412737 
 6  0.413256 
 7  0.414480 
 8  0.414984 
 9  0.415683 
10  0.416826

但是当我为8个处理器提交相同数量的工作并将其提交到队列时,程序会花费更多时间来计算迭代次数。每步的时间几乎是四倍。

STEP    ITIME    
-------------
 1  3.189155  
 2  1.594365  
 3  1.600892  
 4  1.589424  
 5  1.605402  
 6  1.589136  
 7  1.599425  
 8  1.591966  
 9  1.601557 
10  1.603447

以下bash脚本用于提交作业。

#!/bin/sh
#$ -S /bin/bash
#$ -pe orte 8
export PATH=~:$PATH
/opt/openmpi/bin/mpirun -np 8 ./exec

如果有人可以指出可能导致此问题的原因,我将不胜感激?

1 个答案:

答案 0 :(得分:2)

在第一种情况下(运行此代码而不提交队列),您可能在同一节点上运行8个进程。现在通常很好:你可能有8个核心。

试试这个:

$ /opt/openmpi/bin/mpirun -np 8 uname -a
你有8条相同的线吗?

在SGE情况下,您可能会获得8台物理机,因此现在涉及网络通信。如上确认。我不知道SGE,但你的环境无疑有一个"如何分配mpi进程"切换以指示您是否希望它首先分配深度或宽度。