From d0f7cbf481d611aecb2ec9b6de3f9709095bc9a2 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 10 Mar 2026 16:33:21 +0100 Subject: [PATCH 001/109] Added YAML files for 26.2/gh200 --- recipes/icon/26.2/gh200/compilers.yaml | 4 +++ recipes/icon/26.2/gh200/config.yaml | 11 +++++++ recipes/icon/26.2/gh200/environments.yaml | 35 ++++++++++++++++++++++ recipes/icon/26.2/gh200/extra/reframe.yaml | 6 ++++ recipes/icon/26.2/gh200/modules.yaml | 26 ++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 recipes/icon/26.2/gh200/compilers.yaml create mode 100644 recipes/icon/26.2/gh200/config.yaml create mode 100644 recipes/icon/26.2/gh200/environments.yaml create mode 100644 recipes/icon/26.2/gh200/extra/reframe.yaml create mode 100644 recipes/icon/26.2/gh200/modules.yaml diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml new file mode 100644 index 00000000..db45c97b --- /dev/null +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -0,0 +1,4 @@ +gcc: + version: "12.3.0" +nvhpc: + version: "25.1" diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml new file mode 100644 index 00000000..b6b7fb8a --- /dev/null +++ b/recipes/icon/26.2/gh200/config.yaml @@ -0,0 +1,11 @@ +name: icon +store: /user-environment +spack: + repo: https://github.com/spack/spack.git + commit: releases/v1.1 + packages: + repo: https://github.com/spack/spack-packages.git + commit: 5e506ab69aed5199b6d01083016fa592f4fb4296 +modules: true +description: "Compilers and libraries required to build ICON" +version: 2 diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml new file mode 100644 index 00000000..195a954b --- /dev/null +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -0,0 +1,35 @@ +icon: + compiler: [gcc, nvhpc] + network: + mpi: cray-mpich@8.1.30 +cuda + unify: true + specs: + # - boost ~mpi + - python@3.10 + - cuda@12.6 + - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes-cosmo-resources@2.36.0.3 + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - openblas %c,cxx,fortran=nvhpc + - findutils + # # for validation + # - cdo + # # everything needed for nccl on SS11 + # - nccl + # - nccl-tests + # # extras + # - libfyaml + # - zlib-ng + # - cmake + variants: + - +mpi + - +cuda + - cuda_arch=90 + views: + default: + link: roots + uenv: + prefix_paths: + LD_LIBRARY_PATH: [lib, lib64] diff --git a/recipes/icon/26.2/gh200/extra/reframe.yaml b/recipes/icon/26.2/gh200/extra/reframe.yaml new file mode 100644 index 00000000..363f809f --- /dev/null +++ b/recipes/icon/26.2/gh200/extra/reframe.yaml @@ -0,0 +1,6 @@ +default: + features: [osu-micro-benchmarks, mpi, serial, openmp] + cc: mpicc + cxx: mpic++ + ftn: mpifort + activation: /user-environment/env/default/activate.sh diff --git a/recipes/icon/26.2/gh200/modules.yaml b/recipes/icon/26.2/gh200/modules.yaml new file mode 100644 index 00000000..a4010ae2 --- /dev/null +++ b/recipes/icon/26.2/gh200/modules.yaml @@ -0,0 +1,26 @@ +modules: + # Paths to check when creating modules for all module sets + prefix_inspections: + bin: + - PATH + lib: + - LD_LIBRARY_PATH + lib64: + - LD_LIBRARY_PATH + + default: + arch_folder: false + # Where to install modules + roots: + tcl: /snap/modules + tcl: + all: + autoload: run + hash_length: 0 + hide_implicits: true + exclude: + - '%gcc@7.5.0' + - '%gcc@12' + - 'gcc %gcc@7.5.0' + projections: + all: '{name}/{version}' From 75ed9352c2d328ce483d9a79a054652d1b8add75 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 10 Mar 2026 17:04:25 +0100 Subject: [PATCH 002/109] Update config.yaml --- config.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config.yaml b/config.yaml index 45ccf2d3..a1627dfd 100644 --- a/config.yaml +++ b/config.yaml @@ -39,6 +39,11 @@ uenvs: zen3: '5.18' a100: '5.18' icon: + "26.2": + recipes: + gh200: '26.2/gh200' + deploy: + santis: [gh200] "25.2": recipes: gh200: '25.2/gh200' From 645f68c04d6a8f6a74ea66b1c3467666b913875e Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 18 Mar 2026 15:26:09 +0100 Subject: [PATCH 003/109] Quick test --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 195a954b..d1383053 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,6 +6,7 @@ icon: specs: # - boost ~mpi - python@3.10 + - libtool@2.4.6 - cuda@12.6 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 From e319f84bf98a99f8f18f1cf4b3479011b9034549 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Wed, 18 Mar 2026 16:34:34 +0100 Subject: [PATCH 004/109] Remove pinned libtool version --- recipes/icon/26.2/gh200/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d1383053..195a954b 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,6 @@ icon: specs: # - boost ~mpi - python@3.10 - - libtool@2.4.6 - cuda@12.6 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 From 2dcd6fd6cffa6d5ec29504bb58796b9d90943b7d Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 18 Mar 2026 17:39:36 +0100 Subject: [PATCH 005/109] Remove eccodes --- recipes/icon/26.2/gh200/environments.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 195a954b..279ca2a2 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,9 +6,10 @@ icon: specs: # - boost ~mpi - python@3.10 + - libtool@2.4.6 - cuda@12.6 - - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - - eccodes-cosmo-resources@2.36.0.3 + # - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + # - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc From 60566080484809a88efc5a602bbdb6730b3fa608 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Wed, 18 Mar 2026 23:26:06 +0100 Subject: [PATCH 006/109] Readd eccodes --- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 279ca2a2..d1383053 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,8 +8,8 @@ icon: - python@3.10 - libtool@2.4.6 - cuda@12.6 - # - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - # - eccodes-cosmo-resources@2.36.0.3 + - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc From 4011ba0760f9ab11c7a9dd79b1fb1d16fed693e9 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 19 Mar 2026 17:19:05 +0100 Subject: [PATCH 007/109] Pin cuda@12.6.0 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d1383053..f76f0174 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.10 - libtool@2.4.6 - - cuda@12.6 + - cuda@12.6.0 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 6729272d02991361991ed1de012eb8c674fc3e33 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 25 Mar 2026 15:32:08 +0100 Subject: [PATCH 008/109] Changes based on old gh200 recipe --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index db45c97b..e3eb21c3 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "12.3.0" + version: "13" nvhpc: version: "25.1" diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index f76f0174..02a16239 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,14 +5,15 @@ icon: unify: true specs: # - boost ~mpi - - python@3.10 - libtool@2.4.6 + - python@3.10 - cuda@12.6.0 - - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +tools +fortran +aec +openmp jp2k=jasper %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - hdf5@1.14.6 +szip +hl +fortran +mpi %c,fortran=nvhpc + - netcdf-c@4.9.3 %c=nvhpc + - netcdf-cxx4@4.3.1 %cxx=nvhpc + - netcdf-fortran@4.6.2 %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc - findutils # # for validation From 9ce44c3a0946d2a5451cfce3b5cbab8c4d5fb764 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Wed, 25 Mar 2026 16:32:11 +0100 Subject: [PATCH 009/109] Removed libtool pin --- recipes/icon/26.2/gh200/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 02a16239..b0f4b59f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,7 +5,6 @@ icon: unify: true specs: # - boost ~mpi - - libtool@2.4.6 - python@3.10 - cuda@12.6.0 - eccodes@2.36.4 +tools +fortran +aec +openmp jp2k=jasper %c,cxx,fortran=nvhpc From 3793be5e5db5b1e6d4bde54d3185787e9a205d89 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 25 Mar 2026 17:18:01 +0100 Subject: [PATCH 010/109] Revert "Removed libtool pin" This reverts commit 9ce44c3a0946d2a5451cfce3b5cbab8c4d5fb764. --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index b0f4b59f..02a16239 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,6 +5,7 @@ icon: unify: true specs: # - boost ~mpi + - libtool@2.4.6 - python@3.10 - cuda@12.6.0 - eccodes@2.36.4 +tools +fortran +aec +openmp jp2k=jasper %c,cxx,fortran=nvhpc From 2527c8c2797e4d4cba2c34bd3326f5aa3b9705bd Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 25 Mar 2026 17:24:43 +0100 Subject: [PATCH 011/109] Revert "Changes based on old gh200 recipe" This reverts commit 6729272d02991361991ed1de012eb8c674fc3e33. --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index e3eb21c3..db45c97b 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "13" + version: "12.3.0" nvhpc: version: "25.1" diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 02a16239..f76f0174 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,15 +5,14 @@ icon: unify: true specs: # - boost ~mpi - - libtool@2.4.6 - python@3.10 + - libtool@2.4.6 - cuda@12.6.0 - - eccodes@2.36.4 +tools +fortran +aec +openmp jp2k=jasper %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 +szip +hl +fortran +mpi %c,fortran=nvhpc - - netcdf-c@4.9.3 %c=nvhpc - - netcdf-cxx4@4.3.1 %cxx=nvhpc - - netcdf-fortran@4.6.2 %c,fortran=nvhpc + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc - findutils # # for validation From fcdb5f116fe9f5d2d9a7707015f90304b65ddfd3 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 25 Mar 2026 17:25:16 +0100 Subject: [PATCH 012/109] Use gcc 13 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index db45c97b..e3eb21c3 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "12.3.0" + version: "13" nvhpc: version: "25.1" From b1f168b2004462f9e8c28adcf1dfd40595a00303 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Wed, 25 Mar 2026 18:29:49 +0100 Subject: [PATCH 013/109] Revert to gcc 12.3.0 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index e3eb21c3..db45c97b 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "13" + version: "12.3.0" nvhpc: version: "25.1" From 7d0cf529c4564eb5d7b7875d2444a9be913b6723 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 27 Mar 2026 14:27:01 +0100 Subject: [PATCH 014/109] Upgrade compiler versions --- recipes/icon/26.2/gh200/compilers.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index db45c97b..3df5e824 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "12.3.0" + version: "13.3.0" nvhpc: - version: "25.1" + version: "26.1" From 1aca090ac273331ea82d9ec48b4d3d7c36a7cab4 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 27 Mar 2026 14:36:28 +0100 Subject: [PATCH 015/109] Upgrade python and cuda versions --- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index f76f0174..1c4d2cf1 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,9 +5,9 @@ icon: unify: true specs: # - boost ~mpi - - python@3.10 + - python@3.12 - libtool@2.4.6 - - cuda@12.6.0 + - cuda@13.1.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 488cc9f59fc8e69729e83291ef298bab0437e366 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 27 Mar 2026 14:54:48 +0100 Subject: [PATCH 016/109] Revert gcc version --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 3df5e824..401f991e 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "13.3.0" + version: "12.3.0" nvhpc: version: "26.1" From 2377168b75b3f8fb904184e4e4c0cbf15722a8ce Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 27 Mar 2026 15:17:32 +0100 Subject: [PATCH 017/109] Upgrade commit of spack-packages to get cuda 13.1.1 --- recipes/icon/26.2/gh200/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index b6b7fb8a..34983165 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: 5e506ab69aed5199b6d01083016fa592f4fb4296 + commit: 122a2b98e149d96451afc49bc617f348b1bd1ad2 modules: true description: "Compilers and libraries required to build ICON" version: 2 From 3d657873bba2a2010da5c526361a4290f66a3dfd Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Fri, 27 Mar 2026 15:53:13 +0100 Subject: [PATCH 018/109] Reverted upgraded cuda version --- recipes/icon/26.2/gh200/config.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index 34983165..b6b7fb8a 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: 122a2b98e149d96451afc49bc617f348b1bd1ad2 + commit: 5e506ab69aed5199b6d01083016fa592f4fb4296 modules: true description: "Compilers and libraries required to build ICON" version: 2 diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 1c4d2cf1..971affaf 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.12 - libtool@2.4.6 - - cuda@13.1.1 + - cuda@12.6.0 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 709e16e58b6b8a496cdfb952a43058605ee1c41d Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Fri, 27 Mar 2026 17:45:38 +0100 Subject: [PATCH 019/109] Upgrade to cuda 12.7.0 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 971affaf..5f2ec913 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.12 - libtool@2.4.6 - - cuda@12.6.0 + - cuda@12.7.0 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 7bddd688b1af84ae9136accb97b42ea52146eb81 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Fri, 27 Mar 2026 18:02:18 +0100 Subject: [PATCH 020/109] Use cuda 12.6.3 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 5f2ec913..c289e5ca 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.12 - libtool@2.4.6 - - cuda@12.7.0 + - cuda@12.6.3 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From e1811a195bff22d17ff61e5597271ce9a6e13933 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Fri, 27 Mar 2026 20:17:47 +0100 Subject: [PATCH 021/109] Use cuda 12.8.0 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index c289e5ca..404787e1 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.12 - libtool@2.4.6 - - cuda@12.6.3 + - cuda@12.8.0 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 33834a1496edba8561257835683736c27df96889 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 16 Apr 2026 17:19:23 +0200 Subject: [PATCH 022/109] Upgraded to latest versions of nvhpc, cuda and cray-mpich --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- recipes/icon/26.2/gh200/config.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 401f991e..01d98876 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: version: "12.3.0" nvhpc: - version: "26.1" + version: "26.3" diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index b6b7fb8a..beaf9372 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: 5e506ab69aed5199b6d01083016fa592f4fb4296 + commit: develop modules: true description: "Compilers and libraries required to build ICON" version: 2 diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 404787e1..73ac6772 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,13 +1,13 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@8.1.30 +cuda + mpi: cray-mpich@8.1.32 +cuda unify: true specs: # - boost ~mpi - python@3.12 - libtool@2.4.6 - - cuda@12.8.0 + - cuda@13.1.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From dc4cf55928fb253d4ad29d66ff0e5e72b960efb8 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 16 Apr 2026 17:44:37 +0200 Subject: [PATCH 023/109] Try updating to Spack develop branch --- recipes/icon/26.2/gh200/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index beaf9372..69e6d083 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -2,7 +2,7 @@ name: icon store: /user-environment spack: repo: https://github.com/spack/spack.git - commit: releases/v1.1 + commit: develop packages: repo: https://github.com/spack/spack-packages.git commit: develop From 06b44eb4eec081b8a54a159952b8f4ce5a3af336 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 16 Apr 2026 17:58:44 +0200 Subject: [PATCH 024/109] Revert to nvhpc 26.1 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- recipes/icon/26.2/gh200/config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 01d98876..401f991e 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: version: "12.3.0" nvhpc: - version: "26.3" + version: "26.1" diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index 69e6d083..beaf9372 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -2,7 +2,7 @@ name: icon store: /user-environment spack: repo: https://github.com/spack/spack.git - commit: develop + commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git commit: develop From e416591a2eef67bf5a350f7caf1cdcfc8c2f91ad Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 16 Apr 2026 19:44:22 +0200 Subject: [PATCH 025/109] Don't pin cray-mpich --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 73ac6772..46cba73f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,7 +1,7 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@8.1.32 +cuda + mpi: cray-mpich +cuda unify: true specs: # - boost ~mpi From 2ffd35f59d569fb43b8a2248988b0cbb11dabd8f Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Sat, 18 Apr 2026 14:58:26 +0200 Subject: [PATCH 026/109] Specify compilers --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 401f991e..31f18b01 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "12.3.0" + version: "13" nvhpc: version: "26.1" diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 46cba73f..c8a202f1 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,18 +1,18 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich +cuda + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc unify: true specs: # - boost ~mpi - - python@3.12 + - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - libtool@2.4.6 - cuda@13.1.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,cxx,fortran=nvhpc + - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,cxx,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc - findutils # # for validation From e200c0e09758b12e00d1d9cd075aa3662ce3f536 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Sat, 18 Apr 2026 16:15:15 +0200 Subject: [PATCH 027/109] Change unify to when_possible --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index c8a202f1..cd09a67c 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,7 +2,7 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc - unify: true + unify: when_possible specs: # - boost ~mpi - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 95e12e917fe9a8685bfb4a46d15d5f666dff967e Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Sat, 18 Apr 2026 18:35:37 +0200 Subject: [PATCH 028/109] Removed cxx from netcdf-fortran --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index cd09a67c..4e0df7ea 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -12,7 +12,7 @@ icon: - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,cxx,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,cxx,fortran=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc - findutils # # for validation From eb51901d271aafb38f7a3a76be114de427fa6715 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Sat, 18 Apr 2026 18:56:44 +0200 Subject: [PATCH 029/109] Removed cxx from hdf5 --- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 4e0df7ea..9d8935f5 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -10,11 +10,11 @@ icon: - cuda@13.1.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,cxx,fortran=nvhpc + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc - - findutils + - findutils # # for validation # - cdo # # everything needed for nccl on SS11 From a757db9dc6c91c82d848e91c830265906d4fd7ad Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 28 Apr 2026 16:08:19 +0200 Subject: [PATCH 030/109] Use nvhpc 26.3 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 31f18b01..d3e5c234 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: version: "13" nvhpc: - version: "26.1" + version: "26.3" From 9d322d76c9a745d836ffd2e484509fe85115b6a6 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 28 Apr 2026 16:08:49 +0200 Subject: [PATCH 031/109] Use cuda 13.1 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 9d8935f5..bcc1fe97 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,7 +7,7 @@ icon: # - boost ~mpi - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - libtool@2.4.6 - - cuda@13.1.1 + - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc From 7dc1ba1a29d6f19fb483f2e218b27f3fc20f6c5b Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 11:46:19 +0200 Subject: [PATCH 032/109] Update eccodes and hdf5 to latest available version --- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index bcc1fe97..a07e6772 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,9 +8,9 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - libtool@2.4.6 - cuda@13.1 - - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes@2.46.0 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - hdf5@2.1.0 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc From 18ef043a8d4a165c735aab097bb0458bf1bf430a Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 12:56:57 +0200 Subject: [PATCH 033/109] Revert hdf5 to 1.14.6 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index a07e6772..8b387151 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -10,7 +10,7 @@ icon: - cuda@13.1 - eccodes@2.46.0 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@2.1.0 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - openblas %c,cxx,fortran=nvhpc From 1be356839693f86431e60c3ce3722c3df31d852a Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 14:00:11 +0200 Subject: [PATCH 034/109] Revert eccodes to 2.36.4 for consistency with eccodes-cosmo-resources --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 8b387151..bcc1fe97 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,7 +8,7 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - libtool@2.4.6 - cuda@13.1 - - eccodes@2.46.0 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc From 985d758699fb9dd823535f474f9fa1786c0c5227 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 14:01:41 +0200 Subject: [PATCH 035/109] Remove pin for libtools --- recipes/icon/26.2/gh200/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index bcc1fe97..58bfe484 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,6 @@ icon: specs: # - boost ~mpi - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - - libtool@2.4.6 - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 From 8d0aae2eb74be9cb56d2ec9ce398f50819314e95 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 14:42:38 +0200 Subject: [PATCH 036/109] Uncomment boost, nccl and extras --- recipes/icon/26.2/gh200/environments.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 58bfe484..bb210676 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -4,7 +4,6 @@ icon: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc unify: when_possible specs: - # - boost ~mpi - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc @@ -12,17 +11,18 @@ icon: - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - boost ~mpi - openblas %c,cxx,fortran=nvhpc - - findutils - # # for validation + # for validation # - cdo - # # everything needed for nccl on SS11 - # - nccl - # - nccl-tests - # # extras - # - libfyaml - # - zlib-ng - # - cmake + # everything needed for nccl on SS11 + - nccl + - nccl-tests + # extras + - libfyaml + - zlib-ng + - cmake + - findutils variants: - +mpi - +cuda From e46617dded5d5e447ce0d13fcfc56f77af18c1b3 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 5 May 2026 17:44:35 +0200 Subject: [PATCH 037/109] Uncomment cdo --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index bb210676..96e5e058 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -14,7 +14,7 @@ icon: - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - # - cdo + - cdo # everything needed for nccl on SS11 - nccl - nccl-tests From 54ad2d262aebb7ee7ca79c09d1a0065e5ab64665 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Mon, 11 May 2026 15:51:43 +0200 Subject: [PATCH 038/109] Test gcc 14 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index d3e5c234..5a9e8511 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "13" + version: "14" nvhpc: version: "26.3" From 0b9d6b5afe25ae0189d9637bd022245d1ef0be98 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 12 May 2026 17:40:39 +0200 Subject: [PATCH 039/109] Pin libfabric version as a dependency of cray-mpich --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 96e5e058..c9635f0b 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,7 +1,7 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 9109693b738cc5aa3f4c31c5ec969f61293b454f Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 12 May 2026 17:41:25 +0200 Subject: [PATCH 040/109] Reverted to GCC 13 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 5a9e8511..d3e5c234 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "14" + version: "13" nvhpc: version: "26.3" From 8f8e6fc563c55f2c304e67fd4b30eb756942137c Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 19 May 2026 14:19:15 +0200 Subject: [PATCH 041/109] Remove activation line from reframe.yaml Co-authored-by: Mikael Simberg --- recipes/icon/26.2/gh200/extra/reframe.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/extra/reframe.yaml b/recipes/icon/26.2/gh200/extra/reframe.yaml index 363f809f..75ee7648 100644 --- a/recipes/icon/26.2/gh200/extra/reframe.yaml +++ b/recipes/icon/26.2/gh200/extra/reframe.yaml @@ -3,4 +3,5 @@ default: cc: mpicc cxx: mpic++ ftn: mpifort - activation: /user-environment/env/default/activate.sh + views: + - default From d4fd454ad6d08ce9b4fa43784e1bec3c36415fe7 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 19 May 2026 14:21:51 +0200 Subject: [PATCH 042/109] Added additional packages to reframe tests Co-authored-by: Mikael Simberg --- recipes/icon/26.2/gh200/extra/reframe.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/extra/reframe.yaml b/recipes/icon/26.2/gh200/extra/reframe.yaml index 75ee7648..89ed23f7 100644 --- a/recipes/icon/26.2/gh200/extra/reframe.yaml +++ b/recipes/icon/26.2/gh200/extra/reframe.yaml @@ -1,5 +1,13 @@ default: - features: [osu-micro-benchmarks, mpi, serial, openmp] + features: + - cuda + - mpi + - cray-mpich + - nccl + - nccl-tests + - openmp + - osu-micro-benchmarks + - serial cc: mpicc cxx: mpic++ ftn: mpifort From 0de05c12bfb63ab82f06801c53f6866238fdb489 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 15:09:28 +0200 Subject: [PATCH 043/109] Try unify true again --- recipes/icon/26.2/gh200/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index c9635f0b..97dd5efc 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,8 +1,8 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 - unify: when_possible + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc + unify: true specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 From 00fd07d5fa20ca7b97e792e7991f5e7b4188cbc4 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 15:54:09 +0200 Subject: [PATCH 044/109] Revert to when_possible and add duplicates strategy --- recipes/icon/26.2/gh200/environments.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 97dd5efc..df6e33bf 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,7 +2,9 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc - unify: true + unify: when_possible + duplicates: + strategy: full specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 From 04b885dc768afe5a07293781acad11a9e49ca9f2 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 16:30:47 +0200 Subject: [PATCH 045/109] Use gcc for libfabric --- recipes/icon/26.2/gh200/environments.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index df6e33bf..86d970d7 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,10 +1,8 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=gcc unify: when_possible - duplicates: - strategy: full specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 From b2fdf33dba4f75c5803b686272ba2cd795da19fc Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 17:12:41 +0200 Subject: [PATCH 046/109] Add empty specs for MPI --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 86d970d7..a65826c7 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,6 +2,7 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=gcc + specs: [] unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 7646fd6b5bc6288f6402c1f1666af47e31a0abc5 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 17:41:23 +0200 Subject: [PATCH 047/109] Remove compiler for libfabric --- recipes/icon/26.2/gh200/environments.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index a65826c7..c9635f0b 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,8 +1,7 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=gcc - specs: [] + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 27c8125e81c5f017ab03f055e2cd30c7b4c36237 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Tue, 19 May 2026 18:05:47 +0200 Subject: [PATCH 048/109] Try overspecifying libfabric --- recipes/icon/26.2/gh200/environments.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index c9635f0b..4781a3d5 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,9 +1,12 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc + specs: + - libfabric@2 %c=nvhpc unify: when_possible specs: + - libfabric@2 %c=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From e7c7e19b3d34e647afc5bae66f2b10ec5fd1d668 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 10:08:04 +0200 Subject: [PATCH 049/109] Reverted overspecification of libfabric --- recipes/icon/26.2/gh200/environments.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 4781a3d5..e3715029 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,11 +2,8 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc - specs: - - libfabric@2 %c=nvhpc unify: when_possible specs: - - libfabric@2 %c=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From 49ff8657a9a1ece9cff278e47edb7688552e9fe1 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 11:04:51 +0200 Subject: [PATCH 050/109] Quick test --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index e3715029..3803cfaa 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,7 +1,7 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 %c=nvhpc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 0ebb3fc756b30b7e9a84a88a44d8ac5b3fab70ee Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 14:53:00 +0200 Subject: [PATCH 051/109] Add libfabric to the spec --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 3803cfaa..d4cefc9f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -4,6 +4,7 @@ icon: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc unify: when_possible specs: + - libfabric@2 +gdrcopy %c=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From 91aa5e2f52eab93b88f209d9acb3101085cf7bc1 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 15:15:57 +0200 Subject: [PATCH 052/109] Move libfabric to mpi specs --- recipes/icon/26.2/gh200/environments.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d4cefc9f..be0500d0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,9 +2,10 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc + specs: + - libfabric@2 +gdrcopy %c=nvhpc unify: when_possible specs: - - libfabric@2 +gdrcopy %c=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From e9bdc9bdfc7446af08fed0c5ba982e533ea4cfaa Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 15:39:40 +0200 Subject: [PATCH 053/109] Remove libfabric as a dependency --- recipes/icon/26.2/gh200/environments.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index be0500d0..664acc14 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,9 +1,11 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc specs: - - libfabric@2 +gdrcopy %c=nvhpc + - libfabric@2 +gdrcopy %c=gcc + - gdrcopy %c,cxx=gcc + - libcxi %c=gcc unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From a814ea6559347a501ed294d17adfa4b4a91c90f9 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 16:14:38 +0200 Subject: [PATCH 054/109] Reverted previous commit and pinned nccl --- recipes/icon/26.2/gh200/environments.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 664acc14..60d67697 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,11 +1,8 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc - specs: - - libfabric@2 +gdrcopy %c=gcc - - gdrcopy %c,cxx=gcc - - libcxi %c=gcc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc + specs: [] unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc @@ -20,8 +17,9 @@ icon: # for validation - cdo # everything needed for nccl on SS11 - - nccl + - nccl@2.29.2 - nccl-tests + - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 732d0b23a3eab897b07ed1b0dbfdd86c5dc948a2 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 16:54:21 +0200 Subject: [PATCH 055/109] Quick test --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 60d67697..3a68ce76 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,5 +1,5 @@ icon: - compiler: [gcc, nvhpc] + compiler: [nvhpc, gcc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc specs: [] From ff1a17cf3cc99037da4d591098d6bf42edb664e8 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 17:26:23 +0200 Subject: [PATCH 056/109] Specify compilers for all packages --- recipes/icon/26.2/gh200/environments.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 3a68ce76..e409e005 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -12,19 +12,19 @@ icon: - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - - boost ~mpi + - boost ~mpi +thread %c,cxx=gcc - openblas %c,cxx,fortran=nvhpc # for validation - - cdo + - cdo %c,cxx,fortran=gcc # everything needed for nccl on SS11 - - nccl@2.29.2 - - nccl-tests - - aws-ofi-nccl@1.17.2 + - nccl@2.29.2 %c,cxx=gcc + - nccl-tests %cxx=gcc + - aws-ofi-nccl@1.17.2 %c,cxx=gcc # extras - - libfyaml - - zlib-ng - - cmake - - findutils + - libfyaml %c=gcc + - zlib-ng %c,cxx=gcc + - cmake %c,cxx=gcc + - findutils %c=gcc variants: - +mpi - +cuda From 2f611b0578125f83d39a209ed4db7f226acee5c5 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 17:53:53 +0200 Subject: [PATCH 057/109] Reverted last two commits --- recipes/icon/26.2/gh200/environments.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index e409e005..60d67697 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,5 +1,5 @@ icon: - compiler: [nvhpc, gcc] + compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc specs: [] @@ -12,19 +12,19 @@ icon: - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - - boost ~mpi +thread %c,cxx=gcc + - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - - cdo %c,cxx,fortran=gcc + - cdo # everything needed for nccl on SS11 - - nccl@2.29.2 %c,cxx=gcc - - nccl-tests %cxx=gcc - - aws-ofi-nccl@1.17.2 %c,cxx=gcc + - nccl@2.29.2 + - nccl-tests + - aws-ofi-nccl@1.17.2 # extras - - libfyaml %c=gcc - - zlib-ng %c,cxx=gcc - - cmake %c,cxx=gcc - - findutils %c=gcc + - libfyaml + - zlib-ng + - cmake + - findutils variants: - +mpi - +cuda From 2e75d0f378eef11247bb185aa7c99a081619d352 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 17:54:46 +0200 Subject: [PATCH 058/109] Added xpmem to network specs --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 60d67697..d64b8ee8 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,7 +2,7 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc - specs: [] + specs: [ xpmem ] unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From a6cee923508dc87554fd531876630e612d15822a Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Wed, 20 May 2026 18:20:36 +0200 Subject: [PATCH 059/109] Temporarily remove aws-ofi-nccl --- recipes/icon/26.2/gh200/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d64b8ee8..0650e0df 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -19,7 +19,6 @@ icon: # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests - - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 5a2eb2b3838baf9debf320f7d0cb311a2606f6fe Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 09:54:16 +0200 Subject: [PATCH 060/109] Removed xpmem from specs --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 0650e0df..a7ffd84f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -2,7 +2,6 @@ icon: compiler: [gcc, nvhpc] network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc - specs: [ xpmem ] unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc @@ -19,6 +18,7 @@ icon: # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests + - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 3fac8756f23d29619f44869ff3c3f9015cf5bf8e Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 09:58:38 +0200 Subject: [PATCH 061/109] Use gcc for libfabric --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index a7ffd84f..b68bbd57 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,7 +1,7 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=gcc unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From e2fba2f50d8da899e46d7c68c98822a1447b0be8 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 15:51:08 +0200 Subject: [PATCH 062/109] Readd xpmem and use nvhpc for libfabric --- recipes/icon/26.2/gh200/environments.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index b68bbd57..d64b8ee8 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -1,7 +1,8 @@ icon: compiler: [gcc, nvhpc] network: - mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=gcc + mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc + specs: [ xpmem ] unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc From 933524a921d28513894af44730a43ef4fd6ff768 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 16:15:59 +0200 Subject: [PATCH 063/109] Remove NCCL --- recipes/icon/26.2/gh200/environments.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d64b8ee8..01e08e62 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -17,9 +17,9 @@ icon: # for validation - cdo # everything needed for nccl on SS11 - - nccl@2.29.2 - - nccl-tests - - aws-ofi-nccl@1.17.2 + # - nccl@2.29.2 + # - nccl-tests + # - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 25f4b92c3f388029b61416c431c68cfa9209541b Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 17:25:18 +0200 Subject: [PATCH 064/109] Readd NCCL --- recipes/icon/26.2/gh200/environments.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 01e08e62..d64b8ee8 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -17,9 +17,9 @@ icon: # for validation - cdo # everything needed for nccl on SS11 - # - nccl@2.29.2 - # - nccl-tests - # - aws-ofi-nccl@1.17.2 + - nccl@2.29.2 + - nccl-tests + - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 4f7d9d78a294ec5f15eda0df3ef6479b64bb202f Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 17:25:46 +0200 Subject: [PATCH 065/109] Use GCC 14 --- recipes/icon/26.2/gh200/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index d3e5c234..5a9e8511 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,4 @@ gcc: - version: "13" + version: "14" nvhpc: version: "26.3" From 3a79933862dbafed897f942b5222b6908dfd620c Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 18:31:18 +0200 Subject: [PATCH 066/109] Compile aws-ofi-nccl with nvhpc --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d64b8ee8..1fd92fd1 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -19,7 +19,7 @@ icon: # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests - - aws-ofi-nccl@1.17.2 + - aws-ofi-nccl@1.17.2 %c,cxx=nvhpc # extras - libfyaml - zlib-ng From cbef501df3d9af71fc3a8aff6f7dd8168a4119fb Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 21 May 2026 18:55:49 +0200 Subject: [PATCH 067/109] Revert previous commit --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 1fd92fd1..d64b8ee8 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -19,7 +19,7 @@ icon: # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests - - aws-ofi-nccl@1.17.2 %c,cxx=nvhpc + - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From e58828d73520691f537cdf6a162e4ccdcaf42e11 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 17:11:01 +0200 Subject: [PATCH 068/109] add: icon-nwp@icon4py+icon4py and icon4py --- recipes/icon/26.2/gh200/environments.yaml | 2 ++ recipes/icon/26.2/gh200/pre-install | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 recipes/icon/26.2/gh200/pre-install diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d64b8ee8..371fd594 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,6 +5,8 @@ icon: specs: [ xpmem ] unify: when_possible specs: + - icon4py@0.2.0rc2 + - icon-nwp@add_icon4py +icon4py +grib2 +eccodes-definitions +ecrad +art gpu=nvidia-90 +mpi-gpu +realloc-buf ~aes ~jsbach ~ocean ~coupling ~rte-rrtmgp ~loop-exchange ~cuda-graphs fflags="-traceback" %c,cxx,fortran=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install new file mode 100644 index 00000000..842ea8bf --- /dev/null +++ b/recipes/icon/26.2/gh200/pre-install @@ -0,0 +1,12 @@ +#!/bin/bash + +packages=("icon" "icon4py") +SPACK_C2SM_TAG="v1.1_dev" + +git clone --depth 1 -b ${SPACK_C2SM_TAG} https://github.com/C2SM/spack-c2sm.git + +for package in "${packages[@]}"; do + cp -r spack-c2sm/repos/c2sm/packages/"${package}" store/repo/packages +done + +rm -rf spack-c2sm From e56d7ae95bddd4de762276898951266ad3272dc7 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 18:19:15 +0200 Subject: [PATCH 069/109] fix: pick icon-nwp from C2SM, use XPP gpu spec --- recipes/icon/26.2/gh200/environments.yaml | 5 ++++- recipes/icon/26.2/gh200/pre-install | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 371fd594..23dbc9ee 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,10 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@add_icon4py +icon4py +grib2 +eccodes-definitions +ecrad +art gpu=nvidia-90 +mpi-gpu +realloc-buf ~aes ~jsbach ~ocean ~coupling ~rte-rrtmgp ~loop-exchange ~cuda-graphs fflags="-traceback" %c,cxx,fortran=nvhpc + - icon-nwp@add_icon4py %c,cxx,fortran=nvhpc + ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + fflags="-traceback -cuda" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index 842ea8bf..7ca4ef7a 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -1,6 +1,6 @@ #!/bin/bash -packages=("icon" "icon4py") +packages=("icon-nwp" "icon4py") SPACK_C2SM_TAG="v1.1_dev" git clone --depth 1 -b ${SPACK_C2SM_TAG} https://github.com/C2SM/spack-c2sm.git From fd52004bbf25e7e36d39a19bbe8f23d013195575 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 19:17:13 +0200 Subject: [PATCH 070/109] ref: pre-install use version from Mikael --- recipes/icon/26.2/gh200/pre-install | 48 +++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index 7ca4ef7a..826b5aa4 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -1,12 +1,54 @@ #!/bin/bash +set -euo pipefail -packages=("icon-nwp" "icon4py") +# -------------------------- +# Configuration +# -------------------------- +packages=( + "icon-nwp" + "icon4py" + "uv" +) SPACK_C2SM_TAG="v1.1_dev" -git clone --depth 1 -b ${SPACK_C2SM_TAG} https://github.com/C2SM/spack-c2sm.git +echo "----------------------------------------" +echo "SPACK C2SM Setup Script" +echo "Tag to clone: ${SPACK_C2SM_TAG}" +echo "Packages to copy: ${packages[*]}" +echo "----------------------------------------" +# -------------------------- +# Clone the spack-c2sm repository +# -------------------------- +echo "Cloning spack-c2sm repository (branch/tag: ${SPACK_C2SM_TAG})..." +git clone --depth 1 -b "${SPACK_C2SM_TAG}" https://github.com/C2SM/spack-c2sm.git +echo "Clone complete." + +# -------------------------- +# Copy packages into store/repo/packages +# -------------------------- for package in "${packages[@]}"; do - cp -r spack-c2sm/repos/c2sm/packages/"${package}" store/repo/packages + SRC="spack-c2sm/repos/c2sm/packages/${package}" + DEST="store/repo/packages/${package}" + + echo "Copying package '${package}'..." + + if [[ ! -d "$SRC" ]]; then + echo "ERROR: Source package directory does not exist: $SRC" + exit 1 + fi + + mkdir -p "$(dirname "$DEST")" + cp -r "$SRC" "$DEST" + + echo "Package '${package}' copied to '$DEST'." done +# -------------------------- +# Cleanup +# -------------------------- +echo "Removing temporary clone 'spack-c2sm'..." rm -rf spack-c2sm +echo "Cleanup complete." + +echo "All done!" From 51d9cd20715b87f81632a9fb6a24a49d444f6286 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 20:41:55 +0200 Subject: [PATCH 071/109] fix: icon-nwp => icon_nwp --- recipes/icon/26.2/gh200/pre-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index 826b5aa4..eecca677 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -5,7 +5,7 @@ set -euo pipefail # Configuration # -------------------------- packages=( - "icon-nwp" + "icon_nwp" "icon4py" "uv" ) From 3399c7b983157c8c1a42a9c8949cc9a18c54b1b2 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 21:23:25 +0200 Subject: [PATCH 072/109] fix: revert renaming --- recipes/icon/26.2/gh200/pre-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index eecca677..826b5aa4 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -5,7 +5,7 @@ set -euo pipefail # Configuration # -------------------------- packages=( - "icon_nwp" + "icon-nwp" "icon4py" "uv" ) From 3802f1c331b3c71ffe5a7b623480765200e3a398 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 21:26:38 +0200 Subject: [PATCH 073/109] fix: target commit and not branch version --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 23dbc9ee..3941bba6 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,7 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@add_icon4py %c,cxx,fortran=nvhpc + - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback -cuda" From 43342a92aa2c7b5199eb22f7ea716b4e77256614 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 28 May 2026 21:29:27 +0200 Subject: [PATCH 074/109] fix: redundant -cuda flag --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 3941bba6..406b0034 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -9,7 +9,7 @@ icon: - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - fflags="-traceback -cuda" + fflags="-traceback" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From b887ce3b840ff04ee95d29be6dfe0da0af3a641c Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 07:20:46 +0200 Subject: [PATCH 075/109] tmp: add C2SM recipes manually --- .../gh200/repo/packages/icon-nwp/package.py | 421 ++++++++++++++++++ .../gh200/repo/packages/icon4py/package.py | 154 +++++++ .../26.2/gh200/repo/packages/uv/package.py | 121 +++++ 3 files changed, 696 insertions(+) create mode 100644 recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py create mode 100644 recipes/icon/26.2/gh200/repo/packages/icon4py/package.py create mode 100644 recipes/icon/26.2/gh200/repo/packages/uv/package.py diff --git a/recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py b/recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py new file mode 100644 index 00000000..adf0f439 --- /dev/null +++ b/recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py @@ -0,0 +1,421 @@ +import os +import re +import glob +from collections import defaultdict +from dataclasses import dataclass, field + +from typing import Self, ClassVar +from itertools import chain + +from spack_repo.builtin.packages.icon.package import Icon +from spack.package import * + + +# NOTE: The aim is to upstream `IconConfigureArgs` to `spack_repo.builtin.packages.icon.package`. +# This way, we only need to directly modify `set_configure_args` like this: +# ```` +# def set_configure_args(self) -> None: +# super().set_configure_args() +# # modify self.icon_configure_args +# ```` +# The ``from_args`` class method would also disappear then. +@dataclass(kw_only=True) +class IconConfigureArgs: + FLAG_KEYS: ClassVar[list[str]] = [ + "LIBS", + "CFLAGS", + "FCFLAGS", + "ICON_FCFLAGS", + "LDFLAGS", + "ICON_LDFLAGS", + "ICON_BUNDLED_CFLAGS", + "ICON_YAC_CFLAGS", + "ICON_OCEAN_FCFLAGS", + "ICON_ECRAD_FCFLAGS", + "CUDAFLAGS", + ] + args: list[str] = field(default_factory=list) + flags: dict[str, list[str]] = field(default_factory=lambda: defaultdict(list)) + + def remove_dupplicates(self) -> None: + self.args = list(set(self.args)) + for key, values in self.flags.items(): + self.flags[key] = list(set(values)) + + def to_args(self) -> list[str]: + self.remove_dupplicates() + return [ *chain( self.args, ("{0}={1}".format(name, " ".join(values)) for name, values in self.flags.items()) ) ] + + @classmethod + def from_args(cls: type[Self], args: list[str]) -> Self: + icon_configure_args = cls() + for a in args: + found_key=False + for key in cls.FLAG_KEYS: + if a.startswith(f"{key}="): + icon_configure_args.flags[key].append(a.split("=", 1)[1].strip()) + found_key=True + break + if not found_key: + icon_configure_args.args.append(a) + return icon_configure_args + + +def check_variant_fcgroup(fcgroup): + pattern = re.compile(r"^[A-Z]+\..+\..") + # fcgroup is False as default + if pattern.match(fcgroup) or fcgroup == "none": + return True + else: + tty.warn("Variant fcgroup needs format GROUP.files.flag") + return False + +def check_variant_extra_config_args(extra_config_arg): + pattern = re.compile(r"--(enable|disable)-\S+") + if pattern.match(extra_config_arg) or extra_config_arg == "none": + return True + else: + tty.warn( + f'The value "{extra_config_arg}" for the extra_config_args variant must follow the format "--enable-arg" or "--disable-arg"' + ) + return False + + +class IconNwp(Icon): + """ICON - is a modeling framework for weather, climate, and environmental + prediction. + It solves the full three-dimensional non-hydrostatic and compressible + Navier-Stokes equations on an icosahedral grid and allows seamless + predictions from local to global scales. + This is for additional options from the upstream ICON for NWP specific features.""" + + homepage = "https://gitlab.dkrz.de/icon/icon-nwp" + git = "git@gitlab.dkrz.de:icon/icon-nwp.git" + submodules = True + + maintainers("leclairm", "stelliom", "huppd") + + version("develop", branch="master") + version("main", branch="master") + + version("2024.10-mch-1.0", tag="icon-2024.10-mch-1.0", preferred=True) + version("2024.01-mch-2.1", tag="icon-2024.01-mch-2.1") + version("2024.01-mch-2.0", tag="icon-2024.01-mch-2.0") + version("2.6.6-mch2b", tag="icon-nwp/icon-2.6.6-mch2b") + version("2.6.6-mch2a", tag="icon-nwp/icon-2.6.6-mch2a") + + + # Model Features: + variant( + "dace", + default=False, + description="Enable the DACE modules for data assimilation", + ) + requires("+mpi", when="+dace") + + variant( + "emvorado", + default=False, + description="Enable the radar forward operator EMVORADO", + ) + requires("+mpi", when="+emvorado") + + variant( + "art-gpl", + default=False, + description="Enable GPL-licensed code parts of the ART component", + ) + variant( + "acm-license", + default=False, + description="Enable code parts that require accepting the ACM Software License", + ) + + # Infrastructural Features: + variant( + "active-target-sync", + default=False, + description="Enable MPI active target mode (otherwise, passive target mode is used)", + ) + variant( + "async-io-rma", + default=True, + description="Enable remote memory access (RMA) for async I/O", + ) + variant( + "realloc-buf", + default=False, + description="Enable reallocatable communication buffer", + ) + variant("sct", default=False, description="Enable the SCT timer") + variant( + "extra-config-args", + default="none", + multi=True, + values=check_variant_extra_config_args, + description="Inject any configure argument not yet available as variant\nUse this feature cautiously, as injecting non-variant configure arguments may potentially disrupt the build process", + ) + + # Optimization Features: + variant("loop-exchange", default=False, description="Enable loop exchange") + variant( + "vectorized-lrtm", + default=False, + description="Enable the parallelization-invariant version of LRTM", + ) + variant( + "pgi-inlib", + default=False, + description="Enable PGI/NVIDIA cross-file function inlining via an inline library", + ) + variant("nccl", default=False, description="Enable NCCL for communication") + + variant("cuda-graphs", default=False, description="Enable CUDA graphs.") + requires("%nvhpc@23.3:", when="+cuda-graphs") + + variant( + "fcgroup", + default="none", + multi=True, + values=check_variant_fcgroup, + description="Create a Fortran compile group: GROUP;files;flag \nNote: flag can only be one single value, i.e. -O1", + ) + + variant("nvtx", default=False, description="Enable NVTX for profiling") + requires("%nvhpc", when="+nvtx") # NVTX is only supported for nvhpc + + # verbosity + variant( + "silent-rules", + default=True, + description="Enable silent-rules for build-process", + ) + + variant( + "eccodes-definitions", + default=False, + description="Enable extension of eccodes with center specific definition files", + ) + + variant("cuda-mempool", default=False, description="Enable cuda memory pool") + requires("+realloc-buf", when="+cuda-mempool") + + variant('icon4py', default=False, description='Build with ICON4Py granules') + + depends_on("eccodes-cosmo-resources", type="run", when="+eccodes-definitions") + + with when("+emvorado"): + depends_on("eccodes +fortran") + depends_on("hdf5 +szip +hl +fortran") + depends_on("zlib-ng") + # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. + depends_on("eccodes %nvhpc", when="%nvhpc") + depends_on("eccodes %gcc", when="%gcc") + + # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. + for __x in Icon.serialization_values: + depends_on( + "serialbox+fortran %nvhpc", when="serialization={0} %nvhpc".format(__x) + ) + depends_on("serialbox+fortran %gcc", when="serialization={0} %gcc".format(__x)) + + # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. + depends_on("netcdf-fortran %nvhpc", when="%nvhpc") + depends_on("netcdf-fortran %gcc", when="%gcc") + + depends_on("hdf5 +szip", when="+sct") + + depends_on('icon4py', type="build", when="+icon4py") + + # patch_libtool is a function from Autotoolspackage. + # For BB we cannot use it because it finds all files + # named "libtool". spack-c2sm is cloned into icon-repo, + # therefore this function detects not only "libtool" files, but + # also the folder where libtool package itself is installed. + patch_libtool = False + + def setup_build_environment(self, env): + if self.spec.satisfies("+icon4py"): + tty.msg(f"adding {self.spec['icon4py'].prefix.share.venv.bin} to PATH for icon4py bindings because +icon4py is enabled") + env.prepend_path("PATH", self.spec["icon4py"].prefix.share.venv.bin) + + def setup_run_environment(self, env): + if self.spec.satisfies("+icon4py"): + tty.msg(f"adding {self.spec['icon4py'].prefix.share.venv.bin} to PATH for runtime because +icon4py is enabled") + env.prepend_path("PATH", self.spec["icon4py"].prefix.share.venv.bin) + env["VIRTUAL_ENV"] = self.spec["icon4py"].prefix.share.venv + + def set_configure_args(self) -> None: + self.icon_configure_args = IconConfigureArgs.from_args(super().configure_args()) + libs = LibraryList([]) + + for x in ( + "dace", + "emvorado", + "art-gpl", + "acm-license", + "active-target-sync", + "async-io-rma", + "realloc-buf", + "parallel-netcdf", + "sct", + "loop-exchange", + "vectorized-lrtm", + "pgi-inlib", + "nccl", + "cuda-graphs", + "silent-rules", + "icon4py", + ): + self.icon_configure_args.args.extend(self.enable_or_disable(x)) + + if "+emvorado" in self.spec: + libs.append(self.spec["eccodes:fortran"].libs) + libs.append(self.spec["hdf5:fortran,hl"].libs) + libs.append(self.spec["zlib-ng"].libs) + + if "+sct" in self.spec: + libs.append(self.spec["hdf5"].libs) + + if "+nvtx" in self.spec: + self.icon_configure_args.flags["FCFLAGS"].append("-D_USE_NVTX") + libs.append(LibraryList(["nvhpcwrapnvtx"])) + + if (fcgroup := self.spec.variants["fcgroup"].value) != ("none",): + # ('none',) is the values spack assigns if fcgroup is not set + for group in fcgroup: + name, files, flag = group.split(".") + self.icon_configure_args.args.append(f"--enable-fcgroup-{name}={files}") + self.icon_configure_args.flags[f"ICON_{name}_FCFLAGS"].append(flag) + + # add configure arguments not yet available as variant + if (extra_config_args := self.spec.variants["extra-config-args"].value) != ("none",): + for x in extra_config_args: + # prevent configure-args already available as variant + # to be set through variant extra_config_args + self.validate_extra_config_args(x) + self.icon_configure_args.args.append(x) + tty.warn( + "You use variant extra-config-args. Injecting non-variant configure arguments may potentially disrupt the build process!" + ) + + if self.spec.satisfies("+cuda-mempool"): + self.icon_configure_args.flags["ICON_FCFLAGS"].append("-cuda") + + # Help the libtool scripts of the bundled libraries find the correct + # paths to the external libraries. Specify the library search (-L) flags + # in the reversed order + # (see https://gitlab.dkrz.de/icon/icon#icon-dependencies): + # and for non-system directories only: + if non_system_reversed_lib_dirs := [f"-L{d}" for d in reversed(libs.directories) if not is_system_path(d)]: + self.icon_configure_args.flags["LDFLAGS"].extend(non_system_reversed_lib_dirs) + + self.icon_configure_args.flags["LIBS"].append(libs.link_flags) + + def configure_args(self) -> list[str]: + self.set_configure_args() + return self.icon_configure_args.to_args() + + def strip_variant_prefix(self, variant_string): + prefixes = ["--enable-", "--disable-"] + + for prefix in prefixes: + if variant_string.startswith(prefix): + return variant_string[len(prefix) :] + + raise ValueError + + def validate_extra_config_args(self, arg): + variant_from_arg = self.strip_variant_prefix(arg) + if variant_from_arg in self.spec.variants: + raise error.SpecError( + f'The value "{arg}" for the extra_config_args variant conflicts ' + f"with the existing variant {variant_from_arg}. Set this variant instead." + ) + + def configure(self, spec, prefix): + if ( + os.path.exists(os.path.join(self.build_directory, "icon.mk")) + and self.build_uses_same_spec() + ): + tty.warn( + "icon.mk already present -> skip configure stage", + '\t delete "icon.mk" or run "make distclean" to not skip configure', + ) + return + + # Call configure of Autotools + super().configure(spec, prefix) + + def build_uses_same_spec(self): + """ + Ensure that configure is rerun in case spec has changed, + otherwise for the case below + + $ spack dev-build icon @develop ~dace + $ spack dev-build icon @develop +dace + + configure is skipped for the latter. + """ + + is_same_spec = False + + previous_spec = os.path.join(self.build_directory, ".previous_spec.yaml") + + # not the first build in self.build_directory + if os.path.exists(previous_spec): + with open(previous_spec, mode="r") as f: + if self.spec == Spec.from_yaml(f): + is_same_spec = True + else: + is_same_spec = False + tty.warn("Cannot skip configure phase because spec changed") + + # first build in self.build_directory, no worries + else: + is_same_spec = False + + # dump spec of new build + with open(previous_spec, mode="w") as f: + f.write(self.spec.to_yaml()) + + return is_same_spec + + @run_after("configure") + def copy_runscript_related_input_files(self): + with working_dir(self.build_directory): + icon_dir = self.configure_directory + # only synchronize if out-of-source build + if os.path.abspath(icon_dir) != os.path.abspath(self.build_directory): + Rsync = which("rsync", required=True) + Rsync( + "-uavz", + f"{icon_dir}/run", + ".", + "--exclude=*.in", + "--exclude=.*", + "--exclude=standard_*", + ) + Rsync( + "-uavz", + f"{icon_dir}/externals", + ".", + "--exclude=.git", + "--exclude=*.f90", + "--exclude=*.F90", + "--exclude=*.c", + "--exclude=*.h", + "--exclude=*.Po", + "--exclude=tests", + "--exclude=*.mod", + "--exclude=*.o", + ) + Rsync("-uavz", f"{icon_dir}/make_runscripts", ".") + + Ln = which("ln", required=True) + dirs = glob.glob(f"{icon_dir}/run/standard_*") + for dir in dirs: + Ln("-sf", "-t", "run/", f"{dir}") + Ln("-sf", f"{icon_dir}/data") + Ln("-sf", f"{icon_dir}/vertical_coord_tables") + Ln("-sf", f"{icon_dir}/scripts") diff --git a/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py b/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py new file mode 100644 index 00000000..1d01a1ac --- /dev/null +++ b/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py @@ -0,0 +1,154 @@ +import json +import os +import pathlib + +from spack.package import * +from spack_repo.builtin.build_systems.generic import Package + + +class Icon4py(Package): + """ICON4Py Python interface package.""" + + homepage = "https://github.com/C2SM/icon4py" + git = "https://github.com/C2SM/icon4py.git" + + # --- Versions --- + version("main", branch="main") + version("0.2.0rc2", tag="v0.2.0rc2") + + def url_for_version(self, version): + return f"https://github.com/C2SM/icon4py/archive/refs/tags/v{version}.zip" + + # --- Variants --- + variant("cuda", default=True, description="Enable CUDA support") + variant( + "cuda_arch", + default="none", + description="CUDA architecture (e.g. 80 for A100, 90 for H100)", + values=lambda x: True, # accept any user-specified string + ) + + # --- Dependencies --- + extends("python") + depends_on("python@3.12") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("git") + depends_on("uv@0.7:", type="build") + depends_on("bzip2", type="build") + depends_on("py-numpy") + depends_on("py-cffi") + depends_on("py-pybind11") + depends_on("py-nanobind") + depends_on("py-mpi4py") + depends_on("ghex@0.5.1:") + + with when("+cuda"): + depends_on("py-cupy +cuda") + depends_on("ghex +python +cuda") + + with when("~cuda"): + depends_on("ghex +python ~cuda") + + # --- Environment setup --- + def setup_build_environment(self, env): + """Propagate CUDA architecture to dependencies.""" + cuda_arch = self.spec.variants["cuda_arch"].value + if "+cuda" in self.spec: + if cuda_arch == "none": + tty.warn( + "Building with +cuda but no cuda_arch set. " + "Consider specifying e.g. cuda_arch=80 or cuda_arch=90." + ) + else: + env.set("SPACK_CUDA_ARCH", cuda_arch) + tty.msg(f"Building for CUDA architecture: {cuda_arch}") + + # --- Build/install logic --- + def install(self, spec, prefix): + uv = prepare_uv() + python_spec = spec["python"] + venv_path = prefix.share.venv + + tty.msg(f"Creating venv using Spack Python at: {python_spec.command.path}") + uv( + "venv", + "--seed", + "--relocatable", + "--system-site-packages", + str(venv_path), + "--python", + python_spec.command.path, + ) + + tty.msg("Grabbing Spack-installed packages (distributions)") + pip = Executable(venv_path.bin.pip) + spack_installed = get_installed_pkg(pip) + tty.msg(f"Found spack_installed packages: {spack_installed}") + + # --- Handle CUDA vs non-CUDA extras --- + extras = ["all"] + no_install = [*spack_installed, "ghex"] + + # TODO: Check if there's a way to avoid hardcoded cuda version + if "+cuda" in spec: + cuda_major_version = spec["cuda"].version[0] + extras.append(f"cuda{cuda_major_version}") + no_install.append(f"cupy-cuda{cuda_major_version}x") + + tty.msg("Installing missing packages via uv sync") + uv( + "sync", + "--active", + *(f"--extra {e}" for e in extras), + "--inexact", + "--no-editable", + "--python", + str(venv_path.bin.python), + *(f"--no-install-package {p}" for p in no_install), + extra_env={ + "VIRTUAL_ENV": str(venv_path), + "CC": self.compiler.cc, + "CXX": self.compiler.cxx, + }, + ) + + tty.msg("Linking Spack-installed packages into venv") + pathlib.Path( + f"{venv_path.lib.python}{python_spec.version.up_to(2)}/site-packages/spack_installed.pth" + ).write_text(pythonpath_to_pth()) + + tty.msg("Running py2fgen code generator") + py2fgen = Executable(venv_path.bin.py2fgen) + py2fgen( + "icon4py.tools.py2fgen.wrappers.all_bindings", + "diffusion_init,diffusion_run,grid_init,solve_nh_init,solve_nh_run", + "icon4py_bindings", + "-o", + prefix.src, + extra_env={ + "VIRTUAL_ENV": str(venv_path), + "CC": self.compiler.cc, + "CXX": self.compiler.cxx, + }, + ) + + +def prepare_uv(): + uv = which("uv") + uv.add_default_env("UV_NO_CACHE", "true") + uv.add_default_env("UV_NO_MANAGED_PYTHON", "true") + uv.add_default_env("UV_PYTHON_DOWNLOADS", "never") + return uv + + +def get_installed_pkg(pip): + return [ + item["name"] for item in json.loads(pip("list", "--format", "json", output=str)) + ] + + +def pythonpath_to_pth(): + return "\n".join(os.environ.get("PYTHONPATH", "").split(":")) diff --git a/recipes/icon/26.2/gh200/repo/packages/uv/package.py b/recipes/icon/26.2/gh200/repo/packages/uv/package.py new file mode 100644 index 00000000..ab64652e --- /dev/null +++ b/recipes/icon/26.2/gh200/repo/packages/uv/package.py @@ -0,0 +1,121 @@ +from spack.package import * + + +def translate_platform(platform_name: str) -> str: + if platform_name is None: + return "unknown-linux-gnu" + if platform_name == "darwin": + return "apple-darwin" + elif platform_name == "linux": + return "unknown-linux-gnu" + return "unknown-linux-gnu" + + +def translate_arch(arch_name: str) -> str: + if arch_name is None: + return "aarch64" + if arch_name in ["m1", "m2", "neoverse_v2"]: + return "aarch64" + if arch_name in ["zen3", "icelake", "sapphirerapids", "skylake"]: + return "x86_64" + return "aarch64" + + +class Uv(Package): + """Install UV from binary releases""" + + url = "https://github.com/astral-sh/uv/releases/download/0.0.0/uv-ARCH-PLATFORM.tar.gz" + + version("0.7.12", sha256="dummy") + version("0.7.20", sha256="dummy") + version("0.9.3", sha256="dummy") + version("0.9.4", sha256="dummy") + version("0.11.16", sha256="dummy") + + # Platform-specific checksums + checksums = { + ( + "0.7.12", + "apple-darwin", + "aarch64", + ): "189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e", + ( + "0.7.12", + "unknown-linux-gnu", + "aarch64", + ): "23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200", + ( + "0.7.12", + "unknown-linux-gnu", + "x86_64", + ): "735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a", + ( + "0.7.20", + "unknown-linux-gnu", + "aarch64", + ): "675165f879d6833aa313ecb25ac44781e131933a984727e180b3218d2cd6c1e9", + ( + "0.7.20", + "unknown-linux-gnu", + "x86_64", + ): "10f204426ff188925d22a53c1d0310d190a8d4d24513712e1b8e2ca9873f0666", + ( + "0.9.3", + "unknown-linux-gnu", + "aarch64", + ): "2094a3ead5a026a2f6894c4d3f71026129c8878939a57f17f0c8246a737bed1d", + ( + "0.9.3", + "unknown-linux-gnu", + "x86_64", + ): "4d6f84490da4b21bb6075ffc1c6b22e0cf37bc98d7cca8aff9fbb759093cdc23", + ( + "0.9.4", + "unknown-linux-gnu", + "aarch64", + ): "c507e8cc4df18ed16533364013d93c2ace2c7f81a2a0d892a0dc833915b02e8b", + ( + "0.9.4", + "unknown-linux-gnu", + "x86_64", + ): "e02f7fc102d6a1ebfa3b260b788e9adf35802be28c8d85640e83246e61519c1e", + ( + "0.11.16", + "unknown-linux-gnu", + "aarch64", + ): "8c9d0f0ee98166ae6ab198747519ba6f25db29d185bd2ae5960ecebc91a5c22a", + ( + "0.11.16", + "unknown-linux-gnu", + "x86_64", + ): "74947fe2c03315cf07e82ab3acc703eddef01aba4d5232a98e4c6825ec116131", + } + + def url_for_version(self, version): + arch = translate_arch(getattr(self.spec, "target", "aarch64")) + platform = translate_platform( + getattr(self.spec, "platform", "unknown-linux-gnu") + ) + return f"https://github.com/astral-sh/uv/releases/download/{version}/uv-{arch}-{platform}.tar.gz" + + def do_stage(self, mirror_only=False): + version = str(self.spec.version) + arch = translate_arch(getattr(self.spec, "target", "aarch64")) + platform = translate_platform( + getattr(self.spec, "platform", "unknown-linux-gnu") + ) + key = (version, platform, arch) + + if key not in self.checksums: + raise InstallError( + f"Unsupported platform/arch for version {version}: {platform}-{arch}." + ) + + # Override fetcher digest with the correct checksum + self.fetcher.digest = self.checksums[key] + super().do_stage(mirror_only) + + def install(self, spec, prefix): + mkdir(prefix.bin) + install("uv", prefix.bin.uv) + install("uvx", prefix.bin.uvx) From fcfba58441ce1c2047bf3005465fde2ccc0704de Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 07:42:34 +0200 Subject: [PATCH 076/109] test: icon_nwp, no pre-install --- recipes/icon/26.2/gh200/environments.yaml | 2 +- recipes/icon/26.2/gh200/pre-install | 54 ------------------- .../{icon-nwp => icon_nwp}/package.py | 0 3 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 recipes/icon/26.2/gh200/pre-install rename recipes/icon/26.2/gh200/repo/packages/{icon-nwp => icon_nwp}/package.py (100%) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 406b0034..41a59453 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,7 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc + - icon_nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install deleted file mode 100644 index 826b5aa4..00000000 --- a/recipes/icon/26.2/gh200/pre-install +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# -------------------------- -# Configuration -# -------------------------- -packages=( - "icon-nwp" - "icon4py" - "uv" -) -SPACK_C2SM_TAG="v1.1_dev" - -echo "----------------------------------------" -echo "SPACK C2SM Setup Script" -echo "Tag to clone: ${SPACK_C2SM_TAG}" -echo "Packages to copy: ${packages[*]}" -echo "----------------------------------------" - -# -------------------------- -# Clone the spack-c2sm repository -# -------------------------- -echo "Cloning spack-c2sm repository (branch/tag: ${SPACK_C2SM_TAG})..." -git clone --depth 1 -b "${SPACK_C2SM_TAG}" https://github.com/C2SM/spack-c2sm.git -echo "Clone complete." - -# -------------------------- -# Copy packages into store/repo/packages -# -------------------------- -for package in "${packages[@]}"; do - SRC="spack-c2sm/repos/c2sm/packages/${package}" - DEST="store/repo/packages/${package}" - - echo "Copying package '${package}'..." - - if [[ ! -d "$SRC" ]]; then - echo "ERROR: Source package directory does not exist: $SRC" - exit 1 - fi - - mkdir -p "$(dirname "$DEST")" - cp -r "$SRC" "$DEST" - - echo "Package '${package}' copied to '$DEST'." -done - -# -------------------------- -# Cleanup -# -------------------------- -echo "Removing temporary clone 'spack-c2sm'..." -rm -rf spack-c2sm -echo "Cleanup complete." - -echo "All done!" diff --git a/recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py b/recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py similarity index 100% rename from recipes/icon/26.2/gh200/repo/packages/icon-nwp/package.py rename to recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py From 23f08f4b8df437490e54c65940b4b3132c21061c Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 09:12:00 +0200 Subject: [PATCH 077/109] fix: use correct naming convention for icon-nwp and revert changes with local recipe repo => also failing --- recipes/icon/26.2/gh200/environments.yaml | 2 +- recipes/icon/26.2/gh200/pre-install | 54 +++ .../gh200/repo/packages/icon4py/package.py | 154 ------- .../gh200/repo/packages/icon_nwp/package.py | 421 ------------------ .../26.2/gh200/repo/packages/uv/package.py | 121 ----- 5 files changed, 55 insertions(+), 697 deletions(-) create mode 100644 recipes/icon/26.2/gh200/pre-install delete mode 100644 recipes/icon/26.2/gh200/repo/packages/icon4py/package.py delete mode 100644 recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py delete mode 100644 recipes/icon/26.2/gh200/repo/packages/uv/package.py diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 41a59453..406b0034 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,7 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon_nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc + - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install new file mode 100644 index 00000000..826b5aa4 --- /dev/null +++ b/recipes/icon/26.2/gh200/pre-install @@ -0,0 +1,54 @@ +#!/bin/bash +set -euo pipefail + +# -------------------------- +# Configuration +# -------------------------- +packages=( + "icon-nwp" + "icon4py" + "uv" +) +SPACK_C2SM_TAG="v1.1_dev" + +echo "----------------------------------------" +echo "SPACK C2SM Setup Script" +echo "Tag to clone: ${SPACK_C2SM_TAG}" +echo "Packages to copy: ${packages[*]}" +echo "----------------------------------------" + +# -------------------------- +# Clone the spack-c2sm repository +# -------------------------- +echo "Cloning spack-c2sm repository (branch/tag: ${SPACK_C2SM_TAG})..." +git clone --depth 1 -b "${SPACK_C2SM_TAG}" https://github.com/C2SM/spack-c2sm.git +echo "Clone complete." + +# -------------------------- +# Copy packages into store/repo/packages +# -------------------------- +for package in "${packages[@]}"; do + SRC="spack-c2sm/repos/c2sm/packages/${package}" + DEST="store/repo/packages/${package}" + + echo "Copying package '${package}'..." + + if [[ ! -d "$SRC" ]]; then + echo "ERROR: Source package directory does not exist: $SRC" + exit 1 + fi + + mkdir -p "$(dirname "$DEST")" + cp -r "$SRC" "$DEST" + + echo "Package '${package}' copied to '$DEST'." +done + +# -------------------------- +# Cleanup +# -------------------------- +echo "Removing temporary clone 'spack-c2sm'..." +rm -rf spack-c2sm +echo "Cleanup complete." + +echo "All done!" diff --git a/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py b/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py deleted file mode 100644 index 1d01a1ac..00000000 --- a/recipes/icon/26.2/gh200/repo/packages/icon4py/package.py +++ /dev/null @@ -1,154 +0,0 @@ -import json -import os -import pathlib - -from spack.package import * -from spack_repo.builtin.build_systems.generic import Package - - -class Icon4py(Package): - """ICON4Py Python interface package.""" - - homepage = "https://github.com/C2SM/icon4py" - git = "https://github.com/C2SM/icon4py.git" - - # --- Versions --- - version("main", branch="main") - version("0.2.0rc2", tag="v0.2.0rc2") - - def url_for_version(self, version): - return f"https://github.com/C2SM/icon4py/archive/refs/tags/v{version}.zip" - - # --- Variants --- - variant("cuda", default=True, description="Enable CUDA support") - variant( - "cuda_arch", - default="none", - description="CUDA architecture (e.g. 80 for A100, 90 for H100)", - values=lambda x: True, # accept any user-specified string - ) - - # --- Dependencies --- - extends("python") - depends_on("python@3.12") - - depends_on("c", type="build") - depends_on("cxx", type="build") - - depends_on("git") - depends_on("uv@0.7:", type="build") - depends_on("bzip2", type="build") - depends_on("py-numpy") - depends_on("py-cffi") - depends_on("py-pybind11") - depends_on("py-nanobind") - depends_on("py-mpi4py") - depends_on("ghex@0.5.1:") - - with when("+cuda"): - depends_on("py-cupy +cuda") - depends_on("ghex +python +cuda") - - with when("~cuda"): - depends_on("ghex +python ~cuda") - - # --- Environment setup --- - def setup_build_environment(self, env): - """Propagate CUDA architecture to dependencies.""" - cuda_arch = self.spec.variants["cuda_arch"].value - if "+cuda" in self.spec: - if cuda_arch == "none": - tty.warn( - "Building with +cuda but no cuda_arch set. " - "Consider specifying e.g. cuda_arch=80 or cuda_arch=90." - ) - else: - env.set("SPACK_CUDA_ARCH", cuda_arch) - tty.msg(f"Building for CUDA architecture: {cuda_arch}") - - # --- Build/install logic --- - def install(self, spec, prefix): - uv = prepare_uv() - python_spec = spec["python"] - venv_path = prefix.share.venv - - tty.msg(f"Creating venv using Spack Python at: {python_spec.command.path}") - uv( - "venv", - "--seed", - "--relocatable", - "--system-site-packages", - str(venv_path), - "--python", - python_spec.command.path, - ) - - tty.msg("Grabbing Spack-installed packages (distributions)") - pip = Executable(venv_path.bin.pip) - spack_installed = get_installed_pkg(pip) - tty.msg(f"Found spack_installed packages: {spack_installed}") - - # --- Handle CUDA vs non-CUDA extras --- - extras = ["all"] - no_install = [*spack_installed, "ghex"] - - # TODO: Check if there's a way to avoid hardcoded cuda version - if "+cuda" in spec: - cuda_major_version = spec["cuda"].version[0] - extras.append(f"cuda{cuda_major_version}") - no_install.append(f"cupy-cuda{cuda_major_version}x") - - tty.msg("Installing missing packages via uv sync") - uv( - "sync", - "--active", - *(f"--extra {e}" for e in extras), - "--inexact", - "--no-editable", - "--python", - str(venv_path.bin.python), - *(f"--no-install-package {p}" for p in no_install), - extra_env={ - "VIRTUAL_ENV": str(venv_path), - "CC": self.compiler.cc, - "CXX": self.compiler.cxx, - }, - ) - - tty.msg("Linking Spack-installed packages into venv") - pathlib.Path( - f"{venv_path.lib.python}{python_spec.version.up_to(2)}/site-packages/spack_installed.pth" - ).write_text(pythonpath_to_pth()) - - tty.msg("Running py2fgen code generator") - py2fgen = Executable(venv_path.bin.py2fgen) - py2fgen( - "icon4py.tools.py2fgen.wrappers.all_bindings", - "diffusion_init,diffusion_run,grid_init,solve_nh_init,solve_nh_run", - "icon4py_bindings", - "-o", - prefix.src, - extra_env={ - "VIRTUAL_ENV": str(venv_path), - "CC": self.compiler.cc, - "CXX": self.compiler.cxx, - }, - ) - - -def prepare_uv(): - uv = which("uv") - uv.add_default_env("UV_NO_CACHE", "true") - uv.add_default_env("UV_NO_MANAGED_PYTHON", "true") - uv.add_default_env("UV_PYTHON_DOWNLOADS", "never") - return uv - - -def get_installed_pkg(pip): - return [ - item["name"] for item in json.loads(pip("list", "--format", "json", output=str)) - ] - - -def pythonpath_to_pth(): - return "\n".join(os.environ.get("PYTHONPATH", "").split(":")) diff --git a/recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py b/recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py deleted file mode 100644 index adf0f439..00000000 --- a/recipes/icon/26.2/gh200/repo/packages/icon_nwp/package.py +++ /dev/null @@ -1,421 +0,0 @@ -import os -import re -import glob -from collections import defaultdict -from dataclasses import dataclass, field - -from typing import Self, ClassVar -from itertools import chain - -from spack_repo.builtin.packages.icon.package import Icon -from spack.package import * - - -# NOTE: The aim is to upstream `IconConfigureArgs` to `spack_repo.builtin.packages.icon.package`. -# This way, we only need to directly modify `set_configure_args` like this: -# ```` -# def set_configure_args(self) -> None: -# super().set_configure_args() -# # modify self.icon_configure_args -# ```` -# The ``from_args`` class method would also disappear then. -@dataclass(kw_only=True) -class IconConfigureArgs: - FLAG_KEYS: ClassVar[list[str]] = [ - "LIBS", - "CFLAGS", - "FCFLAGS", - "ICON_FCFLAGS", - "LDFLAGS", - "ICON_LDFLAGS", - "ICON_BUNDLED_CFLAGS", - "ICON_YAC_CFLAGS", - "ICON_OCEAN_FCFLAGS", - "ICON_ECRAD_FCFLAGS", - "CUDAFLAGS", - ] - args: list[str] = field(default_factory=list) - flags: dict[str, list[str]] = field(default_factory=lambda: defaultdict(list)) - - def remove_dupplicates(self) -> None: - self.args = list(set(self.args)) - for key, values in self.flags.items(): - self.flags[key] = list(set(values)) - - def to_args(self) -> list[str]: - self.remove_dupplicates() - return [ *chain( self.args, ("{0}={1}".format(name, " ".join(values)) for name, values in self.flags.items()) ) ] - - @classmethod - def from_args(cls: type[Self], args: list[str]) -> Self: - icon_configure_args = cls() - for a in args: - found_key=False - for key in cls.FLAG_KEYS: - if a.startswith(f"{key}="): - icon_configure_args.flags[key].append(a.split("=", 1)[1].strip()) - found_key=True - break - if not found_key: - icon_configure_args.args.append(a) - return icon_configure_args - - -def check_variant_fcgroup(fcgroup): - pattern = re.compile(r"^[A-Z]+\..+\..") - # fcgroup is False as default - if pattern.match(fcgroup) or fcgroup == "none": - return True - else: - tty.warn("Variant fcgroup needs format GROUP.files.flag") - return False - -def check_variant_extra_config_args(extra_config_arg): - pattern = re.compile(r"--(enable|disable)-\S+") - if pattern.match(extra_config_arg) or extra_config_arg == "none": - return True - else: - tty.warn( - f'The value "{extra_config_arg}" for the extra_config_args variant must follow the format "--enable-arg" or "--disable-arg"' - ) - return False - - -class IconNwp(Icon): - """ICON - is a modeling framework for weather, climate, and environmental - prediction. - It solves the full three-dimensional non-hydrostatic and compressible - Navier-Stokes equations on an icosahedral grid and allows seamless - predictions from local to global scales. - This is for additional options from the upstream ICON for NWP specific features.""" - - homepage = "https://gitlab.dkrz.de/icon/icon-nwp" - git = "git@gitlab.dkrz.de:icon/icon-nwp.git" - submodules = True - - maintainers("leclairm", "stelliom", "huppd") - - version("develop", branch="master") - version("main", branch="master") - - version("2024.10-mch-1.0", tag="icon-2024.10-mch-1.0", preferred=True) - version("2024.01-mch-2.1", tag="icon-2024.01-mch-2.1") - version("2024.01-mch-2.0", tag="icon-2024.01-mch-2.0") - version("2.6.6-mch2b", tag="icon-nwp/icon-2.6.6-mch2b") - version("2.6.6-mch2a", tag="icon-nwp/icon-2.6.6-mch2a") - - - # Model Features: - variant( - "dace", - default=False, - description="Enable the DACE modules for data assimilation", - ) - requires("+mpi", when="+dace") - - variant( - "emvorado", - default=False, - description="Enable the radar forward operator EMVORADO", - ) - requires("+mpi", when="+emvorado") - - variant( - "art-gpl", - default=False, - description="Enable GPL-licensed code parts of the ART component", - ) - variant( - "acm-license", - default=False, - description="Enable code parts that require accepting the ACM Software License", - ) - - # Infrastructural Features: - variant( - "active-target-sync", - default=False, - description="Enable MPI active target mode (otherwise, passive target mode is used)", - ) - variant( - "async-io-rma", - default=True, - description="Enable remote memory access (RMA) for async I/O", - ) - variant( - "realloc-buf", - default=False, - description="Enable reallocatable communication buffer", - ) - variant("sct", default=False, description="Enable the SCT timer") - variant( - "extra-config-args", - default="none", - multi=True, - values=check_variant_extra_config_args, - description="Inject any configure argument not yet available as variant\nUse this feature cautiously, as injecting non-variant configure arguments may potentially disrupt the build process", - ) - - # Optimization Features: - variant("loop-exchange", default=False, description="Enable loop exchange") - variant( - "vectorized-lrtm", - default=False, - description="Enable the parallelization-invariant version of LRTM", - ) - variant( - "pgi-inlib", - default=False, - description="Enable PGI/NVIDIA cross-file function inlining via an inline library", - ) - variant("nccl", default=False, description="Enable NCCL for communication") - - variant("cuda-graphs", default=False, description="Enable CUDA graphs.") - requires("%nvhpc@23.3:", when="+cuda-graphs") - - variant( - "fcgroup", - default="none", - multi=True, - values=check_variant_fcgroup, - description="Create a Fortran compile group: GROUP;files;flag \nNote: flag can only be one single value, i.e. -O1", - ) - - variant("nvtx", default=False, description="Enable NVTX for profiling") - requires("%nvhpc", when="+nvtx") # NVTX is only supported for nvhpc - - # verbosity - variant( - "silent-rules", - default=True, - description="Enable silent-rules for build-process", - ) - - variant( - "eccodes-definitions", - default=False, - description="Enable extension of eccodes with center specific definition files", - ) - - variant("cuda-mempool", default=False, description="Enable cuda memory pool") - requires("+realloc-buf", when="+cuda-mempool") - - variant('icon4py', default=False, description='Build with ICON4Py granules') - - depends_on("eccodes-cosmo-resources", type="run", when="+eccodes-definitions") - - with when("+emvorado"): - depends_on("eccodes +fortran") - depends_on("hdf5 +szip +hl +fortran") - depends_on("zlib-ng") - # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. - depends_on("eccodes %nvhpc", when="%nvhpc") - depends_on("eccodes %gcc", when="%gcc") - - # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. - for __x in Icon.serialization_values: - depends_on( - "serialbox+fortran %nvhpc", when="serialization={0} %nvhpc".format(__x) - ) - depends_on("serialbox+fortran %gcc", when="serialization={0} %gcc".format(__x)) - - # WORKAROUND: A build and link dependency should imply that the same compiler is used. This enforces it. - depends_on("netcdf-fortran %nvhpc", when="%nvhpc") - depends_on("netcdf-fortran %gcc", when="%gcc") - - depends_on("hdf5 +szip", when="+sct") - - depends_on('icon4py', type="build", when="+icon4py") - - # patch_libtool is a function from Autotoolspackage. - # For BB we cannot use it because it finds all files - # named "libtool". spack-c2sm is cloned into icon-repo, - # therefore this function detects not only "libtool" files, but - # also the folder where libtool package itself is installed. - patch_libtool = False - - def setup_build_environment(self, env): - if self.spec.satisfies("+icon4py"): - tty.msg(f"adding {self.spec['icon4py'].prefix.share.venv.bin} to PATH for icon4py bindings because +icon4py is enabled") - env.prepend_path("PATH", self.spec["icon4py"].prefix.share.venv.bin) - - def setup_run_environment(self, env): - if self.spec.satisfies("+icon4py"): - tty.msg(f"adding {self.spec['icon4py'].prefix.share.venv.bin} to PATH for runtime because +icon4py is enabled") - env.prepend_path("PATH", self.spec["icon4py"].prefix.share.venv.bin) - env["VIRTUAL_ENV"] = self.spec["icon4py"].prefix.share.venv - - def set_configure_args(self) -> None: - self.icon_configure_args = IconConfigureArgs.from_args(super().configure_args()) - libs = LibraryList([]) - - for x in ( - "dace", - "emvorado", - "art-gpl", - "acm-license", - "active-target-sync", - "async-io-rma", - "realloc-buf", - "parallel-netcdf", - "sct", - "loop-exchange", - "vectorized-lrtm", - "pgi-inlib", - "nccl", - "cuda-graphs", - "silent-rules", - "icon4py", - ): - self.icon_configure_args.args.extend(self.enable_or_disable(x)) - - if "+emvorado" in self.spec: - libs.append(self.spec["eccodes:fortran"].libs) - libs.append(self.spec["hdf5:fortran,hl"].libs) - libs.append(self.spec["zlib-ng"].libs) - - if "+sct" in self.spec: - libs.append(self.spec["hdf5"].libs) - - if "+nvtx" in self.spec: - self.icon_configure_args.flags["FCFLAGS"].append("-D_USE_NVTX") - libs.append(LibraryList(["nvhpcwrapnvtx"])) - - if (fcgroup := self.spec.variants["fcgroup"].value) != ("none",): - # ('none',) is the values spack assigns if fcgroup is not set - for group in fcgroup: - name, files, flag = group.split(".") - self.icon_configure_args.args.append(f"--enable-fcgroup-{name}={files}") - self.icon_configure_args.flags[f"ICON_{name}_FCFLAGS"].append(flag) - - # add configure arguments not yet available as variant - if (extra_config_args := self.spec.variants["extra-config-args"].value) != ("none",): - for x in extra_config_args: - # prevent configure-args already available as variant - # to be set through variant extra_config_args - self.validate_extra_config_args(x) - self.icon_configure_args.args.append(x) - tty.warn( - "You use variant extra-config-args. Injecting non-variant configure arguments may potentially disrupt the build process!" - ) - - if self.spec.satisfies("+cuda-mempool"): - self.icon_configure_args.flags["ICON_FCFLAGS"].append("-cuda") - - # Help the libtool scripts of the bundled libraries find the correct - # paths to the external libraries. Specify the library search (-L) flags - # in the reversed order - # (see https://gitlab.dkrz.de/icon/icon#icon-dependencies): - # and for non-system directories only: - if non_system_reversed_lib_dirs := [f"-L{d}" for d in reversed(libs.directories) if not is_system_path(d)]: - self.icon_configure_args.flags["LDFLAGS"].extend(non_system_reversed_lib_dirs) - - self.icon_configure_args.flags["LIBS"].append(libs.link_flags) - - def configure_args(self) -> list[str]: - self.set_configure_args() - return self.icon_configure_args.to_args() - - def strip_variant_prefix(self, variant_string): - prefixes = ["--enable-", "--disable-"] - - for prefix in prefixes: - if variant_string.startswith(prefix): - return variant_string[len(prefix) :] - - raise ValueError - - def validate_extra_config_args(self, arg): - variant_from_arg = self.strip_variant_prefix(arg) - if variant_from_arg in self.spec.variants: - raise error.SpecError( - f'The value "{arg}" for the extra_config_args variant conflicts ' - f"with the existing variant {variant_from_arg}. Set this variant instead." - ) - - def configure(self, spec, prefix): - if ( - os.path.exists(os.path.join(self.build_directory, "icon.mk")) - and self.build_uses_same_spec() - ): - tty.warn( - "icon.mk already present -> skip configure stage", - '\t delete "icon.mk" or run "make distclean" to not skip configure', - ) - return - - # Call configure of Autotools - super().configure(spec, prefix) - - def build_uses_same_spec(self): - """ - Ensure that configure is rerun in case spec has changed, - otherwise for the case below - - $ spack dev-build icon @develop ~dace - $ spack dev-build icon @develop +dace - - configure is skipped for the latter. - """ - - is_same_spec = False - - previous_spec = os.path.join(self.build_directory, ".previous_spec.yaml") - - # not the first build in self.build_directory - if os.path.exists(previous_spec): - with open(previous_spec, mode="r") as f: - if self.spec == Spec.from_yaml(f): - is_same_spec = True - else: - is_same_spec = False - tty.warn("Cannot skip configure phase because spec changed") - - # first build in self.build_directory, no worries - else: - is_same_spec = False - - # dump spec of new build - with open(previous_spec, mode="w") as f: - f.write(self.spec.to_yaml()) - - return is_same_spec - - @run_after("configure") - def copy_runscript_related_input_files(self): - with working_dir(self.build_directory): - icon_dir = self.configure_directory - # only synchronize if out-of-source build - if os.path.abspath(icon_dir) != os.path.abspath(self.build_directory): - Rsync = which("rsync", required=True) - Rsync( - "-uavz", - f"{icon_dir}/run", - ".", - "--exclude=*.in", - "--exclude=.*", - "--exclude=standard_*", - ) - Rsync( - "-uavz", - f"{icon_dir}/externals", - ".", - "--exclude=.git", - "--exclude=*.f90", - "--exclude=*.F90", - "--exclude=*.c", - "--exclude=*.h", - "--exclude=*.Po", - "--exclude=tests", - "--exclude=*.mod", - "--exclude=*.o", - ) - Rsync("-uavz", f"{icon_dir}/make_runscripts", ".") - - Ln = which("ln", required=True) - dirs = glob.glob(f"{icon_dir}/run/standard_*") - for dir in dirs: - Ln("-sf", "-t", "run/", f"{dir}") - Ln("-sf", f"{icon_dir}/data") - Ln("-sf", f"{icon_dir}/vertical_coord_tables") - Ln("-sf", f"{icon_dir}/scripts") diff --git a/recipes/icon/26.2/gh200/repo/packages/uv/package.py b/recipes/icon/26.2/gh200/repo/packages/uv/package.py deleted file mode 100644 index ab64652e..00000000 --- a/recipes/icon/26.2/gh200/repo/packages/uv/package.py +++ /dev/null @@ -1,121 +0,0 @@ -from spack.package import * - - -def translate_platform(platform_name: str) -> str: - if platform_name is None: - return "unknown-linux-gnu" - if platform_name == "darwin": - return "apple-darwin" - elif platform_name == "linux": - return "unknown-linux-gnu" - return "unknown-linux-gnu" - - -def translate_arch(arch_name: str) -> str: - if arch_name is None: - return "aarch64" - if arch_name in ["m1", "m2", "neoverse_v2"]: - return "aarch64" - if arch_name in ["zen3", "icelake", "sapphirerapids", "skylake"]: - return "x86_64" - return "aarch64" - - -class Uv(Package): - """Install UV from binary releases""" - - url = "https://github.com/astral-sh/uv/releases/download/0.0.0/uv-ARCH-PLATFORM.tar.gz" - - version("0.7.12", sha256="dummy") - version("0.7.20", sha256="dummy") - version("0.9.3", sha256="dummy") - version("0.9.4", sha256="dummy") - version("0.11.16", sha256="dummy") - - # Platform-specific checksums - checksums = { - ( - "0.7.12", - "apple-darwin", - "aarch64", - ): "189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e", - ( - "0.7.12", - "unknown-linux-gnu", - "aarch64", - ): "23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200", - ( - "0.7.12", - "unknown-linux-gnu", - "x86_64", - ): "735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a", - ( - "0.7.20", - "unknown-linux-gnu", - "aarch64", - ): "675165f879d6833aa313ecb25ac44781e131933a984727e180b3218d2cd6c1e9", - ( - "0.7.20", - "unknown-linux-gnu", - "x86_64", - ): "10f204426ff188925d22a53c1d0310d190a8d4d24513712e1b8e2ca9873f0666", - ( - "0.9.3", - "unknown-linux-gnu", - "aarch64", - ): "2094a3ead5a026a2f6894c4d3f71026129c8878939a57f17f0c8246a737bed1d", - ( - "0.9.3", - "unknown-linux-gnu", - "x86_64", - ): "4d6f84490da4b21bb6075ffc1c6b22e0cf37bc98d7cca8aff9fbb759093cdc23", - ( - "0.9.4", - "unknown-linux-gnu", - "aarch64", - ): "c507e8cc4df18ed16533364013d93c2ace2c7f81a2a0d892a0dc833915b02e8b", - ( - "0.9.4", - "unknown-linux-gnu", - "x86_64", - ): "e02f7fc102d6a1ebfa3b260b788e9adf35802be28c8d85640e83246e61519c1e", - ( - "0.11.16", - "unknown-linux-gnu", - "aarch64", - ): "8c9d0f0ee98166ae6ab198747519ba6f25db29d185bd2ae5960ecebc91a5c22a", - ( - "0.11.16", - "unknown-linux-gnu", - "x86_64", - ): "74947fe2c03315cf07e82ab3acc703eddef01aba4d5232a98e4c6825ec116131", - } - - def url_for_version(self, version): - arch = translate_arch(getattr(self.spec, "target", "aarch64")) - platform = translate_platform( - getattr(self.spec, "platform", "unknown-linux-gnu") - ) - return f"https://github.com/astral-sh/uv/releases/download/{version}/uv-{arch}-{platform}.tar.gz" - - def do_stage(self, mirror_only=False): - version = str(self.spec.version) - arch = translate_arch(getattr(self.spec, "target", "aarch64")) - platform = translate_platform( - getattr(self.spec, "platform", "unknown-linux-gnu") - ) - key = (version, platform, arch) - - if key not in self.checksums: - raise InstallError( - f"Unsupported platform/arch for version {version}: {platform}-{arch}." - ) - - # Override fetcher digest with the correct checksum - self.fetcher.digest = self.checksums[key] - super().do_stage(mirror_only) - - def install(self, spec, prefix): - mkdir(prefix.bin) - install("uv", prefix.bin.uv) - install("uvx", prefix.bin.uvx) From 6f93000d8cb48d52c93280c0e90f6a036d193a8e Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 14:48:14 +0200 Subject: [PATCH 078/109] fix:test:: use new style package repo + only add icon4py --- recipes/icon/26.2/gh200/environments.yaml | 8 ++++---- recipes/icon/26.2/gh200/pre-install | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 406b0034..1fcce9d5 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,10 +6,10 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc - ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - fflags="-traceback" + # - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc + # ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + # +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + # fflags="-traceback" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index 826b5aa4..eecca677 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -5,7 +5,7 @@ set -euo pipefail # Configuration # -------------------------- packages=( - "icon-nwp" + "icon_nwp" "icon4py" "uv" ) From e8cb62c0ee5dc48ae46a2672d3f876e3905e0517 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 15:02:29 +0200 Subject: [PATCH 079/109] fix: adapt pre-install to new C2SM packages repo --- recipes/icon/26.2/gh200/pre-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index eecca677..727c5718 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -28,7 +28,7 @@ echo "Clone complete." # Copy packages into store/repo/packages # -------------------------- for package in "${packages[@]}"; do - SRC="spack-c2sm/repos/c2sm/packages/${package}" + SRC="spack-c2sm/repos/spack_repo/c2sm/packages/${package}" DEST="store/repo/packages/${package}" echo "Copying package '${package}'..." From 6dfc4a55a37da458cb4d72a723f930f9f424c9cd Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Fri, 29 May 2026 17:38:15 +0200 Subject: [PATCH 080/109] fix: pre-install also new package style for stackinator --- recipes/icon/26.2/gh200/pre-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install index 727c5718..44a8aa52 100644 --- a/recipes/icon/26.2/gh200/pre-install +++ b/recipes/icon/26.2/gh200/pre-install @@ -29,7 +29,7 @@ echo "Clone complete." # -------------------------- for package in "${packages[@]}"; do SRC="spack-c2sm/repos/spack_repo/c2sm/packages/${package}" - DEST="store/repo/packages/${package}" + DEST="store/repos/spack_repo/alps/packages/${package}" echo "Copying package '${package}'..." From 306cf54e7ee4dcbb83c722a8a93350a6b28fe137 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 10:36:35 +0200 Subject: [PATCH 081/109] test repo from @msimberg Co-authored-by: Mikael Simberg --- recipes/icon/26.2/gh200/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index beaf9372..0b6c57f1 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: develop + commit: # develop on modules: true description: "Compilers and libraries required to build ICON" version: 2 From c24d451167a79a703b6f3c3913baa810b758e8ab Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 11:15:11 +0200 Subject: [PATCH 082/109] fix: actual suggestion from @msimberg ... --- recipes/icon/26.2/gh200/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index 0b6c57f1..5774dd39 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -4,8 +4,8 @@ spack: repo: https://github.com/spack/spack.git commit: releases/v1.1 packages: - repo: https://github.com/spack/spack-packages.git - commit: # develop on + repo: https://github.com/msimberg/spack-packages.git + commit: f91b0aa48685447b54f1e27681ec4b6bb23c228c modules: true description: "Compilers and libraries required to build ICON" version: 2 From 3c4de1271383b5fb8cd9989bce09acb91a85d1f3 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 12:31:04 +0200 Subject: [PATCH 083/109] add: Try re-adding icon+icon4py --- recipes/icon/26.2/gh200/environments.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 1fcce9d5..f5f601e9 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,10 +6,10 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - # - icon-nwp@git.527d72ad5524ed48bfa62fc5713ec64f5b4faf07 %c,cxx,fortran=nvhpc - # ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - # +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - # fflags="-traceback" + - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 %c,cxx,fortran=nvhpc + ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + fflags="-traceback" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From aabbf20c0fef9ff6387fd1429faf55542c44a44c Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 13:30:21 +0200 Subject: [PATCH 084/109] ghex fix merged => back to spack repo Co-authored-by: Mikael Simberg --- recipes/icon/26.2/gh200/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index 5774dd39..ce09284d 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -4,8 +4,8 @@ spack: repo: https://github.com/spack/spack.git commit: releases/v1.1 packages: - repo: https://github.com/msimberg/spack-packages.git - commit: f91b0aa48685447b54f1e27681ec4b6bb23c228c + repo: https://github.com/spack/spack-packages.git + commit: f003b0fb96ea91706254976f78e87c667ef70672 modules: true description: "Compilers and libraries required to build ICON" version: 2 From 2d44fa856cf8ec3af9f1ed12f6138112022327d9 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 16:36:45 +0200 Subject: [PATCH 085/109] fix: indentation error --- recipes/icon/26.2/gh200/environments.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index f5f601e9..73ed1f4e 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -7,9 +7,9 @@ icon: specs: - icon4py@0.2.0rc2 - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 %c,cxx,fortran=nvhpc - ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - fflags="-traceback" + ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + fflags="-traceback" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From e09b19c99fc01fa01cac67adb486b1e0b88b9d64 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 19:44:46 +0200 Subject: [PATCH 086/109] test: try single line --- recipes/icon/26.2/gh200/environments.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 73ed1f4e..82f271bc 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,10 +6,7 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 %c,cxx,fortran=nvhpc - ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - fflags="-traceback" + - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From c2f04750ec2deddd5faa26aa8fa96e733c3a71c2 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Mon, 1 Jun 2026 21:18:57 +0200 Subject: [PATCH 087/109] fix: move compiler to the end of the icon spec --- recipes/icon/26.2/gh200/environments.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 82f271bc..3d58f51f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,10 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 %c,cxx,fortran=nvhpc ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" + - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 + ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + fflags="-traceback" %c,cxx,fortran=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From cf5c4d8f98445b099bbb2c3a102fad9f76b20cb0 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 2 Jun 2026 12:18:34 +0200 Subject: [PATCH 088/109] test: try again unify true otherwise we end up with 2 netcdf-c --- recipes/icon/26.2/gh200/environments.yaml | 27 ++++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 3d58f51f..cd88bec1 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -3,28 +3,33 @@ icon: network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc specs: [ xpmem ] - unify: when_possible + # unify: when_possible + unify: true specs: - - icon4py@0.2.0rc2 - - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 - ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - fflags="-traceback" %c,cxx,fortran=nvhpc + # - icon4py@0.2.0rc2 + # - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 + # ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp + # +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib + # fflags="-traceback" %c,cxx,fortran=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + # - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + # - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc + # - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - hdf5 %c,fortran=nvhpc + - netcdf-c %c,cxx=nvhpc + - netcdf-fortran %c,fortran=nvhpc - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - cdo # everything needed for nccl on SS11 - - nccl@2.29.2 + # - nccl@2.29.2 + - nccl - nccl-tests - - aws-ofi-nccl@1.17.2 + # - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From c61e193ff505cef1735ae45f1445db7b66e8a6bb Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 2 Jun 2026 12:59:26 +0200 Subject: [PATCH 089/109] rev: revert previous commit except icon-nwp --- recipes/icon/26.2/gh200/environments.yaml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index cd88bec1..f63dc330 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -3,10 +3,9 @@ icon: network: mpi: cray-mpich@9.1.0 +cuda %c,cxx,fortran=nvhpc ^libfabric@2 +gdrcopy %c=nvhpc specs: [ xpmem ] - # unify: when_possible - unify: true + unify: when_possible specs: - # - icon4py@0.2.0rc2 + - icon4py@0.2.0rc2 # - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 # ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp # +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib @@ -15,21 +14,17 @@ icon: - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 - # - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - # - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - # - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - - hdf5 %c,fortran=nvhpc - - netcdf-c %c,cxx=nvhpc - - netcdf-fortran %c,fortran=nvhpc + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - cdo # everything needed for nccl on SS11 - # - nccl@2.29.2 - - nccl + - nccl@2.29.2 - nccl-tests - # - aws-ofi-nccl@1.17.2 + - aws-ofi-nccl@1.17.2 # extras - libfyaml - zlib-ng From 742dfa7044b5f2b964830d8d917c84067e288e30 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 2 Jun 2026 17:58:16 +0200 Subject: [PATCH 090/109] Uncomment icon-nwp --- recipes/icon/26.2/gh200/environments.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index f63dc330..9c721fe0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,10 +6,7 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - # - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 - # ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp - # +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib - # fflags="-traceback" %c,cxx,fortran=nvhpc + - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" %c,cxx,fortran=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From cf9cda5d743113da4ff7a4c27adc1874f330a290 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 2 Jun 2026 18:45:05 +0200 Subject: [PATCH 091/109] Removed icon-nwp --- recipes/icon/26.2/gh200/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 9c721fe0..0b5a6e1c 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,7 +6,6 @@ icon: unify: when_possible specs: - icon4py@0.2.0rc2 - - icon-nwp@git.03238a74e31348ea1723169b2ac8d7e750266e85 ~aes +ecrad +jsbach +ocean +coupling ~rte-rrtmgp +icon4py +cuda-mempool gpu=nvidia-90 ~mpi-gpu +realloc-buf +cuda-graphs +pgi-inlib fflags="-traceback" %c,cxx,fortran=nvhpc - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc From 8a202a76d4903cfb7c5d565fe740b5d3dd48a8d3 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Tue, 2 Jun 2026 21:09:58 +0200 Subject: [PATCH 092/109] Pin CDO --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 0b5a6e1c..0a55f9f4 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -16,7 +16,7 @@ icon: - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - - cdo + - cdo@2.6.0 # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests From 858e19bb66122581283e41836aa080f09f6f40fd Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Wed, 3 Jun 2026 19:16:38 +0200 Subject: [PATCH 093/109] Unpinned CDO --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 0a55f9f4..0b5a6e1c 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -16,7 +16,7 @@ icon: - boost ~mpi - openblas %c,cxx,fortran=nvhpc # for validation - - cdo@2.6.0 + - cdo # everything needed for nccl on SS11 - nccl@2.29.2 - nccl-tests From a9db256c54ccf11898705212d3c3ab0fe7dcf285 Mon Sep 17 00:00:00 2001 From: Mikael Stellio Date: Thu, 4 Jun 2026 13:58:09 +0200 Subject: [PATCH 094/109] Revert addition of icon4py --- recipes/icon/26.2/gh200/config.yaml | 2 +- recipes/icon/26.2/gh200/environments.yaml | 1 - recipes/icon/26.2/gh200/pre-install | 54 ----------------------- 3 files changed, 1 insertion(+), 56 deletions(-) delete mode 100644 recipes/icon/26.2/gh200/pre-install diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index ce09284d..beaf9372 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: f003b0fb96ea91706254976f78e87c667ef70672 + commit: develop modules: true description: "Compilers and libraries required to build ICON" version: 2 diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 0b5a6e1c..d64b8ee8 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,7 +5,6 @@ icon: specs: [ xpmem ] unify: when_possible specs: - - icon4py@0.2.0rc2 - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc diff --git a/recipes/icon/26.2/gh200/pre-install b/recipes/icon/26.2/gh200/pre-install deleted file mode 100644 index 44a8aa52..00000000 --- a/recipes/icon/26.2/gh200/pre-install +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# -------------------------- -# Configuration -# -------------------------- -packages=( - "icon_nwp" - "icon4py" - "uv" -) -SPACK_C2SM_TAG="v1.1_dev" - -echo "----------------------------------------" -echo "SPACK C2SM Setup Script" -echo "Tag to clone: ${SPACK_C2SM_TAG}" -echo "Packages to copy: ${packages[*]}" -echo "----------------------------------------" - -# -------------------------- -# Clone the spack-c2sm repository -# -------------------------- -echo "Cloning spack-c2sm repository (branch/tag: ${SPACK_C2SM_TAG})..." -git clone --depth 1 -b "${SPACK_C2SM_TAG}" https://github.com/C2SM/spack-c2sm.git -echo "Clone complete." - -# -------------------------- -# Copy packages into store/repo/packages -# -------------------------- -for package in "${packages[@]}"; do - SRC="spack-c2sm/repos/spack_repo/c2sm/packages/${package}" - DEST="store/repos/spack_repo/alps/packages/${package}" - - echo "Copying package '${package}'..." - - if [[ ! -d "$SRC" ]]; then - echo "ERROR: Source package directory does not exist: $SRC" - exit 1 - fi - - mkdir -p "$(dirname "$DEST")" - cp -r "$SRC" "$DEST" - - echo "Package '${package}' copied to '$DEST'." -done - -# -------------------------- -# Cleanup -# -------------------------- -echo "Removing temporary clone 'spack-c2sm'..." -rm -rf spack-c2sm -echo "Cleanup complete." - -echo "All done!" From ca1cf17349d573e292e35e04ec484723db1678cf Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 9 Jun 2026 11:23:01 +0200 Subject: [PATCH 095/109] add: python-venv for new icon-nwp recipe (+icon4py) --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index d64b8ee8..34b82d2f 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -6,6 +6,7 @@ icon: unify: when_possible specs: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc + - python-venv - cuda@13.1 - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 From 70ba503cd2065bdd2f61461e6d1258b6517ac3aa Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 9 Jun 2026 13:44:14 +0200 Subject: [PATCH 096/109] ref: exclude python-venv from default view also indent list --- recipes/icon/26.2/gh200/environments.yaml | 50 ++++++++++++----------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 34b82d2f..4c99ec7a 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,34 +5,36 @@ icon: specs: [ xpmem ] unify: when_possible specs: - - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - - python-venv - - cuda@13.1 - - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - - boost ~mpi - - openblas %c,cxx,fortran=nvhpc - # for validation - - cdo - # everything needed for nccl on SS11 - - nccl@2.29.2 - - nccl-tests - - aws-ofi-nccl@1.17.2 - # extras - - libfyaml - - zlib-ng - - cmake - - findutils + - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc + - python-venv + - cuda@13.1 + - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes-cosmo-resources@2.36.0.3 + - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc + - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc + - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc + - boost ~mpi + - openblas %c,cxx,fortran=nvhpc + # for validation + - cdo + # everything needed for nccl on SS11 + - nccl@2.29.2 + - nccl-tests + - aws-ofi-nccl@1.17.2 + # extras + - libfyaml + - zlib-ng + - cmake + - findutils variants: - - +mpi - - +cuda - - cuda_arch=90 + - +mpi + - +cuda + - cuda_arch=90 views: default: link: roots uenv: prefix_paths: LD_LIBRARY_PATH: [lib, lib64] + exclude: + - py-venv From d785449e1e530fd30e975e93a53e9e33ba8c88d5 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 9 Jun 2026 17:55:12 +0200 Subject: [PATCH 097/109] fix: typo --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 4c99ec7a..c85532a0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -37,4 +37,4 @@ icon: prefix_paths: LD_LIBRARY_PATH: [lib, lib64] exclude: - - py-venv + - python-venv From 646dddd8087728dd2de16780457301f6e40355ed Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Wed, 10 Jun 2026 18:18:26 +0200 Subject: [PATCH 098/109] add: serialbox --- recipes/icon/26.2/gh200/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index c85532a0..b3d59c91 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -15,6 +15,7 @@ icon: - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - boost ~mpi - openblas %c,cxx,fortran=nvhpc + - serialbox +fortran +python +netcdf %c,cxx,fortran=nvhpc # for validation - cdo # everything needed for nccl on SS11 From 9b09f37cd436cd25cf90480ef817453ef7680108 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Wed, 10 Jun 2026 18:40:47 +0200 Subject: [PATCH 099/109] del: remove +python variant from serialbox --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index b3d59c91..18793e93 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -15,7 +15,7 @@ icon: - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - boost ~mpi - openblas %c,cxx,fortran=nvhpc - - serialbox +fortran +python +netcdf %c,cxx,fortran=nvhpc + - serialbox +fortran +netcdf %c,cxx,fortran=nvhpc # for validation - cdo # everything needed for nccl on SS11 From ca0832f6330b5362db006091baca6f1510083062 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Wed, 10 Jun 2026 21:53:49 +0200 Subject: [PATCH 100/109] test: only non default variants + eccodes %nvhpc dependency --- recipes/icon/26.2/gh200/environments.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 18793e93..7022523b 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,12 +8,12 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - - eccodes@2.36.4 +aec+fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools jp2k=openjpeg %c,cxx,fortran=nvhpc - - eccodes-cosmo-resources@2.36.0.3 - - hdf5@1.14.6 ~cxx+fortran+hl~ipo~java~map+mpi+shared~subfiling+szip~threadsafe+tools api=default %c,fortran=nvhpc - - netcdf-c@4.9.3 +blosc~byterange~dap~fsync~hdf4~jna~logging+mpi~nczarr_zip+optimize~parallel-netcdf+pic+shared+szip+zstd %c,cxx=nvhpc - - netcdf-fortran@4.6.2 ~doc+pic+shared %c,fortran=nvhpc - - boost ~mpi + - eccodes@2.36.4 +fortran %c,cxx,fortran=nvhpc + - eccodes-cosmo-resources@2.36.0.3 ^eccodes %c,cxx,fortran=nvhpc + - hdf5@1.14.6 +fortran+hl+szip+threadsafe %c,fortran=nvhpc + - netcdf-c@4.9.3 %c,cxx=nvhpc + - netcdf-fortran@4.6.2 %c,fortran=nvhpc + - boost - openblas %c,cxx,fortran=nvhpc - serialbox +fortran +netcdf %c,cxx,fortran=nvhpc # for validation From 2c306f4f32ee6106f8631fb9dfac37106d93bcc8 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Wed, 10 Jun 2026 23:00:50 +0200 Subject: [PATCH 101/109] add: jp2k=openjpeg was actually not default --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index 7022523b..a410e541 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,7 +8,7 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - - eccodes@2.36.4 +fortran %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +fortran jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 ^eccodes %c,cxx,fortran=nvhpc - hdf5@1.14.6 +fortran+hl+szip+threadsafe %c,fortran=nvhpc - netcdf-c@4.9.3 %c,cxx=nvhpc From 2143883aec167573099476eb9b87d2fbe531f5d7 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 11 Jun 2026 12:00:26 +0200 Subject: [PATCH 102/109] test[eccodes]: back to jp2k=jasper --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index a410e541..fe1040b0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,7 +8,7 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - - eccodes@2.36.4 +fortran jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +fortran jp2k=jasper %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 ^eccodes %c,cxx,fortran=nvhpc - hdf5@1.14.6 +fortran+hl+szip+threadsafe %c,fortran=nvhpc - netcdf-c@4.9.3 %c,cxx=nvhpc From dcb06e0ad433d03a2eec1b66b05e2419e624bd2c Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 12 Jun 2026 13:25:02 +0200 Subject: [PATCH 103/109] Test openjpeg again --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index fe1040b0..a410e541 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,7 +8,7 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - - eccodes@2.36.4 +fortran jp2k=jasper %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +fortran jp2k=openjpeg %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 ^eccodes %c,cxx,fortran=nvhpc - hdf5@1.14.6 +fortran+hl+szip+threadsafe %c,fortran=nvhpc - netcdf-c@4.9.3 %c,cxx=nvhpc From 6217b7ca5f12e48704b8fb2dc6f1105818b7c668 Mon Sep 17 00:00:00 2001 From: Mikael Stellio <67868694+stelliom@users.noreply.github.com> Date: Fri, 12 Jun 2026 14:32:17 +0200 Subject: [PATCH 104/109] Back to jasper --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index a410e541..fe1040b0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -8,7 +8,7 @@ icon: - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - - eccodes@2.36.4 +fortran jp2k=openjpeg %c,cxx,fortran=nvhpc + - eccodes@2.36.4 +fortran jp2k=jasper %c,cxx,fortran=nvhpc - eccodes-cosmo-resources@2.36.0.3 ^eccodes %c,cxx,fortran=nvhpc - hdf5@1.14.6 +fortran+hl+szip+threadsafe %c,fortran=nvhpc - netcdf-c@4.9.3 %c,cxx=nvhpc From 554d64ffefeb494a7aad1968543bcb0a52932800 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 16 Jun 2026 11:27:12 +0200 Subject: [PATCH 105/109] upd: use python 3.13 --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index fe1040b0..f65f5711 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,7 +5,7 @@ icon: specs: [ xpmem ] unify: when_possible specs: - - python@3.12 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc + - python@3.13 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - eccodes@2.36.4 +fortran jp2k=jasper %c,cxx,fortran=nvhpc From 675957bfe8d5dc327e5b448fcddc856b7d06a7e8 Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 16 Jun 2026 11:47:42 +0200 Subject: [PATCH 106/109] fix[python]: no dep on libxcrypt when not +crypt --- recipes/icon/26.2/gh200/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/environments.yaml b/recipes/icon/26.2/gh200/environments.yaml index f65f5711..daa457a0 100644 --- a/recipes/icon/26.2/gh200/environments.yaml +++ b/recipes/icon/26.2/gh200/environments.yaml @@ -5,7 +5,7 @@ icon: specs: [ xpmem ] unify: when_possible specs: - - python@3.13 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^libxcrypt %c=gcc ^gettext %c,cxx=gcc + - python@3.13 %c,cxx=gcc ^libffi %c,cxx=gcc ^expat %c=gcc ^libmd %c=gcc ^gettext %c,cxx=gcc - python-venv - cuda@13.1 - eccodes@2.36.4 +fortran jp2k=jasper %c,cxx,fortran=nvhpc From 5597fbee397586776b515c34b5ac915775d799cb Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Tue, 16 Jun 2026 11:50:21 +0200 Subject: [PATCH 107/109] fix: (re)pin builtin repo packages commit Somehow got lost --- recipes/icon/26.2/gh200/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index beaf9372..8a588392 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -5,7 +5,7 @@ spack: commit: releases/v1.1 packages: repo: https://github.com/spack/spack-packages.git - commit: develop + commit: 22599d09b1672ee066e6b4336956ea83e1d9e6f0 # develop on modules: true description: "Compilers and libraries required to build ICON" version: 2 From 3fc58fb9e1044df70176ccdd7714fe84302ca0dd Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Wed, 17 Jun 2026 21:32:36 +0200 Subject: [PATCH 108/109] ref: use spack-c2sm repo directly from config no need for the pre-install hack anymore --- recipes/icon/26.2/gh200/config.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recipes/icon/26.2/gh200/config.yaml b/recipes/icon/26.2/gh200/config.yaml index 8a588392..3b96c464 100644 --- a/recipes/icon/26.2/gh200/config.yaml +++ b/recipes/icon/26.2/gh200/config.yaml @@ -4,8 +4,12 @@ spack: repo: https://github.com/spack/spack.git commit: releases/v1.1 packages: - repo: https://github.com/spack/spack-packages.git - commit: 22599d09b1672ee066e6b4336956ea83e1d9e6f0 # develop on + c2sm: + repo: https://github.com/C2SM/spack-c2sm.git + commit: v1.1_dev # TODO: pin this to a tag + builtin: + repo: https://github.com/spack/spack-packages.git + commit: 22599d09b1672ee066e6b4336956ea83e1d9e6f0 # develop on 15.06.2026 modules: true description: "Compilers and libraries required to build ICON" version: 2 From 7eacf653e84f6d2949a2f5801cfcff22bf041bfa Mon Sep 17 00:00:00 2001 From: Matthieu Leclair Date: Thu, 18 Jun 2026 17:53:12 +0200 Subject: [PATCH 109/109] test[nvhpc]: Try downgrading to 26.1 for cpu-gpu validation --- recipes/icon/26.2/gh200/compilers.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes/icon/26.2/gh200/compilers.yaml b/recipes/icon/26.2/gh200/compilers.yaml index 5a9e8511..9573155d 100644 --- a/recipes/icon/26.2/gh200/compilers.yaml +++ b/recipes/icon/26.2/gh200/compilers.yaml @@ -1,4 +1,6 @@ gcc: version: "14" nvhpc: - version: "26.3" + # version: "26.3" + # - ML - downgrade try + version: "26.1"