-
Notifications
You must be signed in to change notification settings - Fork 51
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
Variable-Based iteration layout #855
Conversation
The latest commit removes the
I'm not sure how to feel about this. Would this lead to problems? Are attributes commonly written to
|
82777da
to
73cb618
Compare
73cb618
to
0c1b5b8
Compare
2191931
to
201c9db
Compare
6d5b3bf
to
d397cce
Compare
Hi @franzpoeschel, can you please rebase this PR for review? :)
The layout without the extra group is exactly what we want. Attributes that were on each I would rename For tests, I would say we can add as we do the "ext"(ension) argument for many steps another "encoding" argument and just increase write/read coverage by running many more unit tests through it. |
d397cce
to
ea327c4
Compare
This iteration layout requires use of the streaming API, so the number of tests we can hijack is limited by that. But testing can surely be extended there. |
Done
It's also a bit helpful for implementation. This way, I can inquire
Done |
Should we default to the new attribute layout #813 with Maybe I overlook it in the review, but I cannot spot where this is exactly triggered in this PR if it is. |
12b6827
to
261ac39
Compare
497ae3e
to
d05a222
Compare
d05a222
to
3bf4aec
Compare
52f311e
to
480d343
Compare
Think I found an ancient bug: ADIOS1 reports the datatype of |
a9e5d9c
to
21418ce
Compare
The ADIOS2 backend will now automatically switch to the new layout when selecting step-based iteration encoding. Otherwise, this is ready for review from my side :) @ax3l |
Awesome, can you please rebase out the little merge conflicts from the last merge and I'll get to it before I am on PTO :-) |
Datasets wth changing dimensions require re-parsing
When re-parsing a Series, we must keep old handles valid, but we might need to delete stale map members.
Test still failing
21418ce
to
db5f0a7
Compare
Passing apart from a CI run that fails to initialize. I think this one is ready @ax3l |
Awesome! Addressing the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! 🚀 ✨
@franzpoeschel I just realized: did we intentionally call this now |
I initially named the new encoding "step-based", but in an offline discussion you suggested the use of "variable-based" encoding to stress the fact that we are using variables, i.e. datasets with version numbers, to encode openPMD iterations. @ax3l |
@franzpoeschel Thanks. I looked at this again from an openPMD perspective, where we don't define the term "variable". It's generally ok-ish to go with |
Based on topic-adios-variables-for-attributes since "variable attributes" are needed for this.For comparing the changes: franzpoeschel/openPMD-api@topic-adios-variables-for-attributes...franzpoeschel:topic-stepbased
This adds a third iteration layout to the openPMD API: Next to file-based and group-based, a step-based layout.
Idea: ADIOS prefers consuming data in steps. Until now, the openPMD API created entirely new datasets for each iteration, while ADIOS(2) actually allows to reuse datasets across steps. A simple dataset may now look like this in ADIOS2:
This helps controlling the amount of metadata by reusing attributes and variables across steps.
TODO:
currentIteration
group and merge contents with layer above.EDIT: See comment below, there are pros and cons and this should be discussed first.
iterationFormat
and similar attributesdata%V.bp
for automatic recognition of the iteration layout?Update: Doesn't work at the moment. I know the reason, need to find a way to fix it.
Update: I've reordered the PRs, this is now based on lazy parsing of iterations #938 (lazy parsing). In lazy parsing mode, this now works. In eager parsing, parsing is done before any step is opened and datasets are not (yet) re-parsed. Fix that.
Update: Both should be working now.
__step__
tosnapshot
(see Rename Iteration openPMD-standard#148)