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

ADIOS2: Write/Put In Sync Mode #777

Closed
wants to merge 3 commits into from
Closed

ADIOS2: Write/Put In Sync Mode #777

wants to merge 3 commits into from

Conversation

guj
Copy link
Contributor

@guj guj commented Sep 9, 2020

Using the Sync mode for now does:

  • save an additional memory copy (application memory footprint)?
  • has no performance impact currently (as of ADIOS 2.6.0)?
  • is more robust than the default deferred mode?

@ax3l ax3l requested review from franzpoeschel and ax3l September 21, 2020 17:21
@ax3l ax3l changed the title write files in sync mode, which is more robust. ADIOS2: Write/Put In Sync Mode Sep 21, 2020
Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see a suggestion inline. For such tweaks, we need to document a bit more background info (when it occurred and what)

src/IO/ADIOS/ADIOS2IOHandler.cpp Outdated Show resolved Hide resolved
@ax3l ax3l self-assigned this Sep 22, 2020
@ax3l ax3l self-requested a review September 23, 2020 17:17
@ax3l
Copy link
Member

ax3l commented Sep 23, 2020

This might be based on a misunderstanding, we are currently clarifying.

@guj
Copy link
Contributor Author

guj commented Sep 23, 2020

OK, since deferred mode will stay in ADIOS and openPMD is not going to run into data corruption issues due to misusing this mode, I will close this pull request. @ax3l

@ax3l ax3l closed this Sep 23, 2020
@ax3l
Copy link
Member

ax3l commented Sep 23, 2020

Sounds good, thanks!
openPMD::Series::flush(); is the API contract in openPMD-api that is equivalent to PerformPuts() in ADIOS2: it gives the shared users buffers free again.

The name is not ideal in our API, which is based on a misunderstanding at some point in the past. Our API (as well as ADIOS') does not make a guarantee when things will arrive on disk (the historical meaning of "flush"). It should also not make a guarantee that written data is at this point "consistent to openPMD" - but it sometimes does this as of now.

The idea is to trigger completion of the latter with additional ::close() methods #778 #746, e.g. by writing additional openPMD information that was not changed from their defaults.

We are planning a simple always-sync mode #484 that just flush()es the provided data buffers synchronously.
openPMD conformance would be at latest be ensured at Series, Iteration or Record closure, in the order: (implicit) close and (implicit) flush.

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

Successfully merging this pull request may close these issues.

2 participants