📄 hello2.c
字号:
#include <stdio.h>
#include <string.h>
#include <mpi.h>
#define TAG MPI_ANY_TAG /* tag for messages */
#define ROOT 0
#define COMM MPI_COMM_WORLD /* define handle for communication */
#define MAX 20 /* max msg size */
void
main(int argc, char **argv)
{
int i, rank, size, worker[1];
char buff[MAX], *msg="Hello World!";
MPI_Status status;
MPI_Init(&argc, &argv); /* initialize mpi */
MPI_Comm_rank(COMM, &rank); /* get rank */
worker[0] = rank;
if(rank == 0) /* master */
{
MPI_Comm_size(COMM, &size); /* get size,send broadcast msg*/
for(i=1; i<size; i++)
{ /* send-receive msg to-from all workers */
MPI_Send(msg,strlen(msg),MPI_CHAR,i,10,COMM);
MPI_Recv(worker,1,MPI_INT,i,TAG,COMM,&status);
printf("Answer received from %d\n", worker[0]);
}
}
else /* receive message from master */
{
MPI_Recv(buff,MAX,MPI_CHAR,0,TAG,COMM,&status);
printf("rank %d %s\n", rank,buff); /* send rank to master */
MPI_Send(worker,1,MPI_INT,0,11,COMM);
}
MPI_Finalize(); /* finalize mpi */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -