Simplified Data Exchange for HPC Simulations
(adapted from Conduit's Changelog)
CONDUIT_DLL_DIR
env var support on windows, for cases where Conduit DLLs are not installed directly inside the Python Module.blueprint::mesh::partition
to determine global vertex ids.blueprint::mesh::partition
and blueprint::mesh::combine
.ENABLE_RELAY_WEBSERVER
option.blueprint::mesh::partition
where adjsets could be missing in new domains.blueprint::mesh::matset::to_silo
and uni-buffer matsets.(adapted from Conduit's Changelog)
setup.py
for building and installing Conduit and its Python module via pipconduit::blueprint::{mpi}::partition
function that provides a general N-to-M partition capability for Blueprint Meshes. This helps with load balancing and other use cases, including fusing multi-domain data to simplifying post processing. This capability supports several options, see (https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh_partition.html) for more details.Table
blueprint used to represent tables of numeric data. See (https://llnl-conduit.readthedocs.io/en/latest/blueprint_table.html) more details.conduit::blueprint::{mpi}::flatten
which transforms Blueprint Meshes into Blueprint Tables. This transforms Mesh Blueprint data into a form that is more easily digestible in machine learning applications.conduit::blueprint::mpi::generate_partition_field
, which uses Parmetis to create a field that identifies how to load balance an input mesh elements. This field can be used as a Field selection input to conduit::blueprint::mpi::partition
function.blueprint::mesh::examples::polychain
example. It is an example of a polyhedral mesh. See Mesh Blueprint Examples docs (https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#polychain) for more details.blueprint::mesh::topology::unstructured::generate_sides
, which performs the same task as the original and also takes fields from the original topology and maps them onto the new topology.blueprint::mpi::mesh::to_polygonal
, which provides a MPI aware conversion Blueprint Structured AMR meshes to a Blueprint Polyhedral meshes.conduit::blueprint::mpi::mesh::generate_*
methods, which are the MPI parallel equivalents of the conduit::blueprint::mesh::topology::unstructured::generate_*
functions.conduit::blueprint::mpi::mesh::find_delegate_domain
function, which returns a single delegate domain for the given mesh across MPI ranks (useful when all ranks need mesh information and some ranks can have empty meshes).pairwise
and maxshare
variants of adjsets
. For more information, see the conduit::blueprint::mesh::adjset
namespace.mesh::topology::unstructured::to_polytopal
as an alias to mesh::topology::unstructured::to_polygonal
, to reflect that both polygonal and polyhedral are supported.conduit::blueprint::mpi::mesh::to_polytopal
as an alias to conduit::blueprint::mpi::mesh::to_polygonal
and conduit::blueprint::mpi::mesh::to_polyhedral
.conduit::relay::io::hdf5_identifier_report
methods, which create conduit nodes that describes active hdf5 resource handles.conduit::Node::print()
and in Python Node repr
and str
now use to_summary_string()
. This reduces the output for large Nodes. Full output is still supported via to_string()
, to_yaml()
, etc methods.blueprint::mesh::examples::polytess
function now takes a new argument, called nz
, which allows it to be extended into 3 dimensions. See Mesh Blueprint Examples docs (https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#polytess) for more details.const
and non-const
inputs to the conduit::blueprint::mesh::domains
function.npts_z !=0
for 2D shape types in conduit::blueprint::mesh::examples::{braid,basic,grid}
. They issue a CONDUIT_INFO
message when this detected and future versions will issue a CONDUIT_ERROR
.mesh::verify
to exclude empty Nodes will now need an extra check to see if an input mesh has data.conduit::blueprint::mpi::mesh::to_polygonal
and conduit::blueprint::mpi::mesh::to_polyhedral
.ENABLE_RELAY_WEBSERVER
, default = ON
) to control if Conduit's Relay Web Server support is built. Down stream codes can check for support via header ifdef CONDUIT_RELAY_WEBSERVER_ENABLED
or at runtime in conduit::relay::about
._Pragma()
with Python 3.8 on Windowsconduit_node
and conduit_datatype
in the C API are no longer aliases to void
so that callers cannot pass just any pointer to the APIs.conduit::blueprint::mesh::topology::unstructured::generate_*
functions to produce bad results for polyhedral input topologies with heterogeneous elements (e.g. tets and hexs).conduit::relay::io::blueprint::write_mesh
that undermined truncate=true
option for root-only style output.conduit_blueprint_verify
exe.conduit::relay::mpi::io::blueprint::save_mesh
where file_style=root_only
could crash or truncate output files.(adapted from Conduit's Changelog)
cpp_fort_and_py
standalone example. It demos passing Conduit Nodes between C++, Fortran, and Python. See the related tutorial docs (https://llnl-conduit.readthedocs.io/en/latest/tutorial_cpp_fort_and_py.html) for more details.conduit::utils::info_handler()
, conduit::utils::warning_handler()
, and conduit::utils::error_handler()
methods, which provide access to the currently registered info, warning, and error handlers.index_t
, which is an alias to either int32
, or int 64
controlled by the CONDUIT_INDEX_32
compile time option.rapidjson
namespace to conduit_rapidjson
to avoid symbol collisions with other libraries using RapidJSON.conduit::blueprint::mesh::verify
changed. An empty conduit Node is now considered a valid multi-domain mesh with zero domains. If you always expect mesh data, you can add an additional check for empty to craft code that works for both the old and new verify semantics.conduit::relay::io::hdf5::read_info
which allows you to obtain metadata from an HDF5 file.conduit::relay::io::blueprint.read_mesh
now uses read only I/O handles.(adapted from Conduit's Changelog)
Node.to_summary_string()
conduit_fmt
to avoid potential symbol collisions with other codes using fmt. Downstream software can use by including conduit_fmt/conduit_fmt.h
.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.DataArray::fill
method, which set all elements of a DataArray to a given value.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.Node.to_summary_string
a
(append) and t
(truncate). Truncate allows you to overwrite files when the handle is opened. The default is append, which preserves prior IO Handle behavior.conduit::relay::io::blueprint::save_mesh
variants, these overwrite existing files (providing relay save semantics) instead of adding mesh data to existing files. We recommend using save_mesh
for most uses cases, b/c in many cases write_mesh
to an existing HDF5 file set can fail due to conflicts with the current HDF5 tree.conduit::relay::io::blueprint::load_mesh
variants, these reset the passed node before reading mesh data (providing relay load semantics). We recommend using load_mesh
for most uses cases.truncate
option to conduit::relay::io::blueprint::write_mesh
, this is used by save_mesh
.conduit::relay::[mpi::]io::blueprint::{save_mesh|write_mesh}
. Now in the MPI case, If any rank fails to open or write to a file all ranks will throw an exception.conduit::relay::io:identify_file_type
.conduit::blueprint::mesh::matset::to_silo()
which converts a valid blueprint matset to a node that contains arrays that follow Silo's sparse mix slot volume fraction representation.conduit::blueprint::mesh::field::to_silo()
which converts a valid blueprint field and matset to a node that contains arrays that follow Silo's sparse mix slot volume fraction representation.material_map
to conduit::blueprint::mesh:matset::index
, to provide an explicit material name to id mapping.mat_check
field to blueprint::mesh::examples::venn
. This field encodes the material info in a scalar field and in the matset_values
in a way that can be used to easily compare and verify proper construction in other tools.Node::fetch_child
and Schema::fetch_child
methods for v0.7.0. (Deprecated in v0.6.0 -- prefer fetch_existing
)Schema::to_json
method variants with detailed
for v0.7.0. (Deprecated in v0.6.0 -- prefer standard to_json
)Schema::save
method variant with detailed
for v0.7.0. (Deprecated in v0.6.0 -- prefer standard save
)master
branch was removed from GitHub (Deprecated in v0.6.0 -- replaced by the develop
branch)conduit::relay::io_blueprint::save
methods for v0.7.0. (Deprecated in v0.6.0 -- prefer conduit::relay::io::blueprint::save_mesh
)(adapted from Conduit's Changelog)
/
. 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)./
s.for (Node &node : node.children()) {}
. You can also do node.children.begin()
and node.children.end()
to work with the iterators directly.conduit::relay::io::blueprint::read_mesh
functions, were pulled in from Ascent's Blueprint import logic.conduit::relay::mpi::wait
and conduit::relay::mpi::wait_all
functions. These functions consolidate the logic supporting both isend
and irecv
requests. wait_all
supports cases where both sends and receives were posted, which is a common for non-trivial point-to-point communication use cases.blueprint::o2mrelation
protocol. See the blueprint::o2mrelation::examples::uniform
example for details.blueprint::mesh::examples::adjset_uniform
example.blueprint::mesh::examples::julia_nestsets_simple
and blueprint::mesh::examples::julia_nestsets_complex
examples represent Julia set fractals using patch-based AMR meshes and the Mesh Blueprint Nesting Set protocol. See the Julia AMR Blueprint docs
(https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#julia-amr-examples) for more details.blueprint::mesh::examples::venn
example that demonstrates different ways to encode volume fraction based multi-material fields. See the Venn Blueprint docs
(https://llnl-conduit.readthedocs.io/en/latest/blueprint_mesh.html#venn) for more details.blueprint::mesh::number_of_domains
property method for trees that conform to the mesh blueprint.blueprint::mpi::mesh::verify
and blueprint::mpi::mesh::number_of_domains
(available in the conduit_blueprint_mpi
library)blueprint::mpi::mesh::examples::braid_uniform_multi_domain
and blueprint::mpi::mesh::examples::spiral_round_robin
distributed-memory mesh examples to the conduit_blueprint_mpi
library.state/path
to the Mesh Blueprint index, needed for consumers to know the proper path to read extended state info (such as domain_id
)Schema
, which triggered both puzzling and concerned emotions.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.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.about
methods now return yaml strings instead of json strings.conduit_json
was used, which was overwhelming.version
was changed to add git sha and status (dirty) info to avoid confusion between release and development installs.conduit::relay::io_blueprint::save
functions are deprecated in favor of conduit::relay::io::blueprint::write_mesh
conduit::relay::io::blueprint::write_mesh
functions were pulled in from Ascent's Blueprint export logic.conduit_relay_io_mpi
lib now depends on conduit_relay_io
. Due to this change, a single build supports either ADIOS serial (no-mpi) or ADIOS with MPI support, but not both. If conduit is configured with MPI support, ADIOS MPI is used.conduit::relay::mpi::wait_send
and conduit::relay::mpi::wait_recv
now use conduit::relay::mpi::wait
. The functions wait_send
and wait_recv
exist to preserve the old API, there is no benefit to use them over wait
.conduit::relay::mpi::wait_all_send
and conduit::relay::mpi::wait_all_recv
now use conduit::relay::mpi::wait_all
. The functions wait_all_send
and wait_all_recv
exist to preserve the old API, there is no benefit to use them over wait_all
.conduit_blueprint_mpi
library now depends on conduit_relay_mpi
.{i,j,k}
instead of {i0,j0,k0}
.(adapted from Conduit's Changelog)
(adapted from Conduit's Changelog)
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
Added Node set support for Numpy String Arrays. String Arrays become Conduit lists with child char8_str arrays
Blueprint: Added support for a "zfparray" blueprint that holds ZFP compressed array data.
Blueprint: 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).
Blueprint: Added explicit topological data generation functions for points, lines, and faces
Blueprint: Added derived topology generation functions for element centroids, sides, and corners
Blueprint: 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.
Relay: Extended relay HDF5 I/O support to read a wider range of HDF5 string representations including H5T_VARIABLE strings.
Relay: Added is_open() method to IOHandle in the C++ and Python interfaces
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)
Relay: Added file name information to Relay HDF5 error messages
Fixed bug that caused memory access after free during Node destruction
Relay: Fixed crash with mpi broadcast_using_schema() when receiving tasks pass a non empty Node.
Relay: Fixed a few Windows API export issues for relay io
(adapted from Conduit's Changelog)
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 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 limited set of C bindings for DataType
Added C bindings for relay IO
Added several more functions to conduit node python interfaces
Blueprint: Added implicit point topology docs and example
Blueprint: Added julia and spiral mesh bp examples
Blueprint: Added mesh topology transformations to blueprint
Blueprint: Added polygonal mesh support to mesh blueprint
Blueprint: Added verify method for mesh blueprint nestset
Relay: Added ADIOS Support, enabling ADIOS read and write of Node objects.
Relay: 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".
Relay: Added an add_time_step() function to that lets the caller append data collectively to an existing ADIOS file
Relay: Added a function to query the number of time steps and the number of domains in a ADIOS file.
Relay: Added versions of save and save_merged that take an options node.
Relay: Added C API for new save, save_merged functions.
Relay: Added method to list an HDF5 group's child names
Relay: Added save and append methods to the HDF5 I/O interface
Relay: Added docs and examples for relay io
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
Upgraded the type system with more explicit signed support
Relay: Improvements to the Silo mesh writer
Relay: Refactor to support both relay::io and relay::mpi::io namespaces.
Relay: Refactor to add support for steps and domains to I/O interfaces
Relay: Changed to only use libver latest
setting for for hdf5 1.8 to minimize compatibility issues
Fixed bugs with std::vector gap methods
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
Blueprint: Fixed validity status for blueprint functions
Blueprint: Fixed improper error reporting for Blueprint references
Relay: Relay I/O exceptions are now forwarded to python
Relay: Fixed MPI send_with_schema bug when data was compact but not contiguous
Relay: Switched to use MPI bit-width style data type enums in relay::mpi
General:
Node::diff
and Node::diff_compatible
methodsNode::set
methods now take const pointers for dataBlueprint:
Mesh Protocol
Added Multi-level Array Protocol (conduit::blueprint::mlarray)
Relay: