Skip to content

Commit 238f90d

Browse files
committed
Doc: MPI Sync?
Open brain storming if we want to document which calls are collective and synchronizing.
1 parent 0ecd76c commit 238f90d

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

docs/source/details/mpi.rst

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,29 @@ The latter is implemented through the `Message Passing Interface (MPI) <https://
1111

1212
A **collective** operation needs to be executed by *all* MPI ranks of the MPI communicator that was passed to ``openPMD::Series``.
1313
Contrarily, **independent** operations can also be called by a subset of these MPI ranks.
14+
A **synchronizing** operation will synchronize the MPI ranks that participate in it.
1415
For more information, please see the `MPI standard documents <https://www.mpi-forum.org/docs/>`_, for example MPI-3.1 in `"Section 2.4 - Semantic Terms" <https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf>`_.
1516

16-
============================ ================== ================================
17-
Functionality Behavior Description
18-
============================ ================== ================================
19-
``Series`` **collective** open and close
20-
``::flush()`` **collective** read and write
21-
``::setRankTable()`` **collective** write, performed at flush
22-
``::rankTable()`` **coll**/indep. behavior specified by bool param
23-
``Iteration`` [1]_ independent declare and open
24-
``::open()`` [4]_ **collective** explicit open
25-
``Mesh`` [1]_ independent declare, open, write
26-
``ParticleSpecies`` [1]_ independent declare, open, write
27-
``::setAttribute`` [3]_ *backend-specific* declare, write
28-
``::getAttribute`` independent open, reading
29-
``RecordComponent`` [1]_ independent declare, open, write
30-
``::resetDataset`` [1]_ [2]_ *backend-specific* declare, write
31-
``::makeConstant`` [3]_ *backend-specific* declare, write
32-
``::storeChunk`` [1]_ independent write
33-
``::loadChunk`` independent read
34-
``::availableChunks`` [4]_ collective read, immediate result
35-
============================ ================== ================================
17+
============================ ================== ============= ================================
18+
Functionality Behavior Synchronizing Description
19+
============================ ================== ============= ================================
20+
``Series`` **collective** yes open and close
21+
``::flush()`` **collective** yes read and write
22+
``::setRankTable()`` **collective** no write, performed at flush
23+
``::rankTable()`` **coll**/indep. **yes**/no behavior specified by bool param
24+
``Iteration`` [1]_ independent no declare and open
25+
``::open()`` [4]_ **collective** yes explicit open
26+
``Mesh`` [1]_ independent no declare, open, write
27+
``ParticleSpecies`` [1]_ independent no declare, open, write
28+
``::setAttribute`` [3]_ *backend-specific* no declare, write
29+
``::getAttribute`` independent no open, reading
30+
``RecordComponent`` [1]_ independent no declare, open, write
31+
``::resetDataset`` [1]_ [2]_ *backend-specific* no declare, write
32+
``::makeConstant`` [3]_ *backend-specific* no declare, write
33+
``::storeChunk`` [1]_ independent no write
34+
``::loadChunk`` independent no read
35+
``::availableChunks`` [4]_ independent no read, immediate result
36+
============================ ================== ============= ================================
3637

3738
.. [1] Individual backends, i.e. :ref:`parallel HDF5 <backends-hdf5>`, will only support independent operations if the default, non-collective (aka independent) behavior is kept.
3839
Otherwise these operations are collective.

0 commit comments

Comments
 (0)