[英]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.