」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 MPI 中有效發送和接收二維數組?

如何在 MPI 中有效發送和接收二維數組?

發佈於2024-12-22
瀏覽:548

How to Effectively Send and Receive 2D Arrays in MPI?

使用MPI 發送和接收2D 數組

使用MPI 發送和接收2D 數組

問題:

您有一個大型2D 矩陣,需要跨多個處理使用MPI 的節點。節點之間唯一的通訊涉及在每個時間步後共享邊緣值。

方法:
// (assume A is a 2D array)
if (myrank == 0) {
  for (i = 0; i 

問題中概述的您提出的方法適合此問題。以下程式碼段說明了建議的實作://(假設 A 是二維數組) 如果(我的排名== 0){ 對於 (i = 0; i

  • 其他MPI 函數:
  • MPI_Allgather:將所有處理器的資料收集到所有處理器都可存取的緩衝區中。用於將分散式數組收集到單一處理器上。
  • MPI_Alltoall:在所有處理器之間提供完整的資料交換。
  • MPI_Sendrecv:A方便的功能,將發送和接收操作組合成一個call.

MPI_Buffer_attach:將緩衝區附加到進程,無需為其明確分配記憶體。

  • 注意事項:
  • 建議為2D 陣列分配連續記憶體以簡化MPI communications.
MPI_Barrier 確保進程之間的同步,但可以用MPI_Wait 或MPI_Test 等非阻塞替代方案來取代。

How to Effectively Send and Receive 2D Arrays in MPI? 
此處使用阻塞來發送和接收,但也可以使用非阻塞選項來提高效率。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3