Skip to content

BP3 in ADIOS2: Reads Fail on Some Attributes #726

Open
@ax3l

Description

@ax3l

Describe the bug
I seams there are problems reading a BP3 file from ADIOS1 with the ADIOS2 backend, with regards to reading the /openPMD base path string attribute: ComputationalRadiationPhysics/picongpu#3223 (comment)

To Reproduce

Create BP3 files with

export OPENPMD_BP_BACKEND="ADIOS1"

and then try to read generated files with ADIOS2:

# ADIOS2 bpls
$ bpls -l -A ./samples/thetaMode_00200.bp
# ...
  string    /data/200/meshes/E/axisLabels          attr   = {"r", "z"}
  string    /data/200/meshes/E/dataOrder           attr   = "C"
  string    /data/200/meshes/E/geometry            attr   = "thetaMode"
  string    /data/200/meshes/E/geometryParameters  attr   = "m=4;imag=+"
  double    /data/200/meshes/E/gridGlobalOffset    attr   = {0, 0}
  double    /data/200/meshes/E/gridSpacing         attr   = {1, 1}
# ...
  string    /openPMD                               attr   = "1.1.0"
  uint32_t  /openPMDextension                      attr   = 0
  string    /software                              attr   = "openPMD-api"
  string    /softwareVersion                       attr   = "0.12.0-dev"

So far so good, but /data/200/meshes/E/gridUnitSI is missing (the unit test that writes this data even sets it explicitly.)

If I write the same data set with ADIOS2, the /data/200/meshes/E/gridUnitSI is present.

Python read

export OPENPMD_BP_BACKEND="ADIOS2"
export PYTHONPATH=$PWD/lib/python3.7/site-packages/:$PYTHONPATH

then

import openpmd_api as io

s = io.Series("samples/thetaMode_%T.bp", io.Access_Type.read_only)
Warning: ADIOS2 is not configured in the JSON configuration. Running with default settings.
[ADIOS2] Warning: Attribute with name /data/200/meshes/E/gridUnitSI has no type in backend.
[ADIOS2] Warning: Attribute with name /data/200/meshes/E/gridUnitSI has no type in backend.
[~ADIOS2IOHandler] An error occurred: [ADIOS2] Requested attribute (/data/200/meshes/E/gridUnitSI) not found in backend.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: [ADIOS2] Requested attribute (/data/200/meshes/E/gridUnitSI) not found in backend.

2nd Bug: With PIConGPU ADIOS1 files ... (need to create new ones)

import openpmd_api as io

s = io.Series("simData_%T.bp", io.Access_Type.read_only)
[ADIOS2] Warning: Attribute with name /openPMD has no type in backend.
[ADIOS2] Warning: Attribute with name /openPMD has no type in backend.
terminate called after throwing an instance of 'std::runtime_error'
  what(): [ADIOS2] Requested attribute (/openPMD) not found in backend.

Expected behavior
Should be readible via the ADIOS2 BP3 engine.

Software Environment

  • version of openPMD-api: 0.11.0 and dev as of d7a16a1
  • installed openPMD-api via: from source (and user report below)
  • operating system: Ubuntu 18.04
  • machine: local laptop
  • name and version of Python implementation: CPython 3.7.7
  • version of HDF5: 1.10.6
  • version of ADIOS1: 1.13.1
  • version of ADIOS2: 2.5.0
  • name and version of MPI: MPICH 3.3.2

Additional context
First seen in ComputationalRadiationPhysics/picongpu#3223 (comment)
with PIConGPU data:

[ADIOS2] Warning: Attribute with name /openPMD has no type in backend.
[ADIOS2] Warning: Attribute with name /openPMD has no type in backend.
terminate called after throwing an instance of 'std::runtime_error'
  what(): [ADIOS2] Requested attribute (/openPMD) not found in backend.

P.S.: should we really print a warning

Warning: ADIOS2 is not configured in the JSON configuration. Running with default settings.

?

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions