Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
c24db67
tmp:add: wait_for_compilation
Mar 9, 2026
7b8376e
fix: wrong icon4py version
Mar 9, 2026
752a540
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 13, 2026
6fb1419
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 13, 2026
c1269fd
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 13, 2026
5abd3f8
Update recipes/icon-dsl/25.12/gh200/repo/packages/icon-exclaim/packag…
msimberg Mar 13, 2026
b93847a
Update recipes/icon-dsl/25.12/gh200/repo/packages/icon-exclaim/packag…
msimberg Mar 13, 2026
ea53fc5
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
466f016
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
6b7cd7d
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
59bea8a
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
eae7b87
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
ae0d38b
Update recipes/icon-dsl/25.12/gh200/environments.yaml
msimberg Mar 16, 2026
5fd54de
Update recipes/icon-dsl/25.12/gh200/repo/packages/icon-exclaim/packag…
msimberg Mar 16, 2026
69fdb48
Try older commit of ghex
msimberg Mar 17, 2026
ce47321
Remove ghex version constraint
msimberg Mar 18, 2026
4276806
Update icon4py
msimberg Mar 18, 2026
8715551
Remove more version constraints
msimberg Mar 18, 2026
091e1a7
Update icon-exclaim commit
msimberg Mar 19, 2026
2d7cfeb
Use ghex with nccl backend
msimberg Mar 25, 2026
40b2628
Update libfabric
msimberg Mar 25, 2026
2ecc4b7
Try to loosen nccl+py-cupy constraint
msimberg Mar 25, 2026
9b1aa5c
Copy packages
msimberg Mar 25, 2026
75a249a
Point to custom uenv-pipeline/alps-cluster-config
msimberg Mar 25, 2026
e940776
Add gdrcopy
msimberg Mar 25, 2026
c27f5d5
Try to force libfabric version
msimberg Mar 25, 2026
b989663
Back to other spec
msimberg Mar 25, 2026
4c314ee
Don't force gcc
msimberg Mar 25, 2026
ee7fed2
Add patched gettext
msimberg Mar 25, 2026
f03ea11
Add libfuse
msimberg Mar 25, 2026
3928175
Update ghex/oomph commits
msimberg Mar 25, 2026
122dddb
Adjust versions
msimberg Mar 25, 2026
4d729e1
Add nccl-tests
msimberg Mar 26, 2026
2081555
Adjust versions again
msimberg Mar 26, 2026
3d66d18
Update icon4py and icon-exclaim
msimberg Mar 26, 2026
e2c2efe
Update icon4py build options in icon-exclaim package
msimberg Mar 26, 2026
1956e51
Try to set icon4py venv bin path in icon-exclaim
msimberg Mar 26, 2026
b1bb3d9
Try to add dsl=verify
msimberg Mar 26, 2026
9f811e9
Update icon4py and icon-exclaim and add dsl=verify build
msimberg Mar 26, 2026
68f206e
Merge branch 'tmp_wait_for_compilation' into sc-nccl
msimberg Mar 26, 2026
ed98294
Add icon4py 0.1.0 and icon-exclaim 0.3.0
msimberg Mar 27, 2026
b471666
Merge branch 'tmp_wait_for_compilation' into sc-nccl
msimberg Mar 27, 2026
2cffb3a
Update recipe with icon4py/icon-exclaim versions
msimberg Mar 27, 2026
90171f1
Merge branch 'tmp_wait_for_compilation' into sc-nccl
msimberg Mar 27, 2026
5dde8bc
Try to update icon-dsl/25.12/a100 recipe to match gh200
msimberg Mar 27, 2026
22775e9
No symlink for repo
msimberg Mar 27, 2026
197f1d1
Merge branch 'tmp_wait_for_compilation' into sc-nccl
msimberg Mar 27, 2026
8dc0fbc
Update pre-install for icon-dsl/25.12/a100
msimberg Mar 27, 2026
f367745
Merge branch 'tmp_wait_for_compilation' into sc-nccl
msimberg Mar 27, 2026
ee028b2
Try icon4py split halo exchanges
msimberg Mar 28, 2026
42c569a
GHEX with high priority streams
msimberg Mar 28, 2026
29b4e47
Update networking stack for icon-dsl/25.12/a100
msimberg Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ci/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ pipeline-configure:
tags: [languard-k8s-lightweight]
image: docker.io/python:latest
script:
- git clone https://github.com/eth-cscs/uenv-pipeline.git
- git clone https://github.com/msimberg/uenv-pipeline.git
- git -C ./uenv-pipeline checkout v5-libfabric-buildable
- ./uenv-pipeline/configure-pipeline -c./config.yaml -r./recipes -s$system -u$uenv -a$uarch -o./pipeline.yml
artifacts:
paths:
Expand Down
98 changes: 84 additions & 14 deletions recipes/icon-dsl/25.12/a100/environments.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,34 @@
icon:
compiler:
- toolchain: gcc
spec: gcc
- toolchain: llvm
spec: nvhpc
- toolchain: gcc
spec: gcc
- toolchain: llvm
spec: nvhpc
mpi:
spec: [email protected]%nvhpc
gpu: cuda
unify: true
spec: [email protected]%nvhpc
gpu: cuda
specs:
# icon4py deps
- [email protected] +cuda +gdrcopy fabrics=cxi,rxm,tcp
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected] +cuda cuda_arch=80
- ghex@async-mpi +python +cuda cuda_arch=80
- [email protected] +cuda cuda_arch=80
- [email protected]=0.5.0 backend=nccl # nccl-2
- [email protected]=0.5.0 # nccl-context
- [email protected]
- [email protected]
- nccl-tests
- [email protected]
- boost +thread
- py-mpi4py
- icon4py@0.0.15
- icon-exclaim @0.3.0 %nvhpc dsl=substitute +grib2 +eccodes-definitions +ecrad
- icon4py@0.1.0
- [email protected] %nvhpc dsl=substitute +grib2 +eccodes-definitions +ecrad
~emvorado +art +dace gpu=nvidia-80 +mpi-gpu +realloc-buf ~aes ~jsbach ~ocean ~coupling
~rte-rrtmgp ~loop-exchange ~async-io-rma ~cuda-graphs fflags="-traceback"
# icon deps
- cuda@12.4
- cuda@12.6:12
- [email protected]%nvhpc +tools +fortran +aec +openmp jp2k=jasper
- [email protected]
- hdf5%nvhpc +szip +hl +fortran +mpi
Expand All @@ -30,14 +38,15 @@ icon:
- [email protected]%nvhpc
- openblas
# for validation
- cdo
# - cdo # TODO: Enable? Currently broken.
# everything needed for nccl on SS11
- nccl
- nccl-tests
# extras
- libfyaml
- zlib-ng
- cmake
unify: true
variants:
- +mpi
- +cuda
Expand All @@ -46,6 +55,67 @@ icon:
default:
link: roots
uenv:
add_compilers: true
prefix_paths:
LD_LIBRARY_PATH: [lib, lib64]
# TODO: What's the cleanest way to do this? We want both dsl=substitute and
# dsl=verify available in the uenv. dsl=verify does not have to be available
# easily.
icon-verify:
compiler:
- toolchain: gcc
spec: gcc
- toolchain: llvm
spec: nvhpc
mpi:
spec: [email protected]%nvhpc
gpu: cuda
specs:
# icon4py deps
- [email protected] +cuda +gdrcopy fabrics=cxi,rxm,tcp
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected] +cuda cuda_arch=80
- [email protected]=0.5.0 backend=nccl # nccl-2
- [email protected]=0.5.0 # nccl-context
- [email protected]
- [email protected]
- nccl-tests
- [email protected]
- boost +thread
- py-mpi4py
- [email protected]
- [email protected] %nvhpc dsl=verify +grib2 +eccodes-definitions +ecrad
~emvorado +art +dace gpu=nvidia-80 +mpi-gpu +realloc-buf ~aes ~jsbach ~ocean ~coupling
~rte-rrtmgp ~loop-exchange ~async-io-rma ~cuda-graphs fflags="-traceback"
# icon deps
- [email protected]:12
- [email protected]%nvhpc +tools +fortran +aec +openmp jp2k=jasper
- [email protected]
- hdf5%nvhpc +szip +hl +fortran +mpi
- [email protected]%nvhpc
- [email protected]%nvhpc
- [email protected]%nvhpc
- [email protected]%nvhpc
- openblas
# for validation
# - cdo # TODO: Enable? Currently broken.
# everything needed for nccl on SS11
- nccl
- nccl-tests
# extras
- libfyaml
- zlib-ng
- cmake
unify: true
variants:
- +mpi
- +cuda
- cuda_arch=80
views:
default-verify:
link: roots
uenv:
prefix_paths:
LD_LIBRARY_PATH: [lib, lib64]
12 changes: 10 additions & 2 deletions recipes/icon-dsl/25.12/a100/pre-install
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,18 @@ packages=(
"oomph"
"uv"
"icon4py"
# "icon"
"libfabric"
"nccl"
"libcxi"
"cxi-driver"
"cassini-headers"
"aws-ofi-nccl"
"gdrcopy"
"gettext"
"libfuse"
# "icon-exclaim"
)
SPACK_C2SM_TAG="v0.22.2.6"
SPACK_C2SM_TAG="sc-nccl"

