[問題] 想請教MPI的使用問題
我是最近開始碰觸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
07/23 19:52, 1F
推
07/24 22:20, , 2F
07/24 22:20, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章