PARALLEL DATA LAB

Scalable I/O:
Low-Level Application Programming Interface

The Parallel Data Laboratory has been an active participant in the development of the SIO low-level application programming interface. The interface was formally introduced to the parallel computing community at Supercomputing '96.

Information related to the specification:

Overview of the SIO-LLAPI

If you are interested in the full specification of the SIO low-level API, a postscript copy is available through the links at the top of the page.

Goals and Interface Features

Goals

The primary goal of the API is expressing, in a portable manner, primitives that allow efficient utilization of high bandwidth storage and network I/O devices. It is intended to be sufficiently complete to support many styles of I/O, but functionality and performance are chosen over simplicity and ease of programming. Consequently, the API is primarily one for "tool writers" or highly sophisticated application programers. Another key design goal is to allow application parallelism to be reflected in the I/O subsystem. Hence, the interface does not imply or require synchronization.

Briefly, the high level goals of the interface are to:

  • support performance and parallelism over ease of use
  • make visible hardware characteristics important for performance
  • support incoherent compute-node (compute-process) level caching

Features

The interface contains the following features:

  • allows application control over consistency of cached data
  • use byte granularity for consistency
  • allows applications to expose access pattern hints
  • offers asynchronous, scatter-gather and collective IO operations