2013-08-24 34 views
3

我嘗試使用混合MPI-OpenMP並行運行代碼。據我所知,只要OpenMP線程的數量少於物理處理器的數量,每個處理器就運行一個線程。假設這是真的,假設我有一個由兩個計算卡組成的假想計算節點。每塊計算卡都有4個處理器+內存的芯片。我的問題是:什麼是MPI和OpenMP參數的最佳選擇。我會說2個MPI工作和4個線程,這是正確的嗎?運行混合MPI的最佳方式 - OpenMP作業

OMP_NUM_THREADS = 4 mpirun -np 2 code

我一些同事說,這些參數應慎重選擇聽到,以獲得最佳的性能(取決於硬件佈局)。我希望在運行混合作業方面提供一些建議。

感謝

回答

3

正確的並行配置的一個真正的應用程序代碼的選擇從來不是一件小事。 MPI進程和OpenMP線程在多處理器節點上的最佳映射取決於算法的具體實現,OpenMP運行時,高速緩存存儲器層次結構的內部組織以及與處理器體系結構相關的其他因素。

因此,建議用戶在其特定硬件上運行不同的配置以找到最佳分配。您可以在研究計算機設施和HPC諮詢機構的技術報告中找到關於此類研究的許多報告。

在一個m x n節點,其中m是處理器插槽和n的數量是這樣的實驗將涉及運行代碼爲MPI的數目的所有可能的積分值CPU內核的數量處理p和OpenMP邊線q使得每個可用編譯器都有p x q = m x n

下面是針對4個12 AMD Opteron節點的pq的不同組合獲得的並行加速圖。由喬治德利奇從HiPERiSM諮詢LLC technical report HCTR-2011-2取數據,2010. Parallel speedup for different numbers of MPI processes and OpenMP threads. Data taken from HiPERiSM Consulting LLC technical report HCTR-2011-2 by George Delic, 2010 可以看到,對於該特定代碼的處理器體系結構每MPI過程OpenMP的線程的最佳數量是1。然而的4個線程和12個MPI進程的情況下就緊隨其後。