MPI,NFS文件写入

MPI,NFS文件写入,mpi,file-permissions,nfs,Mpi,File Permissions,Nfs,我在一组Linux节点上运行MPI程序时遇到问题。该组当前使用NFS进行设置,并跨所有节点安装/home/mpi。问题在于,程序要求所有节点以写入模式(使用/home/mpi/file上的fopen)在文件系统中打开一个文件,并在执行计算时写入。一个节点将能够打开它,而其他节点将无法打开,并且将抛出一个错误。相反,我希望每个节点都有自己的文件要写入 我想知道是否有办法解决这个问题。我曾考虑为每个节点创建一个单独的文件,并将节点的秩附加到文件名中,但我想知道是否有更简单的方法来解决这个问题。是否有

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

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


谢谢。

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

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

据我所知,在文件系统级别没有办法做到这一点,但您可以在MPI代码中做到这一点。这方面的标准历史实现是让所有MPI进程将消息发送到级别0,该级别负责将消息有效地写入文件系统


另一个选择是查看MPI2中引入的IO功能,它允许所有进程在同一文件的不同部分上工作。

以我的经验,MPI I/O有一个陡峭的学习曲线——也就是说,在你真正做任何事情之前,你必须学习很多东西——但从长远来看,这是值得付出努力的。在第一段中,你说每个进程以写模式打开文件。在第二种情况下,更改文件的是master,而其他列组使用更新。这看起来与前者不同。你能详细说明一下这个程序的I/O模式吗。