Skip to content

Releases: robertu94/libpressio

libpressio version 0.37.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.37.0

Major Changes

  • Several improvements to the external metrics module
    • The external metric module now always provides paths to files as
      absolute paths rather than relative paths.
    • Introduced the concept of launch_methods to provide multiple
      methods to launch the external metric script. Refactored existing
      launch method out as forkexec. This is because some HPC clusters do
      not allow you to spawn processes from MPI jobs using fork+exec.
    • Added the mpispawn launch method which is built if MPI is
      available. This allows the spawning of processes which would
      otherwise segfault or error when the child process uses MPI and the
      parent process also uses MPI.
    • Improved documentation of the current behavior by documenting error
      codes.

Bug Fixes

  • fixed a bug in the petsc io module which caused a segmentation fault
    by allocating memory before using an undefined object
  • Exposed functionality added to the external metric module in 0.36.0
    which was unusable without being exposed.

libpressio version 0.36.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.36.0

Major Changes

  • All of the compressors, metrics, and io_modules can now have their
    options prefixed. By default compressors use an empty prefix, but
    meta-compresssors/metrics will set a prefix for their children. This
    is to allow for compressors to set a hierarchy of options. Unprefixed
    options will now be treated as "global" options and will be checked by
    all compressors, metrics, and io_modules.
  • New C functions have been added to set the prefixes on metrics,
    compressors, and io modules.
  • BREAKING CHANGE: if you used composite metrics (if you used metrics
    you have used it) or any meta-compressor
    (resize/transpose/log_transform), the options returned from
    the for the C api have changed by default to be prefixed according to
    the new naming system (see below). This shouldn't be a problem unless
    you are using cast_set because compressors will still accept the old
    arguments.
  • BREAKING CHANGE: external metrics scripts much now also provide a zero
    "well-known" argument version that provides an exemplar of each set of
    results so that the type and names can be determined. These values
    will also be passed as "defaults" if the script doesn't print all
    options.
  • A new version of the external metrics API has been introduced that
    will eventually allow for the introduction of metrics that have multiple
    datafiles. Additionally, external metrics can now set IO options per
    file.
  • LIBRARY BREAKING CHANGE: to support the new prefixing, compressors, metrics,
    and io modules must use the new set and get functions provided by
    pressio_configurable to get and set options to support prefixing.
  • LIBRARY BREAKING CHANGE: to support new base classes and make
    interfaces more consistent,
    libpressio_metrics_plugin::get_metrics_options is now called
    libpressio_metrics_plugin::get_options and
    libpressio_metrics_plugin::set_metrics_optionsis now calledlibpressio_metrics_plugin::set_options` the corresponding functions for
    configuring metrics on the compressors are unchanged.

Minor Changes

  • the C++ code has been cleaned up by introducing some superclasses for
    compressor, metrics, and io plugins that was consistent between them.
    The new classes are pressio_configuable, pressio_errorable, and
    pressio_versionable.
  • To implement the new functionality, all pressio_configuable
    subclasses now provide a prefix.
  • Documentation and test cases were updated to use option setting
    mechanics.
  • Some improvements to the example of a meta-compressor which simplify
    the code from lessons learned writing pressio-opt.

Bug Fixes

  • conversion from empty strings to numeric values have been disallowed
    and now return an empty option rather than a segfault
  • the fpzip plugin now correctly casts pressio_thread_safety to an
    integer.

libpressio version 0.35.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.35.0

Major Changes

  • New api, pressio_data_transpose which transposes a data object
  • 2 new meta compressors, resize and transpose which apply a resize or
    transpose operation before running compression
  • A new lossy compressor "sample" which preforms a by-row sampling of
    the data
  • Changed the implementation of metrics to allow for better safety when
    the decompressed data that is not the same size as the original data
    (i.e. when sampling).
  • A new metric, relative spatial error has been introduced used in the
    climate community.

Bug fixes:

  • documented some previously undocumented functions

libpressio version 0.34.4

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.34.4

Bug Fixes:

  • previously, pressio_data objects would incorrectly report that an
    empty buffer had data_size == 1, which caused a host of issues with
    these objects. All of them have been fixed.
  • the ZFP-plugin previously would cause a double-free if copied. This
    has been resolved, by following the rule of 5
  • the ZFP-plugin would read uninitialized memory if it wasn't configured
    prior to calling set_options with some options information. It is now
    initalized to a default state.
  • the ZFP plugin would previously fail to decompress if using the OpenMP
    mode requiring a reconfiguration between compression and decompression.
    Since this isn't expected, we save the mode, use serial mode, then
    restore to the previous mode.
  • the SZ plugin used enable_shared_from_this in an undefined way. Now
    the code relies upon the default plugin mechanics in libpressio to get
    another handle to the same shared object.

libpressio version 0.34.3

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.34.3

  • Bug Fix: Previously, when clone was introduced, it would not also clone
    the metrics object associated with a particular compressor plugin. This
    was unintended. Now, the metrics object is cloned to improve thread
    safety

libpressio version 0.34.2

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.34.2

  • Bug Fix: previous the sz plugin had an erronous space at the end of an
    option string. This may break usage of the sz:quantization_bins
    option.

libpressio version 0.34.1

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.34.1

Bug Fixes

  • WARNING: the fpzip previously had several flaws that would cause it to
    not produce correct compression results and not be able to decompress
    data. These have been resolved, but all results produced with the
    previous versions of this plugin should be discarded.
  • the CSV generic IO modules is now orders of magnitude faster by using
    more efficient methods to construct the buffer.

libpressio version 0.34.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.34.0

Major Changes:

  • Added support for PETSC format to generic IO
  • Added support for CSV format to generic IO
  • Added support to clone compressors/io/metrics modules

Bug fixes

  • Various bug fixes to POSIX IO that prevented it from working correctly
    in C++11

libpressio version 0.33.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.33.0

Major Changes

  • Added a noop IO module to make it easier to disable IO
  • Added supported_metrics() and supported_io() methods to struct pressio for symmetry
  • Added pressio_supported_metrics() methods
  • BREAKING CHANGE: pressio_supported_compressors() now returns
    a static string based on what is found in the registry. While this
    should normally be the consistent with LIBPRESSIO_COMPRESSORS, it
    won't include external compressors. This change better conforms with
    the documented and intended behavior.

Bug Fixes:

  • The POSIX pressio_io_data_fwrite function now correctly returns the
    number of bytes written as documented. Previously it returned the
    number of objects written.
  • The POSIX io module now returns error messages on failures
  • the POSIX io module no longer initializes file_ptr to nullptr to avoid
    a bug where it is intentionally set.

libpressio version 0.32.0

10 Aug 16:03
Compare
Choose a tag to compare

libpressio version 0.32.0

Major Changes

  • Introduced the concept of Generic IO as a new concept and extension
    point. The existing HDF5 and POSIX formats are supported in Generic
    IO. Test cases and documentation were added to support this use case.
    At this point, General IO will not replace the existing IO functions.
    Existing IO functions MAY be deprecated in a upcoming release once the
    Generic IO features have had time to stabilize.
  • External Metrics version 2 now supports using generic IO to output the
    files for analysis.
  • pressio_data and pressio_options now take a std::initalizer_list as a
    constructor to make it easier to construct these types in testing and
    script-like code. This means that these data structures are no longer
    trivially constructable.

Minor Changes

  • Some internal code was refactored to use newer interfaces.