我从Using MPI-2: Advanced Features of the Message-Passing Interface复制了以下示例,但输出文件只是weired的字符。我试图将数据类型从int更改为char但输出仍然相同。我尝试使用Notepadqq和gedit等不同的程序打开输出文件。我还试图用不同的文件格式打开文件,并通过进程零向文件末尾添加空指针,但结果仍然是weired字符。
/* 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()
。