Message Passing Interface (MPI) is a library of programs
intended to enable hundreds, even thousands, of processors to cooperate efficiently in the
solution of computationally intensive scientific and engineering problems. Using a network
to communicate changes in the values of particular operand by sending and receiving
messages, MPI programs don't require a shared memory to support the transfer of
information between programs that share data. This feature enables MPI programs to
demonstrate its significant scalabilty.
Applying this scalability to high-performance I/O, MPI I/O draws upon MPI's message-passing concepts, roughly correlating its sends and receives to the read and write operations undertaken in I/O. Intended specifically for I/O parallelism, portability, and high performance, MPI I/O specifies a comprehensive application programming interface (API), very similar to Unix I/O, but enriched with features that convey information about user-level access patterns to the I/O system intended to enable the system can perform I/O efficiently. These features include support for noncontiguous access in memory and file, collective I/O, nonblocking I/O, standard file data representation, and user-defined file data representation.
The MPI I/O extension to the Pablo Trace Library is a set of programs that can be used as replacements for the standard MPI I/O routines to capture and record performance metrics reflecting the application's MPI I/O behavior during execution. When an MPI program is instrumented and linked with the Pablo MPI I/O extension library, the MPI I/O routines in the program are replaced with corresponding Pablo routines, which encapsulate the actual MPI I/O calls in Pablo trace function calls. Recording the information passed in their arguments, together with timestamp and processor details, MPI I/O extension routines record the performance of MPI I/O requests by writing captured metrics to Pablo Self Defining data Format (SDDF) files for later analysis. One SDDF file is produced for each process in the MPI application. Pablo MPI I/O extension trace function calls contain no MPI implementation-dependent features and work with all standard MPI I/O implementations.
They take advantage of the standard specification for MPI, which defines defines a profiling interface with a mechanism through which all of the MPI-defined functions may be accessed using an alternate naming scheme. The MPI I/O extension to the basic Pablo performance capture library exploits this mechanism to gather information about an application's MPI I/O behavior. The alternate name uses the prefix "PMPI_" instead of the standard "MPI_". MPI I/O developers can use the Pablo MPI I/O extension, along with Pablo's Unix I/O extension, to study the I/O behavior underlying a MPI I/O implementation and to analyze the efficiency of specific MPI I/O libraries.