Parallel I/O in MPI

10/24/00


Click here to start


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

Author: Rajeev Thakur