MPI I/O是如何实现的?

MPI I/O是如何实现的?,mpi,parallel-processing,Mpi,Parallel Processing,冗长的背景 我正在研究心脏电生理模拟的并行代码。由于用户可以使用内置脚本语言指定自己的模拟,因此我无法知道如何在通信与计算之间进行权衡。为了解决这个问题,我制作了一种运行时探查器,一旦看到要运行的模拟和它必须使用的硬件环境,它将决定如何处理区域分解 我的问题是: MPI I/O是如何在幕后实现的?每个进程实际上是写入其他节点上的单个文件,还是每个进程都写入某个稀疏文件,当文件关闭时,这些稀疏文件会重新拼接在一起 知道这将有助于我决定是否将I/O操作视为通信或计算,并相应地调整余额… 提前感谢您提

冗长的背景

我正在研究心脏电生理模拟的并行代码。由于用户可以使用内置脚本语言指定自己的模拟,因此我无法知道如何在通信与计算之间进行权衡。为了解决这个问题,我制作了一种运行时探查器,一旦看到要运行的模拟和它必须使用的硬件环境,它将决定如何处理区域分解

我的问题是:

MPI I/O是如何在幕后实现的?每个进程实际上是写入其他节点上的单个文件,还是每个进程都写入某个稀疏文件,当文件关闭时,这些稀疏文件会重新拼接在一起

知道这将有助于我决定是否将I/O操作视为通信或计算,并相应地调整余额…

提前感谢您提供的任何见解


Ross

I/O机制依赖于实现。此外,没有单一类型的I/O。某些I/O由远程列组缓存,并在运行结束时由mpirun进程收集。一些I/O会根据需要写入本地暂存空间。某些I/O写入NAS/SAN风格的高性能共享文件系统

一些MPI使用第三方库来支持并行文件系统的I/O,这些细节可能是专有的。一些文件系统是本地磁盘,另一些是光纤SAN或InfinBand


您计划如何实际测量I/O所花费的时间?您是否计划使用pMPI接口拦截库中的所有调用

我正在计划某种冗长的函数指针交换,但是这个pMPI接口听起来非常有趣。我会调查的。谢谢《使用MPI进行并行编程》一书中有一个使用pMPI评测接口收集MPI_发送的计时信息的示例。你可以在这里看到这个例子:Schuweeeet。这是一件美丽的事情。谢谢。嗯。。如果问题与MPI IO有关,则此答案是错误的。另外,我认为OP可能会将MPI I/O与MPI应用程序中的IO混淆。@Powerrox。澄清之后,OP的实际问题似乎是:“我正在制作一种运行时分析器”。“评测MPI接口”似乎是他想要的答案。这个问题似乎是基于一个正在进行I/O的应用程序。我相应地回答了。请澄清:您是在谈论MPI IO还是在MPI应用程序中进行IO?