MPI program hang on MPI_File_open

助教您好,

近日還在摸索MPI當中,因此寫了以下程式:

大致希望嘗試是 讀取檔案資料到root(自己定成task0) → scatter → 印印看可不可以跑

image.png

不確定關於root概念的理解是否正確?

此外,是否只需要malloc一次接收從input file讀取的資料(當是root的時候),然後用scatter把資料分送給其他processes就好?

以下是我嘗試執行看看的結果(等有點久跑不出來…),input是從testcase上抓下來的04.in

image.png

順帶一提,process=1是可以執行的!

image.png

我想應該是我哪裡觀念出錯了…

麻煩助教答覆了,謝謝助教!

Hi 同學好,

問題應該是發生在 MPI_File_Open 與 MPI_File_Close 是需要被 Group 內的任何 processes 呼叫到。以目前的實作方式來看,MPI_Comm_World 代表所有 process 均要執行 File_Open 與 File_Close。
然後回覆另一個問題,你可以使用 file read at 的方式讓不同 process 一開始就讀到自己需要的資料,進而省略 Broadcast 與 Scatter 的操作。