2016-07-09 65 views
0

的情況是這樣的: 我有尺寸4×4的陣列,並且我必須做的是分區此矩陣爲「塊」(又名小矩陣),並將它們分發到「slave-流程。」更具體地說,假設進程的總數量是4(1個主站,3個從站,並且全部將計算將要計算的內容),這使得將4×4矩陣分割成4個2×2矩陣。然而,除了使2x2大小的「緩衝區」應該避免(實際上我想避免它)。 問題是:有沒有「聰明」,更「無痛」的方式來管理它?MPI分區矩陣成更小的矩陣

PS:我要管理這意味着笛卡爾Communicator將被創建這個問題http://www.cas.usf.edu/~cconnor/parallel/2dheat/2dheat.html

+1

你無法避免它。 –

回答

1

這實際上是MPI的工作原理。 2×2矩陣構成分佈式數據結構。它們一起構成了實際的4×4矩陣。您當然也可以使用四個1×4或4×1矩陣,這樣做有一些優點(編程更簡單)和缺點(縮放時需要更多的通信)。

在實際的問題,比如二維熱傳導方程,你經常需要考慮周圍的每個局部矩陣的光環。然後在仿真步驟中交換這個光環。 請注意,您鏈接的代碼在每個工人級別上使用全尺寸的矩陣。這是一種簡化,但會浪費資源,因此無法擴展。

MPI爲您提供了一些幫助,通過笛卡爾傳播者,或更容易暈交換單向通訊來管理這些分散的數據,例如,但本質上,你必須管理分佈式數據結構。

有平行的範式提供分佈式數據結構的更高層次的抽象,但即使概述將恕我直言,蜜蜂過於廣泛,這種格式。其中許多與分區全局地址空間(PGAS)概念有關。實現可以從新語言,語言擴展(聯合數組Fortran)到庫和框架。有些人在內部使用MPI。