-
Notifications
You must be signed in to change notification settings - Fork 144
Description
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?