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

Add ADIOS2 sample #14

Merged
merged 4 commits into from
Apr 23, 2021
Merged

Add ADIOS2 sample #14

merged 4 commits into from
Apr 23, 2021

Conversation

franzpoeschel
Copy link
Contributor

@franzpoeschel franzpoeschel commented Apr 6, 2021

I'm currently working on new schemas for ADIOS2, so we should add tests to verify that we keep backwards compatibility.

Created with PIConGPU / LaserWakefield simulation, openPMD API 0.12.0 and ADIOS 2.7.0 with parameters:

mpirun -n 2 picongpu -s 550 -d 1 2 1 -g 56 56 28 --openPMD.period 50 --openPMD.file stream --openPMD.infix NULL --openPMD.ext bp --openPMD.json '{ "adios2": { "engine":{ "usesteps": true, "type": "bp4", "parameters": { "InitialBufferSize": "2Gb", "Profile": "On" } }, "dataset": { "operators": [] } } } ' --versionOnce --checkpoint.backend openPMD --checkpoint.period 500 --checkpoint.restart --checkpoint.restart.backend openPMD

This is purposefully executed with two parallel instances in order to create datasets that are composed from multiple blocks. Output of bpls -D:

  float     /data/550/fields/B/x                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/B/y                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/B/z                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/E/x                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/E/y                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/E/z                                      {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/e_chargeDensity                          {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/e_energyDensity                          {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  float     /data/550/fields/e_particleMomentumComponent              {32, 64, 56}
        step 0: 
          block 0: [ 0:31,  0:31,  0:55]
          block 1: [ 0:31, 32:63,  0:55]
  uint64_t  /data/550/fields/picongpu_idProvider/nextId               {1, 2, 1}
        step 0: 
          block 0: [0:0, 0:0, 0:0]
          block 1: [0:0, 1:1, 0:0]
  uint64_t  /data/550/fields/picongpu_idProvider/startId              {1, 2, 1}
        step 0: 
          block 0: [0:0, 0:0, 0:0]
          block 1: [0:0, 1:1, 0:0]
  float     /data/550/particles/e/momentum/x                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  float     /data/550/particles/e/momentum/y                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  float     /data/550/particles/e/momentum/z                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  uint64_t  /data/550/particles/e/particlePatches/extent/x            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/extent/y            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/extent/z            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/numParticles        {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/numParticlesOffset  {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/offset/x            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/offset/y            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  uint64_t  /data/550/particles/e/particlePatches/offset/z            {2}
        step 0: 
          block 0: [0:0]
          block 1: [1:1]
  float     /data/550/particles/e/position/x                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  float     /data/550/particles/e/position/y                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  float     /data/550/particles/e/position/z                          {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  int32_t   /data/550/particles/e/positionOffset/x                    {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  int32_t   /data/550/particles/e/positionOffset/y                    {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  int32_t   /data/550/particles/e/positionOffset/z                    {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]
  float     /data/550/particles/e/weighting                           {35915}
        step 0: 
          block 0: [    0:  518]
          block 1: [  519:35914]

Todo:

  • Maybe use more parallel writers to have higher block counts?

Created with PIConGPU / LaserWakefield simulation with parameters:
mpirun -n 2 picongpu -s 550 -d 1 2 1 -g 56 56 28 --openPMD.period 50
--openPMD.file stream --openPMD.infix NULL --openPMD.ext bp
--openPMD.json '{   "adios2": {     "engine":
{       "usesteps": true,       "type":
"bp4",       "parameters": {         "InitialBufferSize": "2Gb",
"Profile": "On"       }     },     "dataset": {       "operators": [
]     }   } } ' --versionOnce --checkpoint.backend openPMD
--checkpoint.period 500 --checkpoint.restart
--checkpoint.restart.backend openPMD
@ax3l
Copy link
Member

ax3l commented Apr 6, 2021

More blocks is a good idea! You can also make the PIConGPU supercell (memory.param) smaller, e.g. 4x4x4, to make even smaller simulations with multiple MPI ranks (just makes the sim a little slower, but we are out for data size here).
Can you please also document the ADIOS2 version that was used in the PR description?

@franzpoeschel
Copy link
Contributor Author

More blocks is a good idea! You can also make the PIConGPU supercell (memory.param) smaller, e.g. 4x4x4, to make even smaller simulations with multiple MPI ranks (just makes the sim a little slower, but we are out for data size here).

Alright, will try that. (I could theoretically use openpmd-pipe to cut the chunks smaller, but I think it's better to use openPMD 0.12.0, so I'll try running it more in parallel first.)

Can you please also document the ADIOS2 version that was used in the PR description?

Done

@franzpoeschel
Copy link
Contributor Author

Also, ADIOS2 uses aggregation per node, so every block will be on sourceID == 0. Does that matter for your tests?

@ax3l
Copy link
Member

ax3l commented Apr 6, 2021

Since we want to use this for read tests, I would say disable node-aggregation so we have more meta-data that we can test

@franzpoeschel
Copy link
Contributor Author

Done a further run with parameters:

mpirun --oversubscribe -n 16 picongpu -s 550 -d 2 4 2 -g 56 56 28 --openPMD.period 50 --openPMD.file stream --openPMD.infix NULL --openPMD.ext bp --openPMD.json '{ "adios2": { "engine": { "usesteps": true, "type": "bp4", "parameters": { "AggregatorRatio": "1", "InitialBufferSize": "2Gb", "Profile": "On" } }, "dataset": { "operators": [ ] } } } ' --versionOnce --checkpoint.backend openPMD --checkpoint.period 500 --checkpoint.restart.backend openPMD --openPMD.dataPreparationStrategy hdf5 --checkpoint.openPMD.dataPreparationStrategy hdf5 --checkpoint.restart

tldr: disable node aggregation, use 16 parallel writers in a 2x4x2 domain decomposition

bpls -D gives:

  float     /data/550/fields/B/x                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/B/y                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/B/z                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/E/x                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/E/y                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/E/z                                      {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/e_chargeDensity                          {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/e_energyDensity                          {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  float     /data/550/fields/e_particleMomentumComponent              {64, 96, 64}
        step 0: 
          block  0: [ 0:31,  0:31,  0:31]
          block  1: [32:63,  0:31,  0:31]
          block  2: [ 0:31, 32:47,  0:31]
          block  3: [32:63, 32:47,  0:31]
          block  4: [ 0:31, 48:63,  0:31]
          block  5: [32:63, 48:63,  0:31]
          block  6: [ 0:31, 64:95,  0:31]
          block  7: [32:63, 64:95,  0:31]
          block  8: [ 0:31,  0:31, 32:63]
          block  9: [32:63,  0:31, 32:63]
          block 10: [ 0:31, 32:47, 32:63]
          block 11: [32:63, 32:47, 32:63]
          block 12: [ 0:31, 48:63, 32:63]
          block 13: [32:63, 48:63, 32:63]
          block 14: [ 0:31, 64:95, 32:63]
          block 15: [32:63, 64:95, 32:63]
  uint64_t  /data/550/fields/picongpu_idProvider/nextId               {2, 4, 2}
        step 0: 
          block  0: [0:0, 0:0, 0:0]
          block  1: [1:1, 0:0, 0:0]
          block  2: [0:0, 1:1, 0:0]
          block  3: [1:1, 1:1, 0:0]
          block  4: [0:0, 2:2, 0:0]
          block  5: [1:1, 2:2, 0:0]
          block  6: [0:0, 3:3, 0:0]
          block  7: [1:1, 3:3, 0:0]
          block  8: [0:0, 0:0, 1:1]
          block  9: [1:1, 0:0, 1:1]
          block 10: [0:0, 1:1, 1:1]
          block 11: [1:1, 1:1, 1:1]
          block 12: [0:0, 2:2, 1:1]
          block 13: [1:1, 2:2, 1:1]
          block 14: [0:0, 3:3, 1:1]
          block 15: [1:1, 3:3, 1:1]
  uint64_t  /data/550/fields/picongpu_idProvider/startId              {2, 4, 2}
        step 0: 
          block  0: [0:0, 0:0, 0:0]
          block  1: [1:1, 0:0, 0:0]
          block  2: [0:0, 1:1, 0:0]
          block  3: [1:1, 1:1, 0:0]
          block  4: [0:0, 2:2, 0:0]
          block  5: [1:1, 2:2, 0:0]
          block  6: [0:0, 3:3, 0:0]
          block  7: [1:1, 3:3, 0:0]
          block  8: [0:0, 0:0, 1:1]
          block  9: [1:1, 0:0, 1:1]
          block 10: [0:0, 1:1, 1:1]
          block 11: [1:1, 1:1, 1:1]
          block 12: [0:0, 2:2, 1:1]
          block 13: [1:1, 2:2, 1:1]
          block 14: [0:0, 3:3, 1:1]
          block 15: [1:1, 3:3, 1:1]
  float     /data/550/particles/e/momentum/x                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  float     /data/550/particles/e/momentum/y                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  float     /data/550/particles/e/momentum/z                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  uint64_t  /data/550/particles/e/particlePatches/extent/x            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/extent/y            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/extent/z            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/numParticles        {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/numParticlesOffset  {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/offset/x            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/offset/y            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  uint64_t  /data/550/particles/e/particlePatches/offset/z            {16}
        step 0: 
          block  0: [ 0: 0]
          block  1: [ 1: 1]
          block  2: [ 2: 2]
          block  3: [ 3: 3]
          block  4: [ 4: 4]
          block  5: [ 5: 5]
          block  6: [ 6: 6]
          block  7: [ 7: 7]
          block  8: [ 8: 8]
          block  9: [ 9: 9]
          block 10: [10:10]
          block 11: [11:11]
          block 12: [12:12]
          block 13: [13:13]
          block 14: [14:14]
          block 15: [15:15]
  float     /data/550/particles/e/position/x                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  float     /data/550/particles/e/position/y                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  float     /data/550/particles/e/position/z                          {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  int32_t   /data/550/particles/e/positionOffset/x                    {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  int32_t   /data/550/particles/e/positionOffset/y                    {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  int32_t   /data/550/particles/e/positionOffset/z                    {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]
  float     /data/550/particles/e/weighting                           {265489}
        step 0: 
          block  0: [     0:     3]
          block  1: [     4:    12]
          block  2: [    13:  3288]
          block  3: [  3289:  6170]
          block  4: [  6171: 24251]
          block  5: [ 24252: 42329]
          block  6: [ 42330: 87523]
          block  7: [ 87524:132925]
          block  8: [132926:132928]
          block  9: [132929:135783]
          block 10: [135784:138230]
          block 11: [138231:156254]
          block 12: [156255:174244]
          block 13: [174245:219710]
          block 14: [219711:265488]

Commit will follow in a minute.

Also deactivate node aggregation
@ax3l
Copy link
Member

ax3l commented Apr 7, 2021

This is cool, awesome! The simulation box size is a bit narrow and thus the LWFA sim looks a bit adventurous (not really an LWFA anymore), but the data is good enough and super nice in size for testing! (We can just rename it here to avoid confusion to example-3d-bp4.tar.gz)

Optional for merge here, but general comment for PIConGPU:

I think the mass and charge particle records are missing in the output, can you please re-add them in PIConGPU?
https://github.com/openPMD/openPMD-standard/blob/upcoming-2.0.0/EXT_ED-PIC.md
I thought ComputationalRadiationPhysics/picongpu#3389 fixed this, but they seem to be missing here.

@ax3l
Copy link
Member

ax3l commented Apr 20, 2021

I thought a bit more about a name that tells what's inside (format and dimension wise), e.g. example-3d-bp4.tar.gz :)

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.

Thank you for adding this :)

@ax3l ax3l merged commit 72545c4 into openPMD:draft Apr 23, 2021
@ax3l ax3l self-assigned this Apr 23, 2021
@ax3l
Copy link
Member

ax3l commented Jul 3, 2021

@franzpoeschel I found a bug in this data set that we need to fix and replace.
The constant record components have an undefined shape:

$ bpls -al samples/git-sample/3d-bp4/example-3d-bp4.bp/
  uint64_t  /data/550/particles/e/charge/shape                               attr   = 0
  uint64_t  /data/550/particles/e/mass/shape                                 attr   = 0

They should read:

  uint64_t  /data/550/particles/e/charge/shape                               attr   = 265489
  uint64_t  /data/550/particles/e/mass/shape                                 attr   = 265489

just like the non-constant particle record lengths.

@ax3l
Copy link
Member

ax3l commented Jul 3, 2021

@franzpoeschel
Copy link
Contributor Author

Good catch! I think we should get back to this once the bug is fixed in PIConGPU?

@ax3l
Copy link
Member

ax3l commented Jul 10, 2021

Bug fixed in PIConGPU via ComputationalRadiationPhysics/picongpu#3678 🎉

Yes, ready now to replace :)

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

Successfully merging this pull request may close these issues.

2 participants