c - 如何使用 MPI 进行接力棒传递同步?
问题描述
做一个接力棒传递同步 - 接力棒是一个布尔值或整数值,初始化为 1 ant rank 0 和 0 在每个其他进程然后修改循环,以便:每个进程(0 除外)等待接收接力棒,然后打印和将接力棒发送到 rank+1(进程 size-1 除外)。代码现在看起来像:receive(baton from rank-1) : if (baton) print; 发送指挥棒到rank+1;指挥棒=0;我们还需要循环来执行此操作吗?
#include <stdio.h>
#include "mpi.h"
int main( int argc, char *argv[] )
{
int rank;
int size;
int i=0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
for(i=0; i<size; i++)
{
if(i==rank)
{
printf( "Hello world from process %d of %d\n", rank, size );
}
}
MPI_Finalize();
return 0;
}
知道如何开始为接力棒传递同步进行编码时,我遇到了很多麻烦。现在,当我从上面执行代码时,它并没有按顺序执行,这就是我试图通过接力棒传递同步来实现的目标。
解决方案
您已经回答了自己的问题:每个进程都会进行接收调用,然后进行发送调用。就是这样。循环消失了,因为每次迭代都是由不同的过程完成的。
推荐阅读
- c - 当 ram 地址存储为 u32 时从 ram 内存中获取值
- ios - 仅当特定 ViewController 在前台时 iOS Swift 调用函数
- ios - 从 UITableView 中删除自定义视图
- c# - 'type' 是一个变量,但用作类型
- ssl - 如何为使用 nginx、gunicorn 和烧瓶的 GCP 实例设置 SSL 证书?
- ruby-on-rails - 在模型关系中指定不同的外键
- amazon-web-services - CloudFormation 没有执行我的命令?
- git - 从 master 连续 rebase 的 git 分支会导致重复提交
- python - 熊猫根据条件移动列数据
- php - 从mysql数据库unicode失败的Ajax搜索