I'm新的MPI世界i'm有點混淆..使用「MPI_Scatter」到「破」在多個部分陣列MPI_Scatter與多臺機器
I'm。但是,情況是......它可以在多臺機器上運行程序?
我的觀點是:我必須使用類似MPI_Send和MPI_Rcv的東西嗎?或者Scatter可以做到這一點? MPI_Scatter只能在一臺機器上運行?沒有找到任何關於此的好的參考..
謝謝! =)
I'm新的MPI世界i'm有點混淆..使用「MPI_Scatter」到「破」在多個部分陣列MPI_Scatter與多臺機器
I'm。但是,情況是......它可以在多臺機器上運行程序?
我的觀點是:我必須使用類似MPI_Send和MPI_Rcv的東西嗎?或者Scatter可以做到這一點? MPI_Scatter只能在一臺機器上運行?沒有找到任何關於此的好的參考..
謝謝! =)
MPI_Scatter
不管MPI進程位於何處。它具有相同的效果,就好像根進程執行了一個循環MPI_Send
操作,並且所有其他進程都執行了一個單獨的MPI_Recv
。事實上,MPI_Scatter
通常在內部使用MPI_Send
和MPI_Recv
來實現,除非網絡設備支持某種類型的工作分流(但最終會再次歸結爲一系列發送和接收事件)。對於其對應的MPI_Gather
以及MPI中的任何其他集體通信呼叫也是如此。 MPI是一個抽象的規範 - 它只是定義了通信實體(等級)與MPI環境(API)交互的方式以及交互的結果。它不關心排名是同一節點上的進程,還是在大規模並行超級計算機上運行,或者如果他們通過互聯網在全球進行通信。這在MPI規範的以下摘錄中有最好的描述:
消息傳遞範例的吸引力至少部分源於其廣泛的可移植性。用這種方式表達的程序可以在分佈式存儲器多處理器,工作站網絡以及所有這些的組合上運行。此外,共享內存的實現,包括多核處理器和混合架構的實現也是可能的。結合共享和分佈式內存視圖的體系結構或網絡速度的提高不會使範例過時。因此,在各種各樣的機器上實現這個標準應該既可能也有用,包括由通信網絡連接的其他機器集合組成的「機器」,這些機器是並行的或不是並行的。
謝謝Hristo!真棒回答! – Crasher