Repository navigation
Conversation
… validation. Conserve legacy behavior.
|
cscs-ci run cscs-ci-gh200 |
|
|
|
General comment: before this can go into master we need to make sure it works with several k of GPUs. @srikrrish in ALPINE which of the tests are with ORB == ON? |
Any of the Alpine example with load balancing threshold < 1 may invoke ORB (depending on the threshold). For example the usual value of 0.01 which means load balancing should be triggered when particle load imbalance in any rank exceeds 1% is a good start. I think Penning trap with more than 8 ranks might be the good stress test. @aliemen yes the initial parallel/serial decomposition should be preserved during ORB also. If not that was a bug and if this PR fixes it that's a good thing I would say. |
…r OPALX SwissFEL runs > 128 ranks
|
Update: Instead of overloads with an While running the unit test on 4 ranks I noticed that it only works <4 ranks, because ORB weights in the unit test were zero. Should be fixed now and passes on 1, 2, 4, 8 ranks. |
…ranks. Some helpers for previous allowedAxes are now obsolete
|
I activated "auto-merge". So once @srikrrish resolves the conversations, it should merge automatically (given that the tests pass) |
|
cscs-ci run cscs-ci-gh200, cscs-ci-mi300, cscs-ci-openmp |
closes #559
This PR generalizes the ORB class to allow decomposing in arbitrary axis. Now you can e.g. pass a
std::array<bool, Dim> allowedAxes = {false, false, true};array to indicate that you only want to decompose inz. The actual algorithm is more or less untouched. The addition is mostly in the helpers likefindAxis. Here an example in ourSwissFEL-booster-scinput file from the OPALX side with decomposition only inz:The decomposition works just fine only in
zdirection.Other changes:
findCutAxis(domain, allowedAxes)chooses the longest enabled axis,[1, cutAxisLength - 3],FieldLayoutand ORB weight field only after correct decomposition is found.