这个MPI程序用C语言编写.当我输入2作为处理器数时,输出如下:
P:0 Got data from processor 1
P:0 Got 100 elements
P:0 value[5]=5.000000
Run Code Online (Sandbox Code Playgroud)
但是当我输入3个或更多处理器时,程序输出
P:0 Got data from processor 1
P:0 Got 100 elements
P:0 value[5]=5.000000
Run Code Online (Sandbox Code Playgroud)
然后它停滞不前,没有别的东西被打印出来.我必须用[ctrl] + [c]退出程序.我不知道为什么节目会停滞不前.我很欣赏一些暗示或良好的方向.
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
/* Run with two processes */
int main(int argc, char *argv[]) {
int rank, i, count;
float data[100],value[200];
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank==1) {
for(i=0;i<100;++i) data[i]=i;
MPI_Send(data,100,MPI_FLOAT,0,55,MPI_COMM_WORLD);
} else {
MPI_Recv(value,200,MPI_FLOAT,MPI_ANY_SOURCE,55,MPI_COMM_WORLD,&status);
printf("P:%d Got data from processor %d \n",rank, status.MPI_SOURCE);
MPI_Get_count(&status,MPI_FLOAT,&count);
printf("P:%d Got %d elements …Run Code Online (Sandbox Code Playgroud)