Skip to main content
U.S. Department of Energy
Office of Scientific and Technical Information

Optimizing noncontiguous accesses in MPI-IO.

Journal Article · · Parallel Comput.
The I/O access patterns of many parallel applications consist of accesses to a large number of small, noncontiguous pieces of data. If an application's I/O needs are met by making many small, distinct I/O requests, however, the I/O performance degrades drastically. To avoid this problem, MPI-IO allows users to access noncontiguous data with a single I/O function call, unlike in Unix I/O. In this paper, we explain how critical this feature of MPI-IO is for high performance and how it enables implementations to perform optimizations. We first provide a classification of the different ways of expressing an application's I/O needs in MPI-IO -- we classify them into four levels, called levels 0--3. We demonstrate that, for applications with noncontiguous access patterns, the I/O performance improves dramatically if users write their applications to make level-3 requests (noncontiguous, collective) rather than level-0 requests (Unix style). We then describe how our MPI-IO implementation, ROMIO, delivers high performance for noncontiguous requests. We explain in detail the two key optimizations ROMIO performs: data sieving for noncontiguous requests from one process and collective I/O for noncontiguous requests from multiple processes. We describe how we have implemented these optimizations portably on multiple machines and file systems, controlled their memory requirements, and also achieved high performance. We demonstrate the performance and portability with performance results for three applications -- an astrophysics-application template (DIST3D), the NAS BTIO benchmark, and an unstructured code (UNSTRUC) -- on five different parallel machines: HP Exemplar, IBM SP, Intel Paragon, NEC SX-4, and SGI Origin2000.
Research Organization:
Argonne National Laboratory (ANL)
Sponsoring Organization:
SC; DOD; NSF
DOE Contract Number:
AC02-06CH11357
OSTI ID:
943133
Report Number(s):
ANL/MCS/JA-37760
Journal Information:
Parallel Comput., Journal Name: Parallel Comput. Journal Issue: 1 ; Jan. 2002 Vol. 28; ISSN PACOEJ; ISSN 0167-8191
Country of Publication:
United States
Language:
ENGLISH

Similar Records

Data sieving and collective I/O in ROMIO.
Conference · Fri Sep 11 00:00:00 EDT 1998 · OSTI ID:775250

On implementing MPI-IO portably and with high performance.
Conference · Sun Nov 29 23:00:00 EST 1998 · OSTI ID:775253

Users guide for ROMIO: A high-performance, portable MPI-IO implementation
Technical Report · Wed Oct 01 00:00:00 EDT 1997 · OSTI ID:564273