Skip to content

Performance bug: Premature IO flushing when using scalar components #1263

Description

@franzpoeschel

See this line, similarly in Record.cpp.

In some backends, there are performance benefits from avoiding flushes before closing an iteration:

  • BP4 engine of ADIOS2: The internal ADIOS2 buffer will be allocated to the correct size upon Engine::EndStep(). If flushing before that, it needs to be allocated before ending the step and might need to be resized later.
  • BP5 engine of ADIOS2: Flushing in BP5 might cause unnecessary copies into internal buffers. If using deferred Put() and EndStep() only, BP5 can avoid copies entirely.

Calling IOHandler()->flush() at those place ruins this and should be replaced with something more fine-grained.
It's currently essentially impossible to avoid these unnecessary copies into BP5 buffers while using scalar components.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions