首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MPI同步主从模型

使用MPI同步主从模型
EN

Stack Overflow用户
提问于 2012-06-28 21:50:46
回答 2查看 5.3K关注 0票数 4

我在使用MPI同步主/从进程时遇到问题。我希望主人能控制奴隶被处死的顺序。每个从机都要做: 1-读2-进程。下面是我的代码:

代码语言:javascript
复制
int main(int argc, char* argv []){

int rank,numprocess;

MPI_Init( &argc, &argv );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size( MPI_COMM_WORLD, &numprocess );


if(rank==0){ //master

    MPI_Status s;int Sstate=1;int Rstate;

    int p;
    for(p=1;p<numprocess;p++){

        fflush(stdout);printf("master : order P%d to start reading\n",p);
        MPI_Send(&Sstate, sizeof(int), MPI_INT, p, 20, MPI_COMM_WORLD);

        MPI_Recv(&Rstate,sizeof(int),MPI_INT,p,21,MPI_COMM_WORLD,&s);
        fflush(stdout);printf("master : P%d finished reading\n",p);
    }

}
else{ //workers

    int state; MPI_Status s;
    MPI_Recv(&state,sizeof(int),MPI_INT,0,20,MPI_COMM_WORLD,&s);

    //read here
    Sleep(1000);

    //send to master : finish reading
    state=2;
    MPI_Send(&state, sizeof(int), MPI_INT, 0, 21, MPI_COMM_WORLD);

    //processing
    Sleep(3000);
    fflush(stdout);printf("worker %d ended processing\n",rank);
}

MPI_Finalize();
return 0;
}

我的问题是最后一个过程。事实上,它的行为与其他人不同。下面是我的输出:

代码语言:javascript
复制
mpiexec -n 4 master.exe
master : order P1 to start reading 
master : p1 finished reading
master : order P2 to start reading 
master : p2 finished reading
master : order P3 to start reading 
worker 1 ended processing 
worker 2 ended processing 
master : p3 finished reading
worker 3 ended processing 

为什么第三个进程不同步?感谢您的宝贵帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-28 22:09:32

您所展示的对于多线程或多进程架构来说是正常的。基本上,在您的进程向主进程调用MPI_Send之后,它们将被释放以独立运行,因为它们不再有阻塞的MPI调用。因此,在它们进入睡眠状态后,它们会打印出它们的end语句,独立于其他语句和主语句本身!

下面我有一个图表,我希望它能说明你所看到的:

票数 6
EN

Stack Overflow用户

发布于 2012-06-28 22:03:21

你的输出是意料之中的。您已经同步了从属进程的读取部分,但尚未执行任何操作来同步从属进程的处理部分。您的从机将按顺序读取(P1,然后是P2,然后是P3),但不会限制完成处理的顺序。此外,在下一个进程完成读取之前,一个进程可能会开始处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11246150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档