[英]MPI for should be executed non-parallel, but his body ofc yes
如何在for循環內並行執行操作? 我的意思是循環應該在一個線程中執行,但是他的身體應該並行執行。 但是此代碼無效:
int main(){
int ID;
int PROCESSES;
int source;
int dest;
int tag = 50;
char message[100];
MPI::Status status;
for (int i = 0; i < 2; i++){
MPI::Init();
ID = MPI::COMM_WORLD.Get_rank();
cout << "some text " << ID << " " << i << endl;
MPI::Finalize();
}
}
我認為您對MPI是什么有一些誤解。 MPI不會自動並行化代碼,但是使您能夠將消息從一個進程發送到另一個進程。 當您執行應用程序時,您說要執行多少個“副本”,然后在該程序中,您明確地告訴MPI將數據從一個進程發送到另一個進程。
您的代碼中也有一些非常具體的問題。 每個進程只能調用一次MPI_Init和MPI_Finalize,它應該是代碼中的第一和最后一件事。 因此,您的代碼應如下所示:
int main(){
int ID;
int PROCESSES;
int source;
int dest;
int tag = 50;
char message[100];
MPI::Status status;
MPI::Init();
ID = MPI::COMM_WORLD.Get_rank();
for (int i = 0; i < 2; i++){
cout << "some text " << ID << " " << i << endl;
}
MPI::Finalize();
}
顯然,該代碼沒有任何用處,只是將每個進程的等級打印了三遍,但這只是一個例子。
我建議您找到一個在網絡上使用MPI的好例子。 您最喜歡的搜索引擎應該是您的朋友。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.