next up previous contents
Next: Distributed array descriptors Up: Creating ZioLib objects Previous: Creating ZioLib objects

I/O staging communicators

This is to designate a subset of the compute communicator processes as the ones that actually stage I/O. For serial I/O (e.g., sequential-access Fortran unformatted I/O) one can select the process 0 as the staging process. For parallel I/O, you can select a subset of processes from all the compute processes to achieve an optimal I/O bandwidth.

There are a few ways to create I/O staging communicators out of the compute communicator (the handle for the created I/O staging communicator object is returned in iocomm):

zio_new_iocomm(iocomm,n)
staging communicator made of first n processes
zio_new_iocomm_incl(iocomm,n,ranks)
staging communicator made of ranks(1:n) processes
zio_new_iocomm_member(iocomm,is_iope)
staging communicator made of the processes with is_iops=.true.

A single staging communicator object can be used for all subsequent I/O. But a flexible arrangement is possible. For example, if the maximum read and write rates can be obtained with different numbers of processes on a machine, you may want to define two I/O staging communicator objects, one for reads and the other for writes.



Yun (Helen) He
Tue Dec 9 16:16:02 PST 2003