From: [email-masked] (John Kapenga)
Date: Sun, 17 Jan 93 11:38:43 EST

Although the question of IO specification in the MPI-1 has been
raised before, I think it still needs to be addressed.  Omission
of any IO requirements means no program can be portable. If IO
specifications are not included the introduction should make a
strong case for the reasons. 

Any attempt to specify high level parallel IO at this point in time
seems premature. Perhaps there can be a middle ground. We could
specify low level IO, compatible with ANSI/ISO/POSIX standards
and perhaps allow an inquire function to test for its presence.

I will suggest every process should have access to Level-1 IO,
given in the following list, which works for c and c++.
--------------------------------------------------------------------
Level-1 Input and Output
A process should have access to:
1)  open/close/flush read/write lseek
2)  readv/writev
3)  fcntl dup dup2 ioctl
4)  fopen/fclose/fflush scanf/printf fscanf/fprintf sscanf/sprintf
5)  varargs  vscanf/vprintf vfscanf/vfprintf vsscanf/vsprintf
Behavior of these functions is to match that in current standards
(specific standard to be chosen).
--------------------------------------------------------------------

This could be loosened to only require defined behavior when
access is by a single process.

A Like Level-1 IO can be specified for Fortran-77 as well.

This type of facility is provided in many vendor environments
and several portable environments as well.

A prototype version of the Level-1 IO could be built using gnu
sprintf/sscanf, MPI-1 message passing and the assumption that
some process can do IO.

--------------------------------------------------------------------
Level-2 Input and Output
A case can be made for Level-2 Input and Output as well. This
would be group IO, no claim would be made for efficiency, only
that the behavior was defined and would not overload the
communication network. All processes in a group would execute
the same IO calls as in level-1 and the joint behavior would
be defined. To avoid state a modified name for each function
could be used. A generic level-2 IO could be built on level-1
and the rest of MPI-1.

--------------------------------------------------------------------
I propose we include a Level-1 specification and I think we should
consider Level-2 as well.

I am willing to draft a Level-1 suggestion and a Level-2 suggestion.

I'm not sure which mailing list to put this on, but I think the
issue needs to be addressed quickly (even if the decision remains
to ignore IO).

john