在MPI中写入文件

writing in file in MPI

本文关键字:文件 MPI      更新时间:2023-10-16

我已经在MPI中编写了一个程序,我想在3个或更多内核(或计算机)下执行它,我想在每个处理器中写入一些东西,对于两个核心我已经创建了两个不同的文件,但是我不知道我应该为更多内核做什么,是否有必要为每个处理器创建单独的文件?多计算机不同?

    void main()////it is just for 2 cores,what should I do if I use 
more cores or more computers?
    {
    FILE*fp=fopen("C:\a.txt","w");
    FILE*fp1=fopen("C:\b.txt","w");
    if(Id==0)
    {
    here I write in "fp"
    }
    else
    {
    here  I write in "fp1"
    }
    }

如果您使用此模型,是的,您需要每个进程创建一个文件。原因是,如果您有两个过程写入同一文件,则很可能最终会互相覆盖,除非您与MPI做某事以确保它们序列化。

根据您要编写的数据,您可以查看MPI的I/O部分。并行I/O中有功能,但这可能有点棘手。

void main() {
    int me;
    char filename[1000];
    MPI_Comm_rank(MPI_COMM_WORLD, &me);
    sprintf(filename,"C:\a%05d.txt",me);
    FILE *fp=fopen(filename,"w");
      here I write in "fp"
}

这可能是您需要的提示,但通常正确的方法是:

之一
  • 收集数据(请参阅MPI_GATHER()以开始)仅rank == 0表演I/O
  • 的过程
  • 如果i/o很重要,或者所有数据都无法适应一个节点的内存(实际上不是一样吗?),请使用mpi-io。