2014-03-19 87 views
1

我知道,資源管理器(R.M。)傳遞插槽信息的openmpi但mulicore-multiprocessor環境中的主機和插槽有什麼區別?

  1. 如何R.M.確定在多核心處理器的時隙數(爲1芯== 1時隙總是?)和,
  2. 如果我在4核處理器的a.out運行,那麼是什麼區別:

    • myshell $的mpirun --host N1,N1,N1,N1,N1 ./a.out
    • myshell $的mpirun -np 5 --host N1 ./a.out

我意思是在這種情況下,我是否「超額訂閱」節點?

+0

這是在MPI常見問題(https://www.open-mpi.org/faq/?category=running#oversubscribeing) – mfro

+0

中回答的常見問題解答並沒有明確區分處理器(multi-uni)的基礎上的#核心 所以要精確。 是不是說「不核心」==沒有。的插槽? –

+0

我認爲可以安全地在MPI環境中說#processors = #cores – mfro

回答

3

說到資源管理器,例如SLURM,LSF,SGE/OGE,Torque等,插槽和內核之間的映射完全留給系統管理員。它通常取決於要在節點上執行的作業的性質。在大多數任務受CPU限制的HPC中,通常的映射是每個內核(或每個硬件線程)一個插槽。在數據處理中,大多數任務都是I/O綁定的,擁有比內核更多的插槽可能會更有益處。

這同樣適用於啓動MPI進程。當在主機文件中描述主機時,每個主機的插槽數量不一定必須與硬件配置相匹配。這又取決於MPI工作的性質。時隙信息通常用於控制如何分配等級。例如,Open MPI中的默認策略是填充第一個主機上提供的插槽,然後移至下一個。一旦所有主機都被填滿,如果還有更多的隊列尚未啓動,則進程將從主機列表中的第一個節點重新開始。

--host n1,n1,n1,n1,n1--host n1 -np 5的最終效果是一樣的:在主機n1上啓動了5個等級。不同之處在於Open MPI如何解釋它。

  • mpiexec --host n1,n1,n1,n1,n1 ./a.out告訴Open MPI主機n1上有5個插槽。由於-np參數被省略,所以mpiexec每個定義的插槽開始一個等級,因此5個等級在主機n1處開始。
  • mpiexec --host n1 -np 5 ./a.out告訴Open MPI主機n1上有一個插槽。一個等級在n1上啓動。由於不再有時隙,mpiexec從第一個定義的時隙再次開始,即在主機n1上啓動另一個等級。重複此操作,直至n1上啓動所有5個等級並導致超額認購。

請注意,僅從MPI庫的角度來超額訂購節點 - 在n1上提供了一個插槽,但它必須在那裏啓動5個等級。這與超節點本身沒有任何關係,即可能有比5更多的CPU空閒內核。

當主機列表由資源管理器提供時,超額訂閱節點是一個非常糟糕的主意,尤其是因爲某些或者所有節點可能與其他作業共享。在這種情況下,建議使用--nooversubscribe選項以防止mpiexec啓動比授予的插槽更多的隊列。請注意,雖然存在超額認購的合法情況,例如當節點完全授予(不與其他任務共享)並且MPI作業是I/O密集型時。

相關問題