为什么要使用MPI_File_open而不是fopen?

3
阅读了MPI文档后,似乎并没有提供任何额外的功能。我本以为它会协调网络流量,以便所有文件操作都能在执行系统上(发出mpirun命令的系统)使用给定的文件,而不是在每个单独的主机上使用本地文件系统。这将非常有用。相反,“用户”需要确保它们最终指向相同的文件。显然他们对这个文件没有太多交流...难道真的吗?
MPI_File_open实际上是做什么的,它有什么好处?为什么我不能只使用fopen?

3
如果你没有使用MPI集体I/O,那么你可能不需要MPI文件。听起来你误解了MPI I/O——它的作用是处理并行文件系统上的分布式文件,例如NFS、Lustre,而不是协调对一个节点上的文件的访问。 - Anycorn
1
我确实没有理解它,这就是为什么我在问的原因 :) 能否详细说明一下?我仍然不明白使用情况。你是说它用于极低级别的手动文件分割吗?还是说它用于写入同一文件的不同实例,然后由外部系统合并?还是其他什么? - Walt W
1
条带化应该在MPI I/O级别下进行。基本上,您需要运行并行FS(Lustre、PVFS等),否则您无法做太多事情。您还必须确保MPI / FS彼此知道。然后,使用MPI_File_open创建的文件将是单个实体,在所有节点上可见(读/写)。 - Anycorn
1个回答

0

当然,MPI_File_open允许您寻找特定块并读/写,就像使用fopen一样,在这种情况下,每个进程都有一个私有文件指针。与fopen的区别包括非阻塞IO方法可以使您的程序在不等待操作完成的情况下继续执行。MPI还支持共享文件指针(例如MPI_File_read_shared),尽管显然使用共享指针会有同步开销。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接