2

我必須使用MPI構建分佈式應用程序。 我必須做出的決定之一是如何將類的實例映射到進程(然後到機器),以便從分佈式環境中獲得最大的優勢。使用消息傳遞進行性能評估

我的問題是:有一個模型,讓我選擇更好的映射?我的意思是,某些安排肯定是錯誤的(例如,將兩個不同的機器放在兩個對象中,這些對象應該按順序處理相當大量的數據,而不需要處理令牌流),但是有系統的方法以確定由執行流程,消息複雜度,由算法組件完成的計算所花費的時間確定的這種錯誤安排?

+0

我想知道是否有形式化分佈式計算的理論,如網絡中的隊列理論,而不是一個爲我工作的程序;) – akappa 2009-05-03 17:54:33

回答

1

那麼,有data flow diagrams。這些可以幫助識別並行機會和陷阱。維基百科頁面上的參考可能會給您更多的理論依據。

當我在洛克希德馬丁公司工作時,我遇到了CSIM,他們開發了一個工具,用於建模算法映射到處理塊。

+0

在我看來,數據流圖最適合作爲工具對於軟件工程來說,可以用來描述並行程序中的流程,但是用一個弱分析儀器。 我會給它更仔細一看,順便說一句。 – akappa 2009-05-08 10:20:37

0

您可能會嘗試的另一件事是Join Calculus。我發現用它編程的例子令人驚訝地直觀,我認爲它理論上很好。我不確定它爲什麼沒有被更多的發現。

另一種方法是Pi Calculus,我認爲這可能更受歡迎,儘管它似乎很難理解。

0

一個切實可行的解決方案是使用不同的分佈式並行內存並行編程模型,直接解決您的問題。我使用編程系統Charm++,該系統的模型是單個對象將消息從一個發送到另一個的模型。運行時系統便於將這些對象自動映射到可用處理器,以解決負載平衡和通信局部性問題。