@@ -38,7 +38,7 @@ Any fixed width size integer defined in the <cstdint> header should map to one o
.. tip::
It's recommended to be consistent when using types for portability. If data is defined as a fixed-width integer, define variables in ADIOS2 using a fixed-width type, *e.g.* for int32_t data use ``DefineVariable<int32_t>``. Mapping to a primitive variable is already handled automatically by the compiler.
It's recommended to be consistent when using types for portability. If data is defined as a fixed-width integer, define variables in ADIOS2 using a fixed-width type, *e.g.* for ``int32_t`` data types use ``DefineVariable<int32_t>``. Mapping to a primitive variable is already handled automatically by the compiler.
Variables Shape Types
@@ -59,25 +59,25 @@ ADIOS2 is designed *out-of-the-box* for MPI applications. Thus different applica
Variables of type string are defined just like global single values. In the current adios2 version multidimensional strings are supported through variables of type `char`.
Variables of type string are defined just like global single values. In the current adios2 version multidimensional strings are supported for fixed size strings through variables of type `char`.
2. **Global Array**: the most common shape used for storing self-describing data used for analysis that lives in several MPI processes. The image below illustrates the definitions of the dimension components in a global array: shape, start, and count.
The C++ interface doesn't separate the public API from the private implementation (`PIMPL idiom <https://isocpp.org/blog/2018/01/the-pimpl-pattern-what-you-should-know-bartlomiej-filipek>`_). Users must be careful in accessing the m_Shape, m_Start and m_Count public members directly (*e.g.* ``variable.m_Shape`` or ``variable->m_Shape``).
Be aware of data ordering in your language of choice (Row-Major or Column-Major) as depicted in the above figure. Data decomposition is done by the application based on their requirements, not by adios2.
Start and Count local dimensions can be later modified with the ``Variable::SetSelection`` function if it is not a constant dimensions variable.
3. **Local Single Value**: single value variables that are local to the MPI process. They are defined by passing the ``adios2::LocalValueDim`` enum as follows:
@@ -87,7 +87,7 @@ ADIOS2 is designed *out-of-the-box* for MPI applications. Thus different applica
4. **Local Array**: single array variables that are local to the MPI process. These are more commonly used to write Checkpoint data, that is later read for Restart. Reading, however, needs to be handled differently: each process' array has to be read separately, using SetSelection per rank. The size of each process selection should be discovered by the reading application by inquiring per-block size information of the variable, and allocate memory accordingly.
@@ -95,7 +95,7 @@ ADIOS2 is designed *out-of-the-box* for MPI applications. Thus different applica
5. **Joined Array**: in certain circumstances every process has an array that is different only in one dimension. ADIOS2 allows user to present them as a global array by joining the arrays together. For example, if every process has a table with a different number of rows, and one does not want to do a global communication to calculate the offsets in the global table, one can just write the local arrays and let ADIOS2 calculate the offsets at read time (when all sizes are known by any process).
5. **Joined Array (NOT YET SUPPORTED)**: in certain circumstances every process has an array that is different only in one dimension. ADIOS2 allows user to present them as a global array by joining the arrays together. For example, if every process has a table with a different number of rows, and one does not want to do a global communication to calculate the offsets in the global table, one can just write the local arrays and let ADIOS2 calculate the offsets at read time (when all sizes are known by any process).