echo "----------------------------------------"
echo "SPACK C2SM Setup Script"
Expand Down
48 changes: 14 additions & 34 deletions recipes/icon-dsl/25.12/a100/repo/packages/icon-exclaim/package.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,9 @@ class IconExclaim(Icon):

version('develop', branch='icon-dsl', submodules=True)
version("0.3.0",
commit="5c5b742a969af2bd491e26cd0a05a35838f121c4",
commit="a0be2c3e0448ec2dc92024e3b38ec635435ac0dd",
submodules=True)

# EXCLAIM-GT4Py specific features:
dsl_values = ('substitute', 'verify')
variant('dsl',
Expand All @@ -377,10 +377,19 @@ class IconExclaim(Icon):
description='Build with GT4Py dynamical core',
multi=True)

depends_on("[email protected]", when="@0.3.0")
for x in dsl_values:
depends_on('icon4py', type="build", when=f"dsl={x}")


# TODO: Should this be set here or in the icon4py package?
def setup_build_environment(self, env):
if self.spec.variants['dsl'].value != ('none', ):
# TODO: clean up
print(f"adding {self.spec['icon4py'].prefix.share.venv.bin} to PATH for icon4py bindings because +dsl is enabled")
env.prepend_path("PATH", self.spec["icon4py"].prefix.share.venv.bin)
env.append_path("PATH", self.spec["icon4py"].prefix.share.venv.bin)


