Skip to content

Commit

Permalink
Feature/relay io read write offset (#709)
Browse files Browse the repository at this point in the history
* hdf5 read/write with offset given an extendible dataset

* add read_info, more tests, reconstitute fixed dataset to extendible dataset

* uncomment out tests

* error out if chunking disabled while creating extendible array

* add ability to read given a size and add documentation

* small simplification to hdf5 read with size

* merge develop and adjust changelog

* output node size is set equal to the size of the elements read

* add slab read test that use opts iface

Co-authored-by: Cyrus Harrison <cyrush@llnl.gov>
  • Loading branch information
Kevin Huynh and cyrush committed Feb 23, 2021
1 parent f414b5e commit 58e8400
Show file tree
Hide file tree
Showing 6 changed files with 1,660 additions and 444 deletions.
75 changes: 42 additions & 33 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,15 @@ Notable changes to Conduit are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project aspires to adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

### Added

#### Relay
- Added Relay HDF5 support for reading and writing to an HDF5 dataset with offset.
- Added `conduit::relay::io::hdf5::read_info` which allows you to obtain metadata from an HDF5 file.


## [0.7.1] - Released 2021-02-11

### Fixed
Expand All @@ -18,17 +27,17 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Changed

#### General
#### General
- Conduit now requires C++11 support.
- Python Node repr string construction now uses `Node.to_summary_string()`

### Added
- CMake: Added extra check for include dir vs fully resolved hdf5 path.

#### General
#### General
- Added a builtin sandboxed header-only version of fmt. The namespace and directory paths were changed to `conduit_fmt` to avoid potential symbol collisions with other codes using fmt. Downstream software can use by including `conduit_fmt/conduit_fmt.h`.
- Added support for using C++11 initializer lists to set Node and DataArray values from numeric arrays. See C++ tutorial docs (https://llnl-conduit.readthedocs.io/en/latest/tutorial_cpp_numeric.html#c-11-initializer-lists) for more details.
- Added a Node::describe() method. This method creates a new node that mirrors the current Node, however each leaf is replaced by summary stats and a truncated display of the values. For use cases with large leaves, printing the describe() output Node is much more helpful for debugging and understanding vs wall of text from other to_string() methods.
- Added a Node::describe() method. This method creates a new node that mirrors the current Node, however each leaf is replaced by summary stats and a truncated display of the values. For use cases with large leaves, printing the describe() output Node is much more helpful for debugging and understanding vs wall of text from other to_string() methods.
- Added conduit::utils::format methods. These methods use fmt to format strings that include fmt style patterns. The formatting arguments are passed as a conduit::Node tree. The `args` case allows named arguments (args passed as object) or ordered args (args passed as list). The `maps` case also supports named or ordered args and works in conjunction with a `map_index`. The `map_index` is used to fetch a value from an array, or list of strings, which is then passed to fmt. The `maps` style of indexed indirection supports generating path strings for non-trivial domain partition mappings in Blueprint. This functionality is also available in Python, via the `conduit.utils.format` method.
- Added `DataArray::fill` method, which set all elements of a DataArray to a given value.
- Added `Node::to_summary_string` methods, which allow you to create truncated strings that describe a node tree, control the max number of children and max number of elements shown.
Expand Down Expand Up @@ -69,7 +78,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Added

#### General
#### General
- Added support for children with names that include `/`. Since slashes are part of Conduit's hierarchical path mechanism, you must use explicit methods (add_child(), child(), etc) to create and access children with these types of names. These names are also supported in all basic i/o cases (JSON, YAML, Conduit Binary).
- Added Node::child and Schema::child methods, which provide access to existing children by name.
- Added Node::fetch_existing and Schema::fetch_existing methods, which provide access to existing paths or error when given a bad path.
Expand Down Expand Up @@ -106,7 +115,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Fixed

#### General
#### General
- Updated to newer BLT to resolve BLT/FindMPI issues with rpath linking commands when using OpenMPI.
- Fixed internal object name string for the Python Iterator object. It used to report `Schema`, which triggered both puzzling and concerned emotions.
- Fixed a bug with `Node.set` in the Python API that undermined setting NumPy arrays with sliced views and complex striding. General slices should now work with `set`. No changes to the `set_external` case, which requires 1-D effective striding and throws an exception when more complex strides are presented.
Expand All @@ -120,9 +129,9 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Changed

#### General
#### General
- Conduit's main git branch was renamed from `master` to `develop`. To allow time for folks to migrate, the `master` branch is active but frozen and will be removed during the `0.7.0` release.
- We recommend a C++11 (or newer) compiler, support for older C++ standards is deprecated and will be removed in a future release.
- We recommend a C++11 (or newer) compiler, support for older C++ standards is deprecated and will be removed in a future release.
- Node::fetch_child and Schema::fetch_child are deprecated in favor of the more clearly named Node::fetch_existing and Schema::fetch_existing. fetch_child variants still exist, but will be removed in a future release.
- Python str() methods for Node, Schema, and DataType now use their new to_string() methods.
- DataArray<T>::to_json(std::ostring &) is deprecated in favor DataArray<T>::to_json_stream. to_json(std::ostring &) will be removed in a future release.
Expand Down Expand Up @@ -153,14 +162,14 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Added

#### General
#### General
- Added Node::parse() method, (C++, Python and Fortran) which supports common json and yaml parsing use cases without creating a generator instance.
- Use FOLDER target property to group targets for Visual Studio
- Added Node load(), and save() support to the C and Fortran APIs

### Changed

#### General
#### General
- Node::load() and Node::save() now auto detect which protocol to use when protocol argument is an empty string
- Changed Node::load() and Node::save() default protocol value to empty (default now is to auto detect)
- Changed Python linking strategy to defer linking for our compiler modules
Expand All @@ -169,7 +178,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Fixed

#### General
#### General
- Fixed install paths for CMake exported target files to follow standard CMake find_package() search conventions. Also perserved duplicate files to support old import path structure for this release.
- python: Fixed Node.set_external() to accept conduit nodes as well as numpy arrays
- Fixed dll install locations for Windows
Expand All @@ -179,7 +188,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Added

#### General
#### General
- Added support to parse YAML into Conduit Nodes and to create YAML from Conduit Nodes. Support closely follows the "json" protocol, making similar choices related to promoting YAML string leaves to concrete data types.
- Added several more Conduit Node methods to the C and Fortran APIs. Additions are enumerated here: https://github.com/LLNL/conduit/pull/426
- Added Node set support for Python Tuples and Lists with numeric and string entires
Expand All @@ -188,19 +197,19 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

#### Blueprint

- Added support for a "zfparray" blueprint that holds ZFP compressed array data.
- Added support for a "zfparray" blueprint that holds ZFP compressed array data.
- Added the the "specsets" top-level section to the Blueprint schema, which can be used to represent multi-dimensional per-material quantities (most commonly per-material atomic composition fractions).
- Added explicit topological data generation functions for points, lines, and faces
- Added derived topology generation functions for element centroids, sides, and corners
- Added the basic example function to the conduit.mesh.blueprint.examples module

#### Relay
- Added optional ZFP support to relay, that enables wrapping and unwraping zfp arrays into conduit Nodes.
- Added optional ZFP support to relay, that enables wrapping and unwraping zfp arrays into conduit Nodes.
- Extended relay HDF5 I/O support to read a wider range of HDF5 string representations including H5T_VARIABLE strings.

### Changed

#### General
#### General
- Conduit's automatic build process (uberenv + spack) now defaults to using Python 3
- Improved CMake export logic to make it easier to find and use Conduit install in a CMake-based build system. (See using-with-cmake example for new recipe)

Expand All @@ -212,7 +221,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Fixed

#### General
#### General
- Fixed bug that caused memory access after free during Node destruction

#### Relay
Expand All @@ -227,11 +236,11 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s
#### General

- Added Generic IO Handle class (relay::io::IOHandle) with C++ and Python APIs, tests, and docs.
- Added ``rename_child`` method to Schema and Node
- Added ``rename_child`` method to Schema and Node
- Added generation and install of conduit_config.mk for using-with-make example
- Added datatype helpers for long long and long double
- Added error for empty path fetch
- Added C functions for setting error, warning, info handlers.
- Added C functions for setting error, warning, info handlers.
- Added limited set of C bindings for DataType
- Added C bindings for relay IO
- Added several more functions to conduit node python interfaces
Expand All @@ -250,7 +259,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s
- Added a relay::mpi::io library that mirrors the API of relay::io, except that all functions take an MPI communicator. The functions are implemented in parallel for the ADIOS protocol. For other protocols, they will behave the same as the serial functions in relay::io. For the ADIOS protocol, the save() and save_merged() functions operate collectively within a communicator to enable multiple MPI ranks to save data to a single file as separate "domains".
- Added an add_time_step() function to that lets the caller append data collectively to an existing ADIOS file
- Added a function to query the number of time steps and the number of domains in a ADIOS file.
- Added versions of save and save_merged that take an options node.
- Added versions of save and save_merged that take an options node.
- Added C API for new save, save_merged functions.
- Added method to list an HDF5 group's child names
- Added save and append methods to the HDF5 I/O interface
Expand All @@ -259,7 +268,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

### Changed

#### General
#### General

- Changed mapping of c types to bit-width style to be compatible with C++11 std bit-width types when C++11 is enabled
- Several improvements to uberenv, our automated build process, and building directions
Expand All @@ -268,16 +277,16 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s
#### Relay

- Improvements to the Silo mesh writer
- Refactor to support both relay::io and relay::mpi::io namespaces.
- Refactor to support both relay::io and relay::mpi::io namespaces.
- Refactor to add support for steps and domains to I/O interfaces
- Changed to only use ``libver latest`` setting for for hdf5 1.8 to minimize compatibility issues
- Changed to only use ``libver latest`` setting for for hdf5 1.8 to minimize compatibility issues

### Fixed

#### General
#### General

- Fixed bugs with std::vector gap methods
- Fixed A few C function names in conduit_node.h
- Fixed A few C function names in conduit_node.h
- Fixed bug in python that was requesting unsigned array for signed cases
- Fixed issue with Node::diff failing for string data with offsets
- Fixes for building on BlueOS with the xl compiler
Expand Down Expand Up @@ -314,7 +323,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s
- Updated uberenv to use a newer spack and removed several custom packages
- C++ ``Node::set`` methods now take const pointers for data

### Fixed
### Fixed

#### General

Expand All @@ -333,7 +342,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

## [0.3.0] - Released 2017-08-21

### Added
### Added

#### General

Expand Down Expand Up @@ -366,7 +375,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

#### General

- Fixed memory leaks in *conduit*
- Fixed memory leaks in *conduit*
- Bug fixes to support building on Visual Studio 2013
- Bug fixes for `conduit::Nodes` in the List Role

Expand All @@ -380,7 +389,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

#### Blueprint

- Added support to the blueprint python module for the mesh and mcarray protocol methods
- Added support to the blueprint python module for the mesh and mcarray protocol methods
- Added stand alone blueprint verify executable

### Changed
Expand Down Expand Up @@ -414,7 +423,7 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s
#### General

- Added const access to conduit::Node's children and a new NodeConstIterator
- Added support for building on Windows
- Added support for building on Windows
- Added more Python, C, and Fortran API support

#### Blueprint
Expand All @@ -433,20 +442,20 @@ and this project aspires to adhere to [Semantic Versioning](https://semver.org/s

#### General

- Changes to clarify concepts in the conduit::Node API
- Changes to clarify concepts in the conduit::Node API
- Improved unit test coverage
- Renamed source and header files for clarity and to avoid potential conflicts with other projects
- Renamed source and header files for clarity and to avoid potential conflicts with other projects

#### Relay

- Changed I/O protocol string names for clarity
- Refactored the relay::WebServer and the Conduit Node Viewer application
- Changed I/O protocol string names for clarity
- Refactored the relay::WebServer and the Conduit Node Viewer application

### Fixed

#### General

- Resolved several bugs across libraries
- Resolved several bugs across libraries
- Resolved compiler warnings and memory leaks

## 0.1.0 - Released 2016-03-30
Expand Down
1 change: 1 addition & 0 deletions src/docs/sphinx/index.rst
Expand Up @@ -115,6 +115,7 @@ Contributors
- Arlie Capps (LLNL)
- Mark Miller (LLNL)
- Todd Gamblin (LLNL)
- Kevin Huynh (LLNL)
- Brad Whitlock (Intelligent Light)
- George Aspesi (Harvey Mudd)
- Justin Bai (Harvey Mudd)
Expand Down

0 comments on commit 58e8400

Please sign in to comment.