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
Copy file name to clipboardExpand all lines: CHANGELOG.rst
+257-3Lines changed: 257 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,11 +5,20 @@ Changelog
5
5
6
6
0.16.0
7
7
------
8
-
**Date:** TBA
8
+
**Date:** 2024-10-07
9
9
10
-
[Title]
10
+
ADIOS2 Joined arrays, API simplification, HDF5 subfiling, TOML backend, wildcard file extensions, Performance & Memory
11
11
12
-
[Summary]
12
+
This release adds support for additional I/O features in all backends, and additionally a completely new TOML backend, useful for openPMD-formatted configuration files in scientific workflows.
13
+
The ADIOS2 backend now supports joined arrays for simplified storage of particle data in parallel, asynchronous I/O, group tables for enhanced support of ADIOS2 I/O steps, optimized attribute aggregation schemes for large-scale setups and more features.
14
+
The HDF5 backend has added support for the "subfiling" virtual file driver intended for I/O performance in large-scale setups, explicit JSON/TOML-based configuration for chunking and independent flushing. The support of exotic datatypes is improved, such as float128 on ARM64/PPC64 and improved support for generically dealing with unknown datatypes.
15
+
The JSON backend supports parallel MPI output into separate subfiles, mainly intended for debugging purposes.
16
+
The ADIOS1 backend, previously deprecated, has been removed in favor of ADIOS2.
17
+
Please consult the upgrade guide for hints on further interacting with old data.
18
+
19
+
The openPMD-api has been simplified by no longer requiring explicit specification for scalar components via ``RecordComponent::SCALAR`` in its object model.
20
+
The addition of wildcard filename extensions (e.g. ``simData.%E`` or ``simData_%T.%E``) simplifies the generic implementation of backend-independent logic, such as post-processing routines.
21
+
Rank tables can now be used to pass detailed topology information from writer to reader in staging setups.
13
22
14
23
Changes to "0.15.0"
15
24
^^^^^^^^^^^^^^^^^^^
@@ -18,13 +27,258 @@ Features
18
27
""""""""
19
28
20
29
- pybind11: require version 2.13.0+ #1220 #1322 #1637 #1671
30
+
- Python: require version 3.8+ #1502
31
+
- ADIOS2:
32
+
33
+
- Introduce group tables for more stable support of ADIOS2 steps #1310
34
+
Used in conjunction with modifiable attributes in ADIOS2 v2.9
35
+
- Support for "joined array" variable shape #1382
36
+
- Add ``new_step`` flush target for intermittent readable flushes in file-based encoding #1632
37
+
- Option for explicit specification of the ADIOS2 access mode #1638
38
+
- Support Async write flag #1460
39
+
- Performance optimization for extreme-scale parallelism:
40
+
Optionally write attributes only from specified ranks #1542
41
+
- Opt-in config to make use of ADIOS2 engines that openPMD does not know #1652
42
+
- Group-Based encoding will now print warnings due to #1498
43
+
- Remove ADIOS1 - Long Live ADIOS2 #1419 #1560
44
+
- HDF5:
45
+
46
+
- Support for HDF5 subfiling #1580
47
+
- Explicit control over chunking #1591 #1600
48
+
- Explicit control over independent flushing #1634
49
+
- Support for float128 on ARM64/PPC64 #1364
50
+
- Better handling of unknown datatypes in datasets #1469
51
+
- JSON/TOML:
52
+
53
+
- Parallel JSON (mostly for debugging purposes, separate output written per rank) #1475
54
+
- TOML Backend (by converting the in-/output of the JSON backend) #1436
55
+
- Compatibility with toruniina/toml11 v4.0 #1645
56
+
- API simplification: ``RecordComponent::SCALAR`` no longer necessary #1154 #1627
57
+
- Allow specifying wildcards for filename extensions: ``simData_%T.%E`` #1584
58
+
- Streaming: Add rank table for locality-aware streaming #1505
59
+
- Optional debugging output for ``AbstractIOHandlerImpl::flush()`` via ``export OPENPMD_VERBOSE=1`` #1495 #1574 #1643
60
+
- Miscellaneous API additions:
61
+
62
+
- Add visit-like pattern for RecordComponent #1544 #1582
63
+
- Derive PatchRecordComponent from RecordComponent to give access to the full load/store API #1594
64
+
- More consistent handling for file extensions #1473
65
+
66
+
Bug Fixes
67
+
"""""""""
68
+
69
+
- ADIOS2
70
+
71
+
- Ensure that a step is always active at write time #1492
72
+
Necessary for the BP5 engine
73
+
- Warning for BP5+Blosc in ADIOS2 v2.9 up to patch level 1 #1497
74
+
Unreadable datasets might silently be created due to a bug in ADIOS2 v2.9.0 and v2.9.1
75
+
https://github.com/ornladios/ADIOS2/issues/3504
76
+
- Some adjustments for ADIOS2 v2.10 #1618
77
+
This adds the ``openPMD_HAVE_ADIOS2_BP5`` macro and introduces some datatype fixes in Python bindings
78
+
- HDF5
79
+
80
+
- Fix Char Type Matching #1433
81
+
- CMake
82
+
83
+
- Set correct install permissions for ``openpmd-pipe`` #1459
84
+
- HDF5 Libraries are ``PUBLIC`` #1520
85
+
- Warnings
86
+
87
+
- Fix gcc9 warning #1429
88
+
- ADIOS2 v2.9: Avoid Unused Param Warning #1503
89
+
- Python
90
+
91
+
- ODR Violation #1521
92
+
- Init Order #1547
93
+
- Strings with a single char #1585
94
+
- Fixes and documentation for Pybind v2.12.0 and Numpy 2.0 #1637
95
+
- Tooling
96
+
97
+
- ``openpmd-pipe``: fix handling of constant components #1530
98
+
- Performance
99
+
100
+
- Fix ``dirtyRecursive()`` performance for Series with many steps #1598 #1615
101
+
- Fix flushing performance for file-based Series with many steps #1642
102
+
- Parse lazily by default in linear access mode #1650
103
+
- Workaround for independent writes to Iterations in parallel #1619 1660
104
+
This includes better detection of BP5 which in turn uncovers more instances of the first issue
105
+
- Regexes: Sanitize user input to avoid Regex injection #1624
106
+
- Fix particle patches flush api #1626 #1641
107
+
- RecordComponent: Properly handle uninitialized datasets in ``RecordComponent`` #1316
108
+
- Don't require unitSI when reading patch record component #1470 #1482
109
+
- Linear read mode was not able to directly access specific file of file-based Series #1533
110
+
- Fixes for variable-based encoding in backends without step support #1484
111
+
- Fix availableChunks for ``READ_LINEAR`` in ADIOS2 #1586
112
+
- Read JSON config in parallel #1605
113
+
- Partially revert #1368 to re-enable a warning #1573
114
+
- Fix ``unique_ptr<T, Del>`` constructor of ``UniquePtrWithLambda`` #1552
115
+
- SerialIOTest: Clang-Tidy Fixes #1599
116
+
- Replace ``openPMD_Datatypes`` global with function #1509
117
+
- Fix ``Attribute`` copy/move constructors #1545
118
+
- Fix duplicate ``mesh.read()`` call #1535
119
+
- Disallow Container insertion in ``READ_LINEAR`` #1590
120
+
- ParallelIOtests: Fix MPI ifdef guard #1649
121
+
- SerialIOTest: Avoid use-after-free issue in test flag with shared pointer #1657
122
+
123
+
124
+
Breaking Changes
125
+
""""""""""""""""
126
+
127
+
- Removed support for ADIOS1, fully replaced with ADIOS2 #1419 1560
128
+
- Redesign of object model to not rely on ``RecordComponent::SCALAR`` hack any longer #1154
129
+
130
+
- ``Attributable::myPath()`` now returns the openPMD group path without including the ``SCALAR`` layer
131
+
- Replace openPMD_Datatypes global with function of same name #1509
132
+
- Removed auxiliary function template ``getCast<U>()`` #1278
133
+
- Deprecations
134
+
135
+
- Group-Based encoding for ADIOS2 deprecated, will print warnings in combination with new features (group-table introduced with #1310) #1498
136
+
137
+
Other
138
+
"""""
139
+
140
+
- Tests & Examples
141
+
142
+
- Rewrite deprecated storeChunk APIs in first read/write examples #1435
143
+
- Streaming examples: Set WAN as default transport #1511
144
+
- Fix records length in ``9_particle_write_serial.py`` #1510
145
+
- CI
146
+
147
+
- 55af0dbd2 Linux aarch64/arm64 #1517
148
+
- macOS 11.0+ #1446 #1486
149
+
- Upgrade macOS 11 to 12 #1653
150
+
- oneAPI 2023.2.0 #1478
151
+
- Update ``.readthedocs.yml`` #1438
152
+
- GitHub Actions: macOS has 3 Cores #1421
153
+
- Doxygen 1.9.7 Broken #1464
154
+
- Fix type comparison in Python #1490
155
+
- Adapt to removed CTest CLI #1519
156
+
- Fix ``chmod`` in ``download_samples.sh`` #1518
157
+
- Workaround for bugs in CLI of ``mpiexec`` #1565 #1628
158
+
- Fix CircleCI "six" #1596
159
+
- Fix false positive in Conda-based CI runs #1651
160
+
- Script for automatically updating the library version #1467
161
+
- CMake
162
+
163
+
- Replace internal depencencies with FetchContent #1583 #1666
164
+
- Superbuild: Repo and local source #1667
165
+
- Superbuild: Tarball #1668
166
+
- Update cmake minimum required to 3.5 for third-party dependencies ``nlohmann::json`` and ``toruniina::toml11`` #1558
167
+
- Warnings on AppleClang #1496
168
+
- Warn and Continue on Empty HDF5_VERSION #1512
169
+
- Docs
170
+
171
+
- Document typical Analysis workflows #1444
172
+
- Add documentation for typical use cases of openpmd-pipe #1578
173
+
- Authors
174
+
175
+
- Synchronizing library and standard authors #1434
176
+
- citing more authors #1539
177
+
- support by the HELPMI project #1555
178
+
- citing the research groups of maintainers #1566
179
+
- Document how to link to C++ Projects #1445
180
+
- More careful documentation of streaming API #1430
Copy file name to clipboardExpand all lines: NEWS.rst
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,10 @@ Please transition to ADIOS2.
13
13
For reading legacy ADIOS1 BP3 files, either use an older version of openPMD-api or the BP3 backend in ADIOS2.
14
14
Note that ADIOS2 does not support compression in BP3 files.
15
15
16
+
For converting ADIOS1 BP3 files to ADIOS2, use a version of the openPMD-api that still supports ADIOS1 and run the conversion with ``openpmd-pipe``, e.g. ``openpmd-pipe --infile adios1_data_%T.bp --inconfig '{"backend": "adios1"}' --outfile adios2_data_%T.bp --outconfig '{"backend": "adios2"}'``.
17
+
18
+
Group-Based encoding is deprecated in ADIOS2 due to performance considerations. As alternatives, consider file-based encoding for regular file I/O or variable-based encoding (currently restricted to streaming and streaming-like workflows).
19
+
16
20
CMake 3.22.0 is now the minimally supported version for CMake.
17
21
pybind11 2.13.0 is now the minimally supported version for Python support.
18
22
Python 3.12 & 3.13 are now supported, Python 3.7 is removed.
0 commit comments