首页 > 解决方案 > 使用 MPI_File_write_at 格式化输出?

问题描述

我正在尝试使用 MPI 编写并行 IO 程序,我需要将数据写入文件,格式为:02 03 04在文件中而不是2 3 4.

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

将是我正在尝试做的串行对应物。我环顾四周,但到目前为止找不到任何答案。关于我如何解决这个问题的任何想法?

标签: cparallel-processingmpiopenmpimpi-io

解决方案


MPI_IO写入二进制数据(相对于文本/格式化数据)。

所以如果真的要并行写,可以使用一个中间缓冲区,然后再写,例如

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

话虽如此,您可能需要重新考虑您的工作流程:

  • 一种选择是开始在任何地方使用二进制数据(并并行写入)
  • 另一种选择是以二进制和并行方式写入中间数据,最后对其进行后处理(非并行)以将其“转换”为纯文本。

推荐阅读