2014-01-31 66 views
0

我已经在MPI中编写了一个程序,并且我想在3个或更多核心(或计算机)下执行它,并且我想在每个处理器的文件中写入一些内容,创建了两个不同的文件,但我不知道我应该怎么做更多的核心,是否有必要为每个处理器创建单独的文件?如果是的话,那么我应该如何根据我的代码做到这一点,它是不同的多电脑 ?在MPI中写入文件

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" 

    } 
    } 

回答

0

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

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

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()的开始)的只让过程与等级== 0执行I/O
  • 如果I/O很重要,或者如果所有数据都不能适合一个节点的内存(实际上不是相同?),请使用MPI-IO。