在MPI中写入文件

时间:2014-01-31 07:51:53

标签: c++ mpi

我在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"

    }
    }

2 个答案:

答案 0 :(得分:0)

如果您使用的是此模型,则需要为每个进程创建一个文件。原因是如果你有两个进程写入同一个文件,他们很可能最终会覆盖彼此,除非你用MPI做一些事情来确保他们自己序列化。

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

答案 1 :(得分:0)

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。