0

我遇到了跨一组 Linux 节点运行的 MPI 程序的问题。该组当前使用 NFS 设置,在所有节点上都安装了 /home/mpi。问题是程序要求所有节点以写入模式打开文件系统中的文件(在 /home/mpi/file 上使用 fopen),并在计算时写入。一个节点将能够打开它,而其他节点将不会并且会抛出错误。相反,我希望每个节点都有自己的文件要写入。

我想知道是否有办法解决这个问题。我正在考虑为每个节点创建一个单独的文件,并将节点等级附加到文件名,但想知道是否有更简单的方法来解决这个问题。有没有办法设置组,以便所有工作节点都有自己的 /home/mpi 目录副本,主节点对其副本所做的任何更改都会自动更新?

谢谢。

4

1 回答 1

0

据我所知,标准的做事方式是每个节点打开一个文件,按您描述的等级索引。根据这些文件的用途(例如日志记录),您必须编写脚本在计算结束时重新组合它们。

如果您确实需要所有进程写入文件系统上的同一文件,则必须以某种方式协调所有想要写入文件的进程的并发输出。

据我所知,没有办法在文件系统级别执行此操作,但您可以在 MPI 代码中执行此操作。标准的历史实现是让所有 MPI 进程将消息发送到 0 级,它负责有效地将它们写入文件系统。

另一种选择是查看 MPI2 中引入的 IO 功能,它允许所有进程处理同一文件的不同部分。

于 2013-06-04T06:49:35.590 回答