diff --git a/recipes/wcp/icon/v1/gh200/environments.yaml b/recipes/wcp/icon/v1/gh200/environments.yaml index cf6daa72..b7663a7c 100644 --- a/recipes/wcp/icon/v1/gh200/environments.yaml +++ b/recipes/wcp/icon/v1/gh200/environments.yaml @@ -4,50 +4,29 @@ nvidia: spec: gcc - toolchain: llvm spec: nvhpc - unify: when_possible + unify: true mpi: - spec: cray-mpich@8.1.29%nvhpc + spec: cray-mpich@8.1.30%nvhpc gpu: cuda specs: - - boost%gcc ~mpi - - python@3.10%gcc - #- eccodes@2.25.0%nvhpc +tools +fortran +aec +openmp jp2k=jasper - - cmake%gcc - - cuda@12.3%gcc - - hdf5%gcc - - hwloc%gcc - - netcdf-c%gcc - - netcdf-cxx4%gcc + - boost ~mpi + - cmake + - cuda@12.3 + - eccodes%nvhpc +tools +fortran +aec +openmp jp2k=jasper + - hdf5%nvhpc +hl + - hwloc + - libxml2 + - libfyaml + - netcdf-c + - netcdf-cxx4 - netcdf-fortran%nvhpc - - numactl%gcc + - numactl - osu-micro-benchmarks@5.9%nvhpc + - python@3.10 # everything needed for nccl on SS11 - - aws-ofi-nccl@master%gcc - - nccl%gcc - - nccl-tests%gcc - # The following are required to stop spack from using nvhpc to build - # basic dependencies, some of which don't compile with nvc etc. - # Explicitly excluded as modules. - - autoconf%gcc - - automake%gcc - - ca-certificates-mozilla%gcc - - diffutils%gcc - - gnuconfig%gcc - - libiconv%gcc - - libxcrypt%gcc - - libxml2%gcc - - m4%gcc - - ncurses%gcc - - openssl%gcc - - perl%gcc - - xz%gcc - - zlib%gcc - - zstd%gcc - - c-blosc%gcc - - libaec%gcc - - jasper%gcc - - patchelf%gcc - - gmake%gcc + - aws-ofi-nccl@master + - nccl + - nccl-tests variants: - cuda_arch=90 - +mpi @@ -55,6 +34,12 @@ nvidia: packages: - curl - gmake + - perl views: - default: + icon: link: roots + uenv: + add_compilers: true + prefix_paths: + LD_LIBRARY_PATH: [lib, lib64] + diff --git a/recipes/wcp/icon/v1/gh200/modules.yaml b/recipes/wcp/icon/v1/gh200/modules.yaml index db999335..d13c2474 100644 --- a/recipes/wcp/icon/v1/gh200/modules.yaml +++ b/recipes/wcp/icon/v1/gh200/modules.yaml @@ -21,23 +21,5 @@ modules: exclude: - '%gcc@7.5.0' - 'gcc %gcc@7.5.0' - - 'autoconf' - - 'automake' - - 'c-blosc' - - 'ca-certificates-mozilla' - - 'diffutils' - - 'gnuconfig' - - 'jasper' - - 'libaec' - - 'libiconv' - - 'libxcrypt' - - 'libxml2' - - 'patchelf' - - 'm4' - - 'ncurses' - - 'openssl' - - 'xz' - - 'zlib' - - 'zstd' projections: all: '{name}/{version}' diff --git a/recipes/wcp/icon/v1/gh200/post-install b/recipes/wcp/icon/v1/gh200/post-install new file mode 100644 index 00000000..a9843086 --- /dev/null +++ b/recipes/wcp/icon/v1/gh200/post-install @@ -0,0 +1,29 @@ +#!/usr/bin/python3 + +import glob +import hashlib +import os +import yaml + + +# Add cuda_arch to packages.yaml +with open("{{ env.mount }}/config/packages.yaml", mode='r') as file: + packages = yaml.safe_load(file) + +packages['packages']['all'] = {'variants': 'cuda_arch=90'} + +with open("{{ env.mount }}/config/packages.yaml", mode='w') as file: + yaml.dump(packages, file) + + +# Generate a hash to make the uenv uniquely identifiable +with open("{{ env.mount }}/.spack-db/index.json", mode='rb') as f: + sha = hashlib.sha256(f.read()).hexdigest() + +with open("{{ env.mount }}/meta/hash", mode='w') as f: + f.write(sha) + +# delete .la files that force linking against uneccesary libraries +for path in ["{{ env.mount }}/env/icon/lib", "{{ env.mount }}/env/icon/lib64"]: + for file in glob.glob(os.path.join(path, '*.la')): + os.remove(file) diff --git a/scripts/setup-stackinator b/scripts/setup-stackinator index 2a1010b0..87cdb30b 100755 --- a/scripts/setup-stackinator +++ b/scripts/setup-stackinator @@ -5,7 +5,7 @@ tool_base_path="$(pwd)" # builds in the same pipeline do not conflict tool_path=`mktemp -d` tool_repo=https://github.com/eth-cscs/stackinator.git -tool_version=master +tool_version=v5.0-rc1 log "installing stackinator from git in '${tool_path}'"