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
WrappedHaloExchangeclass to alloworchestrationand stencil backends to co-exists (due to DaCe parsing limitations).This has two issues:
stateto be passed to__init__and__call__of the modelSolutions:
__init__