Форматированный вывод с MPI_File_write_at? - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь написать параллельную программу ввода-вывода с MPI, мне нужно записать данные в файл в формате: 02 03 04 в файле вместо 2 3 4.

fprintf(fpOut,"%.2d ",var);

Будет последовательным аналогом того, что я пытаюсь сделать. Я оглянулся, но пока не нашел ответов. Любая идея о том, как я мог бы go об этом?

1 Ответ

1 голос
/ 02 мая 2020

MPI_IO записывает двоичные данные (против текстовых / отформатированных данных).

Поэтому, если вы действительно хотите записывать параллельно, вы можете использовать промежуточный буфер, а затем записать его, например,

char buf[4];
sprintf(buf, "%.2d ", var);
MPI_File_write_at(buf, 3, MPI_CHAR, ...);

При этом, возможно, вы захотите пересмотреть свой рабочий процесс:

  • один из вариантов - начать везде использовать двоичные данные (и записывать параллельно)
  • другой вариант заключается в том, чтобы записать промежуточные данные в двоичном и параллельном режиме и, наконец, опубликовать их (не параллельно), чтобы «преобразовать» их в простой текст.
...