You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, parts of the code are equipped with synchronization calls like eulerian grid ghosting and lagrangian grid scatter/gather. These communications are present to ensure correctness since they are executed every time the subfunction/submodule is called. This may not always be necessary, and definitely slows things down when many bodies are involved. For example, the velocity field does not need to be ghosted every time an interactor is called. Rather, the field only needs to be ghosted once (before calling interactors, perhaps via the simulator) for all the interactors to compute the forcing on its lagrangian grid. As a workaround, we could give users the option to turn off these excessive but safer synchronizations while providing a warning to remind users to be wary of their decision and to remember to ghost the velocity before looping over all the interactor calls. Similarly, for the lagrangian forcing grids, if the lagrangian grids in any one rank are guaranteed to be in and will remain within the same local rank as the eulerian grid throughout the simulation, there is no need for lagrangian grid gather and scatter, and Eulerian-Lagrangian interaction can happen directly without prior MPI communications. Default settings should of course be the configuration with excessive but correct communications, which is what the current code is doing.
The text was updated successfully, but these errors were encountered:
Currently, parts of the code are equipped with synchronization calls like eulerian grid ghosting and lagrangian grid scatter/gather. These communications are present to ensure correctness since they are executed every time the subfunction/submodule is called. This may not always be necessary, and definitely slows things down when many bodies are involved. For example, the velocity field does not need to be ghosted every time an interactor is called. Rather, the field only needs to be ghosted once (before calling interactors, perhaps via the simulator) for all the interactors to compute the forcing on its lagrangian grid. As a workaround, we could give users the option to turn off these excessive but safer synchronizations while providing a warning to remind users to be wary of their decision and to remember to ghost the velocity before looping over all the interactor calls. Similarly, for the lagrangian forcing grids, if the lagrangian grids in any one rank are guaranteed to be in and will remain within the same local rank as the eulerian grid throughout the simulation, there is no need for lagrangian grid gather and scatter, and Eulerian-Lagrangian interaction can happen directly without prior MPI communications. Default settings should of course be the configuration with excessive but correct communications, which is what the current code is doing.
The text was updated successfully, but these errors were encountered: