我有这个简单的 MPI 程序在两个处理器上运行。在我的示例中(或者可能只是在我的计算机上),我的控制台在发送消息之前输出接收消息。
我知道有一种使用 MPI 对接收进行排序的方法,但我认为我的示例将等待处理器 0 发送数据,因此接收输出必然是第二个。
发送消息后如何打印接收消息?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
int main(int argc, char *argv[]){
int np, myId;
char send[100], recv[100];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &np);
MPI_Comm_rank(MPI_COMM_WORLD, &myId);
MPI_Status stat;
if(myId == 0){
int length = sprintf(send, "hey!");
for(int i = 1; i < np; i++){
printf("send %d => %d (%d)", myId, i, length);
MPI_Send(send, length, MPI_CHAR, i, 0, MPI_COMM_WORLD);
}
}else if (myId == 1){
MPI_Recv(send, 41, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &stat);
printf("receive %d <= %d\n", myId, 0);
}
MPI_Finalize();
return 0;
}