---
# System prepended metadata

title: '[ICON4Py] DaCe Orchestration (Dycore)++'
tags: [cycle 25, cycle 25 - 10/24]

---

# [ICON4Py] DaCe Orchestration (Dycore)++

- Shaped by: Christos
- Appetite (FTEs, weeks):
- Developers: Christos, Rico

## Problem

### DaCe Orchestration: DyCore Granule
Multiple issues to work-on:

1. Dycore calls already orchestrated functions. Find a way to extract their SDFGs and use it from the master orchestrated function.
2. List/Tuple of Prognostic States. Each Prognostic State is a DaCe Structure, therefore a list/tuple of them, should be represented as a ContainerArray in DaCe. This is not supported in the current DaCe Python frontened.
3. Dycore granule has never been tested with DaCe backend. There are few programs that do not pass with DaCe backend. Find/flag them, and check if GTIR solves the issue.
4. DaCe Python callbacks to functions that alter compiletime objects (like self) have many issues.
5. Deal with KHalfDim in Orchestrator.

### SDFGConvertible Interface for GTIR

Create a `Program` extension class for `dace_vieldview` analogous to `dace_iterator`. Integrate with all the relevant branches and tests.

## Appetite
Whole cycle.

**FYI: I will be in EuroHack24 as mentor (7th to 11th of October -full week-).**

## Solution

## Rabbit holes

## No-gos

## Progress

- [ ] DaCe Orchestration: DyCore Granule [WIP]:
    1. Needs to done.
    2. Double Buffer Class, and subsequent SDFGConvertible interface [WIP]
    3. As we orchestrate more parts of DyCore, we identify more programs that have issues with the DaCe backend. [WIP]
    4. DaCe Callbacks do not work in this context. For every case, find an alternative.
    5. Fully solved.

- [X] SDFGConvertible Interface for GTIR [WIP]
    - [X] Create class [WIP]
    - [X] integrate and test
    - [ ] test in icon4py 
    - [ ] merge

- [X] DaCe Orchestration: fix SDFG caching