Recent Releases of openpmd-api

openpmd-api - New Backends, Extension, Perf. & Memory

This release fixes backend and build bugs of the 0.16.0 release.

Thank you to Franz Poeschel @franzpoeschel and Axel Huebl @ax3l for contributing to this release!

- C++
Published by ax3l 12 months ago

openpmd-api - New Backends, Extension, Perf. & Memory

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 ADIOS1 backend, previously deprecated, has been removed in favor of ADIOS2.

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.

Thanks to Franz Pöschel @franzpoeschel, Axel Huebl @ax3l, David Grote @dpgrote, Davide Terzani @titoiride, Ilian Kara-Mostefa @IlianCS, Junmin Gu @guj, Luca Fedeli @lucafedeli88, Nils Schild @DerNils-git, Paweł Ordyna @pordyna and Ulrik Günther @skalarproduktraum for contributing to this release!

New Contributors

  • @dpgrote made their first contribution in https://github.com/openPMD/openPMD-api/pull/1442
  • @skalarproduktraum made their first contribution in https://github.com/openPMD/openPMD-api/pull/1364
  • @pordyna made their first contribution in https://github.com/openPMD/openPMD-api/pull/1477
  • @IlianCS made their first contribution in https://github.com/openPMD/openPMD-api/pull/1510
  • @lucafedeli88 made their first contribution in https://github.com/openPMD/openPMD-api/pull/1532
  • @titoiride made their first contribution in https://github.com/openPMD/openPMD-api/pull/1558

- C++
Published by ax3l over 1 year ago

openpmd-api - 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+.

DOI

Thanks to Franz Poeschel, Axel Huebl, David P. Grote, Ulrik Günther and Ilian Kara-Mostefa for contributing to this release!

- C++
Published by ax3l over 2 years ago

openpmd-api - Build Regressions

This release fixes build regressions and minor documentation updates for the 0.15.0 release.

DOI

Thanks to Axel Huebl and Franz Poeschel for contributing to this release!

- C++
Published by ax3l almost 3 years ago

openpmd-api - 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 add Python 3.10 and 3.11.

DOI

Thanks to Axel Huebl, Franz Poeschel, Jean Luc Bez, Junmin Gu, Bernhard Manfred Gruber, and Nils Schild for contributing to this release!

- C++
Published by ax3l almost 3 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, and Jean Luca Bez for contributing to this release!

- C++
Published by ax3l over 3 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl and Franz Poeschel for contributing to this release!

- C++
Published by ax3l almost 4 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel and Jean Luca Bez for contributing to this release!

- C++
Published by ax3l about 4 years ago

openpmd-api - 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.

DOI

Thanks to Franz Poeschel and Axel Huebl for contributing to this release!

- C++
Published by ax3l over 4 years ago

openpmd-api - 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.

DOI

Thanks to Franz Poeschel and Axel Huebl for contributing to this release!

- C++
Published by ax3l over 4 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, Erik Schnetter, Junmin Gu, John Kirkham, and Dmitry Ganyushin for contributing to this release!

- C++
Published by ax3l over 4 years ago

openpmd-api - Fix AppleClang & DPC++ Build

Fix a missing include that fails builds with Apple's clang and Intel's dpcpp compilers.

DOI

Thanks to Axel Huebl for contributing to this release!

- C++
Published by ax3l over 4 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl and Franz Poeschel for contributing to this release!

- C++
Published by ax3l over 4 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl and Franz Poeschel for contributing to this release!

- C++
Published by ax3l almost 5 years ago

openpmd-api - 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.

DOI

Thanks to Franz Poeschel and Axel Huebl for contributing to this release!

- C++
Published by ax3l almost 5 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, Junmin Gu, Richard Pausch, and Sergei Bastrakov for contributing to this release!

- C++
Published by ax3l about 5 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, and Lígia Diana Amorim for contributing to this release!

- C++
Published by ax3l over 5 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl for contributing to this release!

- C++
Published by ax3l almost 6 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Junmin Gu and Ligia Diana Amorim for contributing to this release!

- C++
Published by ax3l almost 6 years ago

openpmd-api - Improved HDF5 Handling

More robust HDF5 file handling and fixes of local includes for more isolated builds.

DOI

Thanks to Axel Huebl, Junmin Gu, Ligia Diana Amorim, Richard Pausch, and Igor Andriyash for contributing to this release!

- C++
Published by ax3l about 6 years ago

openpmd-api - Improved Error Messages

Thrown errors are now prefixed by the backend in use and ADIOS1 series reads are more robust.

DOI

Thanks to Axel Huebl, Ligia Diana Amorim, Richard Pausch, and Ksenia Bastrakova for contributing to this release!

- C++
Published by ax3l about 6 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, William F. Godoy, Ligia Diana Amorim, and Remi Lehe for contributing to this release!

- C++
Published by ax3l about 6 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, Franz Poeschel, Ligia Diana Amorim, and Glenn Richardson for contributing to this release!

- C++
Published by ax3l about 6 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, and Franz Poeschel for contributing to this release!

- C++
Published by ax3l over 6 years ago

openpmd-api - 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.

DOI

Thanks to Axel Huebl, and Fabian Koller for contributing to this release!

- C++
Published by ax3l almost 7 years ago

openpmd-api - Bug Fixes in Multi-Platform Builds

This release fixes several issues with libstdc++ (e.g. on OSX), cross-compiles and modern compilers.

Thanks to Axel Huebl, and Ray Donnelly for contributing to this release!

DOI

- C++
Published by ax3l almost 7 years ago

openpmd-api - 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 on 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.

Thanks to Axel Huebl, Franz Poeschel, Sergei Bastrakov, and Ray Donnelly for contributing to this release!

DOI

- C++
Published by ax3l almost 7 years ago

openpmd-api - Reading Varying Iteration Padding

Support reading series with varying iteration padding (or no padding at all) as currently used in PIConGPU.

Thanks to Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l about 7 years ago

openpmd-api - Relaxed Python Stride Checks

Python stride checks have been relaxed and one-element n-d arrays are allowed for scalars.

Thanks to Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - Relaxed Python Stride Checks

Python stride checks have been relaxed and one-element n-d arrays are allowed for scalars.

Thanks to Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - Patches, Const Scalars, Py Containers

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.

Thanks to Axel Huebl and Fabian Koller for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - 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.

Thanks to Fabian Koller, Axel Huebl and Franz Poeschel for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - 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.

Thanks to Fabian Koller and Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - 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.

Thanks to Fabian Koller, Axel Huebl, Carsten Fortmann-Grote, and Dominik Stańczak for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - Py Attributes, Better FS & 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.

Thanks to Fabian Koller and Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago

openpmd-api - First developer release

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.

Thanks to Fabian Koller and Axel Huebl for contributing to this release!

- C++
Published by ax3l over 7 years ago

openpmd-api - Initial Numpy Bindings

Adds first bindings for record component reading and writing. Fixes some minor CMake issues.

Thanks to Fabian Koller and Axel Huebl for contributing to this release!

- C++
Published by ax3l over 7 years ago

openpmd-api - ADIOS1 Build Fixes & Less Flushes

We fixed build issues with the ADIOS1 backend. The number of performed flushes in backends was generally minimized.

Thanks to Fabian Koller and Axel Huebl for contributing to this release!

DOI

- C++
Published by ax3l over 7 years ago