gpt4 book ai didi

mpi - 是否可以在同一个文件中,在文件末尾,以一种有序的方式写入多个处理器?

转载 作者:行者123 更新时间:2023-12-04 15:30:42 24 4
gpt4 key购买 nike

我有 2 处理器(这是一个示例),我希望这些 2 处理器写入文件。我希望他们写在文件的末尾,但不是混合模式,就像那样:

[file content]
proc0
proc1
proc0
proc1
proc0
proc1
(and so on..)

我想让他们按照这种模式写作:

[file content]
proc0
proc0
proc0
proc1
proc1
proc1
(and so on..)

有可能吗?如果是这样,要使用什么设置?

最佳答案

您的流程准备好报告输出的顺序基本上是事先不可知的。即使重复运行完全相同的 MPI 程序也会显示输出顺序的差异。因此,某处的某些东西将不得不对文件的写入施加顺序。

Wesley 已经提到的一种非常常见的模式是让所有进程将它们的输出发送到一个进程,通常是进程 0,并让它处理写入文件。这个主编写器可以在写入之前对输出进行排序,但这会产生一些问题:在写入之前分配空间来存储输出,并且更难处理的是,确定何时可以对输出记录的集合进行排序并写入文件以及输出缓冲区被重用。 master-writer 等待多长时间,它如何知道进程是否仍在工作?

所以通常让主编写器在获取输出时写入输出,而另一个程序在并行程序完成后根据需要对输出文件进行排序。您可以将其作为 mpi_finalize 之后的一个步骤添加到并行程序中,或者您可以使用完全独立的程序(例如 Linux 机器上的 sort)。当然,要做到这一点,每个输出记录都必须包含一些排序信息。

另一种常见的模式是只有一个进程根本不进行任何写入,也就是说,其他进程根本不进行任何输出。这完全避免了写作顺序的不确定性。

另一种不太常见的模式是使用 mpi io。使用 mpi io 多个进程可以同时写入文件的不同部分。要实际同时编写程序,需要在支持并行 i/o 的硬件、网络和操作系统上执行。即使使用正确的平台也很难实现这一点,尤其是当流程的输出量不确定时。

根据我在 SO 上的经验,提出像您这样的问题的人可能在他们的 MPI 经验中还处于处理并行 i/o 的早期阶段,即使他们可以访问必要的硬件。

关于mpi - 是否可以在同一个文件中,在文件末尾,以一种有序的方式写入多个处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com