Table of Contents
Parallel I/O in MPI
Outline
Motivation
What is Parallel I/O?
Typical Parallel I/O System
Problems
Parallel File Systems and Interfaces
I/O Access Patterns in Parallel Applications
Example: Distributed Array Access
Problems with Unix API for Parallel I/O
Why MPI is a Good Setting for Parallel I/O
MPI-IO Background
Introduction to I/O in MPI
MPI I/O Features
Using MPI for Simple I/O
Using Individual File Pointers
Using Explicit Offsets
Writing to a File
Noncontiguous Accesses
File Views
File View Example
File View Code
Collective I/O
Collective I/O
Accessing Arrays Stored in Files
Using the “Distributed Array” (Darray) Datatype
Darray Continued
Nonblocking I/O
Split Collective I/O
Shared File Pointers
Passing Hints to the Implementation
Examples of Hints (used in ROMIO)
File Interoperability
General Guidelines for Achieving High I/O Performance
Achieving High I/O Performance with MPI
Example: Distributed Array Access
Level-0 Access
Level-1 Access
Level-2 Access
Level-3 Access
The Four Levels of Access
Optimizations
ROMIO: A High-Performance, Portable MPI-IO Implementation
ROMIO Architecture
Performance Results
Distributed Array Access:Read Bandwidth
Distributed Array Access: Write Bandwidth
Unstructured Code:Read Bandwidth
Unstructured Code:Write Bandwidth
Independent Writes
Collective Write
Independent Writes with Data Sieving
Changing the Block Size
Data Sieving with Small Blocks
Summary
For Further Information
|