Io 多个MPI进程能否从单个文件中读取?

Io 多个MPI进程能否从单个文件中读取?,io,operating-system,mpi,Io,Operating System,Mpi,光盘上有一个文件,我的项目的所有MPI进程都必须具有该文件的数据。一种方法是一个进程读取数据并将其广播到所有进程。另一种方法可能是使用MPI I/O,但我对此一点都不熟悉。由于文件非常小,而且每次运行时只执行一次,因此我决定使用最简单的方法:每个进程直接从光盘读取数据。至少在Linux上是这样。我有点担心的是,通常不能假设所有操作系统都允许从一个文件中同时读取多个进程。当您启动一组MPI进程时,典型的操作系统将它们简单地视为一组不相关的进程。因此,当它们同时打开现有文件进行读取时,就好像您在文本

光盘上有一个文件,我的项目的所有MPI进程都必须具有该文件的数据。一种方法是一个进程读取数据并将其广播到所有进程。另一种方法可能是使用MPI I/O,但我对此一点都不熟悉。由于文件非常小,而且每次运行时只执行一次,因此我决定使用最简单的方法:每个进程直接从光盘读取数据。至少在Linux上是这样。我有点担心的是,通常不能假设所有操作系统都允许从一个文件中同时读取多个进程。

当您启动一组MPI进程时,典型的操作系统将它们简单地视为一组不相关的进程。因此,当它们同时打开现有文件进行读取时,就好像您在文本编辑器中多次打开该文件一样。这是否允许取决于程序本身是否以独占方式打开文件


这意味着产生的行为与其说是操作系统的属性,不如说是MPI进程的属性。我认为,当您打开一个文件进行读取时,大多数操作系统的默认设置是不使用独占访问。但是,当您打开文件进行写入时,它可能已经不同了。

当您启动一组MPI进程时,典型的操作系统只是将它们视为一组不相关的进程。因此,当它们同时打开现有文件进行读取时,就好像您在文本编辑器中多次打开该文件一样。这是否允许取决于程序本身是否以独占方式打开文件


这意味着产生的行为与其说是操作系统的属性,不如说是MPI进程的属性。我认为,当您打开一个文件进行读取时,大多数操作系统的默认设置是不使用独占访问。但是,当您打开文件进行写入时,它可能已经不同了。

您可能会发现读取文件的每个进程都会在某个点停止缩放。即使文件很小,想象一下如果有一万个或更多的进程同时读取它


如果您让每个进程都使用
MPI\u file\u read\u all
(注意_all),则此集合调用将优化每个进程都读取文件的情况。

您可能会发现,每个读取文件的进程都会在某个点停止缩放。即使文件很小,想象一下如果有一万个或更多的进程同时读取它

如果您让每个进程都使用
MPI\u file\u read\u all
(注意_all),则此集体调用将优化每个进程都读取文件的情况