Skip to content
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

Particles: Support Auto-Shape Counting #1374

Closed
ax3l opened this issue Feb 13, 2023 · 5 comments · Fixed by #1382
Closed

Particles: Support Auto-Shape Counting #1374

ax3l opened this issue Feb 13, 2023 · 5 comments · Fixed by #1382

Comments

@ax3l
Copy link
Member

ax3l commented Feb 13, 2023

For particles, we need to investigate how we can deine openPMD Datatyopes that have only a local size, where their global size is determined at runtime.

This currently would only work with ADIOS2 2.9+ using JoinedArrays and would safe users from having to do collective All2All comms (reduce sum and a scan) for particle global sizes and offsets prior to I/O.

Related to: ornladios/ADIOS2#3452

@ax3l
Copy link
Member Author

ax3l commented Feb 13, 2023

attn @guj @franzpoeschel :)

@ax3l
Copy link
Member Author

ax3l commented Feb 21, 2023

As a first step, we need to define the equivalent of adios2::JoinedDim in openPMD-api for our dataset definitions.

Then we might need to disable a few shape checks in writing when this size is used (since it's max-size - N, this might not be needed; maybe we can also encode this as a state in the data type w/o magic constants).

@franzpoeschel
Copy link
Contributor

Since this feature is relevant for basically all parallel code that writes particles, we should (as a second step) implement this also in openPMD, so that those codes still stay compatible with HDF5.
Using MPI collectives to determine local block offsets inside the particle list is a really common pattern for using openPMD in such code, and this is a great chance to eliminate this pattern, while still staying compatible with all openPMD backends.

@ax3l
Copy link
Member Author

ax3l commented Feb 26, 2023

ADIOS2 now implements in the master (upcoming 2.9 release) JoinedArrays in both BP4 and BP5.
ornladios/ADIOS2#3452 (comment)

As a first step, we need to support this in the shape of our openPMD::Dataset definition and add support to our ADIOS2 backend.

@franzpoeschel
Copy link
Contributor

A challenge will be the support for particle patches.
Does ADIOS2 give a guarantee that the joined order of chunks is determined deterministically from the order in which IO operations are enqueued (even in parallel)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants