MPI实现阻塞型点对点通信
#include <mpi.h>
#include<stdio.h>
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
int rank;
int size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank); // 获取当前进程的rank
MPI_Comm_size(MPI_COMM_WORLD, &size); // 获取总进程数
// 发送消息的代码
if (rank == 0) {
int message = 123;
int dest = 1; // 目标进程的rank
int tag = 1; // 消息标签
// 发送消息
MPI_Send(&message, 1, MPI_INT, dest, tag, MPI_COMM_WORLD);
// 接收消息
int message_recv;
MPI_Recv(&message_recv, 1, MPI_INT, dest, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf( "Process 0 received message:%d \n", message_recv) ;
}
// 接收消息的代码
else if (rank == 1) {
// 发送消息
int message = 456;
int dest = 0; // 目标进程的rank
int tag = 1; // 消息标签
MPI_Send(&message, 1, MPI_INT, dest, tag, MPI_COMM_WORLD);
// 接收消息
int message_recv;
MPI_Recv(&message_recv, 1, MPI_INT, dest, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf( "Process 1 received message:%d \n", message_recv) ;
}
MPI_Finalize();
}

浙公网安备 33010602011771号