Before pre-betting table: Name in parenthesis means, proposed by this person. After pre-betting table: Name in parenthesis means taking the lead in shaping. Please involve the right people or distribute the work. ## Blue line - Continue benchmarking on Pre-Alps (Abishek, Sam, Will) - Performance optimizations for fused stencils (Christoph) - measure and understand performance - including possible optimizations in GT4Py - Explore viability of other optimization options discussed with nvidia (Christoph) - Integrate diffusion Python granule into Fortran ICON (Magdalena, Sam, Abishek) - Test `py2f` with larger stencils (granules), improve test coverage, and benchmark execution from Fortran (with benchmarking). -> . - Update of `icon-dsl` to pull upstream changes, including `nblocks_e` and new license info. (Christoph, Abishek) - Refactor `icon4pygen` to make it production ready (Christoph, Sam) - Finish fused stencils (Christoph) - ~~Use [`ruff`](https://docs.astral.sh/ruff/) for pre-commit and QA pipeline in `icon4py` and `icon4pytools`, to improve developer experience and QA runtime (Sam)~~ Done ## Green line - Research: Python model architecture (Magdalena) - IO system: requirements and first implementation - Concept MVP: what features does it need? architecture draft - stencil ports (Magdalena): - finish interpolation (with exception of RBF) - 2 more stencils and projections(-> pygmt or similar) - metrics: remaining metrics fields for diffusion (and the ones used in dycore that come there with) - consolidate test configuration: test configuration and setup has grown and is not handled in a consistent way troughout the repository. (Magdalena) - use same commandline options, configuration fixtures throughout - use icon-grid from grid file in `not datatests` - test hierarchy: do we need more refined test suits for CI (speedup) ## GT4Py - jax pytree-like: for tuples, structs, mesh, expandable parameters (Hannes) - Workflowify toolchain (Hannes) - cleanups/concepts: (Hannes) - hierarchy of Field, NDArray implementation, etc - dimensions and offsets - each dimension should be a generator of an offset - E2V vs E2VDim is a concept discussion - [E2V_0, E2V_1] == E2V - constant fields and gtx.int32, etc (Hannes) `gtx.int32(1) < field` or ufuncs or https://wrapt.readthedocs.io/en/master/wrappers.html#object-proxy - `concat_where(k % 2 == 0, foo, bar)` `1 < k & k < ksize` - [ 0 1 0 1 0 1 0 1] - [-0 -1 -2 -3] - [ 0 1 2 3 4 5 6 7] - [[0][-1][2][-3][4]] - as_offset - multi-dimension - Batch of cleanups (related to concepts above, Hannes): - NamedTuple instead tuple for NamedRange (to allow attribute access) - ... - program -> fieldop call `domain` kwarg with same syntax as allowed in `domain()` - Field[Dims[]] variadic - ~~Runtime (contrary to compile time) Optimizations:~~ shape in the blueline project(Till) - Play with torus grid for strided access (Magdalena, Ioannis) - Minimal combined IR (Till) - Performance & compile time regression testing (Till) - Index access in local dimension (Hannes, if time) ## DaCe - Optimize nabla4 with DaCe starting from jax/field view (Philip, Edoardo) - Continue investigating halo exchanges with DaCe for diffusion (Christos, Edoardo)