def configure_args(self):
raw_args = super().configure_args()

Expand All @@ -404,21 +413,14 @@ def configure_args(self):
dsl = self.spec.variants['dsl'].value
if dsl != ('none', ):
if 'substitute' in dsl:
args_flags.append('--enable-py2f=substitute')
args_flags.append('--enable-icon4py=substitute')
elif 'verify' in dsl:
args_flags.append('--enable-py2f=verify')
args_flags.append('--enable-icon4py=verify')
else:
raise ValueError(
f"Unknown DSL variant '{dsl}'. "
f"Valid options are: {', '.join(('none',) + dsl_values)}")

# Add icon4py paths and libs
icon4py_prefix = self.spec["icon4py"].prefix
bindings_dir = os.path.join(icon4py_prefix, "src")

ldflags.append(f"-L{bindings_dir} -Wl,-rpath,{bindings_dir}")
libs.append("-licon4py_bindings")

# Remove duplicates
icon_ldflags = list(dict.fromkeys(icon_ldflags))
ldflags = list(dict.fromkeys(ldflags))
Expand All @@ -434,25 +436,3 @@ def configure_args(self):
final_args.append("LIBS=" + " ".join(libs))

return final_args

def build(self, spec, prefix):
# Check the variant
dsl = self.spec.variants['dsl'].value
if dsl != ('none', ):
file = "icon4py_bindings.f90"

