/**
@defgroup io OTF2 I/O recording
@{
@page otf2_known_io_paradigms Known @otf2 I/O paradigms
@seclabel{otf2_known_io_paradigms}
The introduction of I/O recording with OTF2 made it necessary to distinguish
different I/O paradigms. Like it is done with the parallel paradigms, like MPI, OpenMP.
Though instead of the usual enum used to identify the paradigm, the I/O paradigms
are expressed in a dynamic way with the help of a definition record. While this
has the advantage that the API does not need to be changed only to add new
I/O paradigms, it also lacks confidence in the definition. To overcome this, OTF2
textually defines known I/O paradigms and their expected definition.
-
@anchor POSIX
"POSIX"
-
This is the I/O interface of the @emph{POSIX standard}.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_SERIAL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_OS}
-
@anchor ISOC
"ISOC"
-
This is the I/O interface of the @emph{ISO C standard}.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_SERIAL}
-
@anchor MPI-IO
"MPI-IO"
-
This is the I/O interface of the @emph{Message Passing Interface}.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_NONE}
-
@anchor netCDF
"netCDF"
-
This is the @emph{Network Common Data Form}. The class depends
on whether the NetCDF library was built with or without MPI support.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_SERIAL} or @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_NONE}
-
@anchor PnetCDF
"PnetCDF"
-
This is the @emph{Parallel netCDF}.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_NONE}
-
@anchor HDF5
"HDF5"
-
This is the I/O interface of @emph{The HDF Group}. The class depends
on whether the HDF5 library was built with or without MPI support.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_SERIAL} or @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_NONE}
-
@anchor ADIOS
"ADIOS"
-
This is the @emph{Adaptable IO System}.
@par Required properties
- Class
- @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}
- Flags
- @eref{OTF2_IO_PARADIGM_FLAG_NONE}
@page otf2_io_operation_event_order Event order for I/O operation records
@seclabel{otf2_io_operation_event_order}
These diagrams show valid event orders of I/O operations, which also denotes
the lifetime of the (@eref{IoHandle}, @p matchingId) tuple.
If the @eref{OTF2_IO_OPERATION_FLAG_NON_BLOCKING} is not set in the @eref{IoOperationBegin}
record, then the event order must follow:
@dot
digraph otf2_io_operation_event_order_blocking {
rankdir = LR;
bgcolor = "transparent";
edge [
fontname=FreeSans,
splines=curved
];
_start [
shape=none,
label=""
];
_end [
shape=none,
label=""
];
node [
shape=rect,
style=rounded,
fontname=FreeSans
];
IoOperationBegin [
href="@ref IoOperationBegin"
];
IoOperationComplete [
href="@ref IoOperationComplete"
];
_start -> IoOperationBegin;
IoOperationBegin -> IoOperationComplete;
IoOperationComplete -> _end;
}
@enddot
If the @eref{OTF2_IO_OPERATION_FLAG_NON_BLOCKING} is set in the @eref{IoOperationBegin}
record, then the event order must follow:
@dot
digraph otf2_io_operation_event_order_nonblocking {
rankdir = LR;
bgcolor = "transparent";
edge [
fontname=FreeSans,
splines=curved
];
_start [
shape=none,
label=""
];
_end0 [
shape=none,
label=""
];
_end1 [
shape=none,
label=""
];
node [
shape=rect,
style=rounded,
fontname=FreeSans
];
IoOperationBegin [
href="@ref IoOperationBegin"
];
IoOperationIssued [
href="@ref IoOperationIssued"
];
IoOperationTest [
href="@ref IoOperationTest"
];
IoOperationComplete [
href="@ref IoOperationComplete"
];
IoOperationCancelled [
href="@ref IoOperationCancelled"
];
_start -> IoOperationBegin;
IoOperationBegin -> IoOperationIssued;
IoOperationIssued -> IoOperationTest;
IoOperationIssued -> IoOperationComplete;
IoOperationIssued -> IoOperationCancelled;
IoOperationTest -> IoOperationTest;
IoOperationTest -> IoOperationComplete;
IoOperationTest -> IoOperationCancelled;
IoOperationComplete -> _end0;
IoOperationCancelled -> _end1;
}
@enddot
@}
*/