如何解决MPI中无循环的无限处理
我正在MPI中进行第一个练习,我应该初始化一个值为0的变量token
并将其传递给其他进程,每个进程都应接收令牌并将其添加+1,然后将其向前传递直到返回到线程rank = 0
。但是,我陷入控制台等待输入,并消耗了htop
中看到的大量处理能力。
#include <stdio.h>
#include <mpi.h>
int main(int argc,char *args[]){
int rank,psize,token,dest,src;
MPI_Status status;
MPI_Init(&argc,&args);
MPI_Comm_size(MPI_COMM_WORLD,&psize);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank == 0){
dest = rank + 1;
src = psize -1;
token = 0;
MPI_Send(&token,sizeof(int),MPI_INT,rank,MPI_COMM_WORLD);
MPI_Recv(&token,src,MPI_COMM_WORLD,&status);
printf("Received token: %d",token);
} else {
src = rank-1;
if(rank == (psize-1))
dest = 0;
else
dest = rank+1;
MPI_Recv(&token,&status);
token++;
MPI_Send(&token,MPI_COMM_WORLD);
}
MPI_Finalize();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。