MPI_File 与带有 fscanf 的 "File" 的参数不兼容

MPI_File is incompatible with parameter of the "File" with fscanf

我正在尝试将我的程序与 MPI 并行化。

   MPI_File fh;                                                     
       MPI_File_open(MPI_COMM_WORLD,"input.txt",MPI_MODE_CREATE|MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
       if(rank == 0){
               nwords = -1;
               do {
                       err = fscanf(fh, "%[^\n]\n", word[++nwords]);
               } while( err != EOF && nwords < maxwords);
               printf("Read in %d words\n", nwords);
       } 

然后我得到了这个错误。

 warning #167: argument of type "MPI_File" is incompatible with parameter of type "FILE *__restrict__"
                          err = fscanf(fh, "%[^\n]\n", word[++nwords]);

如何使用 MPI_File_open 读取文件?

MPI_File_openMPI_File 一起工作,fscanf()FILE * 一起工作并且没有互操作性。

你必须要么 - MPI_File_open()MPI_File_read() - 或者坚持 fopen()fscanf()

MPI-IO 真正的潜力在进行集体 IO 时被释放(例如 MPI_File_read_all())并且没有 MPI_File_scanf() 这样的东西,所以除非你愿意 MPI_File_read_all()sscanf(),您可能希望坚持使用非 MPI 子例程。