2017-03-28 9 views
0

次の例をUsing MPI-2: Advanced Features of the Message-Passing Interfaceからコピーしましたが、出力ファイルはちょうどweired文字です。私はint型からchar型にデータ型を変更しようとしましたが、出力は同じです。私はNotepadqqとgeditのような異なるプログラムでoutputfileをオープンしようとしました。私はまた別のファイル形式でファイルを開き、プロセスのゼロを通してファイルの終わりにヌルポインタを追加しようとしましたが、結果はまだweired文字です。MPI_File_writeの奇妙な文字

/* example of parallel MPI write into a single file */ 
#include <stdio.h> 
#include "mpi.h" 
#define BUFSIZE 100 


int main(int argc, char **argv) 

{ 
    int i, MyRank, NumProcs, buf[BUFSIZE]; 
    MPI_File TheFile; 
    MPI_Status status; 

    MPI_Init(&argc, &argv); 
    MPI_Comm_rank(MPI_COMM_WORLD, &MyRank); 
    MPI_Comm_size(MPI_COMM_WORLD,&NumProcs); 
    for (i=0; i<BUFSIZE; i++) 
     buf[i]=MyRank*BUFSIZE+i; 
    MPI_File_open(MPI_COMM_WORLD, "testfile",MPI_MODE_CREATE|MPI_MODE_WRONLY,MPI_INFO_NULL, &TheFile); 
    MPI_File_set_view(TheFile,MyRank*BUFSIZE*sizeof(int),MPI_INT,MPI_INT,"native",MPI_INFO_NULL); 
    MPI_File_write(TheFile,buf,BUFSIZE,MPI_INT,MPI_STATUS_IGNORE); 
// THis is my trial 
    if(MyRank == 0){ 
     char nullChar = '\0'; 
     MPI_File_write(TheFile, & nullChar , 1 , MPI_CHAR ,MPI_STATUS_IGNORE); 
    } 

    MPI_File_close(&TheFile); 
    MPI_Finalize(); 
    return 0; 
} 
+0

プログラムではプロセスゼロが最後に実行されることはありません。私の最初の間違いです。しかし、すべてのプロセスが同じ方法でヌルポインタを作成するとしても、結果は同じです –

答えて

0

バイナリファイルを開いているので、意味のある文字が表示されることが予想されます(起こりません)。バイナリファイルとテキストファイルの違いについては、hereを参照してください。 MPI_File_read()でいつでもデータを読むことができます。