[問題] 想請教MPI的使用問題

看板C_and_CPP (C/C++)作者 (瘋風)時間12年前 (2013/07/21 15:55), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
我是最近開始碰觸MPI的新手 依我所知 MPI算是SPMD的架構 所以想請教的是如果我想在程式某段才做MPI可不可行 例如一般網路的的範例都是 int main(argc,argv) int argc; char *argv[]; { MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* 這段做平行處理 */ MPI_Finalize(); } 依照下指令跑應該是整隻程式看設定幾個process就全下去跑 但如果我想要前面某段跑一次就好 中間某段MPI想用平行處理 然後再回到跑一次就好 例如如下 int main(argc,argv) int argc; char *argv[]; { /* 這裡執行了一些東西 但只想跑一次就好 */ //以下開始跑平行處理 MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* 這段做平行處理 */ MPI_Finalize(); /* 這段只做一次就好 */ } 好像沒辦法直接這樣做吧? 畢竟一開始執行時就會開幾個process全部程式run完 前面有看到把想做MPI平行處理區段另外寫成獨立一支exe檔 然後再用shell呼叫 不知道還有沒有甚麼更好的方法 想要寫在同一支程式上是否有辦法做到 先暫時不考慮用其他工具openMP之類 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.79.78

07/23 19:52, , 1F
你用MPI_ID去檢查看是不是root node, 其他節點barrier
07/23 19:52, 1F

07/24 22:20, , 2F
Map reduced?
07/24 22:20, 2F
文章代碼(AID): #1HwvFMOQ (C_and_CPP)
文章代碼(AID): #1HwvFMOQ (C_and_CPP)