# [GT4Py] Complete first iteration of GTIR-DaCe
<!-- Add the tag for the current cycle number in the top bar -->
- Shaped by:
- Appetite (FTEs, weeks): full cycle
- Developers: <!-- Filled in at the betting table unless someone is specifically required here -->
## Problem
GTIR fieldview is still missing a few features to fully support ICON4Py:
- scan
- as_offset (dynamic shift)
- concat_where (conditional execution on domain)
The implementation in this cycle aims only on supporting the ICON4Py use-cases. The features will not be conceptually clean, see below.
## Appetite
<!-- Explain how much time we want to spend and how that constrains the solution -->
## Solution
### scan
Scan is lowered to the local (itir-like) structure, support for a field-view like scan is postponed.
DaCe-lowering will implement the same solution as in the dace-itir lowering, based on DaCe LoopRegion construct in SDFG.
### as_offset
We will not solve the conceptual problem of inferring the domain described in https://github.com/GridTools/gt4py/issues/1676.
The solution for now will be inlining expressions below a shift with an `as_offset` field.
The DaCe lowering should be ready to support GTIR that is partially local-view.
### concat_where
The implementation with limited support for domains started in https://github.com/GridTools/gt4py/pull/1713.
Domains will be limited to single Dimension comparisons of the form `I < 5` that do not create non-contiguous Domains.
### Additionaly features to bring GTIR-DaCe to feature parity with Embedded-GTIR
- `index`: the lowering should be straightforward
- fully-symbolic fieldop domain: might require some major refactoring, either we do this at beginning of the cycle or at the end. (review PR [#1735](https://github.com/GridTools/gt4py/pull/1735))
## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->
## No-gos
As described, the builtins will require more conceptual work in the future, which is explicitly excluded in this project.
## Progress
<!-- Don't fill during shaping. This area is for collecting TODOs during building. As first task during building add a preliminary list of coarse-grained tasks for the project and refine them with finer-grained items when it makes sense as you work on them. -->
- [x] DaCe lowering
- [x] [refact] Build on the solution chosen for GTIR Embedded (`offset_type`, see [PR1703](https://github.com/GridTools/gt4py/pull/1703)) to return information about the local dimension.
- [x] Lowering of field operators with non-zero-aligned domain.
- In other words, allocate array for field domain range between lower and upper bound (requires alternative solution for array offset)
- [x] Lowering of `as_offset` (awaiting PR [#1738](https://github.com/GridTools/gt4py/pull/1738))
- [x] Lowering of `index`
- [ ] Lowering of `scan`
- [ ] Lowering of `concat_where` (GTIR not ready)
- [ ] Task 2
- [x] Subtask H
- [ ] Subtask J
- [ ] Discovered Task 3
- [ ] Subtask L
- [ ] Subtask S
- [ ] Task 4