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: Fix BTD Particle Resize w/ Empty Ranks #3657

Merged
merged 3 commits into from
Feb 2, 2023

Conversation

ax3l
Copy link
Member

@ax3l ax3l commented Jan 31, 2023

For ADIOS2 BP4 and BP5 particle BTD writes, setting an update of a variable's (openPMD record's) shape is not sufficient to drop all meta-data on disk. In situations where the last write to a BTD stage only adds further particles from a few ranks, we need to pad with zero-block writes so ADIOS2 Put gets called.

Backend details:

  • BP4 (as of ADIOS 2.8): last MPI rank's Put meta-data wins
  • BP5 (as of ADIOS 2.8): everyone has to write an empty block

Tests

6 MPI ranks w/ CUDA on Summit with read-back as in #3389

  • Inputs: inputs.txt
  • Run: jsrun -r 6 -a 1 -g 1 -c 7 -l GPU-CPU -d packed -b rs --smpiargs="-gpu" ./warpx.RZ.MPI.CUDA.DP.PDP.OPMD.PSATD.QED inputs.txt
  • Test command: python3 -c "from openpmd_viewer import OpenPMDTimeSeries; ts = OpenPMDTimeSeries('./diags/diag_btd/'); ts.get_particle(['x'], iteration=1)"

Results:

  • reproduced on development
  • same test, with PR applied, passed
  • same test, with PR applied, and with compression operators (blosc) enabled, passed

Requires this patch in openPMD-viewer: openPMD/openPMD-viewer#355

Related Issues

@ax3l ax3l added bug Something isn't working bug: affects latest release Bug also exists in latest release version component: diagnostics all types of outputs component: boosted frame boosted frame components & logic labels Jan 31, 2023
@ax3l ax3l added component: third party Changes in WarpX that reflect a change in a third-party library workaround component: openPMD openPMD I/O labels Jan 31, 2023
@ax3l ax3l changed the title ADIOS2: Fix BTD Resize w/ Empty Ranks ADIOS2: Fix BTD Particle Resize w/ Empty Ranks Jan 31, 2023
For ADIOS2 BP4 and BP5 writes, setting an update of a variable's
(openPMD record's) shape is not sufficient to drop all meta-data
on disk. In situations where the last write to a BTD stage only
adds further particles from a few ranks, we need to pad with
zero-block writes so ADIOS2 `Put` gets called.

Backend details:
- BP4 (as of ADIOS 2.8): last MPI rank's `Put` meta-data wins
- BP5 (as of ADIOS 2.8): everyone has to write an empty block
@ax3l ax3l changed the title ADIOS2: Fix BTD Particle Resize w/ Empty Ranks [WIP] ADIOS2: Fix BTD Particle Resize w/ Empty Ranks Feb 1, 2023
Compact and general, including MR situations.
@ax3l ax3l changed the title [WIP] ADIOS2: Fix BTD Particle Resize w/ Empty Ranks ADIOS2: Fix BTD Particle Resize w/ Empty Ranks Feb 2, 2023
@ax3l ax3l requested a review from n01r February 2, 2023 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug: affects latest release Bug also exists in latest release version bug Something isn't working component: boosted frame boosted frame components & logic component: diagnostics all types of outputs component: openPMD openPMD I/O component: third party Changes in WarpX that reflect a change in a third-party library workaround
Projects
None yet
Development

Successfully merging this pull request may close these issues.

BackTransformDiagnostics: position offset does not have consistent number of macroparticle
2 participants