MPI IO Запись файла, когда смещение неизвестно

Я хочу использовать MPI IO для записи файлов. Процессы находятся в цикле while, и он вызывает функцию, которая генерирует случайный объем данных. Я хочу записать эти данные в один файл. Как я могу сделать это?

2 ответа

В каждой итерации цикла 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);

Это может помочь вам:

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

Но, возможно, вам нужно будет передать переменную, которая содержит начальную точку каждого процесса..

Другие вопросы по тегам