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