bindings_dir = os.path.join(self.spec["icon4py"].prefix, "src")
src_file = os.path.join(bindings_dir, file)

build_py2f_dir = os.path.join(self.stage.source_path, "src",
"build_py2f")
os.makedirs(build_py2f_dir, exist_ok=True)
dest_file = os.path.join(build_py2f_dir, file)

shutil.copy2(src_file, dest_file)
print(
f"Copied {src_file} to build directory {dest_file} because +dsl is enabled"
)

# Proceed with the normal build
super().build(spec, prefix)
88 changes: 40 additions & 48 deletions recipes/icon-dsl/25.12/a100/repo/packages/py-cupy/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,19 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage):

homepage = "https://cupy.dev/"
pypi = "cupy/cupy-8.0.0.tar.gz"
version("13.5.1", sha256="3dba2f30258463482d52deb420862fbbbaf2c446165a5e8d67377ac6cb5c0870")
version("13.4.0", sha256="d4b60e5a1d3b89be40fad0845bb9fc467a653abe8660f752416fd38d24ab7fdb")
version("13.3.0", sha256="9a2a17af2b99cce91dd1366939c3805e3f51f9de5046df64f29ccbad3bdf78ed")
version("13.2.0", sha256="e4dbd2b2ed4159a5cc0c0f98a710a014950eb2c16eeb455e956128f3b3bd0d51")
version("13.1.0", sha256="5caf62288481a27713384523623045380ff42e618be4245f478238ed1786f32d")
version("12.1.0", sha256="f6d31989cdb2d96581da12822e28b102f29e254427195c2017eac327869b7320")
version("12.0.0", sha256="61ddbbef73d50d606bd5087570645f3c91ec9176c2566784c1d486d6a3404545")
version("11.6.0", sha256="53dbb840072bb32d4bfbaa6bfa072365a30c98b1fcd1f43e48969071ad98f1a7")
version("11.5.0", sha256="4bc8565bded22cc89b210fd9fb48a5d5316f30701e12bb23852a60314e1f9f6e")
version("11.4.0", sha256="03d52b2626e02a3a2b46d714c1cd03e702c8fe33915fcca6ed8de5c539964f49")
version("11.3.0", sha256="d057cc2f73ecca06fae8b9c270d9e14116203abfd211a704810cc50a453b4c9e")
version("11.2.0", sha256="c33361f117a347a63f6996ea97446d17f1c038f1a1f533e502464235076923e2")

# version(
# "13.5.1",
# sha256="3dba2f30258463482d52deb420862fbbbaf2c446165a5e8d67377ac6cb5c0870",
# )
version(
"13.1.0",
sha256="5caf62288481a27713384523623045380ff42e618be4245f478238ed1786f32d",
)
version(
"12.1.0",
sha256="f6d31989cdb2d96581da12822e28b102f29e254427195c2017eac327869b7320",
)
version(
"12.0.0",
sha256="61ddbbef73d50d606bd5087570645f3c91ec9176c2566784c1d486d6a3404545",
)
version(
"11.6.0",
sha256="53dbb840072bb32d4bfbaa6bfa072365a30c98b1fcd1f43e48969071ad98f1a7",
)
version(
"11.5.0",
sha256="4bc8565bded22cc89b210fd9fb48a5d5316f30701e12bb23852a60314e1f9f6e",
)
version(
"11.4.0",
sha256="03d52b2626e02a3a2b46d714c1cd03e702c8fe33915fcca6ed8de5c539964f49",
)
version(
"11.3.0",
sha256="d057cc2f73ecca06fae8b9c270d9e14116203abfd211a704810cc50a453b4c9e",
)
version(
"11.2.0",
sha256="c33361f117a347a63f6996ea97446d17f1c038f1a1f533e502464235076923e2",
)

