-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Const Records: Relax shape
for Particles
#289
base: upcoming-2.0.0
Are you sure you want to change the base?
Conversation
For advanced, highly parallel I/O output, we developed a new method in ADIOS2 that does not need an initial metadata gather ("JoinedArrays"). To be able to use this mode, we need to relax the requirements to write a shape for constant records in a species (particle group), because otherwise we still have to do a collective gather. This adds the need for a slight additional read fallback implementation on the reader side.
b6c20cc
to
982c08e
Compare
This has practical consequences for parsing a corner case of openPMD data, namely constant scalar particle records.
How does a parser distinguish
Currently, the openPMD-api implements this corner case in auto value = std::find(att_begin, att_end, "value");
auto shape = std::find(att_begin, att_end, "shape");
if (value != att_end && shape != att_end)
{
RecordComponent &rc = r;
IOHandler()->enqueue(IOTask(&rc, pOpen));
IOHandler()->flush(internal::defaultFlushParams);
rc.get().m_isConstant = true;
}
try
{
r.read();
} I.e., when parsing a group
I suggest that we decide for one clearly defined scheme to detect constant scalar components and standardize that. 1. is easier to implement. Also, do I understand it correctly that the relaxed constant component markup is not applicable to Mesh records? |
Description
For MPI-parallel I/O output, we developed a new method in ADIOS2 that does not need an initial metadata gather ("JoinedArrays"). To be able to use this mode, we need to relax the requirements to write a shape for constant records in a species (particle group), because otherwise we still have to do a collective gather.
This adds the need for a slight additional read fallback implementation on the reader side.
Affected Components
base
Logic Changes
The required attribute
shape
in constant record components is now optional for records in particle groups (species), if there is at least another record to recover theshape
from in the same particle species.Writer Changes
The required attribute
shape
in constant record components is now optional for records in particle groups (species).Reader Changes
The required attribute
shape
in constant record components is now optional for records in particle groups (species).If the attribute is missing, go through other records and components of the same species and pick the first one that has a
shape
(e.g., non-constant record component full extent or a constant record component with ashape
) and use that information to recover.What would a reader need to change? Link implementation examples!
openPMD-api
: Constant Records for JoinedArrays: Skipshape
for Particles openPMD-api#1663 Make shape an optional attribute for constant components openPMD-api#1661 @franzpoeschelyt
: https://github.com/yt-project/yt/... - will be based on openPMD-api soonParaView
: based on openPMD-apiopenPMD-viewer
: base on openPMD-api for ADIOS2openPMD-validator
: https://github.com/openPMD/openPMD-validator/... @ax3lVisIt
: https://github.com/openPMD/openPMD-visit-plugin/...Data Converter
No changes needed. Files from
1.X
will be forward compatible with regards to this change.