MPI_Send无法正常工作

时间:2014-06-11 06:54:14

标签: mpich

这是我们计划的特色。 MPI_Send函数不起作用,MPI_Send之前的printf语句正常工作,但控件不会在MPI_Send之后转到printf语句。并且它不会进入if(rank> 0)条件。

#define MASTER_TO_SLAVE_TAG 1 
#define SLAVE_TO_MASTER_TAG 4

void MPI_Init(int argc,char ***argv);
int MPI_Comm_rank( MPI_Comm comm, int *rank);
int MPI_Comm_size(MPI_Comm comm, int *totalProcess);
if(rank==0)
{
   printf("before send “);
   double  tArray[1];
   tArray[0]=t;
   for(rank=1;rank<totalProcess;rank++)
      MPI_Send(&tArray, 1, MPI_DOUBLE, rank, MASTER_TO_SLAVE_TAG,MPI_COMM_WORLD);
   printf("after send “);
}
if(rank>0)
{
  printf(“inside slave”);
  MPI_Recv(&tArray, 1, MPI_DOUBLE, 0, SLAVE_TO_MASTER_TAG,MPI_COMM_WORLD, &status);
}

1 个答案:

答案 0 :(得分:1)

您尝试从不同的标签接收,而不是用于发送。 MPI_SENDMPI_RECV来电符合MPI_Comm,标记和排名。如果您不匹配所有三个,则永远不会收到消息。