The current version of the integration of halo exchange uses WrappedHaloExchange class to allow orchestration and stencil backends to co-exists (due to DaCe parsing limitations).
This has two issues:
Goes against the "state-less" design of the code by requiring the same state to be passed to __init__ and __call__ of the model
Performance of the orchestration is limited by the callback which acts as a black-box funnel for the data-flow
Solutions:
Using literal list, which is pending a DaCe feature to be finished, we could keep the callback but remove the state from __init__
Furthermore, we could recode the custom pack/unpack in a language that DaCe can parse then do away with the wrapper altogether
The current version of the integration of halo exchange uses
WrappedHaloExchange
class to alloworchestration
and stencil backends to co-exists (due to DaCe parsing limitations).This has two issues:
state
to be passed to__init__
and__call__
of the modelSolutions:
__init__