From 737be5486647562796addfec9d40ea8c359847e4 Mon Sep 17 00:00:00 2001 From: caubet_m Date: Thu, 24 Jul 2025 13:50:23 +0200 Subject: [PATCH] Remove oss libfabric/1.22.0 in favor of Cray. Update OpenMPI modules with new libfbric --- Compiler/openmpi/files/config.yaml | 50 ++++++------ Libraries/GDRCopy/build | 12 +-- Libraries/GDRCopy/files/config.yaml | 47 +++++++++++ Libraries/hwloc/files/config.yaml | 5 ++ Libraries/libfabric/files/config.yaml | 47 ++++++++--- Libraries/pmix/files/config.yaml | 34 ++++---- Libraries/shs-cassini-headers/build | 51 ++++++++++++ .../shs-cassini-headers/files/config.yaml | 24 ++++++ .../shs-cassini-headers/files/from-git.txt | 1 + Libraries/shs-cassini-headers/modulefile | 9 +++ Libraries/shs-cxi-driver/build | 49 ++++++++++++ Libraries/shs-cxi-driver/files/config.yaml | 24 ++++++ Libraries/shs-cxi-driver/files/from-git.txt | 1 + Libraries/shs-cxi-driver/modulefile | 9 +++ Libraries/shs-libcxi/build | 57 ++++++++++++++ Libraries/shs-libcxi/dependencies | 4 + Libraries/shs-libcxi/files/config.yaml | 31 ++++++++ Libraries/shs-libcxi/files/from-git.txt | 2 + Libraries/shs-libcxi/modulefile | 9 +++ .../patch/cassini_csr_defs-v12.0.1.patch | 63 +++++++++++++++ .../patch/cassini_csr_defs-v2.1.0.patch | 77 +++++++++++++++++++ Programming/cuda/files/config.yaml | 26 +++++++ 22 files changed, 572 insertions(+), 60 deletions(-) create mode 100644 Libraries/GDRCopy/files/config.yaml create mode 100755 Libraries/shs-cassini-headers/build create mode 100644 Libraries/shs-cassini-headers/files/config.yaml create mode 100644 Libraries/shs-cassini-headers/files/from-git.txt create mode 100644 Libraries/shs-cassini-headers/modulefile create mode 100755 Libraries/shs-cxi-driver/build create mode 100644 Libraries/shs-cxi-driver/files/config.yaml create mode 100644 Libraries/shs-cxi-driver/files/from-git.txt create mode 100644 Libraries/shs-cxi-driver/modulefile create mode 100755 Libraries/shs-libcxi/build create mode 100644 Libraries/shs-libcxi/dependencies create mode 100644 Libraries/shs-libcxi/files/config.yaml create mode 100644 Libraries/shs-libcxi/files/from-git.txt create mode 100644 Libraries/shs-libcxi/modulefile create mode 100644 Libraries/shs-libcxi/patch/cassini_csr_defs-v12.0.1.patch create mode 100644 Libraries/shs-libcxi/patch/cassini_csr_defs-v2.1.0.patch diff --git a/Compiler/openmpi/files/config.yaml b/Compiler/openmpi/files/config.yaml index e53f9f5..44a5d31 100644 --- a/Compiler/openmpi/files/config.yaml +++ b/Compiler/openmpi/files/config.yaml @@ -57,26 +57,32 @@ openmpi: openmpi-5.0.5.tar.bz2: 6588d57c0a4bd299a24103f4e196051b29e8b55fbda49e11d5b3d32030a32776 versions: - # 5.0.6: - # config: - # configure_args+: - # - --enable-mpi1-compatibility - # - --enable-static=no - # variants: - # - systems: [.*.merlin7.psi.ch] - # relstage: unstable - # overlay: Alps - # use_overlays: [PSI, Alps] - # group_deps: - # compiler: {gcc: [14.2.0,12.3.0,8.5.0], intelcc: [22.2]} - # build_requires: [hwloc/2.11.1, patchelf/0.14.5] - # runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/5.0.4] - # configure_args+: - # - --with-cxi - # - --with-lustre - # - --with-slingshot - # use_flags: [merlin7, slurm] - + 5.0.8: + config: + configure_args+: + - --enable-mpi1-compatibility + - --enable-static=no + variants: + - systems: [.*.merlin7.psi.ch] + relstage: stable + overlay: Alps + use_overlays: [PSI, Alps] + group_deps: + compiler: {gcc: [14.2.0,12.3.0]} + build_requires: + - hwloc/2.12.0 + - patchelf/0.14.5 + - shs-cassini-headers/12.0.1-oss + - shs-cxi-driver/12.0.1-oss + - shs-libcxi/12.0.1-oss + runtime_deps: + - cuda/12.9.1 + - pmix/5.0.8 + - libfabric/2.2.0-oss + configure_args+: + - --with-lustre + - --with-xpmem + use_flags: [merlin7, slurm] 5.0.5: config: configure_args+: @@ -91,7 +97,7 @@ openmpi: compiler: {gcc: [14.2.0, 12.3.0, 8.5.0], intelcc: [22.2]} build_requires: [hwloc/2.11.1, patchelf/0.14.5] - runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/5.0.3] + runtime_deps: [cuda/12.2.0, libfabric/1.22.0, pmix/5.0.3] configure_args+: - --with-cxi - --with-lustre @@ -141,7 +147,7 @@ openmpi: group_deps: compiler: {gcc: [12.3.0, 13.3.0, 14.2.0], intelcc: [22.2]} build_requires: [hwloc/2.11.1, patchelf/0.14.5] - runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/4.2.9] + runtime_deps: [cuda/12.2.0, libfabric/1.22.0, pmix/4.2.9] configure_args+: - --enable-mpi1-compatibility - --enable-static=no diff --git a/Libraries/GDRCopy/build b/Libraries/GDRCopy/build index c8647cc..3680006 100755 --- a/Libraries/GDRCopy/build +++ b/Libraries/GDRCopy/build @@ -1,13 +1,9 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "https://github.com/NVIDIA/gdrcopy/archive/v${V_MAJOR}.${V_MINOR}.tar.gz" -pbuild::add_to_group 'Libraries' - -pbuild::install_docfiles README.md CHANGELOG.md LICENSE - -pbuild::compile_in_sourcetree - -pbuild::install() { +pbuild::compile() { PKG_CONFIG_PATH="${PREFIX}" make prefix="${PREFIX}" CUDA="${CUDA_HOME}" all install } +pbuild::install() { + ./insmod.sh +} diff --git a/Libraries/GDRCopy/files/config.yaml b/Libraries/GDRCopy/files/config.yaml new file mode 100644 index 0000000..2737b56 --- /dev/null +++ b/Libraries/GDRCopy/files/config.yaml @@ -0,0 +1,47 @@ +format: 1 +GDRCopy: + defaults: + group: Libraries + relstage: stable + compile_in_sourcetree: true + docfiles: + - LICENSE + - README.md + - CHANGELOG.md + urls: + - url: https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v${V_PKG}.tar.gz + name: gdrcopy-${V_PKG}.tar.gz + + shasums: + gdrcopy-2.5.tar.gz: 196400877be7e511edcf2a87b21a605cca99522ff217c97429348fd9153b30d7 + v2.4.4.tar.gz: 8802f7bc4a589a610118023bdcdd83c10a56dea399acf6eeaac32e8cc10739a8 + v2.3.0.tar.gz: b85d15901889aa42de6c4a9233792af40dd94543e82abe0439e544c87fd79475 + v2.2.0.tar.gz: e4be119809391b18c735346d24b3b398dd9421cbff47ef12befbae40d61da45f + versions: + 2.5: + config: + relstage: stable + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + use_overlays: [PSI] + use_flags: [merlin7] + build_requires: [cuda/12.9.1] + 2.4.4: + config: + relstage: unstable + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + use_overlays: [PSI] + use_flags: [merlin7] + build_requires: [cuda/12.8.1] + - build_requires: [cuda/12.8.1] + 2.3.0: + config: + relstage: unstable + build_requires: [cuda/12.1.1] + 2.2.0: + config: + relstage: unstable + build_requires: [cuda/11.2.2] diff --git a/Libraries/hwloc/files/config.yaml b/Libraries/hwloc/files/config.yaml index ba2cd31..cc54daa 100644 --- a/Libraries/hwloc/files/config.yaml +++ b/Libraries/hwloc/files/config.yaml @@ -10,10 +10,15 @@ hwloc: - --enable-netloc - --enable-plugins shasums: + hwloc-2.12.0.tar.gz: 1897f5b4a3753627d21f06e976795364d6f69e14b52b29ac871ec22ecb8bdced hwloc-2.11.1.tar.gz: 9f320925cfd0daeaf3a3d724c93e127ecac63750c623654dca0298504aac4c2c hwloc-2.9.1.tar.gz: a440e2299f7451dc10a57ddbfa3f116c2a6c4be1bb97c663edd3b9c7b3b3b4cf hwloc-2.7.1.tar.gz: 4cb0a781ed980b03ad8c48beb57407aa67c4b908e45722954b9730379bc7f6d5 versions: + 2.12.0: + config: + relstage: stable + build_requires: [cuda/12.9.1] 2.11.1: config: relstage: unstable diff --git a/Libraries/libfabric/files/config.yaml b/Libraries/libfabric/files/config.yaml index cebfb3f..5aa2eb6 100644 --- a/Libraries/libfabric/files/config.yaml +++ b/Libraries/libfabric/files/config.yaml @@ -1,5 +1,7 @@ format: 1 libfabric: + # Requires: + # sudo zypper install pandoc libconfig-devel libuv-devel fuse-devel libsensors4-devel libjson-c-devel defaults: group: Libraries relstage: stable @@ -12,26 +14,34 @@ libfabric: urls: - url: https://github.com/ofiwg/libfabric/releases/download/v${V}/${P}-${V}.tar.bz2 shasums: - libfabric-1.13.0.tar.bz2: 0c68264ae18de5c31857724c754023351614330bd61a50b40cef2b5e8f63ab28 + libfabric-2.2.0.tar.bz2: ff6d05240b4a9753bb3d1eaf962f5a06205038df5142374a6ef40f931bb55ecc libfabric-1.18.0.tar.bz2: 912fb7c7b3cf2a91140520962b004a1c5d2f39184adbbd98ae5919b0178afd43 + libfabric-1.13.0.tar.bz2: 0c68264ae18de5c31857724c754023351614330bd61a50b40cef2b5e8f63ab28 versions: - 1.18.0: + 2.2.0: config: - build_requires: [gcc/10.4.0] - 1.22.0: - config: - relstage: unstable + relstage: stable variants: - systems: [.*.merlin7.psi.ch] overlay: Alps use_overlays: [PSI] + suffix: '-oss' use_flags: [merlin7] - build_requires: [gcc/12.3.0, libfabric/1.15.2.0] + build_requires: [gcc/12.3.0, shs-cassini-headers/12.0.1-oss, shs-cxi-driver/12.0.1-oss, shs-libcxi/12.0.1-oss, cuda/12.9.1, GDRCopy/2.5] configure_args+: - - --enable-cxi + - --enable-cxi=$SHS_LIBCXI_HOME + - --with-cxi-uapi-headers=$SHS_CXI_DRIVER_HOME + - --with-cassini-headers=$SHS_CASSINI_HEADERS_HOME + - --enable-lnx + - --with-cuda=$CUDA_HOME + - --with-gdrcopy=$GDRCOPY_HOME + # Only enable dlopen when static is disabled + - --enable-cuda-dlopen + - --enable-gdrcopy-dlopen + # - --enable-xpmem 2.0.0: config: - relstage: unstable + relstage: removed urls: - url: https://github.com/ofiwg/libfabric/releases/download/v${V}alpha/$P-${V}alpha.tar.bz2 variants: @@ -39,6 +49,23 @@ libfabric: overlay: Alps use_overlays: [PSI] use_flags: [merlin7] - build_requires: [gcc/12.3.0, libfabric/1.15.2.0] + build_requires: [gcc/12.3.0, libfabric/1.15.2.0, cuda/12.2.0] configure_args+: - --enable-cxi + - --with-cuda=$CUDA_HOME + - --enable-cuda-dlopen + 1.22.0: + config: + relstage: installed + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + suffix: '-oss' + use_overlays: [PSI] + use_flags: [merlin7] + build_requires: [gcc/12.3.0, libfabric/1.22.0] + configure_args+: + - --enable-cxi + 1.18.0: + config: + build_requires: [gcc/10.4.0] diff --git a/Libraries/pmix/files/config.yaml b/Libraries/pmix/files/config.yaml index e5c3cf5..ef63210 100644 --- a/Libraries/pmix/files/config.yaml +++ b/Libraries/pmix/files/config.yaml @@ -110,23 +110,17 @@ pmix: # - --with-jansson # - --with-curl - systems: [rhel.*] - # 5.0.4: - # config: - # relstage: unstable - # configure_args+: - # - --enable-static=no - # runtime_deps: [libevent/2.1.12] - # build_requires: [gcc/12.3.0, hwloc/2.11.1] - # variants: - # - systems: [.*.merlin7.psi.ch] - # overlay: Alps - # use_overlays: [PSI] - # configure_args+: - # - --with-lustre - # - --with-cxi - # - --with-cxi-libdir=/opt/cray/libfabric/1.15.2.0/include - # - --with-slingshot - # - --with-zlib - # # - --with-jansson - # # - --with-curl - # - systems: [rhel.*] + 5.0.8: + config: + relstage: stable + configure_args+: + - --enable-static=no + runtime_deps: [libevent/2.1.12] + build_requires: [gcc/12.3.0, hwloc/2.12.0] + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + use_overlays: [PSI] + configure_args+: + - --with-zlib + - systems: [rhel.*] diff --git a/Libraries/shs-cassini-headers/build b/Libraries/shs-cassini-headers/build new file mode 100755 index 0000000..b728a54 --- /dev/null +++ b/Libraries/shs-cassini-headers/build @@ -0,0 +1,51 @@ +#!/usr/bin/env modbuild + +# Check 'version-to-gitcommit.txt' +# - If version exists, we will compile directly from GIT cloned commit. +# - If version does not exist, install from GIT repository package (tag). +GITURL=$(grep -E "^${V}" files/from-git.txt | awk '{print $2}') +BRANCH=$(grep -E "^${V}" files/from-git.txt | awk '{print $3}') +CHERRY=$(grep -E "^${V}" files/from-git.txt | awk -F'cherry-pick:' '{print $2}') +CHERRY_COMMIT=$(echo "$CHERRY" | awk -F'|' '{print $1}') +CHERRY_REPO=$(echo "$CHERRY" | awk -F'|' '{print $2}') + +if [[ -n ${GITURL} ]]; then + pbuild::pre_prep() { + if [[ ! -f ${PMODULES_DISTFILESDIR}/${P}-${V}.tar.bz2 ]]; then + git clone ${GITURL} ${P} + cd ${P} + if [[ -n ${BRANCH} ]]; then + git fetch -a + git checkout ${BRANCH} + fi + if [[ -n ${CHERRY_REPO} ]]; then + git remote add remotetmp $CHERRY_REPO + git fetch --all + fi + + if [[ -n ${CHERRY_COMMIT} ]]; then + git cherry-pick $CHERRY_COMMIT + fi + + # Use archive with top-level directory + git archive \ + --format=tar \ + --prefix="${P}-${V}/" \ + HEAD > "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + + bzip2 "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + cd .. + fi + } +fi + +pbuild::compile() { + : +} + +pbuild::install() { + pwd -P + mkdir -p "${PREFIX}/include" "${PREFIX}/share" + if [ -d include ]; then cp -r include/* "${PREFIX}/include/"; fi + if [ -d share ]; then cp -r share/* "${PREFIX}/share/"; fi +} diff --git a/Libraries/shs-cassini-headers/files/config.yaml b/Libraries/shs-cassini-headers/files/config.yaml new file mode 100644 index 0000000..6e66476 --- /dev/null +++ b/Libraries/shs-cassini-headers/files/config.yaml @@ -0,0 +1,24 @@ +format: 1 +shs-cassini-headers: + defaults: + group: Libraries + compile_in_sourcetree: true + relstage: unstable + urls: + - url: https://github.com/HewlettPackard/shs-cassini-headers/archive/refs/heads/main.zip + name: shs-cassini-headers-main.zip + shasums: + shs-cassini-headers-12.0.1.tar.gz: db338e6af8bff8c5acd0556bbad81eba5365db9eec918d46021483861a386792 + versions: + 12.0.1: + config: + relstage: stable + urls: + - url: https://github.com/HewlettPackard/shs-cassini-headers/archive/refs/tags/release/shs-12.0.1.tar.gz + name: shs-cassini-headers-12.0.1.tar.bz2 + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + suffix: '-oss' + use_overlays: [PSI] + use_flags: [merlin7] diff --git a/Libraries/shs-cassini-headers/files/from-git.txt b/Libraries/shs-cassini-headers/files/from-git.txt new file mode 100644 index 0000000..83630b6 --- /dev/null +++ b/Libraries/shs-cassini-headers/files/from-git.txt @@ -0,0 +1 @@ +2.0.0 https://github.com/HewlettPackard/shs-cassini-headers.git 9a8a738a879f007849fbc69be8e3487a4abf0952 diff --git a/Libraries/shs-cassini-headers/modulefile b/Libraries/shs-cassini-headers/modulefile new file mode 100644 index 0000000..0b2b1d0 --- /dev/null +++ b/Libraries/shs-cassini-headers/modulefile @@ -0,0 +1,9 @@ +#%Module1.0 + +module-whatis "Slingshot Cassini Headers" +module-url "https://github.com/HewlettPackard/shs-cassini-headers" +module-maintainer "Marc Caubet Serrabou " + +module-help " +This module contains the OSS Slingshot Cassini Headers. +" diff --git a/Libraries/shs-cxi-driver/build b/Libraries/shs-cxi-driver/build new file mode 100755 index 0000000..d7d94ea --- /dev/null +++ b/Libraries/shs-cxi-driver/build @@ -0,0 +1,49 @@ +#!/usr/bin/env modbuild + +# Check 'version-to-gitcommit.txt' +# - If version exists, we will compile directly from GIT cloned commit. +# - If version does not exist, install from GIT repository package (tag). +GITURL=$(grep -E "^${V}" files/from-git.txt | awk '{print $2}') +BRANCH=$(grep -E "^${V}" files/from-git.txt | awk '{print $3}') +CHERRY=$(grep -E "^${V}" files/from-git.txt | awk -F'cherry-pick:' '{print $2}') +CHERRY_COMMIT=$(echo "$CHERRY" | awk -F'|' '{print $1}') +CHERRY_REPO=$(echo "$CHERRY" | awk -F'|' '{print $2}') + +if [[ -n ${GITURL} ]]; then + pbuild::pre_prep() { + if [[ ! -f ${PMODULES_DISTFILESDIR}/${P}-${V}.tar.bz2 ]]; then + git clone ${GITURL} ${P} + cd ${P} + if [[ -n ${BRANCH} ]]; then + git fetch -a + git checkout ${BRANCH} + fi + if [[ -n ${CHERRY_REPO} ]]; then + git remote add remotetmp $CHERRY_REPO + git fetch --all + fi + + if [[ -n ${CHERRY_COMMIT} ]]; then + git cherry-pick $CHERRY_COMMIT + fi + + # Use archive with top-level directory + git archive \ + --format=tar \ + --prefix="${P}-${V}/" \ + HEAD > "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + + bzip2 "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + cd .. + fi + } +fi + +pbuild::compile() { + : +} + +pbuild::install() { + mkdir -p "${PREFIX}/include" + cp -r include/* "${PREFIX}/include/" +} diff --git a/Libraries/shs-cxi-driver/files/config.yaml b/Libraries/shs-cxi-driver/files/config.yaml new file mode 100644 index 0000000..5757945 --- /dev/null +++ b/Libraries/shs-cxi-driver/files/config.yaml @@ -0,0 +1,24 @@ +format: 1 +shs-cxi-driver: + defaults: + group: Libraries + compile_in_sourcetree: true + relstage: unstable + urls: + - url: https://github.com/HewlettPackard/shs-cxi-driver/archive/refs/heads/main.zip + name: shs-cxi-driver-main.tar.bz2 + shasums: + shs-cassini-headers-12.0.1.tar.bz2: d1af6dbc79df740f56667e5b3e1501003cbbf9957f214debb5556bd7eb24167e + versions: + 12.0.1: + config: + relstage: stable + urls: + - url: https://github.com/HewlettPackard/shs-cxi-driver/archive/refs/tags/release/shs-12.0.1.tar.gz + name: shs-cxi-driver-12.0.1.tar.bz2 + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + suffix: '-oss' + use_overlays: [PSI] + use_flags: [merlin7] diff --git a/Libraries/shs-cxi-driver/files/from-git.txt b/Libraries/shs-cxi-driver/files/from-git.txt new file mode 100644 index 0000000..c762be9 --- /dev/null +++ b/Libraries/shs-cxi-driver/files/from-git.txt @@ -0,0 +1 @@ +12.1.0 https://github.com/HewlettPackard/shs-cxi-driver.git d47aa97d78b04103829da79e4807ae9f52b1ea6c diff --git a/Libraries/shs-cxi-driver/modulefile b/Libraries/shs-cxi-driver/modulefile new file mode 100644 index 0000000..0b2b1d0 --- /dev/null +++ b/Libraries/shs-cxi-driver/modulefile @@ -0,0 +1,9 @@ +#%Module1.0 + +module-whatis "Slingshot Cassini Headers" +module-url "https://github.com/HewlettPackard/shs-cassini-headers" +module-maintainer "Marc Caubet Serrabou " + +module-help " +This module contains the OSS Slingshot Cassini Headers. +" diff --git a/Libraries/shs-libcxi/build b/Libraries/shs-libcxi/build new file mode 100755 index 0000000..8a96185 --- /dev/null +++ b/Libraries/shs-libcxi/build @@ -0,0 +1,57 @@ +#!/usr/bin/env modbuild + +# Check 'version-to-gitcommit.txt' +# - If version exists, we will compile directly from GIT cloned commit. +# - If version does not exist, install from GIT repository package (tag). +GITURL=$(grep -E "^${V}" files/from-git.txt | awk '{print $2}') +BRANCH=$(grep -E "^${V}" files/from-git.txt | awk '{print $3}') +CHERRY=$(grep -E "^${V}" files/from-git.txt | awk -F'cherry-pick:' '{print $2}') +CHERRY_COMMIT=$(echo "$CHERRY" | awk -F'|' '{print $1}') +CHERRY_REPO=$(echo "$CHERRY" | awk -F'|' '{print $2}') + +if [[ -n ${GITURL} ]]; then + pbuild::pre_prep() { + if [[ ! -f ${PMODULES_DISTFILESDIR}/${P}-${V}.tar.bz2 ]]; then + git clone ${GITURL} ${P} + cd ${P} + if [[ -n ${BRANCH} ]]; then + git fetch -a + git checkout ${BRANCH} + fi + if [[ -n ${CHERRY_REPO} ]]; then + git remote add remotetmp $CHERRY_REPO + git fetch --all + fi + + if [[ -n ${CHERRY_COMMIT} ]]; then + git cherry-pick $CHERRY_COMMIT + fi + + # Use archive with top-level directory + git archive \ + --format=tar \ + --prefix="${P}-${V}/" \ + HEAD > "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + + bzip2 "${PMODULES_DISTFILESDIR}/${P}-${V}.tar" + cd .. + fi + } +fi + +pbuild::pre_configure() { + ./autogen.sh + + if [[ -v CUDA_VERSION ]]; then + std::info "Enabling CUDA ${CUDA_VERSION}." + pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" + fi + + pbuild::add_configure_args "--with-udevrulesdir=${PREFIX}/lib/udev/rules.d" + pbuild::add_configure_args "--with-systemdsystemunitdir=${PREFIX}/lib/systemd/system" + + if [[ -v SHS_CASSINI_HEADERS_VERSION ]]; then + std::info "Enabling SHS_CASSINI_HEADERS ${SHS_CASSINI_HEADERS_VERSION}." + pbuild::add_configure_args "--with-cassini-csr_defs=${SHS_CASSINI_HEADERS_HOME}/share/cassini-headers/csr_defs.json" + fi +} diff --git a/Libraries/shs-libcxi/dependencies b/Libraries/shs-libcxi/dependencies new file mode 100644 index 0000000..ce5cf1d --- /dev/null +++ b/Libraries/shs-libcxi/dependencies @@ -0,0 +1,4 @@ +libuv-devel +libconfig-devel +libsensors4-devel +pandoc diff --git a/Libraries/shs-libcxi/files/config.yaml b/Libraries/shs-libcxi/files/config.yaml new file mode 100644 index 0000000..e523fc7 --- /dev/null +++ b/Libraries/shs-libcxi/files/config.yaml @@ -0,0 +1,31 @@ +format: 1 +shs-libcxi: + defaults: + group: Libraries + compile_in_sourcetree: true + relstage: unstable + urls: + - url: https://github.com/HewlettPackard/shs-libcxi/archive/refs/heads/main.zip + # Requires local packages: + # zypper install libconfig-devel + # zypper install libuv-devel + # zypper install fuse-devel + # zypper install libsensors4-devel + shasums: + versions: + 12.0.1: + config: + relstage: stable + urls: + # - url: https://github.com/HewlettPackard/shs-libcxi/archive/refs/heads/main.zip + - url: https://github.com/HewlettPackard/shs-libcxi/archive/refs/tags/release/shs-12.0.1.tar.gz + name: shs-libcxi-12.0.1.tar.bz2 + patch_files: + - patch/cassini_csr_defs-v12.0.1.patch + variants: + - systems: [.*.merlin7.psi.ch] + overlay: Alps + suffix: '-oss' + use_overlays: [PSI] + use_flags: [merlin7] + build_requires: [gcc/12.3.0,shs-cassini-headers/12.0.1-oss,shs-cxi-driver/12.0.1-oss] diff --git a/Libraries/shs-libcxi/files/from-git.txt b/Libraries/shs-libcxi/files/from-git.txt new file mode 100644 index 0000000..c8dfe65 --- /dev/null +++ b/Libraries/shs-libcxi/files/from-git.txt @@ -0,0 +1,2 @@ +12.1.0 https://github.com/HewlettPackard/shs-libcxi.git d47aa97d78b04103829da79e4807ae9f52b1ea6c +12.0.1 https://github.com/HewlettPackard/shs-libcxi.git 1571bd348bb75a8fe4a40c58240b0f687d6d5537 diff --git a/Libraries/shs-libcxi/modulefile b/Libraries/shs-libcxi/modulefile new file mode 100644 index 0000000..0b2b1d0 --- /dev/null +++ b/Libraries/shs-libcxi/modulefile @@ -0,0 +1,9 @@ +#%Module1.0 + +module-whatis "Slingshot Cassini Headers" +module-url "https://github.com/HewlettPackard/shs-cassini-headers" +module-maintainer "Marc Caubet Serrabou " + +module-help " +This module contains the OSS Slingshot Cassini Headers. +" diff --git a/Libraries/shs-libcxi/patch/cassini_csr_defs-v12.0.1.patch b/Libraries/shs-libcxi/patch/cassini_csr_defs-v12.0.1.patch new file mode 100644 index 0000000..c9c1ad3 --- /dev/null +++ b/Libraries/shs-libcxi/patch/cassini_csr_defs-v12.0.1.patch @@ -0,0 +1,63 @@ +diff --git a/Makefile.am b/Makefile.am +index 4c47094..60432b5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -106,7 +106,7 @@ utils_cxi_dump_csrs_SOURCES = utils/cxi_dump_csrs.c + utils_cxi_dump_csrs_LDADD = src/libcxi.la + utils/cxi_dump_csrs.c: utils/cxi_dump_csrs.h + utils/cxi_dump_csrs.h: utils/cxi_dump_csrs.py +- utils/cxi_dump_csrs.py > utils/cxi_dump_csrs.h ++ CASSINI_CSR_DEFS=$(cassinicsrdefs) utils/cxi_dump_csrs.py > utils/cxi_dump_csrs.h + + utils_MANS = \ + man/man1/cxi_atomic_bw.1 \ +diff --git a/configure.ac b/configure.ac +index 5b65683..2eba805 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -177,6 +177,13 @@ AS_IF([test -d $withval], + AC_CHECK_DECL(HAVE_HIP_SUPPORT, [], [LDFLAGS="$LDFLAGS -ldl"], []), + [AC_MSG_RESULT([No CUDA])]) + ++AC_ARG_WITH([cassini-csr_defs], ++ [AS_HELP_STRING([--with-cassini-csr_defs=PATH], [Path to csr_defs.json])], ++ [cassinicsrdefs="$withval"], ++ [cassinicsrdefs="/usr/share/cassini-headers/csr_defs.json"]) ++ ++AC_SUBST([cassinicsrdefs]) ++ + AC_ARG_ENABLE([asan], + [AS_HELP_STRING([--enable-asan], + [Enable address sanitizer @<:@default=no@:>@]) +@@ -205,6 +212,7 @@ AC_MSG_RESULT([ + includedir: ${includedir} + systemdunitdir: ${systemdsystemunitdir} + udevrulesdir: ${udevrulesdir} ++ cassinicsrdefs: ${cassinicsrdefs} + + compiler: ${CC} + cflags: ${CFLAGS} +diff --git a/utils/cxi_dump_csrs.py b/utils/cxi_dump_csrs.py +index 24a4ad4..cb63e73 100755 +--- a/utils/cxi_dump_csrs.py ++++ b/utils/cxi_dump_csrs.py +@@ -7,13 +7,15 @@ + """ + + import json ++import os ++ ++json_path = os.environ.get("CASSINI_CSR_DEFS", "/usr/share/cassini-headers/csr_defs.json") + + try: +- with open('/usr/share/cassini-headers/csr_defs.json', 'r') as f: +- csrdefs = json.load(f) +-except FileNotFoundError: +- with open('../cassini-headers/install/share/cassini-headers/csr_defs.json', 'r') as f: ++ with open(json_path, 'r') as f: + csrdefs = json.load(f) ++except FileNotFoundError as e: ++ raise RuntimeError(f"CSR defs file not found at '{json_path}'. Set CASSINI_CSR_DEFS to override.") from e + + print("/* Autogenerated file. Do not modify. */") + diff --git a/Libraries/shs-libcxi/patch/cassini_csr_defs-v2.1.0.patch b/Libraries/shs-libcxi/patch/cassini_csr_defs-v2.1.0.patch new file mode 100644 index 0000000..ca5aab6 --- /dev/null +++ b/Libraries/shs-libcxi/patch/cassini_csr_defs-v2.1.0.patch @@ -0,0 +1,77 @@ +From 1a1b8f008db00b38547ae8bcd28e12f7f7525390 Mon Sep 17 00:00:00 2001 +From: Caubet Serrabou Marc +Date: Tue, 8 Apr 2025 14:11:59 +0200 +Subject: [PATCH] Add --with-cassini_csr_defs option + +--- + Makefile.am | 2 +- + configure.ac | 8 ++++++++ + utils/cxi_dump_csrs.py | 10 ++++++---- + 3 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 4c47094..60432b5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -106,7 +106,7 @@ utils_cxi_dump_csrs_SOURCES = utils/cxi_dump_csrs.c + utils_cxi_dump_csrs_LDADD = src/libcxi.la + utils/cxi_dump_csrs.c: utils/cxi_dump_csrs.h + utils/cxi_dump_csrs.h: utils/cxi_dump_csrs.py +- utils/cxi_dump_csrs.py > utils/cxi_dump_csrs.h ++ CASSINI_CSR_DEFS=$(cassinicsrdefs) utils/cxi_dump_csrs.py > utils/cxi_dump_csrs.h + + utils_MANS = \ + man/man1/cxi_atomic_bw.1 \ +diff --git a/configure.ac b/configure.ac +index 5b65683..2eba805 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -177,6 +177,13 @@ AS_IF([test -d $withval], + AC_CHECK_DECL(HAVE_HIP_SUPPORT, [], [LDFLAGS="$LDFLAGS -ldl"], []), + [AC_MSG_RESULT([No CUDA])]) + ++AC_ARG_WITH([cassini-csr_defs], ++ [AS_HELP_STRING([--with-cassini-csr_defs=PATH], [Path to csr_defs.json])], ++ [cassinicsrdefs="$withval"], ++ [cassinicsrdefs="/usr/share/cassini-headers/csr_defs.json"]) ++ ++AC_SUBST([cassinicsrdefs]) ++ + AC_ARG_ENABLE([asan], + [AS_HELP_STRING([--enable-asan], + [Enable address sanitizer @<:@default=no@:>@]) +@@ -205,6 +212,7 @@ AC_MSG_RESULT([ + includedir: ${includedir} + systemdunitdir: ${systemdsystemunitdir} + udevrulesdir: ${udevrulesdir} ++ cassinicsrdefs: ${cassinicsrdefs} + + compiler: ${CC} + cflags: ${CFLAGS} +diff --git a/utils/cxi_dump_csrs.py b/utils/cxi_dump_csrs.py +index 24a4ad4..cb63e73 100755 +--- a/utils/cxi_dump_csrs.py ++++ b/utils/cxi_dump_csrs.py +@@ -7,13 +7,15 @@ + """ + + import json ++import os ++ ++json_path = os.environ.get("CASSINI_CSR_DEFS", "/usr/share/cassini-headers/csr_defs.json") + + try: +- with open('/usr/share/cassini-headers/csr_defs.json', 'r') as f: +- csrdefs = json.load(f) +-except FileNotFoundError: +- with open('../cassini-headers/install/share/cassini-headers/csr_defs.json', 'r') as f: ++ with open(json_path, 'r') as f: + csrdefs = json.load(f) ++except FileNotFoundError as e: ++ raise RuntimeError(f"CSR defs file not found at '{json_path}'. Set CASSINI_CSR_DEFS to override.") from e + + print("/* Autogenerated file. Do not modify. */") + +-- +2.35.3 + diff --git a/Programming/cuda/files/config.yaml b/Programming/cuda/files/config.yaml index 8e03246..f62d5de 100644 --- a/Programming/cuda/files/config.yaml +++ b/Programming/cuda/files/config.yaml @@ -11,6 +11,12 @@ cuda: compile: [] install: [pbuild::post_install] urls: + - &cuda-12_9_1-aarch64 + url: https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda_12.9.1_575.57.08_linux_sbsa.run + unpacker: none + - &cuda-12_9_1-x86_64 + url: https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda_12.9.1_575.57.08_linux.run + unpacker: none - &cuda-12_8_1-aarch64 url: https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux_sbsa.run unpacker: none @@ -37,6 +43,8 @@ cuda: unpacker: none shasums: + cuda_12.9.1_575.57.08_linux.run: 0f6d806ddd87230d2adbe8a6006a9d20144fdbda9de2d6acc677daa5d036417a + cuda_12.9.1_575.57.08_linux_sbsa.run: 64f47ab791a76b6889702425e0755385f5fa216c5a9f061875c7deed5f08cdb6 cuda_12.8.1_570.124.06_linux.run: 228f6bcaf5b7618d032939f431914fc92d0e5ed39ebe37098a24502f26a19797 cuda_12.8.1_570.124.06_linux_sbsa.run: 353cbab1b57282a1001071796efd95c1e40ec27a3375e854d12637eaa1c6107c cuda_12.2.2_535.104.05_linux.run: 2b39aae3e7618d9f59a3c8fa1f1bc61f29c0b0e0df75fb05076badb352952ef2 @@ -47,6 +55,24 @@ cuda: cuda_12.1.1_530.30.02_linux_sbsa.run: 45ea4cd860f0a26d3db8ce032530f2ee0b55abdd587545213d395a73623b4278 versions: + 12.9.1: + variants: + - target_cpus: [aarch64] + systems: [gpu.*.merlin7.psi.ch] + relstage: stable + overlay: PSI + urls: + - *cuda-12_9_1-aarch64 + - target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + relstage: stable + overlay: PSI + urls: + - *cuda-12_9_1-x86_64 + - target_cpus: [x86_64] + relstage: stable + urls: + - *cuda-12_9_1-x86_64 12.8.1: variants: - target_cpus: [aarch64]