0

我想用 MPI IO 来写文件。这些进程处于一个while循环中,它调用一个生成随机数据量的函数。我想将此数据写入单个文件。我怎样才能做到这一点?

4

2 回答 2

0

在 while 循环的每次迭代中,每个进程都知道将写入多少数据。使用 MPI_SCAN 共享该数据,然后使用 MPI_File_write_at_all 集体写入:

      incr = generate_random_data();
      MPI_Scan(&incr, &new_offset, 1, MPI_LONG_LONG_INT, 
                      MPI_SUM, MPI_COMM_WORLD);
      new_offset -= incr;

      ret = MPI_File_write_at_all(mpi_fh, new_offset, buf, count,
                              datatype, status);
于 2014-10-15T01:56:32.317 回答
0

它可能会帮助您:

http://social.microsoft.com/Forums/en-US/47b99479-37d9-43a4-b1e3-90efd3d52c0a/can-different-mpi-processes-write-data-in-one-file-with-different-offset?论坛=windowshpcmpi

但也许你需要传递一个包含每个进程起点的变量..

于 2014-03-17T12:21:19.527 回答