2014-01-31 65 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。