Results 1 - 10
of
12
On Implementing MPI-IO Portably and with High Performance
- In Proceedings of the 6th Workshop on I/O in Parallel and Distributed Systems
, 1999
"... We discuss the issues involved in implementing MPI-IO portably on multiple machines and file systems and also achieving high performance. One way to implement MPI-IO portably is to implement it on top of the basic Unix I/O functions (open, lseek, read, write, and close), which are themselves portabl ..."
Abstract
-
Cited by 137 (21 self)
- Add to MetaCart
We discuss the issues involved in implementing MPI-IO portably on multiple machines and file systems and also achieving high performance. One way to implement MPI-IO portably is to implement it on top of the basic Unix I/O functions (open, lseek, read, write, and close), which are themselves portable. We argue that this approach has limitations in both functionality and performance. We instead advocatean implementation approach that combines a large portion of portable code and a small portion of code that is optimized separately for different machines and file systems. We have used such an approach to develop a high-performance, portable MPI-IO implementation, called ROMIO. In addition to basic I/O functionality, we consider the issues of supporting other MPI-IO features, such as 64-bit file sizes, noncontiguous accesses, collective I/O, asynchronous I/O, consistency and atomicity semantics, user-supplied hints, shared file pointers, portable data representation, and file preallocati...
Integrating Parallel File I/O and Database Support for High-Performance Scientific Data Management
- In Proc. of SC2000: High Performance Networking and Computing
, 2000
"... Many scientific applications have large I/O requirements, in terms of both the size of data and the number of files or data sets. Management, storage, efficient access, and analysis of this data present an extremely challenging task. Traditionally, two different solutions are used for this problem: ..."
Abstract
-
Cited by 16 (3 self)
- Add to MetaCart
Many scientific applications have large I/O requirements, in terms of both the size of data and the number of files or data sets. Management, storage, efficient access, and analysis of this data present an extremely challenging task. Traditionally, two different solutions are used for this problem: file I/O or databases. File I/O can provide high performance but is tedious to use with large numbers of files and large and complex data sets. Databases can be convenient, flexible, and powerful but do not perform and scale well for parallel supercomputing applications. We have developed a software system, called Scientific Data Manager (SDM), that aims to combine the good features of both file I/O and databases. SDM provides a high-level API to the user and, internally, uses a parallel file system to store real data and a database to store application-related metadata. SDM takes advantage of various I/O optimizations available in MPI-IO, such as collective I/O and noncontiguous requests, in a manner that is transparent to the user. As a result, users can write and retrieve data with the performance of parallel file I/O, without having to bother with the details of actually performing file I/O. In this paper, we describe the design and implementation of SDM. With the help of two parallel application templates, ASTRO3D and an Euler solver, we illustrate how some of the design criteria affect performance. 0-7803-9802-5/2000/$10.00 c 2000 IEEE
I/O in Parallel Applications: The Weakest Link
- INTERNATIONAL JOURNAL OF HIGH PERFORMANCE COMPUTING APPLICATIONS
, 1998
"... Parallel computers are increasingly being used to run large-scale applications that also have huge I/O requirements. However, many applications obtain poor I/O performance on modern parallel machines. This special issue of IJSA contains papers that describe the I/O requirements and the techniques ..."
Abstract
-
Cited by 14 (3 self)
- Add to MetaCart
Parallel computers are increasingly being used to run large-scale applications that also have huge I/O requirements. However, many applications obtain poor I/O performance on modern parallel machines. This special issue of IJSA contains papers that describe the I/O requirements and the techniques used to perform I/O in real parallel applications. We first explain how the I/O application program interface (API) plays a critical role in enabling such applications to achieve high I/O performance. We describe how the commonly used Unix I/O interface is inappropriate for parallel I/O and how an explicitly parallel API with support for collective I/O can help the underlying I/O hardware and software perform I/O efficiently. We then describe MPI-IO, a recently defined, standard, portable API specifically designed for high-performance parallel I/O. We conclude with an overview of the papers in this special issue.
Optimizing Noncontiguous Accesses in MPI-IO
- Parallel Computing
, 2002
"... The I/O access patterns of many parallel applications consist of accessesto 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 all ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
The I/O access patterns of many parallel applications consist of accessesto 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 level 0 through level 3. We demonstrate that, for applications with noncontiguousaccess 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. This work was supported by the Mathemati...
Meta-ViPIOS: Harness distributed I/O resources with ViPIOS
- Iberoamerican Journal of Research ”Computing and Systems”, Special Issue on Parallel Computing
, 2000
"... Two factors strongly inuenced the research in high performance computing in the last few years, the I/O bottleneck and cluster systems. Firstly, for many supercomputing applications the limiting factor is not the number of available CPUs anymore, but the bandwidth of the disk I/O system. Secondly, a ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Two factors strongly inuenced the research in high performance computing in the last few years, the I/O bottleneck and cluster systems. Firstly, for many supercomputing applications the limiting factor is not the number of available CPUs anymore, but the bandwidth of the disk I/O system. Secondly, a shift from the classical, costly supercomputer systems to aordable clusters of workstations is apparent, which allows problem solutions to a much lower price. As a result we present in this paper the Vienna Parallel Input Output System (ViPIOS), which harnesses I/O resources available in cluster type systems for high performance (parallel and/or distributed) applications. ViPIOS is a client-server based system to increase the bandwidth of disk accesses by (re-)distributing the data among available I/O resources and parallelizing the execution scheme. It follows a data engineering approach by combining characteristics of parallel I/O runtime libraries and parallel le systems with a smart administration module. Keywords: distributed I/O, parallel I/O, MPI-IO, cluster computing 1
High-Performance Scientific Data Management System
- Journal of Parallel and Distributed Computing
"... Many scientific applications have large I/O requirements, in terms of both the size of data and the number of files or data sets. Management, storage, efficient access, and analysis of this data present an extremely challenging task. Traditionally, two different solutions have been used for this tas ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Many scientific applications have large I/O requirements, in terms of both the size of data and the number of files or data sets. Management, storage, efficient access, and analysis of this data present an extremely challenging task. Traditionally, two different solutions have been used for this task: file I/O or databases. File I/O can provide high performance but is tedious to use with large numbers of files and large and complex data sets. Databases can be convenient, flexible, and powerful but do not perform and scale well for parallel supercomputing applications. We have developed a software system, called Scientific Data Manager (SDM), that combines the good features of both file I/O and databases. SDM provides a high-level API to the user and, internally, uses a parallel file system to store real data (using various I/O optimizations available in MPI-IO) and a database to store application-related metadata. In order to support I/O in irregular applications, SDM makes extensive use of MPI-IO’s noncontiguous collective I/O functions. Moreover, SDM uses the concept of a history file to optimize the cost of the index distribution using the metadata stored in database. We describe the design and implementation of SDM and present performance results with two regular applications, ASTRO3D and an Euler solver, and with two irregular applications, a CFD code called FUN3D and a Rayleigh-Taylor instability code.
Performance of an MPI-IO implementation using third-party transfer
- In Proceedings of the 17th IEEE Symposium on Mass Storage Systems
, 2000
"... We present a unique new implementation of MPI-IO (as defined in the recent MPI2 message passing standard) that is easy to use, fast, efficient, and complete. Our implementation is layered over the High-Performance Storage System, using HPSS's third-party transfers and parallel I/O descriptors. ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We present a unique new implementation of MPI-IO (as defined in the recent MPI2 message passing standard) that is easy to use, fast, efficient, and complete. Our implementation is layered over the High-Performance Storage System, using HPSS's third-party transfers and parallel I/O descriptors.
On the Implementation of a Portable, Client-Server Based MPI-IO Interface
- In Recent Advances in Parallel Virtual Machine and Message Passing Interface, Proceedings of the 5th European PVM/MPI Users’ Group Meeting
, 1998
"... . In this paper we present the MPI-IO Interface kernel in the Vienna Parallel Input Output System (ViPIOS), which is a client-server based parallel I/O system. Compared to the already existing parallel I/O systems and libraries the concept of an independent distributed server promises to greatly en ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. In this paper we present the MPI-IO Interface kernel in the Vienna Parallel Input Output System (ViPIOS), which is a client-server based parallel I/O system. Compared to the already existing parallel I/O systems and libraries the concept of an independent distributed server promises to greatly enhance the usability and acceptance of the I/O system as well as the portability of client applications. The programmer of a client application does not have to deal with details like file layout on disk, sharing of filepointers etc. Instead high level MPI-IO requests may be issued and the server is expected to perform them in a (near) optimal way. ViPIOS is based on MPI and is targeted (but not restricted) to MPP's using the SPMD paradigm. We describe the current system architecture in general and give a detailed overview of MPI-related design considerations. Keywords parallel I/O, server-client, SPMD, ViPIOS, MPI-IO, I/O chapter in MPI-2 1 Introduction ViPIOS is an I/O runtime system, wh...
High-Performance Scientific Data Management System\Lambda
"... Abstract Many scientific applications have large I/O requirements, in terms of both the size of data and thenumber of files or data sets. Management, storage, efficient access, and analysis of this data present an ..."
Abstract
- Add to MetaCart
Abstract Many scientific applications have large I/O requirements, in terms of both the size of data and thenumber of files or data sets. Management, storage, efficient access, and analysis of this data present an
Achieving High Performance with MPI-IO
"... 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 allo ..."
Abstract
- Add to MetaCart
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. An application can be written in many different ways with MPI-IO. We classify the different ways of expressing an application's I/O access pattern in MPI-IO into four levels, called level 0 through level 3. We demonstrate that, for applications with noncontiguous access patterns, the I/O performance improves significantly if users write the application such that it makes level-3 MPI-IO requests (noncontiguous, collective) rather than level-0 requests (Unix s...

