Changelog
0.16.0
Date: 2024-10-07
ADIOS2 Joined arrays, API simplification, HDF5 subfiling, TOML backend, wildcard file extensions, Performance & Memory
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. 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. 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. The JSON backend supports parallel MPI output into separate subfiles, mainly intended for debugging purposes. The ADIOS1 backend, previously deprecated, has been removed in favor of ADIOS2. Please consult the upgrade guide for hints on further interacting with old data.
The openPMD-api has been simplified by no longer requiring explicit specification for scalar components via RecordComponent::SCALAR
in its object model.
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.
Rank tables can now be used to pass detailed topology information from writer to reader in staging setups.
Changes to “0.15.0”
Features
pybind11: require version 2.13.0+ #1220 #1322 #1637 #1671
Python: require version 3.8+ #1502
ADIOS2:
Introduce group tables for more stable support of ADIOS2 steps #1310 Used in conjunction with modifiable attributes in ADIOS2 v2.9
Support for “joined array” variable shape #1382
Add
new_step
flush target for intermittent readable flushes in file-based encoding #1632Option for explicit specification of the ADIOS2 access mode #1638
Support Async write flag #1460
Performance optimization for extreme-scale parallelism: Optionally write attributes only from specified ranks #1542
Opt-in config to make use of ADIOS2 engines that openPMD does not know #1652
Group-Based encoding will now print warnings due to #1498
Remove ADIOS1 - Long Live ADIOS2 #1419 #1560
HDF5:
Support for HDF5 subfiling #1580
Explicit control over chunking #1591 #1600
Explicit control over independent flushing #1634
Support for float128 on ARM64/PPC64 #1364
Better handling of unknown datatypes in datasets #1469
JSON/TOML:
Parallel JSON (mostly for debugging purposes, separate output written per rank) #1475
TOML Backend (by converting the in-/output of the JSON backend) #1436
Compatibility with toruniina/toml11 v4.0 #1645
API simplification:
RecordComponent::SCALAR
no longer necessary #1154 #1627Allow specifying wildcards for filename extensions:
simData_%T.%E
#1584Streaming: Add rank table for locality-aware streaming #1505
Optional debugging output for
AbstractIOHandlerImpl::flush()
viaexport OPENPMD_VERBOSE=1
#1495 #1574 #1643Miscellaneous API additions:
Add visit-like pattern for RecordComponent #1544 #1582
Derive PatchRecordComponent from RecordComponent to give access to the full load/store API #1594
More consistent handling for file extensions #1473
Bug Fixes
ADIOS2
Ensure that a step is always active at write time #1492 Necessary for the BP5 engine
Warning for BP5+Blosc in ADIOS2 v2.9 up to patch level 1 #1497 Unreadable datasets might silently be created due to a bug in ADIOS2 v2.9.0 and v2.9.1 https://github.com/ornladios/ADIOS2/issues/3504
Some adjustments for ADIOS2 v2.10 #1618 This adds the
openPMD_HAVE_ADIOS2_BP5
macro and introduces some datatype fixes in Python bindings
HDF5
Fix Char Type Matching #1433
CMake
Set correct install permissions for
openpmd-pipe
#1459HDF5 Libraries are
PUBLIC
#1520
Warnings
Fix gcc9 warning #1429
ADIOS2 v2.9: Avoid Unused Param Warning #1503
Python
ODR Violation #1521
Init Order #1547
Strings with a single char #1585
Fixes and documentation for Pybind v2.12.0 and Numpy 2.0 #1637
Tooling
openpmd-pipe
: fix handling of constant components #1530
Performance
Fix
dirtyRecursive()
performance for Series with many steps #1598 #1615Fix flushing performance for file-based Series with many steps #1642
Parse lazily by default in linear access mode #1650
Workaround for independent writes to Iterations in parallel #1619 1660 This includes better detection of BP5 which in turn uncovers more instances of the first issue
Regexes: Sanitize user input to avoid Regex injection #1624
Fix particle patches flush api #1626 #1641
RecordComponent: Properly handle uninitialized datasets in
RecordComponent
#1316Don’t require unitSI when reading patch record component #1470 #1482
Linear read mode was not able to directly access specific file of file-based Series #1533
Fixes for variable-based encoding in backends without step support #1484
Fix availableChunks for
READ_LINEAR
in ADIOS2 #1586Read JSON config in parallel #1605
Partially revert #1368 to re-enable a warning #1573
Fix
unique_ptr<T, Del>
constructor ofUniquePtrWithLambda
#1552SerialIOTest: Clang-Tidy Fixes #1599
Replace
openPMD_Datatypes
global with function #1509Fix
Attribute
copy/move constructors #1545Fix duplicate
mesh.read()
call #1535Disallow Container insertion in
READ_LINEAR
#1590ParallelIOtests: Fix MPI ifdef guard #1649
SerialIOTest: Avoid use-after-free issue in test flag with shared pointer #1657
Breaking Changes
Removed support for ADIOS1, fully replaced with ADIOS2 #1419 1560
Redesign of object model to not rely on
RecordComponent::SCALAR
hack any longer #1154Attributable::myPath()
now returns the openPMD group path without including theSCALAR
layer
Replace openPMD_Datatypes global with function of same name #1509
Removed auxiliary function template
getCast<U>()
#1278Deprecations
Group-Based encoding for ADIOS2 deprecated, will print warnings in combination with new features (group-table introduced with #1310) #1498
Other
Tests & Examples
Rewrite deprecated storeChunk APIs in first read/write examples #1435
Streaming examples: Set WAN as default transport #1511
Fix records length in
9_particle_write_serial.py
#1510
CI
55af0dbd2 Linux aarch64/arm64 #1517
macOS 11.0+ #1446 #1486
Upgrade macOS 11 to 12 #1653
oneAPI 2023.2.0 #1478
Update
.readthedocs.yml
#1438GitHub Actions: macOS has 3 Cores #1421
Doxygen 1.9.7 Broken #1464
Fix type comparison in Python #1490
Adapt to removed CTest CLI #1519
Fix
chmod
indownload_samples.sh
#1518Workaround for bugs in CLI of
mpiexec
#1565 #1628Fix CircleCI “six” #1596
Fix false positive in Conda-based CI runs #1651
Script for automatically updating the library version #1467
CMake
Replace internal depencencies with FetchContent #1583 #1666
Superbuild: Repo and local source #1667
Superbuild: Tarball #1668
Update cmake minimum required to 3.5 for third-party dependencies
nlohmann::json
andtoruniina::toml11
#1558Warnings on AppleClang #1496
Warn and Continue on Empty HDF5_VERSION #1512
Docs
Document typical Analysis workflows #1444
Add documentation for typical use cases of openpmd-pipe #1578
Authors
Synchronizing library and standard authors #1434
citing more authors #1539
support by the HELPMI project #1555
citing the research groups of maintainers #1566
Document how to link to C++ Projects #1445
More careful documentation of streaming API #1430
Post 0.15.0 Changelog Template #1420
Document OpenMPI-ROMIO/HDF5/Chunking issue #1441
Document
HDF5_DO_MPI_FILE_SYNC
#1427Remove schema 2021 from documentation #1451
Fix small documentation issues after 0.15 release #1440
Add Sphinx Copybutton and Design #1461
Sphinx: Limit <7.2 #1541
Document that we support Python 3.12 #1549
Fix docstring for MyPath #1587
Release notes #1648
Python
Python bindings: Release GIL during IO wait operations #1381
Series to DataFram #1506
Add Python binding for myPath #1463
Update
__repr__
method of major objects in openPMD hierarchy #1476Update
__len__
to return the number of contained sub-objects instead of number of attributes #1659Python 3.12: Remove Distutils #1508
Support for Pickle API without fragile static storage hacks #1633 1662
setup.py: Transitive ZLIB static #1522
Support for Numpy 2.0 #1669
Tooling
Use lazy imports for dask and pandas #1442
Pandas DataFrames: Add Row Column Name #1501
Add API to manually set chunks when loading dask arrays #1477
Add all the
performance-*
clang-tidy checks #1532Better error message when loading to a buffer with mismatched type #1452
Unknown openPMD version in data: Add upgrade hint #1528
Print a hint on what might be wrong when retrieveSeries fails #1610
Refactor: Extract ADIOS2 BufferedActions struct to own file, rename to
ADIOS2File
#1577
0.15.2
Date: 2023-08-18
Python, ADIOS2 and HDF5 Fixes
This release fixed regressions in the Python frontend as well as the ADIOS2 and HDF5 backends. Supported macOS versions are now 11.0+ and Python versions are 3.8+.
Changes to “0.15.1”
Bug Fixes
Don’t require unitSI when reading a patch record component #1470
Examples:
Streaming examples: Set WAN as default transport #1511
Fix types of particle constant records #1316 #1510
Python:
DataFrame to ASCII: Header of First Column in CSV bug documentation third party #1480 #1501
Update
__repr__
method of major objects in openPMD hierarchy #1476openpmd-pipe: set correct install permissions #1459
Better error message when loading to a buffer with mismatched type #1452
Use lazy imports for dask and pandas #1442
ADIOS2:
Fixes for variable-based encoding in backends without step support #1484 #1481
Warn on BP5+Blosc in ADIOS2 v2.9 up to patch level 1 #1497
Ensure that a step is always active at write time #1492
Fix gcc9 warning #1429
HDF5:
Handle unknown datatypes in datasets #1469
Support for float128 on ARM64/PPC64 #1364
Fix Char Type Matching #1433 #1431
Install: Warn and Continue on Empty
HDF5_VERSION
in CMake #1512
CI:
type comparison in openpmd-pipe #1490
Other
Better handling for file extensions #1473 #1471
Optional debugging output for
AbstractIOHandlerImpl::flush()
#1495Python: 3.8+ #1502
CI:
macOS 11.0+ #1486 #1446
oneAPI 2023.2.0 #1478
Doxygen 1.9.7 Broken #1464
Docs:
Analysis with third party data science frameworks #1444
Sphinx Copybutton and Design #1461
Fix small documentation issues after 0.15 release #1440
HDF5_DO_MPI_FILE_SYNC
#1427OpenMPI-ROMIO/HDF5/Chunking issue #1441
Remove ADIOS2 schema 2021 #1451
Linking to C++ Projects #1445
Fix deprecated APIs in first read/write examples #1435
Update
.readthedocs.yml
#1438Fix Bib Authors #1434
More careful documentation of streaming API #1430
0.15.1
Date: 2023-04-02
Build Regressions
This release fixes build regressions and minor documentation updates for the 0.15.0 release.
Changes to “0.15.0”
Bug Fixes
Build issues:
CMake: Fix Python Install Directory #1393
Work-Around: libc++ shared_ptr array #1409
Artifact Placement in Windows Wheels #1400
macOS AppleClang12 Fixes #1395
ADIOS1:
ADIOS1 on macOS #1396
If no ADIOS1, then add ADIOS1 sources to main lib #1407
Instantiate only parallel ADIOS1 IO Handler in parallel ADIOS1 lib #1411
Other
Docker: CMake 3.24+: ZLIB_USE_STATIC_LIBS (#1410
CI:
Test on Ubuntu 20.04 #1408
clang-format also for
.tpp
and.hpp.in
files #1403
docs:
update funding #1412
HTML5: CSS updates #1397 #1413
README: Remove LGTM Batches #1402
Docs TOML and ADIOS2 best practices #1404
Docs: ADIOS1 EOL in Overview #1398
Releases: Nils Schild (IPP) #1394
Formatting of lists in 0.15.0 changelog #1399
0.15.0
Date: 2023-03-25
C++17, Error Recovery, ADIOS2 BP5, Append & Read-Linear Modes, Performance & Memory
This release adds error recovery mechanisms, in order to access erroneous datasets, created e.g. by crashing simulations. The BP5 engine of ADIOS2 v2.9 is fully supported by this release, including access to its various features for more fine-grained control of memory usage. Various I/O performance improvements for HDF5 are activated by default. Runtime configuration of openPMD and its backends, e.g. selection of backends and compression, is now consistently done via JSON, and alternatively via TOML for better readability. The data storage/retrieval API now consistently supports all common C++ pointer types (raw and smart pointers), implementing automatic memory optimizations for ADIOS2 BP5 if using unique pointers.
The miminum required C++ version is now C++17. Supported Python versions are Python 3.10 and 3.11.
Changes to “0.14.0”
Features
Python: support of 3.10 and 3.11, removal of 3.6 #1323 #1139
include internally shipped toml11 v3.7.1 #1148 #1227
pybind11: require version 2.10.1+ #1220 #1322
Switch to C++17 #1103 #1128 #1140 #1157 #1164 #1183 #1185
Error-recovery during parsing #1150 #1179 #1237
Extensive update for JSON/TOML configuration #1043
TOML as an alternative to JSON #1146
compression configuration via JSON# 1043
case insensitivity #1043
datatype conversion for string values #1043
json::merge
public function #1043 #1333better warnings for unused values #1043
new JSON options:
backend
anditeration_encoding
#1043ADIOS1 compression configuration via JSON #1043 #1162
New access types:
APPEND
: Add new iterations without reading, supports ADIOS2 Append mode #1007 #1302READ_LINEAR
: For reading through ADIOS2 steps, for full support of ADIOS2 BP5 #1291 #1379
ADIOS2:
Support for ADIOS 2.8 and newer #1166
Support for ADIOS2 BP5 engine #1119 #1215 #1258 #1262 #1291
Support for selecting flush targets (buffer/disk) in ADIOS2 BP5 for more fine-grained memory control #1226 #1207
Add file extensions for ADIOS2:
.bp4
,.bp5
and furthers, make them behave more as expected #1218ADIOS2: Support for operator specification at read time #1191
ADIOS2: Automatic (de)activation of span API depending on compression configuration #1155
Optionally explicitly map ADIOS2 steps to openPMD iterations via modifiable attributes (only supported in experimental ADIOS2 modes) #949
HDF5:
I/O optimizations for HDF5 #1129 #1133 #1192
Improve write time by disabling fill #1192
Miscellaneous API additions:
Support for all char types (CHAR SCHAR UCHAR) #1275 #1378
Header for openPMD-defined error types #1080 #1355
Add
Series::close()
API call #1324Support for array specializations of C++ smart pointer types #1296
Direct support for raw pointer types in
store/loadChunk()
API, replacing formershareRaw()
#1229Support for and backend optimizations (ADIOS2 BP5) based on unique pointer types in
store/loadChunk()
#1294Use C++
std::optional
types in public Attribute API (Attribute::getOptional<T>()
) for dynamic attribute type conversion #1278
Support for empty string attributes #1087 #1223 #1338
Support for inconsistent and overflowing padding of filenames in file-based encoding #1118 #1173 #1253
Bug Fixes
HDF5
Support attribute reads from HDF5 Vlen Strings #1084
Close HFD5 handles in availableChunks task #1386
ADIOS1
Fix use-after-free issue in
ADIOS1IOHandler
#1224
ADIOS2
Don’t apply compression operators multiple times #1152
Fix logic for associating openPMD objects to files and paths therein (needed for interleaved write and close) #1073
Fix precedence of environment variable vs. JSON configuration
Detect changing datatypes and warn/fail accordingly #1356
Remove deprecated debug parameter in ADIOS2 #1269
HDF5
missing HDF5 include #1236
CMake:
MPI: prefer HDF5 in Config package, too #1340
ADIOS1: do not include as
-isystem
#1076Remove caching of global CMake variables #1313
Fix Build & Install Option Names #1326
Prefer parallel HDF5 in find_package in downstream use #1340
CMake: Multi-Config Generator #1384
Warnings:
Avoid copying std::string in for loop #1268
SerialIOTest: Fix GCC Pragma Check #1213 #1260
Fix
-Wsign-compare
#1202
Python:
Fix
__repr__
(time and Iteration) #1242 #1149Python Tests: Fix
long
Numpy Type #1348use
double
as standard for attributes #1290 #1369kkFix
dtype_from_numpy
#1357Wheels: Fix macOS arm64 (M1) builds #1233
Avoid use-after-free in Python bindings #1225
Patch MSVC pybind11 debug bug #1209
sign compare warning #1198
Don’t forget closing unmodified files #1083
Diverse relaxations on attribute type conversions #1085 #1096 #1137
Performance bug: Don’t reread iterations that are already parsed #1089
Performance bug: Don’t flush prematurely #1264
Avoid object slicing in Series class #1107
Logical fixes for opening iterations #1239
Breaking Changes
Deprecations
Iteration::closedByWriter()
attribute #1088shareRaw
(replaced with raw- and unique-ptr overloads, see features section) #1229ADIOS1 backend (deprecation notice has hints on upgrading to ADIOS2) #1314
Redesign of public class structure
Apply frontend redesign to Container and deriving classes #1115 #1159
Removal of APIs
Dataset::transform
,Dataset::compression
andDataset::chunksize
#1043
Note
See NEWS.rst for a more detailed upgrade guide.
Other
Catch2: updated to 2.13.10 #1299 #1344
Tests & Examples:
Test: Interleaved Write and Close #1073 #1078
Extend and fix examples 8a and 8b (bench write/read parallel) #1131 #1144 #1231 #1359 #1240 - support variable encoding #1131 - block located at top left corner was mistaken to read a block in the center #1131 - GPU support in example 8a #1240
Extensive Python example for Streaming API #1141
General overhaul of examples to newest API standards #1371
CI
URL Check for broken links #1086
CI savings (abort prior push, draft skips most) #1116
Appveyor fixes for Python Executable #1127
Pre-commit and clang-format #1142 #1175 #1178 #1032 #1222 #1370
ADIOS1: Fix Serial Builds, CI: Clang 10->12 #1167
Upgrade NVHPC Apt repository #1241
Spack upgrade to v0.17.1 and further fixes #1244
Update CUDA repository key #1256
Switch from Conda to Mamba #1261
Remove
-Wno-deprecated-declarations
where possible #1246Expand read-only permission tests #1272
Ensure that the CI also build against ADIOS2 v2.7.1 #1271
Build(deps): Bump s-weigand/setup-conda from 1.1.0 to 1.1.1 #1284
Style w/ Ubuntu 22.04 #1346
Add CodeQL workflow for GitHub code scanning #1345
Cache Action v3 #1358 #1362
Spack: No More
load -r
#1125
CMake
Extra CMake Arg Control in
setup.py
#1199Do not strip Python symbols in Debug #1219
Disable in-source builds #1079
Fixes for NVCC #1102 #1103 #1184
Set RPATHs on installed targets #1105
CMake 3.22+: Policy
CMP0127
#1165Warning Flags First in
CXXFLAGS
#1172
Docs
More easily findable documentation for
-DPython_EXECUTABLE
#1104 and lazy parsing #1111HDF5 performance tuning and known issues #1129 #1132
HDF5: Document
HDF5_USE_FILE_LOCKING
#1106SST/libfabric installation notes for Cray systems #1134
OpenMPI: Document
OMPI_MCA_io
Control #1114Update Citation & Add BibTeX (#1168)
Fix CLI Highlighting #1171
HDF5 versions that support collective metadata #1250
Recommend Static Build for Superbuilds #1325
Latest Sphinx, Docutils, RTD #1341
Tooling
openpmd-pipe
: better optional support for MPI #1186 #1336openpmd-ls
: use lazy parsing #1111
Enable use of
Series::setName()
andSeries::setIterationEncoding()
in combination with file-based encoding 1081Remove
DATATYPE
,HIGHEST_DATATYPE
ANDLOWEST_DATATYPE
from Datatype enumeration #1100Check for undefined datatypes in dataset definitions #1099
Include
StringManip
header into public headers #1124Add default constructor for
DynamicMemoryView
class #1156Helpful error message upon wrong backend specification #1214
Helpful error message for errors in
loadChunk
API #1373No warning when opening a single file of a file-based Series #1368
Add
IterationIndex_t
type alias #1285
0.14.5
Date: 2022-06-07
Improve Series Parsing, Python & Fix Backend Bugs
This release improves reading back iterations that overflow the specified zero-pattern. ADIOS1, ADIOS2 and HDF5 backend stability and performance were improved. Python bindings got additional wheel platform support and various smaller issues were fixed.
Changes to “0.14.4”
Bug Fixes
Series and iterations:
fix read of overflowing zero patterns #1173 #1253
fix for opening an iteration #1239
ADIOS1:
fix use-after-free in
ADIOS1IOHandler
#1224Remove task from IO queue if it fails with exception #1179
ADIOS2:
Remove deprecated debug parameter in ADIOS2 #1269
Add memory leak suppression:
ps_make_timer_name_
#1235Don’t safeguard empty strings while reading #1223
HDF5:
missing HDF5 include #1236
Python:
Wheels: Fix macOS arm64 (M1) builds #1233
Python Iteration: Fix
__repr__
(time) #1242Increase reference count also in other
load_chunk
overload #1225Do Not Strip Symbols In Debug #1219
Patch MSVC pybind11 debug bug #1209
Other
HDF5:
Improve write time by disabling fill #1192
Update documented HDF5 versions with collective metadata issues #1250
Print warning if mpi4py is not found in
openpmd-pipe
#1186Pass-through flushing parameters #1226
Clang-Format #1032 #1222
Warnings:
Avoid copying std::string in for loop #1268
SerialIOTest: Fix GCC Pragma Check #1213 #1260
Fix
-Wsign-compare
#1202
CI:
Fix Conda Build - <3 Mamba #1261
Fix Spack #1244
Update CUDA repo key #1256
NVHPC New Apt Repo #1241
Python:
setup.py
: Extra CMake Arg Control #1199sign compare warning #1198
0.14.4
Date: 2022-01-21
Increased Compatibility & Python Install Bug
This release fixes various read/parsing bugs and increases compatibility with upcoming versions of ADIOS and old releases of Intel icpc
.
An installation issue for pip-based installs from source in the last release was fixed and Python 3.10 support added.
Various documentation and installation warnings have been fixed.
Changes to “0.14.3”
Bug Fixes
ADIOS2:
automatically deactivate
span
basedPut
API when operators are present #1155solve incompatibilities w/ post-
2.7.1
master
-branch #1166
ICC 19.1.2: C++17 work-arounds (
variant
) #1157Don’t apply compression operators multiple times in variable-based iteration encoding #1152
Reading/parsing:
remove invalid records from data structures entirely #1150
fix grid spacing with type long double #1137
Python:
fix
Iteration
__repr__
typo #1149add
cmake/
toMANIFEST.in
#1140
Other
add simple
.pre-commit-config.yaml
Python:
support Python 3.10 #1139
CMake:
warning flags first in
CXXFLAGS
#1172add policy CMP0127 (v3.22+) #1165
Docs:
fix CLI highlighting #1171
update citation & add BibTeX #1168
fix HDF5 JSON File #1169
minor warnings #1170
0.14.3
Date: 2021-11-03
Read Bugs, C++17 Mixing and HDF5 Performance
This release makes reads more robust by fixing small API, file-based parsing and test bugs. Building the library in C++14 and using it in C++17 will not result in incompatible ABIs anymore. HDF5 1.10.1+ performance was improved significantly.
Changes to “0.14.2”
Bug Fixes
read:
allow inconsistent zero pads #1118
time/dt also in long double #1096
test 8b - bench read parallel:
support variable encoding #1131
block located at top left corner was mistaken to read a block in the center #1131
CI (AppVeyor): Python executable #1127
C++17 mixing: remember
<variant>
implementation #1128support NVCC + C++17 #1103
avoid object slicing when deriving from
Series
class #1107executables:
CXX_STANDARD
/EXTENSIONS
#1102
Other
HDF5 I/O optimizations #1129 #1132 #1133
libfabric 1.6+: Document SST Work-Arounds #1134
OpenMPI: Document
OMPI_MCA_io
Control #1114HDF5: Document
HDF5_USE_FILE_LOCKING
#1106Lazy parsing: Make findable in docs and use in
openpmd-ls
#1111Docs: More Locations
-DPython_EXECUTABLE
#1104Spack: No More
load -r
#1125openPMD.hpp
: include auxiliaryStringManip
#1124
0.14.2
Date: 2021-08-17
Various Reader Fixes
This releases fixes regressions in reads, closing files properly, avoiding inefficient parsing and allowing more permissive casts in attribute reads. (Inofficial) support for HDF5 vlen string reads has been fixed.
Changes to “0.14.1”
Bug Fixes
do not forget to close files #1083
reading of vector attributes with only one contained value #1085
do not read iterations if they have already been parsed #1089
HDF5: fix string vlen attribute reads #1084
Other
setAttribute
: reject empty strings #1087
0.14.1
Date: 2021-08-04
ADIOS2 Close Regressions & ADIOS1 Build
Fix a regression with file handling for ADIOS2 when using explicit close logic, especially with interleaved writes to multiple iterations. Also fix an issue with ADIOS1 builds that potentially picked up headers from older, installed openPMD-api versions.
Changes to “0.14.0”
Bug Fixes
ADIOS2: interleaved writes of iterations with close #1073
CMake: ADIOS1 includes w/o
SYSTEM
#1076
0.14.0
Date: 2021-07-29
Resize, Dask, openpmd-pipe and new ADIOS2 Iteration Encoding
This release adds support for resizable data sets.
For data-processing, support for Dask (parallel) and Pandas (serial) are added and lazy reader parsing of iterations is now supported.
ADIOS2 adds an experimental variable-based iteration encoding.
An openPMD Series can now be flushed from non-Series
objects and write buffers can be requested upfront to avoid unnecessary data copies in some situations.
Changes to “0.13.4”
Features
Resizable datasets #829 #1020 #1060 #1063
lazy parsing of iterations #938
Expose internal buffers to writers #901
seriesFlush
: Attributable, Writable, Mesh & ParticleSpecies #924 #925ADIOS2:
Implement new
variableBased
iteration encoding #813 #855 #926 #941 #1008Set a default
QueueLimit
of 2 in the ADIOS2/SST engine #971Add environment control:
OPENPMD_ADIOS2_STATS_LEVEL
#1003
Conda environment file
conda.yaml
added to repo #1004CMake: Expose Python LTO Control #980
HDF5:
HDF5 1.12.0 fallback APIs: no wrappers and more portable #1012
Empiric for optimal chunk size #916
Python:
ParticleSpecies
: Read topandas.DataFrame
#923ParticleSpecies
: Read todask.dataframe
#935 #951 #956 #958 #959 #1033Dask: Array #952
pyproject.toml
: build-backend #932
Tools: add
openpmd-pipe.py
command line tool #904 #1062 #1069Support for custom geometries #1011
Default constructors for
Series
andSeriesIterator
#955Make
WriteIterations::key_type
public #999ParticleSpecies
&RecordComponent
serialize #963
Bug Fixes
ADIOS2:
bp4_steps
test: actually useNullCore
engine #933Always check the return status of
IO::Open()
andEngine::BeginStep()
in ADIOS2 #1017 #1023More obvious error message if datatype cannot be found #1036
Don’t implicitly open files #1045
fix C++17 compilation #1067
HDF5:
Support Parallel HDF5 built w/ CMake #1027
HDF5Auxiliary
: Check String Sizes #979
Tests:
Check for existence of the correct files in
ParallelIOtests
#944FBPIC example filename #950
CoreTest
: Lambda outside unevaluated context #1057
availableChunks
: improve open logic for early chunk reads #1035 #1045CMake:
custom copy for dependent files #1016
library type control #930
Fix detection of
loadChunk()
calls with wrong type #1022Don’t flush
Series
a second time after throwing an error #1018Use
Series::writeIterations()
without explicit flushing #1030Mesh
:enable_if
only floating point APIs #1042Datatype
: Fixstd::array
template #1040PkgConfig w/ external variant #1050
warnings: Unused params and unreachable code #1053 #1055
Other
ADIOS2: require version 2.7.0+ #927
Catch2: 2.13.4+ #940
pybind11: require version 2.6.2+ #977
CI:
Update & NVHPC #1052
ICC/ICPC & ICX/ICPX #870
Reintroduce Clang Sanitizer #947
Brew Update #970
Source Tools Update #978
Use specific commit for downloaded samples #1049
SerialIOTest
: fix CI hang in sanitizer #1054 #1056
CMake:
Require only C-in-CXX MPI component #710
Unused setter in
openpmd_option
#1015
Docs:
describe high-level concepts #997
meaning of
Writable::written()
#946Iteration::close
/flush
fix typo #988makeConstant
& parallel HDF5 #1041ADIOS2 memory usage for various encoding schemes #1009
dev
-branch centered development #928limit docutils to 0.16, Sphinx to <4.0 #976
Sphinx: rsvg converter for LaTeX #1001
Update GitHub issue templates #1034
Add
CITATION.cff
#1070Benchmark 8b: “pack” parameter #1066
Move quoted lines from
IOTasks
#1061describe iteration encodings #1064
describe regexes for showing only attributes or datasets in new ADIOS2 schema #1068
Tests & Examples:
ADIOS2 SST tests: start reader a second after the writer #981
ADIOS2 Git sample #1019 #1051
Parallel Benchmark (8): 4D is now 3D #1010 #1047
RecordComponent
: Remove unimplemented scaling #954MSVC: Proper
__cplusplus
macro #919Make
switchType
more comfortable to use #931Split
Series
into an internal and an external class #886 #936 #1031 #1065Series:
fileBased
more consequently throwsno_such_file_error
#1059Retrieve paths of objects in the openPMD hierarchy #966
Remove duplicate function declarations #998
License Header: Update 2021 #922
Add Dependabot #929
Update author order for 0.14.0+ #1005
Download samples: optional directory #1039
0.13.4
Date: 2021-05-13
Fix AppleClang & DPC++ Build
Fix a missing include that fails builds with Apple’s clang
and Intel’s dpcpp
compilers.
Changes to “0.13.3”
Bug Fixes
Variant.hpp
:size_t
include #972
0.13.3
Date: 2021-04-09
Fix Various Read Issues
This release fixes various bugs related to reading: a chunk fallback for constant components, skip missing patch records, a backend bug in each ADIOS2 & HDF5, and we made the Python load_chunk
method more robust.
Changes to “0.13.2”
Bug Fixes
available_chunks()
for constant components #942Particle Patches: Do not emplace patch records if they don’t exist in the file being read #945
ADIOS2: decay
ReadWrite
mode intoadios2::Mode::Read
if the file exists #943HDF5: fix segfault with libSplash files #962
Python: fix
load_chunk
to temporary #913
Other
Sphinx: limit docutils to 0.16
CI: remove a failing
find
command
0.13.2
Date: 2021-02-02
Fix Patch Read & Python store_chunk
This release fixes a regression with particle patches, related to Iteration::open()
and ::close()
functionality.
Also, issues with the Python store_chunk
method are addressed.
Changes to “0.13.1”
Bug Fixes
Read: check whether particle patches are dirty & handle gracefully #909
Python
store_chunk
:add support for complex types #915
fix a use-after-free with temporary variables #912
Other
CMake: hint
CMAKE_PREFIX_PATH
as a warning for HDF5 #896
0.13.1
Date: 2021-01-08
Fix openPMD-ls & Iteration open/close
This release fixes regressions in the series “ls” functionality and tools, related to Iteration::open()
and ::close()
functionality.
We also add support to read back complex numbers with JSON.
Changes to “0.13.0”
Bug Fixes
fix
Iteration::close()
andhelper::listSeries`
/list_series
/openPMD-ls
#878 #880 #882 #883 #884setup.py
: stay withPython_EXECUTABLE
#875FindPython.cmake
: Avoid overspecifyingDevelopment.Module
with CMake 3.18+ #868ChunkInfo
:fix includes #879
tests: adapt
sourceID
to handle nondeterministic subfile order #871
ADIOS1: fix
Iteration::open()
#864JSON: support complex datatype reads #885
Docs: fix formatting of first read/write #892
Other
bounds check: more readable error message #890
ADIOS2: add a missing space in an error message #881
Docs: released pypi wheels include windows #869
CI:
LGTM: fix C++ #873
Brew returns non-zero if already installed #877
0.13.0
Date: 2021-01-03
Streaming Support, Python, Benchmarks
This release adds first support for streaming I/O via ADIOS2’s SST engine. More I/O benchmarks have been added with realistic application load patterns. Many Python properties for openPMD attributes have been modernized, with slight breaking changes in Iteration and Mesh data order. This release requires C++14 and adds support for Python 3.9. With this release, we leave the “alpha” phase of the software and declare “beta” status.
Changes to “0.12.0-alpha”
Features
ADIOS2: streaming support (via ADIOS SST) #570
add
::availableChunks
call to record component types #802 #835 #847HDF5: control alignment via
OPENPMD_HDF5_ALIGNMENT
#830JSON configuration on the dataset level #818
Python
attributes as properties in
Series
,Mesh
,Iteration
, … #859add missing python interface (read/write) for
machine
#796add
Record_Component.make_empty()
#538
added tests
8a
&8b
to do 1D/2D mesh writing and reading #803 #816 #834PyPI: support for Windows wheels on
x86-64
#853
Bug Fixes
fix
Series
attributes: read defaults #812allow reading a file-based series with many iterations without crashing the number of file handles #822 #837
Python: Fix & replace
Data_Order
semantics #850ADIOS1:
add missing
CLOSE_FILE
IO task to parallel backend #785
ADIOS2:
fix engine destruction order, anticipating release 2.7.0 #838
HDF5:
support alternate form of empty records (FBPIC) #849
Intel ICC (
icpc
):fix export #788
fix segfault in
Iteration
#789
fix & support ClangCL on Windows #832
CMake:
Warnings: ICC & root project only #791
Warnings: FindADIOS(1).cmake 2.8.12+ #841
Warnings: less verbose on Windows #851
Other
switched to “beta” status: dropping the version
-suffix
switch to C++14 #825 #826 #836
CMake:
require version 3.15.0+ #857
re-order dependency checks #810
Python: support 3.6 - 3.9 #828
NLohmann-JSON dependency updated to 3.9.1+ #839
pybind11 dependency updated 2.6.1+ #857
ADIOS2:
less verbose about missing boolean helper attributes #801
turn off statistics (Min/Max) #831
HDF5: better status checks & error messages #795
Docs:
release cibuildwheel example #775
Iteration::close()
is MPI-collective #779overview compression ADIOS2 #781
add comment on
lib64/
#793typo in description for ADIOS1 #797
conda: recommend fresh environment #799
Sphinx/rst: fix warnings #809
first read: slice example #819
CI:
Travis -> GH Action #823 #827
remove Cygwin #820
sanitize only project (temporarily disabled) #800
update LGTM environment #844
clang-tidy updates #843
set oldest supported macOS #854
Tests:
add HiPACE parallel I/O pattern #842 #848
cover FBPIC empty HDF5 #849
Internal: add
Optional
based onvariantSrc::variant
#806
0.12.0-alpha
Date: 2020-09-07
Complex Numbers, Close & Backend Options
This release adds data type support for complex numbers, allows to close iterations and adds first support for backend configuration options (via JSON), which are currently implemented for ADIOS2. Further installation options have been added (homebrew and CLI tool support with pip). New free standing functions and macro defines are provided for version checks.
Changes to “0.11.1-alpha”
Features
Record(Component)
:scalar()
,constant()
,empty()
#711Advanced backend configuration via JSON #569 #733
Support for complex floating point types #639
Functionality to close an iteration (and associated files) #746
Python:
__init__.py
facade #720add
Mesh_Record_Component.position
read-write property #713add
openpmd-ls
tool inpip
installs and as module #721 #724more idiomatic unit properties #735
add
file_extensions
property #768
CD:
homebrew: add Formula (OSX/Linux) #724 #725
PyPI: autodeploy wheels (OSX/Linux) #716 #719
version compare macro #747
getFileExtensions
function #768Spack environment file
spack.yaml
added to repo #737openpmd-ls
: add-v, --version
option #771
Bug Fixes
flush()
exceptions in~Series
/~..IOHandler
do not abort anymore #709Iteration
/Attributable
assignment operator left object in invalid state #769Datatype.hpp
: add missing include #764readme: python example syntax was broken and outdated #722
examples:
fix
"weighting"
record attribute (ED-PIC) #728fix & validate all created test/example files #738 #739
warnings:
listSeries
: unused params in try-catch #707fix Doxygen 1.18.8 and 1.18.20 warnings #766
extended write example: remove MSVC warning #752
Other
CMake: require version 3.12.0+ #755
ADIOS2: require version 2.6.0+ #754
separate header for export macros #704
rename
AccessType
/Access_Type
toAccess
#740 #743 #744CI & tests:
migration to travis-ci.com / GitHub app #703
migrate to GitHub checkout action v2 #712
fix OSX numpy install #714
move
.travis/
to.github/ci/
#715move example file download scripts to
share/openPMD/
#715add GCC 9.3 builds #723
add Cygwin builds #727
add Clang 10.0 builds #759
migrate Spack to use AppleClang #758
style check scripts:
eval
-uable #757new Spack external package syntax #760
python tests:
testAttributes
JSON backend coverage #767
listSeries
: remove unused parameters in try-catch #706safer internal
*dynamic_cast
of pointers #745CMake: subproject inclusion cleanup #751
Python: remove redundant move in container #753
read example: show particle load #706
Record component: fix formatting #763
add
.editorconfig
file #762MPI benchmark: doxygen params #653
0.11.1-alpha
Date: 2020-03-24
HDF5-1.12, Azimuthal Examples & Tagfile
This release adds support for the latest HDF5 release. Also, we add versioned Doxygen and a tagfile for external docs to our online manual.
Changes to “0.11.0-alpha”
Features
HDF5: Support 1.12 release #696
Doxygen: per-version index in Sphinx pages #697
Other
Examples:
document azimuthal decomposition read/write #678
better example namespace alias (io) #698
Docs: update API detail pages #699
0.11.0-alpha
Date: 2020-03-05
Robust Independent I/O
This release improves MPI-parallel I/O with HDF5 and ADIOS.
ADIOS2 is now the default backend for handing .bp
files.
Changes to “0.10.3-alpha”
Features
ADIOS2:
new default for
.bp
files (over ADIOS1) #676expose engine #656
HDF5:
OPENPMD_HDF5_INDEPENDENT=ON
is now default in parallel I/O #677defaults for
date
and software base attributes #657Series::setSoftware()
add second argument for version #657free standing functions to query the API version and feature variants at runtime #665
expose
determineFormat
andsuffix
functions #684CLI: add
openpmd-ls
tool #574
Bug Fixes
std::ostream& operator<<
overloads are not declared in namespacestd
anymore #662ADIOS1:
ensure creation of files that only contain attributes #674
deprecated in favor of ADIOS2 backend #676
allow non-collective
storeChunk()
calls with multiple iterations #679
Pip: work-around setuptools/CMake bootstrap issues on some systems #689
Other
deprecated
Series::setSoftwareVersion
: set the version with the second argument ofsetSoftware()
#657ADIOS2: require version 2.5.0+ #656
nvcc:
warning missing
erase
overload ofContainer
child classes #648warning on unreachable code #659
MPark.Variant: update C++14 hotfix #618 to upstream version #650
docs:
typo in Python example for first read #649
remove all Doxygen warnings and add to CI #654
backend feature matrix #661
document CMake’s
FetchContent
feature for developers #667more notes on HDF5 & ADIOS1 #685
migrate static checks for python code to GitHub actions #660
add MPICH tests to CI #670
Attribute
constructor: move argument into place #663Spack: ADIOS2 backend now enabled by default #664 #676
add independent HDF5 write test to CI #669
add test of multiple active
Series
#686
0.10.3-alpha
Date: 2019-12-22
Improved HDF5 Handling
More robust HDF5 file handling and fixes of local includes for more isolated builds.
Changes to “0.10.2-alpha”
Bug Fixes
Source files: fix includes #640
HDF5: gracefully handle already open files #643
Other
Better handling of legacy libSplash HDF5 files #641
new contributors #644
0.10.2-alpha
Date: 2019-12-17
Improved Error Messages
Thrown errors are now prefixed by the backend in use and ADIOS1 series reads are more robust.
Changes to “0.10.1-alpha”
Bug Fixes
Implement assignment operators for:
IOTask
,Mesh
,Iteration
,BaseRecord
,Record
#628Missing
virtual
destructors added #632
Other
Backends: Prefix Error Messages #634
ADIOS1: Skip Invalid Scalar Particle Records #635
0.10.1-alpha
Date: 2019-12-06
ADIOS2 Open Speed and NVCC Fixes
This releases improves the initial time spend when parsing data series with the ADIOS2 backend. Compile problems when using the CUDA NVCC compiler in downstream projects have been fixed. We adopted a Code of Conduct in openPMD.
Changes to “0.10.0-alpha”
Features
C++: add
Container::contains
method #622
Bug Fixes
ADIOS2:
fix C++17 build #614
improve initial open speed of series #613
nvcc:
ignore export of
enum class Operation
#617fix C++14 build #618
Other
community:
code of conduct added #619
all contributors listed in README #621
manylinux2010
build automation updated for Python 3.8 #615
0.10.0-alpha
Date: 2019-11-14
ADIOS2 Preview, Python & MPI Improved
This release adds a first (preview) implementation of ADIOS2 (BP4). Python 3.8 support as well as improved pip builds on macOS and Windows have been added. ADIOS1 and HDF5 now support non-collective (independent) store and load operations with MPI. More HPC compilers, such as IBM XL, ICC and PGI have been tested. The manual has been improved with more details on APIs, examples, installation and backends.
Changes to “0.9.0-alpha”
Features
ADIOS2: support added (v2.4.0+) #482 #513 #530 #568 #572 #573 #588 #605
HDF5: add
OPENPMD_HDF5_INDEPENDENT
for non-collective parallel I/O #576Python:
Python 3.8 support #581
support empty datasets via
Record_Component.make_empty
#538
pkg-config: add
static
variable (true
/false
) toopenPMD.pc
package #580
Bug Fixes
Clang: fix pybind11 compile on older releases, such as AppleClang 7.3-9.0, Clang 3.9 #543
Python:
OSX: fix
dlopen
issues due to missing@loader_path
withpip
/setup.py
#595Windows: fix a missing
DLL
issue by building static withpip
/setup.py
#602import
mpi4py
first (MPICH on OSX issue) #596skip examples using HDF5 if backend is missing #544
fix a variable shadowing in
Mesh
#582add missing
.unit_dimension
for records #611
ADIOS1: fix deadlock in MPI-parallel, non-collective calls to
storeChunk()
#554xlC 16.1: work-around C-array initializer parsing issue #547
icc 19.0.0 and PGI 19.5: fix compiler ID identification #548
CMake: fix false-positives in
FindADIOS.cmake
module #609Series: throws an error message if no file ending is specified #610
Other
Python: improve
pip
install instructions #594 #600PGI 19.5: fix warning
static constexpr: storage class first
#546JSON:
the backend is now always enabled #564 #587
NLohmann-JSON dependency updated to 3.7.0+ #556
gitignore: generalize CLion, more build dirs #549 #552
fix clang-tidy warnings:
strcmp
and modernizeauto
,const
correctness #551 #560ParallelIOTest
: less code duplication #553Sphinx manual:
PDF Chapters #557
draft for the API architecture design #186
draft for MPI data and collective contract in API usage #583
fix tables & missing examples #579
“first write” explains
unitDimension
#592link to datasets used in examples #598
fix minor formatting and include problems #608
README:
add authors and acknowledgements #566
correct a typo #584
use
$(which python3)
for CMake Python option #599update ADIOS homepage & CMake #604
Travis CI:
speedup dependency build #558
-Werror
only in build phase #565
0.9.0-alpha
Date: 2019-07-25
Improved Builds and Packages
This release improves PyPI releases with proper declaration of build dependencies (use pip 19.0+).
For Makefile
-based projects, an openPMD.pc
file to be used with pkg-config
is added on install.
RecordComponent
now supports a makeEmpty
method to write a zero-extent, yet multi-dimensional record component.
We are now building as shared library by default.
Changes to “0.8.0-alpha”
Features
C++: support empty datasets via
RecordComponent::makeEmpty
#528 #529CMake:
build a shared library by default #506
generate
pkg-config
.pc
file #532 #535 #537
Python:
manylinux2010
wheels for PyPI #523add
pyproject.toml
for build dependencies (PEP-518) #527
Bug Fixes
MPark.Variant: work-around missing version bump #504
linker error concerning
Mesh::setTimeOffset
method template #511remove dummy dataset writing from
RecordComponent::flush()
#528remove dummy dataset writing from
PatchRecordComponent::flush
#512allow flushing before defining
position
andpositionOffset
components of particle species #518 #519CMake:
make install paths cacheable on Windows #521
HDF5 linkage is private #533
warnings:
unused variable in JSON backend #507
MSVC: Warning DLL Interface STDlib #508
Other
increase pybind11 dependency to 2.3.0+ #525
GitHub:
auto-add labels #515
issue template for install issues #526
update badges #522
docs:
link parallel python examples in manual #499
improved Doxygen parsing for all backends #500
fix typos #517
0.8.0-alpha
Date: 2019-03-09
Python mpi4py and Slice Support
We implemented MPI support for the Python frontend via mpi4py
and added []
-slice access to Record_Component
loads and stores.
A bug requiring write permissions for read-only series was fixed and memory provided by users is now properly checked for being contiguous.
Introductory chapters in the manual have been greatly extended.
Changes to “0.7.1-alpha”
Features
Python:
mpi4py support added #454
slice protocol for record component #458
Bug Fixes
do not require write permissions to open
Series
read-only #395loadChunk: re-enable range/extent checks for adjusted ranges #469
Python: stricter contiguous check for user-provided arrays #458
CMake tests as root: apply OpenMPI flag only if present #456
Other
increase pybind11 dependency to 2.2.4+ #455
Python: remove (inofficial) bindings for 2.7 #435
CMake 3.12+: apply policy
CMP0074
for<Package>_ROOT
vars #391 #464CMake: Optional ADIOS1 Wrapper Libs #472
MPark.Variant: updated to 1.4.0+ #465
Catch2: updated to 2.6.1+ #466
NLohmann-JSON: updated to 3.5.0+ #467
Docs:
PyPI install method #450 #451 #497
more info on MPI #449
new “first steps” section #473 #478
update invasive test info #474
more info on
Access
#483improved MPI-parallel write example #496
0.7.1-alpha
Date: 2018-01-23
Bug Fixes in Multi-Platform Builds
This release fixes several issues on OSX, during cross-compile and with modern compilers.
Changes to “0.7.0-alpha”
Bug Fixes
fix compilation with C++17 for python bindings #438
FindADIOS.cmake
: Cross-Compile Support #436ADIOS1: fix runtime crash with libc++ (e.g. OSX) #442
Other
CI: clang libc++ coverage #441 #444
Docs:
additional release workflows for maintainers #439
ADIOS1 backend options in manual #440
updated Spack variants #445
0.7.0-alpha
Date: 2019-01-11
JSON Support, Interface Simplification and Stability
This release introduces serial JSON (.json
) support.
Our API has been unified with slight breaking changes such as a new Python module name (import openpmd_api
from now on) as well as re-ordered store/loadChunk
argument orders.
Please see our new “upgrade guide” section in the manual how to update existing scripts.
Additionally, many little bugs have been fixed.
Official Python 3.7 support and a parallel benchmark example have been added.
Changes to “0.6.3-alpha”
Features
C++:
storeChunk
argument order changed, defaults added #386 #416loadChunk
argument order changed, defaults added #408
Python:
import openPMD
renamed toimport openpmd_api
#380 #392store_chunk
argument order changed, defaults added #386load_chunk
defaults added #408works with Python 3.7 #376
setup.py for sdist #240
Backends: JSON support added #384 #393 #338 #429
Parallel benchmark added #346 #398 #402 #411
Bug Fixes
spurious MPI C++11 API usage in ParallelIOTest removed #396
spurious symbol issues on OSX #427
new []
/delete
mismatch in ParallelIOTest #422use-after-free in SerialIOTest #409
fix ODR issue in ADIOS1 backend corrupting the
AbstractIOHandler
vtable #415fix race condition in MPI-parallel directory creation #419
ADIOS1: fix use-after-free in parallel I/O method options #421
Other
modernize
IOTask
’sAbstractParameter
for slice safety #410Docs: upgrade guide added #385
Docs: python particle writing example #430
CI: GCC 8.1.0 & Python 3.7.0 #376
CI: (re-)activate Clang-Tidy #423
IOTask: init all parameters’ members #420
KDevelop project files to
.gitignore
#424C++:
Mesh
’ssetAxisLabels|GridSpacing|GridGlobalOffset
passed asconst &
#425
CMake:
treat third party libraries properly as
IMPORTED
#389 #403Catch2: separate implementation and tests #399 #400
enable check for more warnings #401
0.6.3-alpha
Date: 2018-11-12
Reading Varying Iteration Padding Reading
Support reading series with varying iteration padding (or no padding at all) as currently used in PIConGPU.
Changes to “0.6.2-alpha”
Bug Fixes
support reading series with varying or no iteration padding in filename #388
0.6.2-alpha
Date: 2018-09-25
Python Stride: Regression
A regression in the last fix for python strides made the relaxation not efficient for 2-D and higher.
Changes to “0.6.1-alpha”
Bug Fixes
Python: relax strides further
0.6.1-alpha
Date: 2018-09-24
Relaxed Python Stride Checks
Python stride checks have been relaxed and one-element n-d arrays are allowed for scalars.
Changes to “0.6.0-alpha”
Bug Fixes
Python:
stride check too strict #369
allow one-element n-d arrays for scalars in
store
,make_constant
#314
Other
dependency change: Catch2 2.3.0+
Python: add extended write example #314
0.6.0-alpha
Date: 2018-09-20
Particle Patches Improved, Constant Scalars and Python Containers Fixed
Scalar records properly support const-ness.
The Particle Patch load interface was changed, loading now all patches at once, and Python bindings are available.
Numpy dtype
is now a first-class citizen for Python Datatype
control, being accepted and returned instead of enums.
Python lifetime in garbage collection for containers such as meshes
, particles
and iterations
is now properly implemented.
Changes to “0.5.0-alpha”
Features
Python:
accept & return
numpy.dtype
forDatatype
#351better check for (unsupported) numpy array strides #353
implement
Record_Component.make_constant
#354implement
Particle_Patches
#362
comply with runtime constraints w.r.t.
written
status #352load at once
ParticlePatches.load()
#364
Bug Fixes
dataOrder: mesh attribute is a string #355
constant scalar Mesh Records: reading corrected #358
particle patches: stricter
load( idx )
range check #363, then removed in #364Python: lifetime of
Iteration.meshes/particles
andSeries.iterations
members #354
Other
test cases for mixed constant/non-constant Records #358
examples: close handles explicitly #359 #360
0.5.0-alpha
Date: 2018-09-17
Refactored Type System
The type system for Datatype::``s was refactored.
Integer types are now represented by ``SHORT
, INT
, LONG
and LONGLONG
as fundamental C/C++ types.
Python support enters “alpha” stage with fixed floating point storage and Attribute
handling.
Changes to “0.4.0-alpha”
Features
Removed
Datatype::INT32
types with::SHORT
,::INT
equivalents #337Attribute::get<...>()
performs astatic_cast
now #345
Bug Fixes
Refactor type system and
Attribute
set/getintegers #337
support
long double
reads on MSVC #184
setAttribute
: explicit C-string handling #341Dataset
:setCompression
warning and error logic #326avoid impact on unrelated classes in invasive tests #324
Python
single precision support:
numpy.float
is an alias forbuiltins.float
#318 #320Dataset
method namings to underscores #319container namespace ambiguity #343
set_attribute
: broken numpy, list and string support #330
Other
CMake: invasive tests not enabled by default #323
store_chunk
: more detailed type mismatch error #322no_such_file_error
&no_such_attribute_error
: remove c-string constructor #325 #327add virtual destructor to
Attributable
#332Python: Numpy 1.15+ required #330
0.4.0-alpha
Date: 2018-08-27
Improved output handling
Refactored and hardened for fileBased
output.
Records are not flushed before the ambiguity between scalar and vector records are resolved.
Trying to write globally zero-extent records will throw gracefully instead of leading to undefined behavior in backends.
Changes to “0.3.1-alpha”
Features
do not assume record structure prematurely #297
throw in (global) zero-extent dataset creation and write #309
Bug Fixes
ADIOS1
fileBased
IO #297ADIOS2 stub header #302
name sanitization in ADIOS1 and HDF5 backends #310
Other
CI updates: #291
measure C++ unit test coverage with coveralls
clang-format support
clang-tidy support
include-what-you-use support #291 export headers #300
OSX High Sierra support #301
individual cache per build # 303
readable build names #308
remove superfluous whitespaces #292
readme: openPMD is for scientific data #294
override
impliesvirtual
#293spack load:
-r
#298default constructors and destructors #304
string pass-by-value #305
test cases with 0-sized reads & writes #135
0.3.1-alpha
Date: 2018-07-07
Refined fileBased Series & Python Data Load
A specification for iteration padding in filenames for fileBased
series is introduced.
Padding present in read iterations is detected and conserved in processing.
Python builds have been simplified and python data loads now work for both meshes and particles.
Changes to “0.3.0-alpha”
Features
CMake:
add
openPMD::openPMD
alias for full-source inclusion #277include internally shipped pybind11 v2.2.3 #281
ADIOS1: enable serial API usage even if MPI is present #252 #254
introduce detection and specification
%0\d+T
of iteration padding #270Python:
add unit tests #249
expose record components for particles #284
Bug Fixes
improved handling of
fileBased
Series andREAD_WRITE
accessexpose
Container
constructor asprotected
rather thanpublic
#282Python:
return actual data in
load_chunk
#286
Other
docs:
improve “Install from source” section #274 #285
Spack python 3 install command #278
0.3.0-alpha
Date: 2018-06-18
Python Attributes, Better FS Handling and Runtime Checks
This release exposes openPMD attributes to Python. A new independent mechanism for verifying internal conditions is now in place. Filesystem support is now more robust on varying directory separators.
Changes to “0.2.0-alpha”
Features
CMake: add new
openPMD_USE_VERIFY
option #229introduce
VERIFY
macro for pre-/post-conditions that replacesASSERT
#229 #260serial Singularity container #236
Python:
expose attributes #256 #266
use lists for offsets & extents #266
C++:
setAttribute
signature changed to const ref #268
Bug Fixes
handle directory separators platform-dependent #229
recursive directory creation with existing base #261
FindADIOS.cmake
: reset on multiple calls #263SerialIOTest
: remove variable shadowing #262ADIOS1: memory violation in string attribute writes #269
Other
enforce platform-specific directory separators on user input #229
docs:
link updates to https #259
minimum MPI version #251
title updated #235
remove MPI from serial ADIOS interface #258
better name for scalar record in examples #257
check validity of internally used pointers #247
various CI updates #246 #250 #261
0.2.0-alpha
Date: 2018-06-11
Initial Numpy Bindings
Adds first bindings for record component reading and writing. Fixes some minor CMake issues.
Changes to “0.1.1-alpha”
Features
Python: first NumPy bindings for record component chunk store/load #219
CMake: add new
BUILD_EXAMPLES
option #238CMake: build directories controllable #241
Bug Fixes
forgot to bump
version.hpp
/__version__
in last releaseCMake: Overwritable Install Paths #237
0.1.1-alpha
Date: 2018-06-07
ADIOS1 Build Fixes & Less Flushes
We fixed build issues with the ADIOS1 backend. The number of performed flushes in backends was generally minimized.
Changes to “0.1.0-alpha”
Bug Fixes
SerialIOTest:
loadChunk
template missing for ADIOS1 #227prepare running serial applications linked against parallel ADIOS1 library #228
Other
minimize number of flushes in backend #212
0.1.0-alpha
Date: 2018-06-06
This is the first developer release of openPMD-api.
Both HDF5 and ADIOS1 are implemented as backends with serial and parallel I/O support. The C++11 API is considered alpha state with few changes expected to come. We also ship an unstable preview of the Python3 API.