I am opening this issue to document a startup-scaling problem we are seeing when using Exodus meshes with a large number of labeled sets/side sets.
In a previous test, an Exodus mesh with roughly 20,000 total side sets and labeled sets took about 2–3 hours on NERSC before the simulation actually started. The run appeared to spend most of this time around mesh creation/partitioning, for example, near:
MESH_PartitionWithZoltan: Using partitioning method RCB for ZOLTAN
In my current mesh, the number of diagnostic regions is much larger, with approximately 7.4 times more total side sets and labeled sets. Based on the previous timing, the expected startup time could be:
3 hours × 7.4 ≈ 22.3 hours
This is a major practical issue because the maximum wall-time limit on NERSC is 48 hours. Spending about 22 hours just on startup / mesh-region loading would leave much less time for the actual simulation.
An important detail is that, for the steady-state and cyclic steady-state runs, most of these diagnostic regions are not referenced in the XML input file under either:
ParameterList name="regions" type="ParameterList"
or:
ParameterList name="observations" type="ParameterList"
However, because the labeled sets and side sets are present in the Exodus mesh itself, ATS/Amanzi still appears to spend substantial time during mesh creation/partitioning.
Would it be possible to improve this part of the mesh/region handling? For example:
- Only process Exodus labeled/side sets that are actually referenced in the XML input file.
- Speed up the loading or construction of regions from the Exodus mesh.
Any suggestions on best practices, possible input options, or future code improvements would be greatly appreciated.
Thank you very much.
I am opening this issue to document a startup-scaling problem we are seeing when using Exodus meshes with a large number of labeled sets/side sets.
In a previous test, an Exodus mesh with roughly 20,000 total side sets and labeled sets took about 2–3 hours on NERSC before the simulation actually started. The run appeared to spend most of this time around mesh creation/partitioning, for example, near:
MESH_PartitionWithZoltan: Using partitioning method RCB for ZOLTAN
In my current mesh, the number of diagnostic regions is much larger, with approximately 7.4 times more total side sets and labeled sets. Based on the previous timing, the expected startup time could be:
3 hours × 7.4 ≈ 22.3 hours
This is a major practical issue because the maximum wall-time limit on NERSC is 48 hours. Spending about 22 hours just on startup / mesh-region loading would leave much less time for the actual simulation.
An important detail is that, for the steady-state and cyclic steady-state runs, most of these diagnostic regions are not referenced in the XML input file under either:
ParameterList name="regions" type="ParameterList"
or:
ParameterList name="observations" type="ParameterList"
However, because the labeled sets and side sets are present in the Exodus mesh itself, ATS/Amanzi still appears to spend substantial time during mesh creation/partitioning.
Would it be possible to improve this part of the mesh/region handling? For example:
Any suggestions on best practices, possible input options, or future code improvements would be greatly appreciated.
Thank you very much.