openPMD / openPMD-standard

:notebook: Open Standard for Particle-Mesh Data
http://www.openPMD.org
Creative Commons Attribution 4.0 International
79 stars 29 forks source link

particle patches with overlapping extents #269

Open psychocoderHPC opened 2 years ago

psychocoderHPC commented 2 years ago

OpenPMD is defining particle patches https://github.com/openPMD/openPMD-standard/blob/1e1d1fe9fd5914628898ab36fb516c4cfc27eeca/STANDARD.md#sub-group-for-each-particle-species to speedup visualization/checkpointing and other operations. Particle patches are a spatial region description with a link, defined by numParticles and numParticlesOffset to the large particle data array. The standard is not defining if it is allowed that the description of a patch (offset and extent) must be unique or if it is allowed that patch description to overlap.

example:

patch 1: offset=3;extent=10;numParticles100;numParticlesOffset=0
patch 2: offset=8;extent=20;numParticles10;numParticlesOffset=100

IMO it is not a problem and very useful but with the restriction that a particle described by numParticles100 and numParticlesOffset can only exist in one patch even if two patches overlap in their spatial description.

Can we clarify this in the standard?

I came up with this during the refactoring of the particle IO in PIConGPU where I like to introduce some kind of load balancing. To be more flexible I would like to linearize my domain to have more possibilities and simpler solutions for the domain decomposition. If I linearize my domain I will end up with multiple patches overlapping in there spatial description but where each particle is guaranteed to be linked only from one patch.

psychocoderHPC commented 2 years ago

A scatch with 3 particle patches. Patches are overlapping but each particle is only linked from one particle patch. openPMD-particle_patches

ax3l commented 2 years ago

Thanks for raising this. So just to clarify: you ask if the patch constraints allow

I think that sounds reasonable and should cause little issues, let me check if the wording needs an update.

ax3l commented 2 years ago

Current wording as of 1.1.0:

Patches of particles must be hyperrectangles [...]. The union of all particle patches must correspond to the complete particle's records.

That does not mean it has to be unique, so we are good here. You can do that and it fulfills the standard in openPMD 1.X :) There is also no plan to restrict this in 2.X.

psychocoderHPC commented 2 years ago

Thanks for the answer.

  1. I am voting for an update of the standard where it is explicitly mentioned that particle patches can be overlapping.
  2. optionally. I am voting for restricting the standard and allowing that each particle can only be part of one patch. If multiple patches can link a particle then it is tough to detect particles linked from more than one patch. This is not a problem if particle patches are not overlapping.
ax3l commented 2 years ago

Sounds good, marked for clarification in 2.0.