C++ 为什么使用MPI_File_open而不是fopen?
在阅读了MPI文档之后,听起来这根本没有为您提供任何附加功能。我假设它协调了网络流量,使得所有文件操作都与执行系统(发出mpirun命令的系统)上的给定文件一起工作,而不是在每个主机上使用本地文件系统。这将是有用的。相反,“用户”需要确保它们最终都在同一个文件中。很明显,他们没有就这个文件进行太多的交流。。。是吗C++ 为什么使用MPI_File_open而不是fopen?,c++,mpi,openmpi,C++,Mpi,Openmpi,在阅读了MPI文档之后,听起来这根本没有为您提供任何附加功能。我假设它协调了网络流量,使得所有文件操作都与执行系统(发出mpirun命令的系统)上的给定文件一起工作,而不是在每个主机上使用本地文件系统。这将是有用的。相反,“用户”需要确保它们最终都在同一个文件中。很明显,他们没有就这个文件进行太多的交流。。。是吗 MPI_File_open实际上做什么,它有什么好处?为什么我不应该只使用fopen?当然,MPI\u File\u open允许您在特定块上查找和读/写,就像使用fopen一样,在这
MPI_File_open实际上做什么,它有什么好处?为什么我不应该只使用fopen?当然,MPI\u File\u open允许您在特定块上查找和读/写,就像使用fopen一样,在这种情况下,每个进程都有一个私有文件指针。与fopen的区别包括非阻塞IO方法允许您的程序继续执行,而无需等待操作完成。MPI还支持共享文件指针(例如MPI_file_read_shared),尽管使用共享指针显然会带来同步开销。uhh。。。如果不使用MPI集体I/O,则可能不需要MPI文件。听起来你好像误解了MPI I/O——它是用来处理并行FS上的分布式文件,例如NFS、Lustre,而不是协调对一个节点上的文件的访问。我当然误解了,这就是为什么我要问:)想在回答中详细说明一下吗?我仍然不明白用例。你是说它是用于极低级别的文件手动条带化吗?您是说它是为了写入同一文件的不同实例,这些实例后来被外部系统合并?还有什么?条带化应该发生在MPI I/O级别以下。基本上你需要一个并行的FS(Lustre,PVFS等)运行,没有它你做不了多少。您还必须确保MPI/FS相互了解。然后,使用MPI_file_open创建的文件将是单个实体,在所有节点上可见(读/写)。