MPI从处理器中的输入读取

MPI从处理器中的输入读取,mpi,Mpi,这是我的伪代码。假设我有1个主处理器和4个从处理器: if (id==0) { MPI_Send to x1, x2 to processor 1; x3, x4 to processor 2; x5, x6 to processor 3; x7, x8 to processor 4; MPI_Receive y1, y2, ..........., y8 ; } if (id != 0) { MPI

这是我的伪代码。假设我有1个主处理器和4个从处理器:

if (id==0)
{
  MPI_Send to x1, x2 to processor 1;
              x3, x4 to processor 2;
              x5, x6 to processor 3;
              x7, x8 to processor 4;
  MPI_Receive y1, y2, ..........., y8 ;
}
if (id != 0)
{
  MPI_Recv x values (each processor receives 2 x values);
  in the input file, modify the certain rows into value of the two x values;
  My function: read the input files and compute two y values;
  MPI send y values to master processor ;
}
问题是,每个处理器都会同时读取一个输入文件,这可能会导致错误。我如何解决这个问题?提前谢谢

更新:

我想要达到的是, 每个MPI处理器将在伪代码中执行my函数以计算y值。在不同的处理器中,函数使用不同的x值。因此,我编写了一些代码,将输入文件修改为x值,在函数的输入读取之前,x值在不同的处理器中是不同的

因此,这会导致一个问题,每个处理器都试图同时修改单个文件,并且每个处理器都在执行函数来读取修改后的输入文件。这当然会导致错误


我需要你的帮助!提前谢谢

不要使用发送/接收。使用MPI_分散和MPI_聚集如果我使用分散和聚集,输入读数不会出错?我不这么认为。对不起,我只是不明白你面临的问题。。。您的伪代码远不够清晰,我无法理解这个问题,在同一MPI程序中使用文件在进程之间通信似乎完全是错误的。@HighPerformanceMark 100%同意。我能想到的证明使用这样的文件的唯一理由是,如果该文件预先存在,并且在作业完成后需要保持最新,并且其大小大大超过MPI作业可用的累积内存大小。否则,应该有一个更好得多的解决方案,比如我已经提到的基于片面性的解决方案。