# OVERVIEW - Cycle 29 05/25 - Cycle: - **Betting table: 13.05.2025** - **Review meeting: 03.06.2025** ([slides](https://docs.google.com/presentation/d/1UQZKAHdHQHpVRJfJ0hiuShCM-BlAxSobAVgVFx3gUjg/edit?usp=sharing)) - Participants: + CSCS: Edoardo, Enrique, Will + EXCLAIM: Anurag, Magdalena, Mauro + MCH: Christoph ## Available people: + GridTools: * Christos: 50% or a bit less (rest on PASC projects -push a bit more at the beginning-) * Edoardo: 100% * Enrique: 100% * Hannes: 0% * Philip: 60% (because of LUMI) * Rico: 80-90 % (Anticipate sporadic SwissTwins work) * Sara (ECMWF): 0% (working on distributed PMAP-GO + PASC poster) * Till: 66% (12.05-23.05 only, rest vacation) * Ioannis: 50% (because of cornerstone) + CSCS: * Mikael (Simberg): 50% * Giacomo: 50% (rest on Flang investigation and Tabascal) * Will: 50% (rest: performance of GT4Py muphys, EXCLAIM Symposium) * Prashanth: 40% (mainly for I/O bits of ICON4Py) + EXCLAIM: * Chia Rui: * Jacopo: 5-10% (helping out with Hannes' open PRs) * Magdalena: Full Cycle * Nikki: Full Cycle * Yilu: almost full cycle (will be away for 4 days) + MCH: * Christoph: 100% * Daniel (50%): ## Cycle Goal **Meaningful performance baseline for the Dycore granule** Same as Cycle 28, but also improving performance beyond what we see right now. ICON-EXCLAIM running with ICON4Py and GT4Py-DaCe `main` branches, with minimal Python overhead and meaningful performance benchmarks. This also requires finishing the combined programs and merging all the half-finished features like `concat_where`, and complete the benchmarking infrastructure to support writing more optimizations in next cycles. ## Tasks | Project | Appetite | Developers | Support | |:------------------------------------------------------------------------------------- |:---------- |:------------------------------- |:--------- | | [DaCe] Optimization VIII [#][dace-optimization-22] | full cycle | Philip, Ioannis | Edoardo | | [DaCe] Toolchain Runtime Support [#][dace-toolchain-run30] | full cycle | Edoardo, Giacomo | Enrique | | [GT4Py] Concat where cleanup & merge [#][gt4py-concat-where32] | full cycle | Till | Enrique | | [ICON4Py] Benchmarking infrastructure [#][icon4py-benchmarki35] | full cycle | Enrique, Christos, (Magdalena?) | Chia Rui | | [ICON4Py] Combined solve non_hydro stencils [#][icon4py-combined-s41] | 1 week | Christoph (until done) | Nikki | | [ICON4Py] Hannes' fixes 1: Static variants of programs [#][icon4py-hannes-fix50] | 1 week | Nikki | Edoardo | | [ICON4Py] Hannes' fixes 2: Fix skip values [#][icon4py-hannes-fix38] | 1 week | Magdalena | | | [ICON4Py] Hannes' fixes 3: Fix validation errors [#][icon4py-hannes-fix44] | 1 week | Jacopo, Daniel | Christoph | | [ICON4Py] Small CI improvements [#][icon4py-small-ci-i29] | 1 week | Magdalena | Enrique | | [ICON4Py] Standalone greenline [#][icon4py-standalone28] | full cycle | Mikael, Yilu | Magdalena | | [ICON4Py] Improving performance for CFL condition in dycore [#][icon4py-improving-57] | 2 weeks | Christoph, Chia Rui | Magdalena | | [Blueline] ICON with Granule deployment [#][blueline-icon-with37] | full cycle | Rico, Will | Christoph | | Data Compression Project [#][data-compression-p24] | 1 week | Nikki, Christos | | <!-- Links --> [dace-optimization-22]: https://hackmd.io/@gridtools/ByFhRhFlll "[DaCe] Optimization VIII" [dace-toolchain-run30]: https://hackmd.io/@gridtools/Syu217kZge "[DaCe] Toolchain Runtime Support" [data-compression-p24]: https://hackmd.io/@gridtools/BJNR2DyZxg "Data Compression Project" [gt4py-concat-where32]: https://hackmd.io/@gridtools/SyIdscjxge "[GT4Py] Concat where cleanup & merge" [icon4py-benchmarki35]: https://hackmd.io/@gridtools/BkeHccillg "[ICON4Py] Benchmarking infrastructure" [icon4py-combined-s41]: https://hackmd.io/@gridtools/ryyRmUfCyg "[ICON4Py] Combined solve non_hydro stencils" [icon4py-hannes-fix38]: https://hackmd.io/@gridtools/rJpqIw1-gl "[ICON4Py] Hannes' fixes 2: Fix skip values" [icon4py-hannes-fix44]: https://hackmd.io/@gridtools/SytNU9ybee "[ICON4Py] Hannes' fixes 3: Fix validation errors" [icon4py-hannes-fix50]: https://hackmd.io/@gridtools/SJNzBUyWle "[ICON4Py] Hannes' fixes 1: Static variants of programs" [icon4py-improving-57]: https://hackmd.io/@gridtools/Bk01fFlbll "[Icon4Py] Improving performance for CFL condition in dycore" [icon4py-small-ci-i29]: https://hackmd.io/@gridtools/SJb0TIjegx "[ICON4Py] Small CI improvements" [icon4py-standalone28]: https://hackmd.io/@gridtools/BkvlzXjggx "[ICON4Py] Standalone greenline" [blueline-icon-with37]: https://hackmd.io/@gridtools/Bys907bAke "[Blueline] ICON with Granule deployment" ---------------------------------------------------------------- ---------------------------------------------------------------- ## Planning Action points - ~~@egparedes sync with @mluz about the icon4py tasks~~ - ~~combined stencils~~ - ~~RBF & standalone grid status~~ + ~~CI improvements~~ - ~~@egparedes ask for possible dates for the group brainstorming meeting (if needed) and betting table and send the invites~~ - ~~@egparedes send betting table invite~~ - sync and discuss with all people involved on different spack+venv projects (@ricoh @muellch @Will Sawyer, ....) ## Brainstorming - benchmarking infrastructure: 1. StencilTests with larger grids (either standalone or with serialized data) - validate with small grid - benchmark with large grid - accept static args 2. green-line JW - intermediate step: serialize APE with R02B07 - switch to standalone grid when ready - MCH experiment: ICON-CH2-small for validation, Christoph s ICON-CH2 for benchmark - add to bencher benchmark diffusion, dycore 3. blue-line + granule (ape large grid?) - add to bencher - ~~profiling & identifying the low performance in the blueline + granule~~ - gt4py - merge performance counters as soon as they are merged in gt4py - finish the concat_where - dace - reduce overhead of the program calls (dace) - toolchain instrumentation - continue with DaCe optimizations - parallel runs with DaCe - icon4py - take over and merge PRs from [Hannes handover document](https://hackmd.io/lIheBruuSNOSd6NMqppUFQ) - finish the combined stencils (one week?) - ~~consolidate the serialization points in icon-EXCLAIM (required for the serialization of the larger grids needed for benchmarking) (few days?)~~ - standalone: (1 cycle, both tasks could go in parallel ) - finish RBF validation - glue code to start using them and merge and integrate z_ifc branch. - Simple CI improvements: integrate nox utils to skip uneeded test execution (few days?) - fix CFL reduction in icon4py dycore - ~~PASC Poster~~ - ICON uenvs --> needs larger discussion ?? - missing experiments: - is it possible to run spack-installed uv in the install phase of a dependent spack package in the context of a uenv build? (locally -> uv does not run because spack does not expose libbz2 to it during staging of the dependent package, why?). Possible fix: depend on `bzip2` as a build dependency in the icon4py spack package? - IF YES -> only needed to add a venv with icon4py for runtime in uenv post-install - IF NO -> consider alternatives: `pip install` instead of `uv sync`, install `icon4py` and then `ICON` both in post-install - uenv deployment ? - ICON CI (Will, Daniel) ?