OMPIO:用于MPI I/O的模块化软件架构
一、引言与动机
在当今的高端机器上,对于大规模并行应用而言,I/O可能是最主要的限制因素。根据Amdahl定律,并行应用的可扩展性受限于其扩展性最差的部分,而对于许多科学应用,这个限制往往就来自I/O操作的性能。
MPI在其规范的第二个版本中引入了并行I/O的概念。尽管终端用户对其采用程度有限,但研究表明,结合并行文件系统,MPI I/O相较于顺序I/O能显著提升I/O操作的性能。然而,从顺序的Fortran或C I/O例程切换到MPI I/O,应用开发者可能需要投入大量工作,因为许多MPI I/O特性在其他I/O规范中并没有对应项。而且,MPI I/O性能受限的原因在于现有的I/O解决方案多种多样,使得每个I/O环境几乎都是独一无二的。并行I/O操作的性能会受到所使用的文件系统、存储服务器数量、每个存储服务器的I/O带宽、存储服务器之间以及存储服务器与计算节点之间的网络连接、网络互连及其用于MPI级通信的操作系统级参数的影响。此外,应用程序的特性,如I/O操作的频率和量,以及实现功能的算法(如集体I/O操作),也会极大地影响终端用户所观察到的I/O性能。
为了解决这些问题,我们引入了OMPIO,这是一种用于Open MPI的新型并行I/O架构。其目标是提供一种灵活处理并行I/O挑战的基础设施,从而针对不同的应用和硬件配置优化I/O操作的性能。该架构的核心是将并行I/O功能分离到不同的框架中,这样可以将并行I/O的各个方面封装成更小的功能单元,每个框架通常有多个模块提供所需的功能,每个模块针对不同的场景进行设计。而决定使用哪个模块的选择标准高度依赖于框架提供的功能以及外部参数,如所使用的文件系统、硬件配置、批调度器的进程放置或应用程