variant(
"all", default=False, description="Enable optional py-scipy, optuna, and cython"
Expand All @@ -63,32 +39,48 @@ class PyCupy(PythonPackage, CudaPackage, ROCmPackage):
depends_on("cxx", type="build") # generated

depends_on("[email protected]:", when="@:11", type=("build", "run"))
depends_on("[email protected]:", when="@12:", type=("build", "run"))
depends_on("[email protected]:3.11", when="@12", type=("build", "run"))
depends_on("[email protected]:3.13", when="@13", type=("build", "run"))
depends_on("[email protected]:", when="@14", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("[email protected]:2", type="build")
depends_on("py-setuptools@:73", when="@:13.3", type="build")
depends_on("[email protected]:0.29", type="build", when="@:13.3")
depends_on(
"py-cython@3:3.0.10,3.0.12:", type="build", when="@13.4:"
) # 3.0.11 broken likely because of cython#6335, fixed in 3.0.12
depends_on("[email protected]:0.29", when="@:13.3 +all", type=("build", "run"))
depends_on("py-cython@3:", when="@13.4: +all", type=("build", "run"))
depends_on("[email protected]:", type=("build", "run"))
depends_on("[email protected]:1.25", when="@:11", type=("build", "run"))
depends_on("[email protected]:1.26", when="@12:", type=("build", "run"))
depends_on("[email protected]:1.28", when="@13:", type=("build", "run"))

depends_on("[email protected]:1.12", when="@:12+all", type=("build", "run"))
depends_on("[email protected]:1.13", when="@13:+all", type=("build", "run"))
depends_on("[email protected]:2", when="+all", type=("build", "run"))
depends_on("[email protected]:1.26", when="@12", type=("build", "run"))
depends_on("[email protected]:1", when="@13.1", type=("build", "run"))
depends_on("[email protected]:2.0", when="@13.2", type=("build", "run"))
depends_on("[email protected]:2.2", when="@13.4", type=("build", "run"))
depends_on("[email protected]:2.3", when="@13.5", type=("build", "run"))
depends_on("[email protected]:2", when="@14", type=("build", "run"))
depends_on("[email protected]:1.11", when="@:12+all", type=("build", "run"))
depends_on("[email protected]:1.16", when="@13+all", type=("build", "run"))
depends_on("[email protected]:1.16", when="@14+all", type=("build", "run"))
depends_on("py-optuna@2:", when="+all", type=("build", "run"))
depends_on("py-optuna@3:", when="@12:+all", type=("build", "run"))

# Based on https://github.com/cupy/cupy/releases
depends_on("cuda@:11.9", when="@:11 +cuda")
depends_on("cuda@:12.1", when="@12:12.1.0 +cuda")
depends_on("cuda@:12.4", when="@13:13.4.1 +cuda")
depends_on("cuda@:12.9", when="@13.5.1: +cuda")
depends_on("cuda@:12.1", when="@13.0 +cuda")
depends_on("cuda@:12.4", when="@13.1:13.2 +cuda")
depends_on("cuda@:12.6", when="@13.3 +cuda")
depends_on("cuda@:12.8", when="@13.4 +cuda")
depends_on("cuda@:12.9", when="@13.5 +cuda")

for a in CudaPackage.cuda_arch_values:
depends_on("nccl +cuda cuda_arch={0}".format(a), when="+cuda cuda_arch={0}".format(a))
depends_on(
"nccl +cuda cuda_arch={0}".format(a), when="+cuda cuda_arch={0}".format(a)
"nccl@2.16:2.26 +cuda cuda_arch={0}".format(a), when="@13+cuda cuda_arch={0}".format(a)
)

depends_on("cutensor", when="@:12.1.0 +cuda")
depends_on("[email protected].1.2", when="@13.1: +cuda")
depends_on("[email protected]", when="@13.1: +cuda")

for _arch in ROCmPackage.amdgpu_targets:
arch_str = "amdgpu_target={0}".format(_arch)
Expand Down
Loading