gpt4 book ai didi

file-io - MPI-FORTRAN 的文件 IO

转载 作者:行者123 更新时间:2023-12-02 23:32:19 25 4
gpt4 key购买 nike

我有一个 FORTRAN MPI 代码来求解流场。

首先,我想从文件中读取数据并将其分发给参与进程。

数据由多个 3-D 数组(空间 x、y、z 中的速度)组成。

每个进程只存储数组的一部分。

因此,如果每个进程都要读取该文件(我认为最简单的方法),它将无法工作,因为它只会存储与该进程可以保存的数组数量相对应的文件的第一部分。

MPI Bcast 可以用于 3d 数组吗?但随后事情就变得复杂了。

或者有更简单的方法吗?

最佳答案

一般来说,您有 2 或 3 个选择,具体取决于您的平台。

  1. 一个进程读取输入数据并将其(部分)发送到其他进程。我通常不会为此使用广播,因为它是一个集体操作,所有进程都必须参与。我通常只是向每个进程发送必要的信息。如果方便的话(而不是内存问题),您当然可以将所有输入数据广播到所有进程,但这不是我经常使用或看到的操作模式。
  2. 所有进程都会读取它们所需的数据。这可能涉及读取整个输入文件并仅存储它需要的那些部分的过程。但是,如果您有非常大的输入文件,您可以编写例程来仅将必要的部分读入每个进程的内存空间。这种方法可能涉及进程竞争磁盘访问,这只是相对而言较慢:如果您正在运行大规模且长时间运行的并行计算,那么在所有进程获取其数据时等待几秒钟并不是太大的开销。
  3. 如果您有并行文件系统,则可以使用 MPI 的并行 I/O 例程,以便每个进程仅读取其需要的输入数据部分。

关于file-io - MPI-FORTRAN 的文件 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943688/

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