MPI_File_write中的奇怪字符

时间:2017-03-28 21:40:07

标签: c++ io mpi c++14

我从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;
}

1 个答案:

答案 0 :(得分:0)

因为您正在打开二进制文件,并且您希望看到有意义的字符(不会发生)。查看here以查看二进制文件和文本文件之间的区别。您始终可以使用MPI_File_read()

来阅读数据