"Fossies" - the Fresh Open Source Software Archive

Member "scalasca-2.6.1/vendor/otf2/doc/doxygen-user/A2_io.dox" (14 Dec 2022, 5219 Bytes) of package /linux/misc/scalasca-2.6.1.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 /**
    2 
    3 @defgroup io OTF2 I/O recording
    4 @{
    5 
    6 @page otf2_known_io_paradigms Known @otf2 I/O paradigms
    7 @seclabel{otf2_known_io_paradigms}
    8 
    9 The introduction of I/O recording with OTF2 made it necessary to distinguish
   10 different I/O paradigms. Like it is done with the parallel paradigms, like MPI, OpenMP.
   11 Though instead of the usual enum used to identify the paradigm, the I/O paradigms
   12 are expressed in a dynamic way with the help of a definition record. While this
   13 has the advantage that the API does not need to be changed only to add new
   14 I/O paradigms, it also lacks confidence in the definition. To overcome this, OTF2
   15 textually defines known I/O paradigms and their expected definition.
   16 
   17 <dl>
   18 
   19 <dt>
   20  @anchor POSIX
   21  <em>"POSIX"</em>
   22 </dt>
   23 <dd>
   24   This is the I/O interface of the @emph{POSIX standard}.
   25 
   26   @par Required properties
   27   <dl>
   28     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_SERIAL}</dd>
   29     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_OS}</dd>
   30   </dl>
   31 </dd>
   32 
   33 <dt>
   34  @anchor ISOC
   35  <em>"ISOC"</em>
   36 </dt>
   37 <dd>
   38   This is the I/O interface of the @emph{ISO C standard}.
   39 
   40   @par Required properties
   41   <dl>
   42     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_SERIAL}</dd>
   43   </dl>
   44 </dd>
   45 
   46 <dt>
   47  @anchor MPI-IO
   48  <em>"MPI-IO"</em>
   49 </dt>
   50 <dd>
   51   This is the I/O interface of the @emph{Message Passing Interface}.
   52 
   53   @par Required properties
   54   <dl>
   55     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}</dd>
   56     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_NONE}</dd>
   57   </dl>
   58 </dd>
   59 
   60 <dt>
   61  @anchor netCDF
   62  <em>"netCDF"</em>
   63 </dt>
   64 <dd>
   65   This is the @emph{Network Common Data Form}. The <em>class</em> depends
   66   on whether the NetCDF library was built with or without MPI support.
   67 
   68   @par Required properties
   69   <dl>
   70     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_SERIAL} or @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}</dd>
   71     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_NONE}</dd>
   72   </dl>
   73 </dd>
   74 
   75 <dt>
   76  @anchor PnetCDF
   77  <em>"PnetCDF"</em>
   78 </dt>
   79 <dd>
   80   This is the @emph{Parallel netCDF}.
   81 
   82   @par Required properties
   83   <dl>
   84     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}</dd>
   85     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_NONE}</dd>
   86   </dl>
   87 </dd>
   88 
   89 <dt>
   90  @anchor HDF5
   91  <em>"HDF5"</em>
   92 </dt>
   93 <dd>
   94   This is the I/O interface of @emph{The HDF Group}. The <em>class</em> depends
   95   on whether the HDF5 library was built with or without MPI support.
   96 
   97   @par Required properties
   98   <dl>
   99     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_SERIAL} or @eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}</dd>
  100     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_NONE}</dd>
  101   </dl>
  102 </dd>
  103 
  104 <dt>
  105  @anchor ADIOS
  106  <em>"ADIOS"</em>
  107 </dt>
  108 <dd>
  109   This is the @emph{Adaptable IO System}.
  110 
  111   @par Required properties
  112   <dl>
  113     <dt>Class</dt><dd>@eref{OTF2_IO_PARADIGM_CLASS_PARALLEL}</dd>
  114     <dt>Flags</dt><dd>@eref{OTF2_IO_PARADIGM_FLAG_NONE}</dd>
  115   </dl>
  116 </dd>
  117 
  118 </dl>
  119 
  120 @page otf2_io_operation_event_order Event order for I/O operation records
  121 @seclabel{otf2_io_operation_event_order}
  122 
  123 These diagrams show valid event orders of I/O operations, which also denotes
  124 the lifetime of the (@eref{IoHandle}, @p matchingId) tuple.
  125 
  126 If the @eref{OTF2_IO_OPERATION_FLAG_NON_BLOCKING} is not set in the @eref{IoOperationBegin}
  127 record, then the event order must follow:
  128 
  129 @dot
  130 digraph otf2_io_operation_event_order_blocking {
  131     rankdir = LR;
  132     bgcolor = "transparent";
  133     edge [
  134         fontname=FreeSans,
  135         splines=curved
  136     ];
  137     _start [
  138         shape=none,
  139         label=""
  140     ];
  141     _end [
  142         shape=none,
  143         label=""
  144     ];
  145     node [
  146         shape=rect,
  147         style=rounded,
  148         fontname=FreeSans
  149     ];
  150 
  151     IoOperationBegin [
  152         href="@ref IoOperationBegin"
  153     ];
  154     IoOperationComplete [
  155         href="@ref IoOperationComplete"
  156     ];
  157 
  158     _start -> IoOperationBegin;
  159     IoOperationBegin -> IoOperationComplete;
  160     IoOperationComplete -> _end;
  161 }
  162 @enddot
  163 
  164 If the @eref{OTF2_IO_OPERATION_FLAG_NON_BLOCKING} is set in the @eref{IoOperationBegin}
  165 record, then the event order must follow:
  166 
  167 @dot
  168 digraph otf2_io_operation_event_order_nonblocking {
  169     rankdir = LR;
  170     bgcolor = "transparent";
  171     edge [
  172         fontname=FreeSans,
  173         splines=curved
  174     ];
  175     _start [
  176         shape=none,
  177         label=""
  178     ];
  179     _end0 [
  180         shape=none,
  181         label=""
  182     ];
  183     _end1 [
  184         shape=none,
  185         label=""
  186     ];
  187     node [
  188         shape=rect,
  189         style=rounded,
  190         fontname=FreeSans
  191     ];
  192 
  193 
  194     IoOperationBegin [
  195         href="@ref IoOperationBegin"
  196     ];
  197     IoOperationIssued [
  198         href="@ref IoOperationIssued"
  199     ];
  200     IoOperationTest [
  201         href="@ref IoOperationTest"
  202     ];
  203     IoOperationComplete [
  204         href="@ref IoOperationComplete"
  205     ];
  206     IoOperationCancelled [
  207         href="@ref IoOperationCancelled"
  208     ];
  209 
  210     _start -> IoOperationBegin;
  211 
  212     IoOperationBegin -> IoOperationIssued;
  213 
  214     IoOperationIssued -> IoOperationTest;
  215     IoOperationIssued -> IoOperationComplete;
  216     IoOperationIssued -> IoOperationCancelled;
  217 
  218     IoOperationTest -> IoOperationTest;
  219     IoOperationTest -> IoOperationComplete;
  220     IoOperationTest -> IoOperationCancelled;
  221 
  222     IoOperationComplete -> _end0;
  223     IoOperationCancelled -> _end1;
  224 }
  225 @enddot
  226 
  227 @}
  228 
  229 */