MPI_File与使用fscanf的“文件”的参数不兼容

时间:2018-10-03 22:18:52

标签: parallel-processing mpi openmpi

我正在尝试将程序与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读取文件?

1 个答案:

答案 0 :(得分:1)

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

您必须  -MPI_File_open()MPI_File_read()  -或坚持使用fopen()fscanf()

进行集体IO(例如MPI_File_read_all())时,MPI-IO的真正潜能得以释放,并且没有MPI_File_scanf()这样的东西,因此除非您愿意MPI_File_read_all()和{{1} },您可能希望坚持使用非MPI子例程。