When using static load balancing with ls1+autopas, the force calculation time reduces, but the time taken by the mamico steps per MD timestep increases. It seems like mamico only cares about number of coupling cells per rank and not number of molecules per rank, and thus, in a state balanced by molecules, the cells are not balanced. So if the domain size is small, then the mamico runtime dominates, and loadbalanced scenarios are performing worse.
This was noticed while trying to balance a droplet scenario. For a couette scenario, this wasn't noticed. Therefore, for denser setups, this isn't an issue, since the coupling overhead is sufficiently smaller than the computation.
Some example outputs (all mamico+ls1+autopas, 2 md instances, and my multiphase droplet scenario, and mamico cellsize 5) are given below. Compare the force calculation time to the MamicoCoupling plugin time. The computation time combines both, despite the weird alignment. All particle counts are estimated. All temperatures are 0.8.
For MD120, relevant values:
Droplet diameter: 80
Liquid density: 0.73056664
Vapour density: 0.01991599
MD120, 4 ranks per axis, equally partitioned, 128 ranks,
per subdomain: max particles: 18213 min particles: 538 max density: 0.6745469705 min density: 0.01991599000
INFO: 2025-03-30T00:57:32 161.93 [0] Computation in main loop took: 80.3111 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Decomposition took: 5.47365 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Container update took: 0.254231 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Communication took: 5.21271 sec
INFO: 2025-03-30T00:57:32 161.93 [0] initSend() took: 0.442844 sec
INFO: 2025-03-30T00:57:32 161.93 [0] testRecv() took: 0.0856563 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Cache update took: 0.000861809 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Computation took: 74.807 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Force calculation took: 26.7712 sec
INFO: 2025-03-30T00:57:32 161.93 [0] IO in main loop took: 0.0239461 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Plugin MamicoCoupling took: 24.1269 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Enforcing boundary conditions took: 0.00191764 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Timer SIMULATION_IO took: 0 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Phasespace creation took: 0.306877 sec
INFO: 2025-03-30T00:57:32 161.93 [0] Final IO took: 1.607e-05 sec
MD120, 4 ranks per axis, balanced in ratio x="9 ; 3 ; 3 ; 9" y="9 ; 3 ; 3 ; 9" z="9 ; 3 ; 3 ; 9", 128 ranks
per subdomain: max particles: 3889 min particles: 2466 max density: 0.7305666400 min density: 0.03491958966
INFO: 2025-03-30T00:50:55 296.865 [0] Computation in main loop took: 149.326 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Decomposition took: 2.80304 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Container update took: 0.793163 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Communication took: 2.00244 sec
INFO: 2025-03-30T00:50:55 296.865 [0] initSend() took: 1.31857 sec
INFO: 2025-03-30T00:50:55 296.865 [0] testRecv() took: 0.489584 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Cache update took: 0.000848305 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Computation took: 146.464 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Force calculation took: 6.32611 sec
INFO: 2025-03-30T00:50:55 296.865 [0] IO in main loop took: 0.0528344 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Plugin MamicoCoupling took: 139.689 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Enforcing boundary conditions took: 0.0026409 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Timer SIMULATION_IO took: 0 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Phasespace creation took: 0.29144 sec
INFO: 2025-03-30T00:50:55 296.865 [0] Final IO took: 1.7023e-05 sec
For MD180, relevant values:
Droplet diameter: 100
Liquid density: 0.73049450
Vapour density: 0.01988934
md180, 4 ranks per axis, equally partitioned, 64 ranks
per subdomain: max particles: 46300 min particles: 1812 max density: 0.5080906812 min density: 0.01988934000
INFO: 2025-03-30T01:52:45 264.836 [0] Computation in main loop took: 253.426 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Decomposition took: 5.81495 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Container update took: 0.657443 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Communication took: 5.15084 sec
INFO: 2025-03-30T01:52:45 264.836 [0] initSend() took: 1.14164 sec
INFO: 2025-03-30T01:52:45 264.836 [0] testRecv() took: 0.148227 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Cache update took: 0.000795103 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Computation took: 247.58 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Force calculation took: 60.3213 sec
INFO: 2025-03-30T01:52:45 264.836 [0] IO in main loop took: 0.025381 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Plugin MamicoCoupling took: 126.98 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Enforcing boundary conditions took: 0.00183197 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Timer SIMULATION_IO took: 0 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Phasespace creation took: 0.641713 sec
INFO: 2025-03-30T01:52:45 264.836 [0] Final IO took: 1.9647e-05 sec
md180, 4 raNks per axis, ratio 10,8,8,10 for x, 9,9,9,9 for y and z, 64 ranks
per subdomain: max particles: 44169 min particles: 1611 max density: 0.5452963200 min density: 0.01988934000
INFO: 2025-03-30T01:58:04 254.864 [0] Computation in main loop took: 243.041 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Decomposition took: 2.29667 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Container update took: 0.735421 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Communication took: 1.55442 sec
INFO: 2025-03-30T01:58:04 254.864 [0] initSend() took: 1.27205 sec
INFO: 2025-03-30T01:58:04 254.864 [0] testRecv() took: 0.158925 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Cache update took: 0.000798889 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Computation took: 240.711 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Force calculation took: 57.7005 sec
INFO: 2025-03-30T01:58:04 254.864 [0] IO in main loop took: 0.0268437 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Plugin MamicoCoupling took: 162.466 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Enforcing boundary conditions took: 0.00200887 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Timer SIMULATION_IO took: 0 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Phasespace creation took: 0.688376 sec
INFO: 2025-03-30T01:58:04 254.864 [0] Final IO took: 2.1109e-05 sec
md180, 4 ranks per axis, ratio 10,8,8,10 for all x, y and z, 64 ranks
per subdomain: max particles: 39972 min particles: 1989 max density: 0.6245643667 min density: 0.01988934000
INFO: 2025-03-30T03:36:57 293.6 [0] Computation in main loop took: 281.852 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Decomposition took: 2.77866 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Container update took: 0.901442 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Communication took: 1.87055 sec
INFO: 2025-03-30T03:36:57 293.6 [0] initSend() took: 1.56204 sec
INFO: 2025-03-30T03:36:57 293.6 [0] testRecv() took: 0.183096 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Cache update took: 0.000794358 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Computation took: 279.04 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Force calculation took: 54.1327 sec
INFO: 2025-03-30T03:36:57 293.6 [0] IO in main loop took: 0.0267248 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Plugin MamicoCoupling took: 224.43 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Enforcing boundary conditions took: 0.0018465 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Timer SIMULATION_IO took: 0 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Phasespace creation took: 0.689739 sec
INFO: 2025-03-30T03:36:57 293.6 [0] Final IO took: 1.8715e-05 sec
When using static load balancing with ls1+autopas, the force calculation time reduces, but the time taken by the mamico steps per MD timestep increases. It seems like mamico only cares about number of coupling cells per rank and not number of molecules per rank, and thus, in a state balanced by molecules, the cells are not balanced. So if the domain size is small, then the mamico runtime dominates, and loadbalanced scenarios are performing worse.
This was noticed while trying to balance a droplet scenario. For a couette scenario, this wasn't noticed. Therefore, for denser setups, this isn't an issue, since the coupling overhead is sufficiently smaller than the computation.
Some example outputs (all mamico+ls1+autopas, 2 md instances, and my multiphase droplet scenario, and mamico cellsize 5) are given below. Compare the force calculation time to the MamicoCoupling plugin time. The computation time combines both, despite the weird alignment. All particle counts are estimated. All temperatures are 0.8.
For MD120, relevant values:
Droplet diameter: 80
Liquid density: 0.73056664
Vapour density: 0.01991599
MD120, 4 ranks per axis, equally partitioned, 128 ranks,
per subdomain: max particles: 18213 min particles: 538 max density: 0.6745469705 min density: 0.01991599000
MD120, 4 ranks per axis, balanced in ratio x="9 ; 3 ; 3 ; 9" y="9 ; 3 ; 3 ; 9" z="9 ; 3 ; 3 ; 9", 128 ranks
per subdomain: max particles: 3889 min particles: 2466 max density: 0.7305666400 min density: 0.03491958966
For MD180, relevant values:
Droplet diameter: 100
Liquid density: 0.73049450
Vapour density: 0.01988934
md180, 4 ranks per axis, equally partitioned, 64 ranks
per subdomain: max particles: 46300 min particles: 1812 max density: 0.5080906812 min density: 0.01988934000
md180, 4 raNks per axis, ratio 10,8,8,10 for x, 9,9,9,9 for y and z, 64 ranks
per subdomain: max particles: 44169 min particles: 1611 max density: 0.5452963200 min density: 0.01988934000
md180, 4 ranks per axis, ratio 10,8,8,10 for all x, y and z, 64 ranks
per subdomain: max particles: 39972 min particles: 1989 max density: 0.6245643667 min density: 0.01988934000