두 개의 프로세서에서 실행되는 간단한 MPI 프로그램입니다. 나의 예 (또는 내 컴퓨터에있을 수도 있음)에서 내 콘솔은 메시지를 보내기 전에 수신 메시지를 출력합니다.MPI를 사용한 간단한 메시지 교환
MPI를 사용하여 리셉션을 주문하는 방법이 있다는 것을 알고 있지만, 필자의 예는 프로세서 0이 데이터를 보내길 기다려야하므로 수신 출력이 반드시 2 등분이 될 것입니다.
어떻게 메시지를 보낸 후에 수신 메시지를 인쇄 할 수 있습니까?
#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;
}
메시지 또는 fflush (stdout)을 수신하는 프로세스를 종료하려고 했습니까? –
MPI_Recv 전에 fflush (send)를 두는 것과 마찬가지? –
'fflush (send)'는 의미가 없습니다 ...'send'는 출력 버퍼가 아닙니다. – Mosby