Tag: 解锁

带有C的MPI:被动RMA同步

因为到目前为止我没有找到我的问题的答案,并且我对这个问题感到疯狂,我只是问这个问题折磨我的想法;-) 我正在研究已经编程的节点消除算法的并行化。 目标环境是一个集群。 在我的并行程序中,我区分主进程(在我的情况下为0级)和工作从属(除了0之外的每个等级)。 我的想法是,主人正在跟踪哪些奴隶可用并发送然后工作。 因此,出于某些其他原因,我尝试建立一个基于具有锁定 – 放置 – 解锁序列的被动RMA的工作流程。 我使用一个名为schedule的整数数组,其中表示等级的数组中的每个位置对于工作进程为0或对于可用进程为1(因此如果schedule [1] = 1则可用于工作)。 如果一个进程完成了它的工作,它将主数据放入1,表示它的可用性。 我试过的代码如下: MPI_Win_lock(MPI_LOCK_EXCLUSIVE,0,0,win); // a exclusive window is locked on process 0 printf(“Process %d:\t exclusive lock on process 0 started\n”,myrank); MPI_Put(&schedule[myrank],1,MPI_INT,0,0,1,MPI_INT,win); // the line myrank of schedule is put into process 0 printf(“Process %d:\t put operation called\n”,myrank); MPI_Win_unlock(0,win); // the window […]