-
Notifications
You must be signed in to change notification settings - Fork 52
Resizable Datasets #829
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
Merged
Merged
Resizable Datasets #829
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
e5b23b0
to
68597c7
Compare
4a4375a
to
15e84e0
Compare
7fdd6b9
to
8ee6726
Compare
d70565d
to
94bcd79
Compare
febca48
to
0031bc2
Compare
Note to self: Rebase this back onto #927 once that one is rebased on the current dev. |
54a8c42
to
facaa3e
Compare
facaa3e
to
c5900a0
Compare
c5900a0
to
14c67b9
Compare
ax3l
approved these changes
Mar 23, 2021
5 tasks
ax3l
reviewed
Oct 18, 2021
std::iota( data2.begin(), data2.end(), 25 ); | ||
{ | ||
Series write( filename, Access::CREATE, MPI_COMM_WORLD ); | ||
if( ext == "bp" && write.backend() != "ADIOS2" ) |
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.
Oh no, this does not execute. The backend name is MPI_ADIOS2
.
Correct syntax: if( ext == "bp" && write.backend() == "MPI_ADIOS1" )
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Based on topic-available-chunks since that one will be merged soon anyway.Based on #927 since this requires ADIOS 2.7.0, see here for the diff.
Motivation: For some simulations, it is impossible to know at the beginning of writing an iteration's data e.g. the number of particles to expect until the end of the iteration. Hence, an iteration's datasets need to be resized while writing the iteration.
Hence, allow calling
RecordComponent::resetDataset
multiple times with multiple dimensions.EDIT: empty and constant record components can now be turned into one another and extending the extents of any of those two is fully supported.
TODO:
Apparently, the ADIOS2 semantics for resizing datasets are targeted for a different use case:Enable changing Variable shape (global dimensions) of global arrays w… ornladios/ADIOS2#2545 fixes this. This means, we'll need to wait for ADIOS 2.7.0 to merge this PR. This is also the reason for the failing tests.Variable<T>::SetShape
does nothing to a variable within the same ADIOS step. So, the ADIOS semantics for resizing datasets are for a use case that we have been supporting for a long time anyway (by creating new datasets for each iteration): Having different-sized datasets across steps/iterations. Unless I'm missing something, implementing this in ADIOS2 is currently not possible. Within the same step, ADIOS2 will currently fully ignore the resizing and any write operation to any of the extended places.There is already an old implementation of resizing datasets in there, it's just never been used and I'll need to check whether it works.HDF5 only allows this when writing with chunked storage HDF5: Chunking #406. So I suppose that this one is postponed until we implement writing chunked storage in HDF5.HDF5IOHandlerImpl::extendDataset
will now throw an exception that gives notice of this.