MxUI / MUI

Multiscale Universal Interface: A Concurrent Framework for Coupling Heterogeneous Solvers
http://mxui.github.io/
Apache License 2.0
54 stars 40 forks source link

Add interpolation filter at the sending side #82

Closed Wendi-L closed 2 years ago

Wendi-L commented 2 years ago

Currently (up to MUI V1.1.3), the interpolation is done on the receiving side through samplers. It might be useful to add the interpolation in the sending side so that to minimise the overhead of sending over all the points from the sending side but the receiving side only needs a part of them.

SLongshaw commented 2 years ago

This has been considered in the past but not taken forward as it is non-trivial as it means sending information about the interpolation requirements back - i.e. it changes the comms pattern of MUI from: non-blocking send -> blocking receive to: blocking receive (on sending side for interpolation requirements) -> non-blocking send (of interpolated data) -> blocking receive (of interpolated data)

The actual interpolation work is still being done somewhere in the coupled solution (albeit there may be more chance to "re-use" existing interpolation routines in the host code this way round), so the potential for reducing the amount of MPI data comes from whether you need to send less data to inform the interpolation on the host side than just send all data and interpolate on the client side.

I think this can be recorded as a potential future enhancement but careful consideration of the benefits compared to the added complexity of the workflow need to be taken into account.