You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Fix: Late unique_ptr puts without CLOSE_FILE or ADVANCE operations (#1744)
* Add failing test
* Add failing test
* Revert "Add failing test"
This reverts commit 5e04ece.
* Reactivate writing from unique_ptr in finalize()
* BP5+groupbased: allow only up to 100 steps (#1732)
* BP5+groupbased: allow only up to 1000 steps
* Configure this via env variable
OPENPMD_BP5_GROUPENCODING_MAX_STEPS=1000
* Add documentation
* Lower limit to 100
* Add compile-time check for #1720 (#1722)
* WarpX: Repo Moved (#1733)
Update a link to WarpX.
* Fix zero-sized storeChunk for Span API in Python (#1738)
* working around an unusual encounter when the joined_dim has actual value "max::size_t - 1" (#1740)
* working around an unusal encounter when the joined_dim has actual
value "max::size_t - 1"
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add test for redundant resetDataset()
* Merge check into above logic
* Better error messages in verifyDataset
* Add further safety guards to createDataset and extendDataset tasks
* Move joinedDim logic into middle-end for extendDataset
* Update include/openPMD/IO/ADIOS/ADIOS2IOHandler.hpp
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Franz Pöschel <franz.poeschel@gmail.com>
* ADIOS2 bugfix: Always use CurrentStep() in mode::Read (#1749)
* Always use CurrentStep() in mode::Read
* Remove manual step counting
m_currentStep only necessary for SetStepSelection, it seems
* Clean up logic that is no longer needed
* Add test
---------
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Junmin Gu <guj@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
``OPENPMD_ADIOS2_PRETEND_ENGINE`` *empty* Pretend that an (unknown) ADIOS2 engine is in fact another one (also see the ``adios2.pretend_engine`` :ref:`parameter <backendconfig-adios2>`).
89
-
``OPENPMD2_ADIOS2_USE_GROUP_TABLE`` ``0`` Use group table (see below)
90
-
``OPENPMD_ADIOS2_STATS_LEVEL`` ``0`` whether to generate statistics for variables in ADIOS2. (``1``: yes, ``0``: no).
91
-
``OPENPMD_ADIOS2_ASYNC_WRITE`` ``0`` ADIOS2 BP5 engine: 1 means setting "AsyncWrite" in ADIOS2 to "on". Flushes will go to the buffer by default (see ``preferred_flush_target``).
92
-
``OPENPMD_ADIOS2_BP5_BufferChunkMB`` ``0`` ADIOS2 BP5 engine: applies when using either EveryoneWrites or EveryoneWritesSerial aggregation
93
-
``OPENPMD_ADIOS2_BP5_MaxShmMB`` ``0`` ADIOS2 BP5 engine: applies when using TwoLevelShm aggregation
94
-
``OPENPMD_ADIOS2_BP5_NumSubFiles`` ``0`` ADIOS2 BP5 engine: num of subfiles
95
-
``OPENPMD_ADIOS2_BP5_NumAgg`` ``0`` ADIOS2 BP5 engine: num of aggregators
``OPENPMD_ADIOS2_PRETEND_ENGINE`` *empty* Pretend that an (unknown) ADIOS2 engine is in fact another one (also see the ``adios2.pretend_engine`` :ref:`parameter <backendconfig-adios2>`).
89
+
``OPENPMD2_ADIOS2_USE_GROUP_TABLE`` ``0`` Use group table (see below)
90
+
``OPENPMD_ADIOS2_STATS_LEVEL`` ``0`` whether to generate statistics for variables in ADIOS2. (``1``: yes, ``0``: no).
91
+
``OPENPMD_ADIOS2_ASYNC_WRITE`` ``0`` ADIOS2 BP5 engine: 1 means setting "AsyncWrite" in ADIOS2 to "on". Flushes will go to the buffer by default (see ``preferred_flush_target``).
92
+
``OPENPMD_ADIOS2_BP5_BufferChunkMB`` ``0`` ADIOS2 BP5 engine: applies when using either EveryoneWrites or EveryoneWritesSerial aggregation
93
+
``OPENPMD_ADIOS2_BP5_MaxShmMB`` ``0`` ADIOS2 BP5 engine: applies when using TwoLevelShm aggregation
94
+
``OPENPMD_ADIOS2_BP5_NumSubFiles`` ``0`` ADIOS2 BP5 engine: num of subfiles
95
+
``OPENPMD_ADIOS2_BP5_NumAgg`` ``0`` ADIOS2 BP5 engine: num of aggregators
Please refer to the `ADIOS2 documentation <https://adios2.readthedocs.io/en/latest/engines/engines.html>`_ for details on I/O tuning.
100
101
@@ -315,6 +316,21 @@ Rather than by reallocation as in BP4, this is done by appending a new chunk, le
315
316
The default is to flush to disk (except when specifying ``OPENPMD_ADIOS2_ASYNC_WRITE=1``), but the default ``preferred_flush_target`` can also be specified via JSON/TOML at the ``Series`` level.
316
317
317
318
319
+
The BP5 engine is known to perform extremely bad for group-based encoding with many Iterations, since its design assumes that the metadata structure will be constant across output steps, while group-based encoding will add new variables and attributes for each Iteration.
320
+
The openPMD-api will hence cancel operation after 100 written Iterations in group-based encoding for BP5.
321
+
Experiments with PIConGPU show that the metadata (!) size grows from 10MB to 1GB when going from 100 to 1000 output steps in this setup.
322
+
The environment variable ``OPENPMD_BP5_GROUPENCODING_MAX_STEPS`` may be used to change this limit (specifying the limit as ``0`` will disable the check).
323
+
324
+
For workarounds you may follow these guidelines:
325
+
326
+
* Use file encoding by including an expansion pattern ``%T`` in the filename.
327
+
* If output to a single file is required, then:
328
+
329
+
* Use another ADIOS2 engine, recommended is the BP4 engine by selecting file ending ``.bp4``.
330
+
* Use another openPMD backend, recommended is HDF5 by selecting file ending ``.h5``.
331
+
* (experimental) use variable encoding with BP5, either by using the API call ``Series::setIterationEncoding(IterationEncoding::variableBased)`` / ``Series.iteration_encoding = Iteration_Encoding.variable_based`` or by using the JSON/TOML configuration ``{"iteration_encoding": "variable_based"}`` / ``iteration_encoding = "variable_based"``.
332
+
Note that there is at this point no complete read support for variable-encoded outputs.
0 commit comments