Releases: robertu94/libpressio
Releases · robertu94/libpressio
libpressio version 0.37.0
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 asforkexec
. This is because some HPC clusters do
not allow you to spawn processes from MPI jobs usingfork+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.
- The external metric module now always provides paths to files as
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
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 usingcast_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 newset
andget
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 called
libpressio_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 arepressio_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
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
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
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
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 thesz:quantization_bins
option.
libpressio version 0.34.1
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
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
libpressio version 0.33.0
Major Changes
- Added a noop IO module to make it easier to disable IO
- Added
supported_metrics()
andsupported_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
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
andpressio_options
now take astd::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.