Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么使用MPI_File_open而不是fopen?_C++_Mpi_Openmpi - Fatal编程技术网

C++ 为什么使用MPI_File_open而不是fopen?

C++ 为什么使用MPI_File_open而不是fopen?,c++,mpi,openmpi,C++,Mpi,Openmpi,在阅读了MPI文档之后,听起来这根本没有为您提供任何附加功能。我假设它协调了网络流量,使得所有文件操作都与执行系统(发出mpirun命令的系统)上的给定文件一起工作,而不是在每个主机上使用本地文件系统。这将是有用的。相反,“用户”需要确保它们最终都在同一个文件中。很明显,他们没有就这个文件进行太多的交流。。。是吗 MPI_File_open实际上做什么,它有什么好处?为什么我不应该只使用fopen?当然,MPI\u File\u open允许您在特定块上查找和读/写,就像使用fopen一样,在这

在阅读了MPI文档之后,听起来这根本没有为您提供任何附加功能。我假设它协调了网络流量,使得所有文件操作都与执行系统(发出mpirun命令的系统)上的给定文件一起工作,而不是在每个主机上使用本地文件系统。这将是有用的。相反,“用户”需要确保它们最终都在同一个文件中。很明显,他们没有就这个文件进行太多的交流。。。是吗


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创建的文件将是单个实体,在所有节点上可见(读/写)。