Work

Optimizations for High-Performance I/O Libraries

Public Deposited

I/O performance has perpetually lagged well behind that of processors. This gap is made even more pronounced in the field of high-performance computing. While simply adding more network bandwidth and increasing the number of storage units is a simple way to increase theoretical peak I/O bandwidth, the software libraries for harnessing parallel storage fall significantly short of delivering this ideal. The typical software stack from low-level communication libraries through several middleware layers all the way up to the application all need to work in a concerted effort in order to efficiently access files. Each layer offers unique opportunities for I/O optimization, but the MPI layer is particularly interesting for its portability and its preservation of higher-level semantic relationships. MPI is a critical component of almost every parallel computing system. Without MPI the computational power of these systems would be far less accessible to users. As the number of processors in both clusters and more specialized parallel systems continually grows, I/O is often a bottleneck for many applications ranging from climate modeling to computational physics. MPI-IO provides a portable means of accessing storage while also allowing for system specific optimizations. The MPI-2 collective I/O routines were included to preserve the semantic relationships between the I/O operations of several processes. The ROMIO implementation of MPI-IO is conveniently open source and frequently encountered, as it is distributed with Argonne National Laboratory's MPICH and several other MPI implementations. Working with ROMIO allows for a potentially broad impact on many high-performance computing installations. Caching is of particular interest at the MPI-IO level. I/O caching has always held promise as a performance booster in high-performance I/O, but the overhead and involved in ensuring coherency have mitigated these performance benefits. Though traditionally done at the file system level, there are significant benefits to manipulating I/O within an MPI-IO library to leverage an I/O cache within either the file system or MPI-IO. All these changes and experiments can be made with minimal impact on existing MPI applications. The Persistent File Realm (PFR) technique works only when I/O calls are confined to collective I/O, but is able to efficiently rearrange I/O access patterns to ensure coherence in a file system cache that otherwise may not be coherent. The Direct Access Cache (DAChe) system remedies the collective I/O requirement by implementing the client-side cache itself at the user-level. Because DAChe is started and controlled by the application, it can be tuned to the particular characteristics of the application. Existing techniques like two phase I/O work well with DAChe, and DAChe allows for a mix of both independent and collective I/O calls.

Last modified
  • 08/28/2018
Creator
DOI
Subject
Keyword
Date created
Resource type
Rights statement

Relationships

Items