Skip to content

Overhead with variable-based bp5 series #1859

@aeriforme

Description

@aeriforme

Describe the bug
Performance kill when opening/closing a variable-based bp5 series with many iterations.

To Reproduce
Standalone reproducer in Python:

import openpmd_api as io
from tqdm import tqdm
adios2_cfg = r'''
{
  "iteration_encoding": "variable_based",
  "adios2": {
    "engine": {
      "type": "bp5",
      "parameters": {
        "StatsLevel": "0"
      }
    }
  }
}
'''
OUTPUT_PATH = "myseries.bp5"
series = io.Series(OUTPUT_PATH, io.Access_Type.create_linear, adios2_cfg)
N = 1000000
for i in tqdm(range(N)):
    it = series.snapshots()[i]
    it.close()

Expected behavior
I expect much less overhead just to open/close the iterations, and not to change in time.

Software Environment

  • version of openPMD-api: 0.17.0
  • installed openPMD-api via: conda-forge
  • operating system:
  • machine: Perlmutter at NERSC - login nodes
  • name and version of Python implementation: CPython 3.11.14
  • version of ADIOS2: 2.11.0
  • name and version of MPI: N/A

Additional context
The overhead builds up as the loop moves through the iterations.
Starts around ~1k iterations/s and goes down to ~200 iterations/s after ~100k iterations.

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions