本發明涉及并行區域分解的通信優化領域,尤其涉及一種基于spparks并行框架的動力學蒙特卡洛并行模擬的通信優化方法及其系統。
背景技術:
動力學蒙特卡洛(kmc,kineticmontecarlo)方法是廣泛應用的材料輻照損傷計算機模擬手段之一,其關鍵是通過建立一個隨機過程或概率模型,計算近鄰原子之間的相互作用勢能的發生概率,可以模擬介觀尺度下較大規模、較長時間的材料微觀結構演化過程。動力學蒙特卡洛并行模擬是結合高性能計算機和動力學蒙特卡洛方法形成的并行模擬方法,能夠進一步突破現有的時空尺度限制、內存容量限制,實現與實驗相當的時間、空間尺度的介觀尺度模擬,是材料領域高性能模擬最常用的方法之一。
由于動力學蒙特卡洛固有的串行性,并行模擬方法存在并行效率低、內存開銷大,甚至難以保證模擬結果正確性等問題。有學者提出了一個適用于并行模擬的sl算法,并且還提出了以sl算法為基礎開發了一個用于動力學蒙特卡洛并行模擬的c++通用框架spparks,可以在損失部分精度的條件下實現三維大規模并行模擬。spparks將每一個進程的數據區域進一步劃分成子區域,并在進程內對子區域進行編號,每個進程并行處理對應于同一編號子區域的數據避免進程之間的數據沖突。在初始化階段,初始化要模擬的晶格點的數據,建立進程拓撲并經過區域分解將數據均勻分配到相應進程。內迭代中,每個進程執行兩次數據交換并進行計算直到達到給定的內迭代時間閾值。在每次外迭代中,總數8個子區域輪詢執行計算。首先,一個進程就當前計算子區域的邊界數據,使用點對點通信操作與鄰居進程進行數據交換。接下來,進程在當前子區域隨機地選擇一個模擬事件執行,更新當前子區域受影響的格點信息。最后,進程使用當前子區域邊界數據執行第二次點對點通信操作,進入下一個子區域的計算。第一次模擬內迭代結束后,無論下一次內迭代完成時是否達到給定的外迭代時間閾值,都會繼續執行直到8次內迭代結束。
上述spparks框架并行模擬時的特點是,8次內迭代大量使用點對點通信,通信函數mpi_irecv()和mpi_send()總執行時間占到總通信時間的90%以上,帶來很大的通信開銷。并且,同一進程當前計算子區域在內迭代開始后、結束前兩次點對點通信過程中,有部分數據由于未發生更改,是不必進行交換的,這造成單次通信操作交換的數據量大于必要的數據量,增加了單次通信操作的時間。此外,對于kmc并行模擬時中心進程需要與周圍多個鄰居進程通信的進程拓撲,點對點通信提高了通信時間復雜度,降低了并行效率,使負載不均衡問題更加突出。
技術實現要素:
有鑒于此,本發明的目的在于提供一種動力學蒙特卡洛并行模擬的通信優化方法及其系統,旨在解決現有kmc大規模并行算法中鄰居進程間點到點通信引起的負載不均衡問題。
本發明提出一種動力學蒙特卡洛并行模擬的通信優化方法,其中,所述方法包括:
構造通信數據結構;
構建鄰居進程的圖狀拓撲結構;
開啟進程外迭代;
按照預設順序從多個子區域中選擇一個子區域;
進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信;
迭代結束。
優選的,所述通信數據結構包括swap、swapreverse以及combswap。
優選的,所述方法還包括:
設定外迭代時間閾值t和內迭代時間閾值t。
優選的,所述進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體包括:
判斷當前選擇的子區域是否為第一個子區域;
如果是第一個子區域,則進程當前選擇的子區域數據通過swap與鄰居進程通信,如果不是第一個子區域,則進程當前選擇的子區域數據通過combswap與鄰居進程通信;
從當前子區域的相鄰子區域中獲取邊界格點數據;
從所述邊界格點數據中隨機選擇一個要執行的模擬事件,計算事件的模擬時間并累加到δt;
執行事件,更新當前格點附近子區域的數據;
判斷δt是否大于或等于所述內迭代時間閾值t;
若δt大于或等于所述內迭代時間閾值t,則將δt累加到δt并繼續執行事件;
判斷δt是否大于或等于所述外迭代時間閾值t;
若δt大于或等于所述外迭代時間閾值t,則繼續執行事件且進程當前選擇的子區域數據通過swapreverse與鄰居進程通信。
優選的,所述進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體還包括:
若δt小于所述內迭代時間閾值t,則從所述邊界格點數據中隨機選擇另一個要執行的模擬事件,計算事件的模擬時間并累加到δt。
優選的,所述進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體還包括:
若δt小于所述外迭代時間閾值t,則按照預設順序從多個子區域中選擇另一個子區域。
另一方面,本發明還提供一種動力學蒙特卡洛并行模擬的通信優化系統,其中,所述系統包括:
數據構造模塊,用于構造通信數據結構;
進程構建模塊,用于構建鄰居進程的圖狀拓撲結構;
迭代開啟模塊,用于開啟進程外迭代;
區域選擇模塊,用于按照預設順序從多個子區域中選擇一個子區域;
進程通信模塊,用于進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信;
迭代結束模塊,用于迭代結束。
優選的,所述通信數據結構包括swap、swapreverse以及combswap,其中,所述系統還包括:
閾值設定模塊,用于設定外迭代時間閾值t和內迭代時間閾值t。
優選的,所述進程通信模塊具體用于:
判斷當前選擇的子區域是否為第一個子區域;
如果是第一個子區域,則進程當前選擇的子區域數據通過swap與鄰居進程通信,如果不是第一個子區域,則進程當前選擇的子區域數據通過combswap與鄰居進程通信;
從當前子區域的相鄰子區域中獲取邊界格點數據;
從所述邊界格點數據中隨機選擇一個要執行的模擬事件,計算事件的模擬時間并累加到δt;
執行事件,更新當前格點附近子區域的數據;
判斷δt是否大于或等于所述內迭代時間閾值t;
若δt大于或等于所述內迭代時間閾值t,則將δt累加到δt并繼續執行事件;
判斷δt是否大于或等于所述外迭代時間閾值t;
若δt大于或等于所述外迭代時間閾值t,則繼續執行事件且進程當前選擇的子區域數據通過swapreverse與鄰居進程通信。
優選的,所述進程通信模塊具體還用于:若δt小于所述內迭代時間閾值t,則從所述邊界格點數據中隨機選擇另一個要執行的模擬事件,計算事件的模擬時間并累加到δt;
其中,所述進程通信模塊具體還用于:若δt小于所述外迭代時間閾值t,則按照預設順序從多個子區域中選擇另一個子區域。
本發明提供的技術方案是基于spparks框架的并行通信優化,通過鄰居集合通信建立進程間通信拓撲關系,進行三維kmc大規模并行模擬的通信聚集優化,合并部分通信過程,減少通信開銷,使通信負載更加均衡。
附圖說明
圖1為本發明一實施方式中動力學蒙特卡洛并行模擬的通信優化方法流程圖;
圖2為本發明一實施方式中通信數據結構swap在二維情況下的示意圖;
圖3為本發明一實施方式中實現數據交換的函數perform_swap_graph_site()偽代碼示意圖;
圖4為本發明一實施方式中構建鄰居進程圖狀拓撲通信域偽代碼的示意圖;
圖5為本發明一實施方式中通信聚集優化子區域關系示意圖;
圖6為本發明一實施方式中通信聚集優化通信模式建立的偽代碼示意圖;
圖7為本發明一實施方式中動力學蒙特卡洛并行模擬的通信優化系統10的結構示意圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
以下將對本發明所提供的一種動力學蒙特卡洛并行模擬的通信優化方法進行詳細說明。
請參閱圖1,為本發明一實施方式中動力學蒙特卡洛并行模擬的通信優化方法流程圖。
在本實施方式中,該動力學蒙特卡洛并行模擬的通信優化方法主要是基于spparks框架的并行通信優化方法。
在步驟s10中,構造通信數據結構。
在本實施方式中,構造的通信數據結構包括swap、swapreverse以及combswap,其中,定義通信數據結構swap、swapreverse、combswap如圖2所示。
請參閱圖2,為本發明一實施方式中通信數據結構swap在二維情況下的示意圖。其中,send1~3表示發送數據到3個鄰居進程,recv1~3表示從3個鄰居進程接收數據,1為進程當前計算的子區域,2為邊界數據區域,3為發送的數據,4為接收的數據。
請參閱圖3,為本發明一實施方式中實現數據交換的函數perform_swap_graph_site()偽代碼示意圖。其中,定義一個基于鄰居集合通信方式的函數perform_swap_graph_site()替換spparks中原有的點對點通信方式的函數perform_swap_site(),該函數使用鄰居集合通信函數mpi_neighbor_alltoallv()對kmc并行算法進行優化:首先把發送給各個鄰居進程的數據打包到一個連續的地址空間內,然后確定發送和接收進程的順序id和對應的發送和接收數據,通過打包后發送數據的偏移量將對應的數據發送到目的進程上,并從接收進程中接收對應的數據,最后將收到的數據進行解包操作,完成一次數據交換。
請繼續參閱圖1,在步驟s11中,構建鄰居進程的圖狀拓撲結構。
在本實施方式中,使用函數mpi_dist_graph_create_adjacent()構建鄰居進程的圖狀拓撲關系,其偽代碼如圖4所示。
請參閱圖4,為本發明一實施方式中構建鄰居進程圖狀拓撲通信域偽代碼的示意圖。在模擬材料缺陷演化等方面應用時,其模擬晶格內部鄰居原子個數不盡相同,因此原子所在進程與鄰居原子所在進程的對應關系是不規則的,傳統的笛卡爾2維或3維進程拓撲不適用于構建kmc鄰居進程拓撲關系。本發明構建了鄰居進程圖狀拓撲結構,使用鄰居集合通信函數代替原有的點到點通信函數,降低了通信時間復雜度。
請繼續參閱圖1,在步驟s12中,設定外迭代時間閾值t和內迭代時間閾值t。
在步驟s13中,開啟進程外迭代。
在步驟s14中,按照預設順序從多個子區域中選擇一個子區域。
在本實施方式中,進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體包括s15-s24。
在步驟s15中,判斷當前選擇的子區域是否為第一個子區域;
如果是第一個子區域,則在步驟s16中,進程當前選擇的子區域數據通過swap與鄰居進程通信,如果不是第一個子區域,則在步驟s17中,進程當前選擇的子區域數據通過combswap與鄰居進程通信。
在步驟s18中,從當前子區域的相鄰子區域中獲取邊界格點數據。
在步驟s19中,從所述邊界格點數據中隨機選擇一個要執行的模擬事件,計算事件的模擬時間并累加到δt。
在步驟s20中,執行事件,更新當前格點附近子區域的數據。
在步驟s21中,判斷δt是否大于或等于所述內迭代時間閾值t。
若δt大于或等于所述內迭代時間閾值t,則在步驟s22中,將δt累加到δt并繼續執行事件。
在步驟s23中,判斷δt是否大于或等于所述外迭代時間閾值t。
若δt大于或等于所述外迭代時間閾值t,則在步驟s24中,繼續執行事件且進程當前選擇的子區域數據通過swapreverse與鄰居進程通信。
在本實施方式中,所述進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體還包括:
若δt小于所述內迭代時間閾值t,則從所述邊界格點數據中隨機選擇另一個要執行的模擬事件,計算事件的模擬時間并累加到δt,如步驟s19所示,后續步驟順序執行。
在本實施方式中,所述進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信的步驟具體還包括:
若δt小于所述外迭代時間閾值t,則按照預設順序從多個子區域中選擇另一個子區域,如步驟s14所示,后續步驟順序執行。
在步驟s25中,迭代結束。
在本實施方式中,以當前進程數據區域包括8個子區域為例進行說明。
請參閱圖5,為本發明一實施方式中通信聚集優化子區域關系示意圖。其中,1~8為當前進程數據區域的8個子區域;9為面相鄰關系,即兩個子區域間需要通信的數據在一個面上,合并后將原有通信次數28減少到26;10為邊相鄰關系,即兩個子區域間需要通信的數據在一條邊上,合并后將原有通信次數28減少到22;11為角相鄰關系,即兩個子區域間需要通信的數據在一個角上,合并后將原有通信次數28減少到14。其中,確定內迭代8個子區域的迭代順序為(1,8,2,7,4,5,3,6),選取的原則是優先保證角相鄰關系的次數,不引入面相鄰關系,子區域相鄰關系如圖5所示。
在本實施方式中,在三維模擬情況下,8次內迭代過程中共執行224次通信操作。本發明通過優化程序流程,選取最優的子區域迭代順序,合并相鄰兩次內迭代的部分通信操作,將8次內迭代中的通信操作數量減少到176次,從而減少了部分通信冗余數據,減少了進程間的同步等待時間,使負載更加均衡。在配備intele5-2680v2至強處理器的中國科學院超級計算機“元”上,本發明提出的通信優化方法相比于原始方法提高了并行效率,在640個進程并行模擬時,總運行時間減少了17%,以20個進程為基準,640個進程的加速比達到24.32。
請參閱圖6,為本發明一實施方式中通信聚集優化通信模式建立的偽代碼示意圖。其中,建立通信聚集優化通信模式,判別通信合并過程中數據重疊的三種不同情況,轉換重疊數據的依賴關系,偽代碼如圖6所示。
本發明提供的一種動力學蒙特卡洛并行模擬的通信優化方法,通過鄰居集合通信建立進程間通信拓撲關系,進行三維kmc大規模并行模擬的通信聚集優化,合并部分通信過程,減少通信開銷,使通信負載更加均衡。
以下將對本發明所提供的一種動力學蒙特卡洛并行模擬的通信優化系統10進行詳細說明。
請參閱圖7,所示為本發明一實施方式中動力學蒙特卡洛并行模擬的通信優化系統10的結構示意圖。
在本實施方式中,動力學蒙特卡洛并行模擬的通信優化系統10,主要包括數據構造模塊11、進程構建模塊12、閾值設定模塊13、迭代開啟模塊14、區域選擇模塊15、進程通信模塊16以及迭代結束模塊17。
數據構造模塊11,用于構造通信數據結構。其中,所述通信數據結構包括swap、swapreverse以及combswap。
進程構建模塊12,用于構建鄰居進程的圖狀拓撲結構。
閾值設定模塊13,用于設定外迭代時間閾值t和內迭代時間閾值t。
迭代開啟模塊14,用于開啟進程外迭代。
區域選擇模塊15,用于按照預設順序從多個子區域中選擇一個子區域。
進程通信模塊16,用于進程當前選擇的子區域數據通過構造的所述通信數據結構與鄰居進程通信。
迭代結束模塊17,用于迭代結束。
在本實施方式中,所述進程通信模塊16具體用于:
判斷當前選擇的子區域是否為第一個子區域;
如果是第一個子區域,則進程當前選擇的子區域數據通過swap與鄰居進程通信,如果不是第一個子區域,則進程當前選擇的子區域數據通過combswap與鄰居進程通信;
從當前子區域的相鄰子區域中獲取邊界格點數據;
從所述邊界格點數據中隨機選擇一個要執行的模擬事件,計算事件的模擬時間并累加到δt;
執行事件,更新當前格點附近子區域的數據;
判斷δt是否大于或等于所述內迭代時間閾值t;
若δt大于或等于所述內迭代時間閾值t,則將δt累加到δt并繼續執行事件;
判斷δt是否大于或等于所述外迭代時間閾值t;
若δt大于或等于所述外迭代時間閾值t,則繼續執行事件且進程當前選擇的子區域數據通過swapreverse與鄰居進程通信。
在本實施方式中,所述進程通信模塊16具體還用于:若δt小于所述內迭代時間閾值t,則從所述邊界格點數據中隨機選擇另一個要執行的模擬事件,計算事件的模擬時間并累加到δt。
在本實施方式中,所述進程通信模塊16具體還用于:若δt小于所述外迭代時間閾值t,則按照預設順序從多個子區域中選擇另一個子區域。
本發明提供的一種動力學蒙特卡洛并行模擬的通信優化系統10,通過鄰居集合通信建立進程間通信拓撲關系,進行三維kmc大規模并行模擬的通信聚集優化,合并部分通信過程,減少通信開銷,使通信負載更加均衡。
值得注意的是,上述實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區分,并不用于限制本發明的保護范圍。
另外,本領域普通技術人員可以理解實現上述各實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,相應的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質,如rom/ram、磁盤或光盤等。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。