Skip to content

Best practices on writing attributes at large scale #4682

@pgrete

Description

@pgrete

In the context of writing large outputs (several tens to hundreds of TB from 10k+ ranks) with attributes, I came across #4237 again and am now wondering about best practices.

For context: in our application (block structured adaptive mesh refinement) each attribute is known on 1 to N ranks, i.e., it may be known only on a single rank, on all ranks (guaranteed to be identical on all ranks) or on any number in between.

In the case where it's known on all ranks the solution in #4237 worked well as a single rank could just write it.

In the case were only a subset of ranks know about some attributes, I ran into an issue with this flag.
I (naively) assumed that adios2.attribute_writing_ranks = 0 would result in some internal communication so that attributes written by other ranks were transferred to the writing ranks (like the two level data write).
However, the attributes written by ranks other than the writing_ranks were just ignored and didn't make it to disk.

So I went back to "all ranks write" again just to bump into the GathervArrays restriction again.

My question is: is this sth I should fix in our code (i.e., communicate/aggregate the attributes to the known writing ranks) or what's the best approach/fix here?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions