我有一个小型方案。
#include "mpi.h"
#include <stdio.h>
int main(int argc, char *argv[])
{
int rank, size;
int buf;
int err;
MPI_Status status;
err = MPI_Init(&argc, &argv);
if(err == MPI_SUCCESS) {
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0) {
printf("Buffer size is less than 10
");
printf("进入缓冲地带: ");
scanf("%d", &buf);
MPI_Send(&buf, 1, MPI_INT, 1, 10,
MPI_COMM_WORLD);
}
else {
MPI_Recv(&buf, 1, MPI_INT, 0, 10,
MPI_COMM_WORLD, &status);
}
printf("process[%d]: buffer size : %d
", rank,buf);
}
err = MPI_Finalize();
return 0;
}
产出如下:
[veda@home-pc hpc]$ mpicc test.c
[veda@home-pc hpc]$ mpiexec -np 2 a.out
Buffer size is less than 10
3
进入缓冲地带: process[0]: buffer size : 3
process[1]: buffer size : 3
在这一产出中,你可以注意到:
进入缓冲地带:
在我进入缓冲地带后,正在印刷/投稿。
人人都能告诉我如何解决这一问题。