Next: Source Files
Up: ZioLib: a Parallel I/O
Previous: Introduction
- A set of Fortran 90 modules supporting
- netCDF I/O (wrappers for serial and parallel library routines)
- direct-access unformatted I/O (serial and parallel)
- sequential-access unformatted I/O (serial)
- Read or write arrays of an arbitrary number of dimensions
- Support integer*4, real*4 and real*8
data types
- Read or write in any array index order
- Work with any block parallel decompositions
- A process' subdomain can be made of multiple disjoint rectangular
blocks
- Can handle ghost nodes
- Use only MPI-1 routines for greater portability
ZioLib works for regular rectangular block-decompositions. It also
works for more general data decomposition cases where each process'
local subdomain consists of a number of separate rectangular blocks.
Such a more complex decomposition is not uncommon in many application
codes. See the test codes bintest4.F90 and
nftest4.F90 included in the source distribution to see how
to use ZioLib functions in such a situation.
The parallel netCDF library for which ZioLib provides wrappers is the
one that is being developed at LBNL/NERSC
(http://hpcf.nersc.gov/software/libs/io/netcdf/sp/pusage.html).
Since staging processes can be set flexibly and the required
remapping of data is all performed by ZioLib, we notice a few
distinct advantages with ZioLib:
- Writes/reads are done in large blocks (no seeks) in parallel
- Robust I/O performance is achieved regardless of parallel
decomposition types
- Compared to serial I/O, memory limitations on a process can
be relieved because global field is now constructed on multiple
staging processes instead of single root process
- Congestion on I/O server nodes can be relieved (because the
number of disk-accessing staging processes can be controlled)
- Gather/scatter/transpose is eliminated from user codes
Yun (Helen) He
Tue Dec 9 16:16:02 PST 2003