📄 example.c
字号:
/*
进程0发送一个整数给进程1;进程1将该数加1,传递给进程2;进程2再将该数加1,再传递给进程3;依次类推,最后,进程P-1将该数传递给进程0,由进程0负责广播该数给所有进程,并打印输出。
*/
#include "mpi.h"
#include <stdio.h>
int main(argc, argv)
int argc;
char * * argv;
{
MPI_Status status;
int my_rank;
int p;
int source;
int dest;
int tag;
int data;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
MPI_Comm_size(MPI_COMM_WORLD, &p);
//printf("my_rank = %d, p = %d,\n",my_rank, p);
/*******************************************/
data = 0;
tag = 5;
source = my_rank-1;
if (source==-1)
source = p - 1;
printf("my %d source is %d\n",my_rank, source);
dest = my_rank + 1;
if (dest==p)
dest = 0;
printf("my %d destination is %d\n",my_rank, dest);
if (my_rank==0)
{
MPI_Send(&data,1,MPI_INT,dest,tag,MPI_COMM_WORLD);
MPI_Recv(&data,1,MPI_INT,source,tag,MPI_COMM_WORLD,&status);
}
else
{
MPI_Recv(&data,1,MPI_INT,source,tag,MPI_COMM_WORLD,&status);
data=data + 1;
MPI_Send(&data,1,MPI_INT,dest,tag,MPI_COMM_WORLD);
}
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
if(my_rank==0)
{
if(data==(p-1))
printf("Successful, data=%d\n",data);
else
printf("Failure, data=%d\n",data);
}
MPI_Finalize();
return (-1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -