From 0d1a2a8bf72bfe1c779daf369086ce59e0799d34 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 14 Nov 2025 11:02:55 +0100 Subject: [PATCH 01/55] Add rccl and rccl-tests to rocm uenv --- recipes/prgenv-gnu/25.7/amdgpu/compilers.yaml | 2 ++ .../prgenv-gnu/25.7/amdgpu/environments.yaml | 19 +++++++++++++------ .../prgenv-gnu/25.7/amdgpu/extra/reframe.yaml | 2 ++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/compilers.yaml b/recipes/prgenv-gnu/25.7/amdgpu/compilers.yaml index 3a2d2fc46..42bd07ee8 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/compilers.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/compilers.yaml @@ -1,2 +1,4 @@ gcc: version: "13" +llvm-amdgpu: + version: "6.3.3" diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index 835886a6e..90dfdc0c4 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -1,9 +1,11 @@ gcc-env: - compiler: [gcc] + compiler: [gcc, llvm-amdgpu] network: mpi: cray-mpich@8.1.32+rocm specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible + duplicates: + strategy: full specs: - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer - cmake @@ -27,21 +29,21 @@ gcc-env: - hipcub - llvm-amdgpu # rocm packages - - rocblas + - rocblas ^py-msgpack %cxx=gcc - rocfft - - rocm-cmake + - rocm-cmake %cxx=gcc - rocm-openmp-extras - - rocm-core + - rocm-core %cxx=gcc - rocminfo - rocprim - rocprofiler-dev - - rocprofiler-register + - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc - rocprofiler-systems@6.3.3+internal-dyninst - rocrand - rocsolver - rocsparse - rocthrust - - roctracer-dev-api + - roctracer-dev-api %cxx=gcc - roctracer-dev - rocm-gdb - rocm-debug-agent @@ -52,6 +54,11 @@ gcc-env: - hipsparse - hipfft - hipblas-common + # networking + - rccl + # commits pinned for reproducibility, not bugs; update when updating recipe + - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu variants: - +mpi - +rocm diff --git a/recipes/prgenv-gnu/25.7/amdgpu/extra/reframe.yaml b/recipes/prgenv-gnu/25.7/amdgpu/extra/reframe.yaml index c1b382e75..4f74a5352 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/extra/reframe.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/extra/reframe.yaml @@ -2,6 +2,8 @@ default: features: - rocm - mpi + - rccl + - rccl-tests - openmp - prgenv - serial From be76c7f46f553eceb07007741d537144f101bf81 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 17 Nov 2025 12:48:12 +0100 Subject: [PATCH 02/55] Disable duplicates strategy for now --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index 90dfdc0c4..1bd672895 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -4,8 +4,9 @@ gcc-env: mpi: cray-mpich@8.1.32+rocm specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible - duplicates: - strategy: full + # Enable when https://github.com/eth-cscs/stackinator/pull/269 is merged + # duplicates: + # strategy: full specs: - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer - cmake From c58f3bdffb0c2e1bf8adb890758bc992683cd4a5 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 17 Nov 2025 17:32:34 +0100 Subject: [PATCH 03/55] Verify that we can't concretize with one cray-mpich --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index 1bd672895..65b0dd945 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -59,7 +59,7 @@ gcc-env: - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi - - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.32 +rocm %c,cxx,fortran=gcc variants: - +mpi - +rocm From 161e5e4f38a1e7c190276ae242bc95ba84017ae0 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Thu, 20 Nov 2025 10:04:31 +0100 Subject: [PATCH 04/55] Enable duplicates:strategy:full again --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index 65b0dd945..70865e321 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -4,9 +4,8 @@ gcc-env: mpi: cray-mpich@8.1.32+rocm specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible - # Enable when https://github.com/eth-cscs/stackinator/pull/269 is merged - # duplicates: - # strategy: full + duplicates: + strategy: full specs: - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer - cmake From bc2d134d0ab800d68c47f57a718b014dac94de36 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Thu, 20 Nov 2025 16:13:02 +0100 Subject: [PATCH 05/55] Add prgenv-gnu rocm 7.0.2 uenv --- config.yaml | 5 ++ .../prgenv-gnu/25.12/amdgpu/compilers.yaml | 4 + recipes/prgenv-gnu/25.12/amdgpu/config.yaml | 10 +++ .../prgenv-gnu/25.12/amdgpu/environments.yaml | 74 +++++++++++++++++++ .../25.12/amdgpu/extra/reframe.yaml | 16 ++++ recipes/prgenv-gnu/25.12/amdgpu/modules.yaml | 23 ++++++ recipes/prgenv-gnu/25.12/amdgpu/post-install | 8 ++ 7 files changed, 140 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/config.yaml create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/environments.yaml create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/modules.yaml create mode 100755 recipes/prgenv-gnu/25.12/amdgpu/post-install diff --git a/config.yaml b/config.yaml index 620a7522f..148f5689a 100644 --- a/config.yaml +++ b/config.yaml @@ -334,6 +334,11 @@ uenvs: mi200: 25.7/amdgpu deploy: beverin: [mi200] + "25.12": + recipes: + mi200: 25.12/amdgpu + deploy: + beverin: [mi200] prgenv-nvfortran: "24.11": recipes: diff --git a/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml b/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml new file mode 100644 index 000000000..97f8b2480 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml @@ -0,0 +1,4 @@ +gcc: + version: "13" +llvm-amdgpu: + version: "7.0.2" diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml new file mode 100644 index 000000000..984edf1df --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml @@ -0,0 +1,10 @@ +name: prgenv-gnu +version: 2 +spack: + commit: releases/v1.0 + repo: https://github.com/spack/spack.git + packages: + repo: https://github.com/spack/spack-packages.git + commit: b46f6bcf508b243d2752710ce5e940e474a45d86 +store: /user-environment +description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml new file mode 100644 index 000000000..5c3664254 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -0,0 +1,74 @@ +gcc-env: + compiler: [gcc, llvm-amdgpu] + network: + mpi: cray-mpich@8.1.32+rocm + specs: [ 'libfabric@2.3 +rocm' ] + unify: when_possible + duplicates: + strategy: full + specs: + - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer + - cmake + - fftw + - fmt + - gsl + - hdf5+cxx+hl+fortran + - netlib-scalapack + - lua + - libtree + - lz4 + - meson + - ninja + - openblas threads=openmp + - osu-micro-benchmarks + - python@3 + - zlib-ng + # add GPU-specific packages here, for easier comparison with mc version + - hip@7.0.2 ^mesa@23.3.6 + - hdf5+mpi + - hipcub + - llvm-amdgpu + # rocm packages + - rocblas ^py-msgpack %cxx=gcc + - rocfft + - rocm-cmake %cxx=gcc + - rocm-openmp-extras + - rocm-core %cxx=gcc + - rocminfo + - rocprim + - rocprofiler-dev + - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc + - rocprofiler-systems@7.0.2 +internal-dyninst + - rocrand + - rocsolver + - rocsparse + - rocthrust + - roctracer-dev-api %cxx=gcc + - roctracer-dev + - rocm-gdb + - rocm-debug-agent + # hip packages + - hipblas + - hipblaslt + - hiprand + - hipsparse + - hipfft + - hipblas-common + # networking + - rccl + # commits pinned for reproducibility, not bugs; update when updating recipe + - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.32 +rocm %c,cxx,fortran=gcc + variants: + - +mpi + - +rocm + - amdgpu_target=gfx942,gfx90a + - amdgpu_target_sram_ecc=gfx942,gfx90a + views: + default: + link: roots + exclude: ["llvm"] + uenv: + add_compilers: true + prefix_paths: + LD_LIBRARY_PATH: [lib, lib64] diff --git a/recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml b/recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml new file mode 100644 index 000000000..4f74a5352 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml @@ -0,0 +1,16 @@ +default: + features: + - rocm + - mpi + - rccl + - rccl-tests + - openmp + - prgenv + - serial + - cray-mpich + - osu-micro-benchmarks + cc: mpicc + cxx: mpic++ + ftn: mpifort + views: + - default diff --git a/recipes/prgenv-gnu/25.12/amdgpu/modules.yaml b/recipes/prgenv-gnu/25.12/amdgpu/modules.yaml new file mode 100644 index 000000000..623307b09 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/modules.yaml @@ -0,0 +1,23 @@ +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: /user-environment/modules + tcl: + all: + autoload: none + hash_length: 0 + exclude_implicits: true + exclude: ['%gcc@7.5.0', 'gcc %gcc@7.5.0'] + projections: + all: '{name}/{version}' diff --git a/recipes/prgenv-gnu/25.12/amdgpu/post-install b/recipes/prgenv-gnu/25.12/amdgpu/post-install new file mode 100755 index 000000000..0e423467e --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/post-install @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +# remove offending environment variables +jq '.views["default"].env.values.scalar["HIPCC_LINK_FLAGS_APPEND"]|="" | .views["default"].env.values.scalar["HIPCC_COMPILE_FLAGS_APPEND"]|="" ' /user-environment/meta/env.json > /tmp/env.json +# copy file back to destination +cp /tmp/env.json /user-environment/meta/env.json From 9126f90ac4a53301e5e77910d74f1cfe73e17445 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 24 Nov 2025 12:59:51 +0100 Subject: [PATCH 06/55] Update spack-packages --- recipes/prgenv-gnu/25.12/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml index 984edf1df..14eb43c74 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml @@ -5,6 +5,6 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/spack/spack-packages.git - commit: b46f6bcf508b243d2752710ce5e940e474a45d86 + commit: 22ac32a6ee44ae66f5e30868a2474d1cd2f28f2c # develop on 2025-11-24, includes https://github.com/spack/spack-packages/pull/2532 store: /user-environment description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) From 565dda65c867443407ad0703da2f516544d5e3ae Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 24 Nov 2025 21:08:51 +0100 Subject: [PATCH 07/55] Temporarily disable rocprofiler-systems --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 5c3664254..1ed31facc 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -38,7 +38,7 @@ gcc-env: - rocprim - rocprofiler-dev - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc - - rocprofiler-systems@7.0.2 +internal-dyninst + # - rocprofiler-systems@7.0.2 +internal-dyninst # TODO: enable - rocrand - rocsolver - rocsparse From 4a7989e7e2e14e6901964694528f2439fe7c1a34 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 26 Nov 2025 10:04:52 +0100 Subject: [PATCH 08/55] Disable hipblaslt for now --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 1ed31facc..675e25672 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -49,7 +49,7 @@ gcc-env: - rocm-debug-agent # hip packages - hipblas - - hipblaslt + # - hipblaslt # TODO: enable - hiprand - hipsparse - hipfft From c40da6f9dadc0a72c326d95023e7af09dde9d2b3 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 26 Nov 2025 10:08:35 +0100 Subject: [PATCH 09/55] Fix linaro forge config --- config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.yaml b/config.yaml index 530b744b6..0807321bd 100644 --- a/config.yaml +++ b/config.yaml @@ -224,7 +224,7 @@ uenvs: deploy: daint: [gh200] eiger: [zen2] - linaro_forge: + linaro-forge: "25.1": recipes: zen2: "25.1" From 47ff00fb24ed2281c348d0ccab2eb3ca924e7581 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 26 Nov 2025 14:59:22 +0100 Subject: [PATCH 10/55] Disable tensile temporarily --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 675e25672..822db0ee3 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -29,7 +29,7 @@ gcc-env: - hipcub - llvm-amdgpu # rocm packages - - rocblas ^py-msgpack %cxx=gcc + - rocblas ~tensile ^py-msgpack %cxx=gcc # TODO: enable tensile - rocfft - rocm-cmake %cxx=gcc - rocm-openmp-extras From 023d28ecfe5ac28fed454f040a6f7813a58dbac7 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Fri, 28 Nov 2025 16:51:09 +0100 Subject: [PATCH 11/55] Apply suggestion from @msimberg --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 822db0ee3..796ff2a19 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -38,6 +38,7 @@ gcc-env: - rocprim - rocprofiler-dev - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc + - rocprofiler-sdk # - rocprofiler-systems@7.0.2 +internal-dyninst # TODO: enable - rocrand - rocsolver From de8e3420df5d8118fdf599ecab094ab2d1d9c010 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 15 Dec 2025 11:28:22 +0100 Subject: [PATCH 12/55] Try ROCm 7.1.0 from spack PR --- recipes/prgenv-gnu/25.12/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml index 14eb43c74..179b7679b 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml @@ -5,6 +5,6 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/spack/spack-packages.git - commit: 22ac32a6ee44ae66f5e30868a2474d1cd2f28f2c # develop on 2025-11-24, includes https://github.com/spack/spack-packages/pull/2532 + commit: da6e6ab9bf8fdcaba76cf452fd7b87dbaa06e003 # Try https://github.com/spack/spack-packages/pull/2287 store: /user-environment description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) From cb127d1c1f6e04bc62f53561d8eeec9769ecbf30 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 16 Dec 2025 14:58:20 +0100 Subject: [PATCH 13/55] Trying to fix hipblaslt --- .../hipblaslt/0001-Set-LLVM-Path-6.3.Patch | 53 +++++ ...Add-Hiblas-Include-to-CmakeLists-6.1.Patch | 88 +++++++ .../0004-Set-rocm-smi-ld-path-7.0.patch | 22 ++ .../001_Set_LLVM_Paths_And_Add_Includes.patch | 70 ++++++ .../hipblaslt/002-link-roctracer.7.0.patch | 51 ++++ .../hipblaslt/002-link-roctracer.patch | 51 ++++ .../hipblaslt/003-use-rocm-smi-config.patch | 15 ++ .../amdgpu/repo/packages/hipblaslt/package.py | 224 ++++++++++++++++++ 8 files changed, 574 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch new file mode 100644 index 000000000..b000a207d --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch @@ -0,0 +1,53 @@ +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 865dcd9..0ca1815 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -72,6 +72,7 @@ include(src/CMakeLists.txt) + # Create hipBLASLt library + add_library(hipblaslt ${hipblaslt_source} ${hipblaslt_headers_public}) + add_library(roc::hipblaslt ALIAS hipblaslt) ++target_include_directories( hipblaslt PRIVATE ${MSGPACK_DIR}/include ) + + # Target compile definitions + if(NOT BUILD_CUDA) +@@ -154,7 +155,7 @@ if( LEGACY_HIPBLAS_DIRECT ) + ) + else() + target_include_directories(hipblaslt +- PUBLIC $ ++ PUBLIC ${HIPBLAS-COMMON_INCLUDE_DIRS} + ) + endif() + +diff --git a/tensilelite/Tensile/Common.py b/tensilelite/Tensile/Common.py +index 6b5cdc8..9f28e46 100644 +--- a/tensilelite/Tensile/Common.py ++++ b/tensilelite/Tensile/Common.py +@@ -277,6 +277,8 @@ globalParameters["LazyLibraryLoading"] = False # Load library and code object fi + globalParameters["UseUserArgs"] = False + + globalParameters["RotatingBufferSize"] = 0 # Size in MB ++globalParameters["LLVMPath"] = os.environ.get("LLVM_PATH") ++globalParameters["ROCmSMIPath"] = os.environ.get("ROCM_SMI_PATH") + globalParameters["RotatingMode"] = 0 # Default is 0, allocated in order A0B0C0D0..ANBNCNDN. 1 is in order A0 pad B0 pad .... AN pad BN pad. + # Mode 0 requires memcpy everytime when the problem changes to reset the data, but mode 1 doesn't. + +@@ -1576,7 +1578,7 @@ def assignGlobalParameters( config ): + if os.name == "nt": + globalParameters["ROCmAgentEnumeratorPath"] = locateExe(globalParameters["ROCmBinPath"], "hipinfo.exe") + else: +- globalParameters["ROCmAgentEnumeratorPath"] = locateExe(globalParameters["ROCmBinPath"], "rocm_agent_enumerator") ++ globalParameters["ROCmAgentEnumeratorPath"] = os.environ.get("ROCM_AGENT_ENUMERATOR_PATH") + + if "CxxCompiler" in config: + globalParameters["CxxCompiler"] = config["CxxCompiler"] +@@ -1602,8 +1604,7 @@ def assignGlobalParameters( config ): + compiler = "clang++" if globalParameters["CxxCompiler"] == "hipcc" else "amdclang++" + globalParameters["AssemblerPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], bin_path), compiler) + +- globalParameters["ROCmSMIPath"] = locateExe(globalParameters["ROCmBinPath"], "rocm-smi") +- globalParameters["ROCmLdPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "ld.lld") ++ globalParameters["ROCmLdPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "ld.lld") + + globalParameters["ExtractKernelPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "hip/bin"), "extractkernel") + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch new file mode 100644 index 000000000..33b2e7978 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch @@ -0,0 +1,88 @@ +From 085d965e11cda1830cf325e0d12db3faf61a94d0 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 23 May 2024 05:49:34 +0000 +Subject: [PATCH] Add hipblas include dir in CMakeLists.txt and Modify the LLVM + Path in the Tensile code for Spack + +--- + clients/gtest/CMakeLists.txt | 1 + + library/CMakeLists.txt | 2 ++ + tensilelite/Tensile/Common.py | 7 ++++--- + tensilelite/Tensile/Ops/gen_assembly.sh | 2 +- + 4 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +index 825bdca..f817e12 100644 +--- a/clients/gtest/CMakeLists.txt ++++ b/clients/gtest/CMakeLists.txt +@@ -53,6 +53,7 @@ target_include_directories( hipblaslt-test + $ + $ # may be blank if not used + $ ++ $ + ) + message("BLIS_INCLUDE_DIR=" ${BLIS_INCLUDE_DIR}) + target_link_libraries( hipblaslt-test PRIVATE ${BLAS_LIBRARY} ${GTEST_BOTH_LIBRARIES} roc::hipblaslt ) +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 3252da0..1b8d628 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -72,6 +72,8 @@ include(src/CMakeLists.txt) + # Create hipBLASLt library + add_library(hipblaslt ${hipblaslt_source} ${hipblaslt_headers_public}) + add_library(roc::hipblaslt ALIAS hipblaslt) ++target_include_directories( hipblaslt PRIVATE ${HIPBLAS_INCLUDE_DIRS} ) ++target_include_directories( hipblaslt PRIVATE ${MSGPACK_DIR}/include ) + + # Target compile definitions + if(NOT BUILD_CUDA) +diff --git a/tensilelite/Tensile/Common.py b/tensilelite/Tensile/Common.py +index 8ee6373..52d6a97 100644 +--- a/tensilelite/Tensile/Common.py ++++ b/tensilelite/Tensile/Common.py +@@ -273,6 +273,7 @@ globalParameters["LazyLibraryLoading"] = False # Load library and code object fi + globalParameters["UseUserArgs"] = False + + globalParameters["RotatingBufferSize"] = 0 # Size in MB ++globalParameters["LLVMPath"] = os.environ.get("LLVM_PATH") + + # Save a copy - since pytest doesn't re-run this initialization code and YAML files can override global settings - odd things can happen + defaultGlobalParameters = deepcopy(globalParameters) +@@ -1488,10 +1489,10 @@ def assignGlobalParameters( config ): + if os.name == "nt": + globalParameters["AssemblerPath"] = locateExe(globalParameters["ROCmBinPath"], "clang++.exe") + else: +- globalParameters["AssemblerPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "clang++") ++ globalParameters["AssemblerPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "clang++") + + globalParameters["ROCmSMIPath"] = locateExe(globalParameters["ROCmBinPath"], "rocm-smi") +- globalParameters["ROCmLdPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "ld.lld") ++ globalParameters["ROCmLdPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "ld.lld") + + globalParameters["ExtractKernelPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "hip/bin"), "extractkernel") + +@@ -1501,7 +1502,7 @@ def assignGlobalParameters( config ): + if os.name == "nt": + globalParameters["ClangOffloadBundlerPath"] = locateExe(globalParameters["ROCmBinPath"], "clang-offload-bundler.exe") + else: +- globalParameters["ClangOffloadBundlerPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "clang-offload-bundler") ++ globalParameters["ClangOffloadBundlerPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "clang-offload-bundler") + + if "ROCmAgentEnumeratorPath" in config: + globalParameters["ROCmAgentEnumeratorPath"] = config["ROCmAgentEnumeratorPath"] +diff --git a/tensilelite/Tensile/Ops/gen_assembly.sh b/tensilelite/Tensile/Ops/gen_assembly.sh +index 230c446..9f7dc6d 100644 +--- a/tensilelite/Tensile/Ops/gen_assembly.sh ++++ b/tensilelite/Tensile/Ops/gen_assembly.sh +@@ -32,7 +32,7 @@ if ! [ -z ${ROCM_PATH+x} ]; then + rocm_path=${ROCM_PATH} + fi + +-toolchain=${rocm_path}/llvm/bin/clang++ ++toolchain=${LLVM_PATH}/bin/clang++ + + . ${venv}/bin/activate + +-- +2.39.3 + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch new file mode 100644 index 000000000..39c9f6d0f --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch @@ -0,0 +1,22 @@ +diff --git a/tensilelite/Tensile/Common/GlobalParameters.py b/tensilelite/Tensile/Common/GlobalParameters.py +index 4cbf586..e2602b9 100644 +--- a/tensilelite/Tensile/Common/GlobalParameters.py ++++ b/tensilelite/Tensile/Common/GlobalParameters.py +@@ -552,7 +552,7 @@ def assignGlobalParameters(config, isaInfoMap: Dict[IsaVersion, IsaInfo]): + + globalParameters["ROCmBinPath"] = os.path.join(globalParameters["ROCmPath"], "bin") + try: +- globalParameters["ROCmSMIPath"] = locateExe(globalParameters["ROCmBinPath"], "rocm-smi") ++ globalParameters["ROCmSMIPath"] = os.environ.get("ROCM_SMI_PATH") + except OSError: + if os.name == "nt": + # rocm-smi is not presently supported on Windows so do not require it. +@@ -560,7 +560,7 @@ def assignGlobalParameters(config, isaInfoMap: Dict[IsaVersion, IsaInfo]): + else: + raise + globalParameters["ROCmLdPath"] = locateExe( +- os.path.join(globalParameters["ROCmPath"], "lib/llvm/bin"), ++ os.environ.get("ROCM_LD_PATH"), + "ld.lld" if os.name != "nt" else "ld.lld.exe" + ) + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch new file mode 100644 index 000000000..27eb39eff --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch @@ -0,0 +1,70 @@ +diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +index 825bdca..f817e12 100644 +--- a/clients/gtest/CMakeLists.txt ++++ b/clients/gtest/CMakeLists.txt +@@ -53,6 +53,7 @@ target_include_directories( hipblaslt-test + $ + $ # may be blank if not used + $ ++ $ + ) + message("BLIS_INCLUDE_DIR=" ${BLIS_INCLUDE_DIR}) + target_link_libraries( hipblaslt-test PRIVATE ${BLAS_LIBRARY} ${GTEST_BOTH_LIBRARIES} roc::hipblaslt ) +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 3252da0..1b8d628 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -72,6 +72,8 @@ include(src/CMakeLists.txt) + # Create hipBLASLt library + add_library(hipblaslt ${hipblaslt_source} ${hipblaslt_headers_public}) + add_library(roc::hipblaslt ALIAS hipblaslt) ++target_include_directories( hipblaslt PRIVATE ${HIPBLAS_INCLUDE_DIRS} ) ++target_include_directories( hipblaslt PRIVATE ${MSGPACK_DIR}/include ) + + # Target compile definitions + if(NOT BUILD_CUDA) +diff --git a/tensilelite/Tensile/Common.py b/tensilelite/Tensile/Common.py +index 0f862b8..0baeb55 100644 +--- a/tensilelite/Tensile/Common.py ++++ b/tensilelite/Tensile/Common.py +@@ -270,6 +270,8 @@ globalParameters["LazyLibraryLoading"] = False # Load library and code object fi + + globalParameters["UseUserArgs"] = False + ++globalParameters["LLVMPath"] = os.environ.get("LLVM_PATH") ++ + # Save a copy - since pytest doesn't re-run this initialization code and YAML files can override global settings - odd things can happen + defaultGlobalParameters = deepcopy(globalParameters) + +@@ -1471,7 +1473,7 @@ def assignGlobalParameters( config ): + if os.name == "nt": + globalParameters["AssemblerPath"] = locateExe(globalParameters["ROCmBinPath"], "clang++.exe") + else: +- globalParameters["AssemblerPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "clang++") ++ globalParameters["AssemblerPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "clang++") + + globalParameters["ROCmSMIPath"] = locateExe(globalParameters["ROCmBinPath"], "rocm-smi") + +@@ -1483,7 +1485,7 @@ def assignGlobalParameters( config ): + if os.name == "nt": + globalParameters["ClangOffloadBundlerPath"] = locateExe(globalParameters["ROCmBinPath"], "clang-offload-bundler.exe") + else: +- globalParameters["ClangOffloadBundlerPath"] = locateExe(os.path.join(globalParameters["ROCmPath"], "llvm/bin"), "clang-offload-bundler") ++ globalParameters["ClangOffloadBundlerPath"] = locateExe(os.path.join(globalParameters["LLVMPath"], "bin"), "clang-offload-bundler") + + if "ROCmAgentEnumeratorPath" in config: + globalParameters["ROCmAgentEnumeratorPath"] = config["ROCmAgentEnumeratorPath"] +diff --git a/tensilelite/Tensile/Ops/gen_assembly.sh b/tensilelite/Tensile/Ops/gen_assembly.sh +index 7b16069..1392cab 100644 +--- a/tensilelite/Tensile/Ops/gen_assembly.sh ++++ b/tensilelite/Tensile/Ops/gen_assembly.sh +@@ -32,7 +32,9 @@ if ! [ -z ${ROCM_PATH+x} ]; then + rocm_path=${ROCM_PATH} + fi + +-toolchain=${rocm_path}/llvm/bin/clang++ ++$LLVM_PATH=$ENV{'LLVM_PATH'}; ++ ++toolchain=${LLVM_PATH}/bin/clang++ + + . ${venv}/bin/activate diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch new file mode 100644 index 000000000..a425e4fd6 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch @@ -0,0 +1,51 @@ +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 8e056b6..d99d2e1 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -62,6 +62,7 @@ set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) + # Create hipBLASLt library + add_library(hipblaslt ${hipblaslt_headers_public}) + add_library(roc::hipblaslt ALIAS hipblaslt) ++target_include_directories( hipblaslt PRIVATE ${MSGPACK_DIR}/include ) + + # Include sources + add_subdirectory(src) +@@ -158,7 +159,9 @@ if(NOT BUILD_CUDA) + endif() + + if(HIPBLASLT_ENABLE_MARKER) +- target_link_libraries(hipblaslt PRIVATE -lroctx64) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") ++ target_include_directories(hipblaslt PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(hipblaslt PRIVATE ${rocTracer}) + endif() + + if( NOT BUILD_CUDA AND NOT LEGACY_HIPBLAS_DIRECT ) +diff --git a/tensilelite/Tensile/Source/client/CMakeLists.txt b/tensilelite/Tensile/Source/client/CMakeLists.txt +index 3401dd7..1f36d4d 100644 +--- a/tensilelite/Tensile/Source/client/CMakeLists.txt ++++ b/tensilelite/Tensile/Source/client/CMakeLists.txt +@@ -65,7 +65,9 @@ target_include_directories(TensileClient PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc + target_link_libraries(TensileClient PRIVATE TensileHost Boost::program_options Boost::filesystem rocm_smi) + + if(Tensile_ENABLE_MARKER) +- target_link_libraries(TensileClient PRIVATE -lroctx64) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") ++ target_include_directories(TensileClient PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(TensileClient PRIVATE ${rocTracer}) + endif() + + if(TENSILE_USE_OPENMP) +diff --git a/tensilelite/Tensile/cmake/TensileConfig.cmake b/tensilelite/Tensile/cmake/TensileConfig.cmake +index 8b9a949..a36eef9 100644 +--- a/tensilelite/Tensile/cmake/TensileConfig.cmake ++++ b/tensilelite/Tensile/cmake/TensileConfig.cmake +@@ -129,6 +129,8 @@ function(TensileCreateLibraryFiles + + message(STATUS "Tensile script: ${Script}") + ++ set(Options ${Options} "--offload-bundler=$ENV{TENSILE_ROCM_OFFLOAD_BUNDLER_PATH}") ++ + if(Tensile_NO_LAZY_LIBRARY_LOADING) + set(Options ${Options} "--no-lazy-library-loading") + endif() diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch new file mode 100644 index 000000000..bff2a5854 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch @@ -0,0 +1,51 @@ +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 24e25ab..1907108 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -72,6 +72,7 @@ include(src/CMakeLists.txt) + # Create hipBLASLt library + add_library(hipblaslt ${hipblaslt_source} ${hipblaslt_headers_public}) + add_library(roc::hipblaslt ALIAS hipblaslt) ++target_include_directories( hipblaslt PRIVATE ${MSGPACK_DIR}/include ) + + # Target compile definitions + if(NOT BUILD_CUDA) +@@ -159,7 +160,9 @@ if(NOT BUILD_CUDA) + endif() + + if(HIPBLASLT_ENABLE_MARKER) +- target_link_libraries(hipblaslt PRIVATE -lroctx64) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") ++ target_include_directories(hipblaslt PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(hipblaslt PRIVATE ${rocTracer}) + endif() + + if( NOT BUILD_CUDA AND NOT LEGACY_HIPBLAS_DIRECT ) +diff --git a/tensilelite/Tensile/Source/client/CMakeLists.txt b/tensilelite/Tensile/Source/client/CMakeLists.txt +index 8dc7401..e6d0ba9 100644 +--- a/tensilelite/Tensile/Source/client/CMakeLists.txt ++++ b/tensilelite/Tensile/Source/client/CMakeLists.txt +@@ -64,7 +64,9 @@ target_include_directories(TensileClient PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc + target_link_libraries(TensileClient PRIVATE TensileHost Boost::program_options Boost::filesystem rocm_smi) + + if(Tensile_ENABLE_MARKER) +- target_link_libraries(TensileClient PRIVATE -lroctx64) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") ++ target_include_directories(TensileClient PRIVATE ${ROCTRACER_INCLUDE_DIR}) ++ target_link_libraries(TensileClient PRIVATE ${rocTracer}) + endif() + + if(TENSILE_USE_OPENMP) +diff --git a/tensilelite/Tensile/cmake/TensileConfig.cmake b/tensilelite/Tensile/cmake/TensileConfig.cmake +index 7627780..ac3560a 100644 +--- a/tensilelite/Tensile/cmake/TensileConfig.cmake ++++ b/tensilelite/Tensile/cmake/TensileConfig.cmake +@@ -234,6 +234,8 @@ function(TensileCreateLibraryFiles + set(Options ${Options} "--build-id=${Tensile_BUILD_ID}") + endif() + ++ set(Options ${Options} "--offload-bundler=$ENV{TENSILE_ROCM_OFFLOAD_BUNDLER_PATH}") ++ + set(CommandLine ${VIRTUALENV_BIN_DIR}/${VIRTUALENV_PYTHON_EXENAME} ${Script} ${Options} ${Tensile_LOGIC_PATH} ${Tensile_OUTPUT_PATH} HIP) + message(STATUS "Tensile_CREATE_COMMAND: ${CommandLine}") + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch new file mode 100644 index 000000000..1eceb64af --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch @@ -0,0 +1,15 @@ +diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt +index 02ae47d..6b66209 100755 +--- a/clients/CMakeLists.txt ++++ b/clients/CMakeLists.txt +@@ -97,8 +97,8 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) + + # Find the package ROCmSMI + if(NOT WIN32) +- find_package(ROCmSMI REQUIRED) +- list( APPEND COMMON_LINK_LIBS rocm_smi ) ++ find_package(rocm_smi CONFIG REQUIRED) ++ list( APPEND COMMON_LINK_LIBS rocm_smi64 ) + endif() + + # common source files used in subdirectories benchmarks and gtest thus ../common diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py new file mode 100644 index 000000000..831c96f23 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py @@ -0,0 +1,224 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import re + +from spack_repo.builtin.build_systems.cmake import CMakePackage +from spack_repo.builtin.build_systems.rocm import ROCmPackage + +from spack.package import * + + +class Hipblaslt(CMakePackage): + """hipBLASLt is a library that provides general matrix-matrix operations with a flexible API + and extends functionalities beyond a traditional BLAS library""" + + homepage = "https://github.com/ROCm/hipBLASLt" + url = "https://github.com/ROCm/hipBLASLt/archive/refs/tags/rocm-6.4.2.tar.gz" + git = "https://github.com/ROCm/hipBLASLt.git" + + maintainers("srekolam", "afzpatel", "renjithravindrankannath") + tags = ["rocm"] + libraries = ["libhipblaslt"] + + license("MIT") + version("7.0.2", sha256="52d7c1c6852f501f5bd37fa962e6538592741792593a173d8b6963b8f7bd2c41") + version("7.0.0", sha256="9a38822eea27080dbeab7dd9d39b4bdaeb7c25bc5d19ca6ccf24674c3b34dbae") + version("6.4.3", sha256="64252588faf8a9089838e8f427e911617916fd6905a8cc65370e8d25fafdf0e4") + version("6.4.2", sha256="5e5f4a84aa4e5ef6018d0d91e97fc20394c7c17822cc8fb8307fff07b1d91823") + version("6.4.1", sha256="929f781f86df40143c3ab98df2d746170dedb6788e368335e24c84796285a8a4") + version("6.4.0", sha256="a4baa0c7336db9d46a0884c8ccfd0fb7e00a502b478aed9f588aa26fa8773353") + version("6.3.3", sha256="f32d666b37bdbecbf924cc98653fa3d30a0de629039d4dad44d35a2082e39e5a") + version("6.3.2", sha256="cc4875b1a5cf1708a7576c42aff6b4cb790cb7337f5dc2df33119a4aadcef027") + version("6.3.1", sha256="9a18a2e44264a21cfe58ed102fd3e34b336f23d6c191ca2da726e8e0883ed663") + version("6.3.0", sha256="e570996037ea42eeca4c9b8b0b77a202d40be1a16068a6245595c551d80bdcad") + version("6.2.4", sha256="b8a72cb1ed4988b0569817c6387fb2faee4782795a0d8f49b827b32b52572cfd") + version("6.2.1", sha256="9b062b1d6d945349c31828030c8c1d99fe57d14a1837196ff9aa67bf10ef43f1") + version("6.2.0", sha256="aec9edc75ae4438aa712192c784e2bed683d2839b502b6aadb18f6012306749b") + version("6.1.2", sha256="fcfe950f7b87c421565abe090b2de6f463afc1549841002f105ecca7bbbf59e5") + version("6.1.1", sha256="1e21730ade59b5e32432fa0981383f689a380b1ffc92fe950822722da9521a72") + version("6.1.0", sha256="90fc2f2c9e11c87e0529e824e4b0561dbc850f8ffa21be6932ae63cbaa27cdf0") + version("6.0.2", sha256="e281a1a7760fab8c3e0baafe17950cf43c422184e3226e3c14eb06e50c69d421") + version("6.0.0", sha256="6451b6fdf7f24787628190bbe8f2208c929546b68b692d8355d2f18bea7ca7db") + + amdgpu_targets = ROCmPackage.amdgpu_targets + + variant( + "amdgpu_target", + description="AMD GPU architecture", + values=auto_or_any_combination_of(*amdgpu_targets), + sticky=True, + ) + variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + + depends_on("cmake@3.25.2:", type="build", when="@6.2.0:") + depends_on("python@3.7:") + depends_on("python@3.8:3.13.2", when="@6.4:") + + for ver in [ + "6.0.0", + "6.0.2", + "6.1.0", + "6.1.1", + "6.1.2", + "6.2.0", + "6.2.1", + "6.2.4", + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + ]: + depends_on(f"hip@{ver}", when=f"@{ver}") + depends_on(f"llvm-amdgpu@{ver}", when=f"@{ver}") + depends_on(f"rocm-openmp-extras@{ver}", type="test", when=f"@{ver}") + + for ver in ["6.0.0", "6.0.2", "6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1", "6.2.4"]: + depends_on(f"hipblas@{ver}", when=f"@{ver}") + + for ver in [ + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + ]: + depends_on(f"hipblas-common@{ver}", when=f"@{ver}") + depends_on(f"rocm-smi-lib@{ver}", when=f"@{ver}") + + for ver in ["6.4.0", "6.4.1", "6.4.2", "6.4.3", "7.0.0", "7.0.2"]: + depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") + + depends_on("msgpack-c") + depends_on("py-joblib", type=("build", "link")) + depends_on("googletest@1.10.0:", type="test") + depends_on("netlib-lapack@3.7.1:", type="test") + depends_on("py-pyyaml", type="test") + depends_on("python-venv", when="@6.4:") + + # Sets the proper for clang++ and clang-offload-blunder. + # Also adds hipblas and msgpack include directories + patch("001_Set_LLVM_Paths_And_Add_Includes.patch", when="@6.0") + # Below patch sets the proper path for clang++ and clang-offload-blunder. + # Also adds hipblas and msgpack include directories for 6.1.0 release. + patch("0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch", when="@6.1:6.2") + patch("0001-Set-LLVM-Path-6.3.Patch", when="@6.3") + patch("002-link-roctracer.patch", when="@6.4") + patch("002-link-roctracer.7.0.patch", when="@7.0") + + patch("003-use-rocm-smi-config.patch", when="@6.4:") + patch("0004-Set-rocm-smi-ld-path-7.0.patch", when="@7.0") + + def setup_build_environment(self, env: EnvironmentModifications) -> None: + if self.spec.satisfies("@:6.4"): + env.set("CXX", self.spec["hip"].hipcc) + else: + env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++") + if self.spec.satisfies("@6.3.0:6.4"): + env.set( + "TENSILE_ROCM_ASSEMBLER_PATH", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++" + ) + if self.spec.satisfies("@6.3.0:"): + env.set( + "TENSILE_ROCM_OFFLOAD_BUNDLER_PATH", + f"{self.spec['llvm-amdgpu'].prefix}/bin/clang-offload-bundler", + ) + env.set("ROCM_SMI_PATH", f"{self.spec['rocm-smi-lib'].prefix}/bin/rocm-smi") + env.set( + "ROCM_AGENT_ENUMERATOR_PATH", + f"{self.spec['rocminfo'].prefix}/bin/rocm_agent_enumerator", + ) + if self.spec.satisfies("@7.0:"): + env.set("ROCM_LD_PATH", f"{self.spec['llvm-amdgpu'].prefix}/bin/ld.lld") + env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang") + + def patch(self): + if self.spec.satisfies("@6.3:"): + filter_file( + "${rocm_path}/llvm/bin", + self.spec["llvm-amdgpu"].prefix.bin, + "tensilelite/Tensile/Ops/gen_assembly.sh", + string=True, + ) + filter_file( + "${rocm_path}/bin/amdclang++", + f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++", + "library/src/amd_detail/rocblaslt/src/kernels/compile_code_object.sh", + string=True, + ) + filter_file( + "${rocm_path}/bin/amdclang++", + f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++", + "tensilelite/Tensile/Ops/gen_assembly.sh", + string=True, + ) + if self.spec.satisfies("@7.0:"): + py_ver = self.spec["python"].version[:-1] + joblib_path = f"{self.spec['py-joblib'].prefix}/lib/python{py_ver}/site-packages" + filter_file( + "${PROJECT_BINARY_DIR}/lib", + ":".join(["${PROJECT_BINARY_DIR}/lib", joblib_path]), + "tensilelite/CMakeLists.txt", + "tensilelite/Tensile/cmake/TensileConfig.cmake", + "library/src/amd_detail/rocblaslt/src/extops/CMakeLists.txt", + string=True, + ) + if not self.spec["hip"].external: + if self.spec.satisfies("@6.4:") and self.run_tests: + filter_file( + r"${HIP_CLANG_ROOT}/lib", + "{0}/lib".format(self.spec["rocm-openmp-extras"].prefix), + "clients/CMakeLists.txt", + string=True, + ) + + @classmethod + def determine_version(cls, lib): + match = re.search(r"lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)", lib) + if match: + ver = "{0}.{1}.{2}".format( + int(match.group(1)), int(match.group(2)), int(match.group(3)) + ) + else: + ver = None + return ver + + def cmake_args(self): + args = [ + self.define("Tensile_CODE_OBJECT_VERSION", "default"), + self.define("MSGPACK_DIR", self.spec["msgpack-c"].prefix), + self.define_from_variant("ADDRESS_SANITIZER", "asan"), + self.define("BUILD_CLIENTS_TESTS", self.run_tests), + ] + if "auto" not in self.spec.variants["amdgpu_target"]: + args.append(self.define_from_variant("AMDGPU_TARGETS", "amdgpu_target")) + if self.run_tests: + args.append( + self.define("ROCM_OPENMP_EXTRAS_DIR", self.spec["rocm-openmp-extras"].prefix) + ) + if self.spec.satisfies("@6.4:"): + args.append(self.define("Python_EXECUTABLE", self.spec["python"].prefix.bin.python3)) + args.append(self.define("Python_ROOT", self.spec["python"].prefix.bin)) + if self.spec.satisfies("@7.0:"): + args.append( + self.define( + "ROCROLLER_ASSEMBLER_PATH", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++" + ) + ) + return args From 63cb72fb7107e9a20013d420b458bebe8f9000e7 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 16 Dec 2025 15:17:30 +0100 Subject: [PATCH 14/55] Fix 7.1.0 hipblaslt --- recipes/prgenv-gnu/25.12/amdgpu/config.yaml | 3 +- .../005-add-roctracer-include-dir.patch | 20 +++++ .../amdgpu/repo/packages/hipblaslt/package.py | 86 +++++++++++++++++-- 3 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml index 179b7679b..bf22b9118 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml @@ -5,6 +5,5 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/spack/spack-packages.git - commit: da6e6ab9bf8fdcaba76cf452fd7b87dbaa06e003 # Try https://github.com/spack/spack-packages/pull/2287 -store: /user-environment + commit: 801243d32ab734941b8e5e92f8809e2d3d16d8ed # `develop` branch with ROCm 7.1.0 description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch new file mode 100644 index 000000000..be7ead9a5 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch @@ -0,0 +1,20 @@ +diff --git a/projects/hipblaslt/CMakeLists.txt b/projects/hipblaslt/CMakeLists.txt +index dbccca9..724ff0b 100644 +--- a/projects/hipblaslt/CMakeLists.txt ++++ b/projects/hipblaslt/CMakeLists.txt +@@ -121,6 +121,7 @@ if(HIPBLASLT_ENABLE_HOST) + endif() + if(HIPBLASLT_ENABLE_MARKER) + find_library(rocTracer roctx64 REQUIRED) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") + else() + set(rocTracer) + endif() +@@ -269,6 +270,7 @@ if(HIPBLASLT_ENABLE_HOST) + + if(HIPBLASLT_ENABLE_MARKER) + target_compile_definitions(hipblaslt PRIVATE HIPBLASLT_ENABLE_MARKER) ++ target_include_directories(hipblaslt PRIVATE ${ROCTRACER_INCLUDE_DIR}) + endif() + + target_include_directories(hipblaslt diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py index 831c96f23..e2337352e 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import re from spack_repo.builtin.build_systems.cmake import CMakePackage @@ -15,14 +16,21 @@ class Hipblaslt(CMakePackage): and extends functionalities beyond a traditional BLAS library""" homepage = "https://github.com/ROCm/hipBLASLt" - url = "https://github.com/ROCm/hipBLASLt/archive/refs/tags/rocm-6.4.2.tar.gz" git = "https://github.com/ROCm/hipBLASLt.git" + def url_for_version(self, version): + if version <= Version("7.0.2"): + url = "https://github.com/ROCm/hipBLASLt/archive/refs/tags/rocm-{0}.tar.gz" + else: + url = "https://github.com/ROCm/rocm-libraries/archive/rocm-{0}.tar.gz" + return url.format(version) + maintainers("srekolam", "afzpatel", "renjithravindrankannath") tags = ["rocm"] libraries = ["libhipblaslt"] license("MIT") + version("7.1.0", sha256="d9e138a15e8195a7e9b5e15240e50c557b830d50a2bafa27db14dad3884dbfd8") version("7.0.2", sha256="52d7c1c6852f501f5bd37fa962e6538592741792593a173d8b6963b8f7bd2c41") version("7.0.0", sha256="9a38822eea27080dbeab7dd9d39b4bdaeb7c25bc5d19ca6ccf24674c3b34dbae") version("6.4.3", sha256="64252588faf8a9089838e8f427e911617916fd6905a8cc65370e8d25fafdf0e4") @@ -79,6 +87,7 @@ class Hipblaslt(CMakePackage): "6.4.3", "7.0.0", "7.0.2", + "7.1.0", ]: depends_on(f"hip@{ver}", when=f"@{ver}") depends_on(f"llvm-amdgpu@{ver}", when=f"@{ver}") @@ -98,11 +107,12 @@ class Hipblaslt(CMakePackage): "6.4.3", "7.0.0", "7.0.2", + "7.1.0", ]: depends_on(f"hipblas-common@{ver}", when=f"@{ver}") depends_on(f"rocm-smi-lib@{ver}", when=f"@{ver}") - for ver in ["6.4.0", "6.4.1", "6.4.2", "6.4.3", "7.0.0", "7.0.2"]: + for ver in ["6.4.0", "6.4.1", "6.4.2", "6.4.3", "7.0.0", "7.0.2", "7.1.0"]: depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") depends_on("msgpack-c") @@ -111,6 +121,12 @@ class Hipblaslt(CMakePackage): depends_on("netlib-lapack@3.7.1:", type="test") depends_on("py-pyyaml", type="test") depends_on("python-venv", when="@6.4:") + depends_on("blis", type="test", when="@7.1:") + depends_on("boost+filesystem", when="@7.1:") + depends_on("googletest@1.10.0:", when="@7.1:") + depends_on("py-pyyaml+libyaml", when="@7.1:") + depends_on("py-packaging", when="@7.1:") + depends_on("py-msgpack", when="@7.1:") # Sets the proper for clang++ and clang-offload-blunder. # Also adds hipblas and msgpack include directories @@ -122,8 +138,10 @@ class Hipblaslt(CMakePackage): patch("002-link-roctracer.patch", when="@6.4") patch("002-link-roctracer.7.0.patch", when="@7.0") - patch("003-use-rocm-smi-config.patch", when="@6.4:") + patch("003-use-rocm-smi-config.patch", when="@6.4:7.0") patch("0004-Set-rocm-smi-ld-path-7.0.patch", when="@7.0") + # https://github.com/ROCm/rocm-libraries/pull/2115 + patch("005-add-roctracer-include-dir.patch", when="@7.1") def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:6.4"): @@ -148,8 +166,13 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: env.set("ROCM_LD_PATH", f"{self.spec['llvm-amdgpu'].prefix}/bin/ld.lld") env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang") + if self.spec.satisfies("@7.1") and self.run_tests: + env.append_flags("LDFLAGS", "-lstdc++fs") + def patch(self): - if self.spec.satisfies("@6.3:"): + purelib = self.spec["python"].package.purelib + joblib_path = os.path.join(self.spec["py-joblib"].prefix, purelib) + if self.spec.satisfies("@6.3:6.4"): filter_file( "${rocm_path}/llvm/bin", self.spec["llvm-amdgpu"].prefix.bin, @@ -168,9 +191,7 @@ def patch(self): "tensilelite/Tensile/Ops/gen_assembly.sh", string=True, ) - if self.spec.satisfies("@7.0:"): - py_ver = self.spec["python"].version[:-1] - joblib_path = f"{self.spec['py-joblib'].prefix}/lib/python{py_ver}/site-packages" + if self.spec.satisfies("@7.0"): filter_file( "${PROJECT_BINARY_DIR}/lib", ":".join(["${PROJECT_BINARY_DIR}/lib", joblib_path]), @@ -180,13 +201,39 @@ def patch(self): string=True, ) if not self.spec["hip"].external: - if self.spec.satisfies("@6.4:") and self.run_tests: + if self.spec.satisfies("@6.4:7.0") and self.run_tests: filter_file( r"${HIP_CLANG_ROOT}/lib", "{0}/lib".format(self.spec["rocm-openmp-extras"].prefix), "clients/CMakeLists.txt", string=True, ) + if self.spec.satisfies("@7.1") and self.run_tests: + filter_file( + r"${HIP_CLANG_ROOT}/lib", + "{0}/lib".format(self.spec["rocm-openmp-extras"].prefix), + "projects/hipblaslt/clients/CMakeLists.txt", + string=True, + ) + if self.spec.satisfies("@7.1:"): + yaml_path = os.path.join(self.spec["py-pyyaml"].prefix, purelib) + packaging_path = os.path.join(self.spec["py-packaging"].prefix, purelib) + msgpack_path = os.path.join(self.spec["py-msgpack"].prefix, purelib) + filter_file( + "${_python_path}", + ":".join( + ["${_python_path}", joblib_path, yaml_path, packaging_path, msgpack_path] + ), + "projects/hipblaslt/cmake/hipblaslt_python.cmake", + string=True, + ) + filter_file( + "${PROJECT_BINARY_DIR}/lib", + ":".join(["${PROJECT_BINARY_DIR}/lib", joblib_path]), + "projects/hipblaslt/tensilelite/CMakeLists.txt", + "projects/hipblaslt/tensilelite/Tensile/cmake/TensileConfig.cmake", + string=True, + ) @classmethod def determine_version(cls, lib): @@ -199,6 +246,13 @@ def determine_version(cls, lib): ver = None return ver + @property + def root_cmakelists_dir(self): + if self.spec.satisfies("@7.1"): + return "projects/hipblaslt" + else: + return "." + def cmake_args(self): args = [ self.define("Tensile_CODE_OBJECT_VERSION", "default"), @@ -207,7 +261,10 @@ def cmake_args(self): self.define("BUILD_CLIENTS_TESTS", self.run_tests), ] if "auto" not in self.spec.variants["amdgpu_target"]: - args.append(self.define_from_variant("AMDGPU_TARGETS", "amdgpu_target")) + if self.spec.satisfies("@7.1:"): + args.append(self.define_from_variant("GPU_TARGETS", "amdgpu_target")) + else: + args.append(self.define_from_variant("AMDGPU_TARGETS", "amdgpu_target")) if self.run_tests: args.append( self.define("ROCM_OPENMP_EXTRAS_DIR", self.spec["rocm-openmp-extras"].prefix) @@ -221,4 +278,15 @@ def cmake_args(self): "ROCROLLER_ASSEMBLER_PATH", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++" ) ) + args.append( + self.define( + "Tensile_COMPILER", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++" + ) + ) + if self.spec.satisfies("@7.1:"): + args.append(self.define("HIPBLASLT_ENABLE_CLIENT", self.run_tests)) + else: + args.append(self.define("BUILD_CLIENTS_TESTS", self.run_tests)) + if self.spec.satisfies("@7.1: %gcc@8.0:8.9"): + args.append(self.define("HIPBLASLT_ENABLE_ROCROLLER", "False")) return args From 71a0efba3b823f56ec60695e582ee5f71abb36d0 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 16 Dec 2025 15:25:16 +0100 Subject: [PATCH 15/55] Fix compiler version in yml file --- recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml b/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml index 97f8b2480..50d689d67 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml @@ -1,4 +1,4 @@ gcc: version: "13" llvm-amdgpu: - version: "7.0.2" + version: "7.1.0" From ca3cd15857d6631c84aa71931c46345b3d45c711 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Fri, 19 Dec 2025 12:40:42 +0100 Subject: [PATCH 16/55] New try with fixes of clang-offload-bunder --- recipes/prgenv-gnu/25.12/amdgpu/config.yaml | 2 +- .../prgenv-gnu/25.12/amdgpu/environments.yaml | 12 +- .../hipblaslt/offload_bundler_path.patch | 44 +++ .../amdgpu/repo/packages/hipblaslt/package.py | 6 + .../rocblas/0001-remove-blas-override.patch | 19 ++ ...7-add-rocm-openmp-extras-include-dir.patch | 20 ++ .../rocblas/0008-link-roctracer.patch | 16 + .../rocblas/0009-use-rocm-smi-config.patch | 15 + .../rocblas/offload_bundler_path.patch | 15 + .../amdgpu/repo/packages/rocblas/package.py | 274 ++++++++++++++++++ 10 files changed, 416 insertions(+), 7 deletions(-) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml index bf22b9118..7bb823164 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/config.yaml @@ -5,5 +5,5 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/spack/spack-packages.git - commit: 801243d32ab734941b8e5e92f8809e2d3d16d8ed # `develop` branch with ROCm 7.1.0 + commit: f941c2ba6edf03a7783138619aad104b6e8d543d # develop on 2025-12-19 description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 796ff2a19..300a8aa2a 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -7,7 +7,7 @@ gcc-env: duplicates: strategy: full specs: - - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer + - boost@1.88.0 +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer - cmake - fftw - fmt @@ -20,16 +20,16 @@ gcc-env: - meson - ninja - openblas threads=openmp - - osu-micro-benchmarks + - osu-micro-benchmarks ~xccl - python@3 - zlib-ng # add GPU-specific packages here, for easier comparison with mc version - - hip@7.0.2 ^mesa@23.3.6 + - hip@7.1.0 ^mesa@23.3.6 - hdf5+mpi - hipcub - llvm-amdgpu # rocm packages - - rocblas ~tensile ^py-msgpack %cxx=gcc # TODO: enable tensile + - rocblas ^py-msgpack %cxx=gcc - rocfft - rocm-cmake %cxx=gcc - rocm-openmp-extras @@ -39,7 +39,7 @@ gcc-env: - rocprofiler-dev - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc - rocprofiler-sdk - # - rocprofiler-systems@7.0.2 +internal-dyninst # TODO: enable + - rocprofiler-systems +internal-dyninst - rocrand - rocsolver - rocsparse @@ -50,7 +50,7 @@ gcc-env: - rocm-debug-agent # hip packages - hipblas - # - hipblaslt # TODO: enable + - hipblaslt - hiprand - hipsparse - hipfft diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch new file mode 100644 index 000000000..4f9b1f884 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch @@ -0,0 +1,44 @@ +diff --git a/projects/hipblaslt/device-library/CMakeLists.txt b/projects/hipblaslt/device-library/CMakeLists.txt +index f92984b6cd..ba86cce066 100644 +--- a/projects/hipblaslt/device-library/CMakeLists.txt ++++ b/projects/hipblaslt/device-library/CMakeLists.txt +@@ -17,6 +17,9 @@ list(JOIN GPU_TARGETS "$" TENSILELITE_GPU_TARGETS_SEMI_ESCAPED) + + set(TENSILELITE_BUILD_OPTS ${TENSILELITE_BUILD_OPTS} "--architecture=${TENSILELITE_GPU_TARGETS_SEMI_ESCAPED}") + set(TENSILELITE_BUILD_OPTS ${TENSILELITE_BUILD_OPTS} "--cxx-compiler=${CMAKE_CXX_COMPILER}") ++if(Tensile_OFFLOADBUNDLER) ++ set(TENSILELITE_BUILD_OPTS ${TENSILELITE_BUILD_OPTS} "--offload-bundler=${Tensile_OFFLOADBUNDLER}") ++endif() + if(HIPBLASLT_ENABLE_ASAN) + set(TENSILELITE_BUILD_OPTS ${TENSILELITE_BUILD_OPTS} "--address-sanitizer") + endif() +diff --git a/projects/hipblaslt/tensilelite/Tensile/cmake/TensileConfig.cmake b/projects/hipblaslt/tensilelite/Tensile/cmake/TensileConfig.cmake +index 15d89c5c6a..e079cb8682 100644 +--- a/projects/hipblaslt/tensilelite/Tensile/cmake/TensileConfig.cmake ++++ b/projects/hipblaslt/tensilelite/Tensile/cmake/TensileConfig.cmake +@@ -177,6 +177,10 @@ function(TensileCreateLibraryFiles + set(Options ${Options} "--cxx-compiler=${Tensile_COMPILER}") + endif() + ++ if(Tensile_OFFLOADBUNDLER) ++ set(Options ${Options} "--offload-bundler=${Tensile_OFFLOADBUNDLER}") ++ endif() ++ + if(Tensile_COMPILER_PATH) + set(Options ${Options} "--cmake-cxx-compiler=${Tensile_COMPILER_PATH}") + endif() +diff --git a/shared/tensile/Tensile/cmake/TensileConfig.cmake b/shared/tensile/Tensile/cmake/TensileConfig.cmake +index 62682d74ec..9d52403a4b 100644 +--- a/shared/tensile/Tensile/cmake/TensileConfig.cmake ++++ b/shared/tensile/Tensile/cmake/TensileConfig.cmake +@@ -194,6 +194,10 @@ function(TensileCreateLibraryFiles + set(Options ${Options} "--cxx-compiler=${Tensile_COMPILER}") + endif() + ++ if(Tensile_OFFLOADBUNDLER) ++ set(Options ${Options} "--offload-bundler=${Tensile_OFFLOADBUNDLER}") ++ endif() ++ + if(Tensile_COMPILER_PATH) + set(Options ${Options} "--cmake-cxx-compiler=${Tensile_COMPILER_PATH}") + endif() diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py index e2337352e..9b6e0196b 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py @@ -142,6 +142,7 @@ def url_for_version(self, version): patch("0004-Set-rocm-smi-ld-path-7.0.patch", when="@7.0") # https://github.com/ROCm/rocm-libraries/pull/2115 patch("005-add-roctracer-include-dir.patch", when="@7.1") + patch("offload_bundler_path.patch", when="@7.0:") def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("@:6.4"): @@ -283,6 +284,11 @@ def cmake_args(self): "Tensile_COMPILER", f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++" ) ) + args.append( + self.define( + "Tensile_OFFLOADBUNDLER", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang-offload-bundler" + ) + ) if self.spec.satisfies("@7.1:"): args.append(self.define("HIPBLASLT_ENABLE_CLIENT", self.run_tests)) else: diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch new file mode 100644 index 000000000..982f21143 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch @@ -0,0 +1,19 @@ +diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt +index 0f32675..65e458d 100644 +--- a/clients/CMakeLists.txt ++++ b/clients/CMakeLists.txt +@@ -163,14 +163,6 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) + find_package(PkgConfig) + if(NOT PKG_CONFIG_FOUND) + message( FATAL_ERROR "Could not find libblis and pkgconfig is not available" ) +- else() +- pkg_search_module(PKGBLAS cblas) +- if(PKGBLAS_FOUND) +- set( BLAS_LIBRARY ${PKGBLAS_LIBRARIES} ) +- set( BLAS_INCLUDE_DIR ${PKGBLAS_INCLUDE_DIRS} ) +- else() +- message( FATAL_ERROR "Could not find libblis and pkgconfig can not find any other implementation of cblas" ) +- endif() + endif() + endif() + else() diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch new file mode 100644 index 000000000..4e265011b --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch @@ -0,0 +1,20 @@ +diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +index 55e9bbe..32b350c 100644 +--- a/clients/gtest/CMakeLists.txt ++++ b/clients/gtest/CMakeLists.txt +@@ -164,6 +164,7 @@ target_include_directories( rocblas-test + $ + $ # may be blank if not used + $ ++ $ + ) + target_include_directories( rocblas_v3-test + SYSTEM PRIVATE +@@ -171,6 +172,7 @@ target_include_directories( rocblas_v3-test + $ + $ # may be blank if not used + $ ++ $ + ) + + if( BUILD_FORTRAN_CLIENTS ) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch new file mode 100644 index 000000000..9e55ee44a --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch @@ -0,0 +1,16 @@ +diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt +index 762580d..1692578 100644 +--- a/library/CMakeLists.txt ++++ b/library/CMakeLists.txt +@@ -81,7 +81,10 @@ function( rocblas_library_settings lib_target_ ) + else() + target_link_libraries( ${lib_target_} PRIVATE hip::device -lstdc++fs --rtlib=compiler-rt --unwindlib=libgcc) + if (BUILD_SHARED_LIBS) +- target_link_libraries(${lib_target_} PRIVATE -lroctx64) ++ find_path(ROCTRACER_INCLUDE_DIR "roctracer/roctx.h") ++ target_include_directories(${lib_target_} PUBLIC ${ROCTRACER_INCLUDE_DIR}) ++ find_library(ROCTX_LIB NAMES roctx64) ++ target_link_libraries(${lib_target_} PRIVATE ${ROCTX_LIB}) + endif() + endif() + target_link_libraries( ${lib_target_} PRIVATE Threads::Threads ) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch new file mode 100644 index 000000000..0b474bc02 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch @@ -0,0 +1,15 @@ +diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt +index 6194286..292bd8d 100644 +--- a/clients/CMakeLists.txt ++++ b/clients/CMakeLists.txt +@@ -178,8 +178,8 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS) + + # Find the package ROCmSMI + if(NOT WIN32) +- find_package(ROCmSMI REQUIRED) +- list( APPEND COMMON_LINK_LIBS rocm_smi ) ++ find_package(rocm_smi CONFIG REQUIRED) ++ list( APPEND COMMON_LINK_LIBS rocm_smi64 ) + endif() + + find_package( GTest REQUIRED ) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch new file mode 100644 index 000000000..f48d93848 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch @@ -0,0 +1,15 @@ +diff --git a/Tensile/cmake/TensileConfig.cmake b/Tensile/cmake/TensileConfig.cmake +index 62682d74..9d52403a 100644 +--- a/Tensile/cmake/TensileConfig.cmake ++++ b/Tensile/cmake/TensileConfig.cmake +@@ -194,6 +194,10 @@ function(TensileCreateLibraryFiles + set(Options ${Options} "--cxx-compiler=${Tensile_COMPILER}") + endif() + ++ if(Tensile_OFFLOADBUNDLER) ++ set(Options ${Options} "--offload-bundler=${Tensile_OFFLOADBUNDLER}") ++ endif() ++ + if(Tensile_COMPILER_PATH) + set(Options ${Options} "--cmake-cxx-compiler=${Tensile_COMPILER_PATH}") + endif() diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py new file mode 100644 index 000000000..3e6be907f --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py @@ -0,0 +1,274 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import re + +from spack_repo.builtin.build_systems.cmake import CMakePackage +from spack_repo.builtin.build_systems.rocm import ROCmPackage + +from spack.package import * + + +class Rocblas(CMakePackage): + """Radeon Open Compute BLAS library""" + + homepage = "https://github.com/ROCm/rocBLAS/" + git = "https://github.com/ROCm/rocBLAS.git" + url = "https://github.com/ROCm/rocBLAS/archive/rocm-6.4.3.tar.gz" + tags = ["rocm"] + + maintainers("cgmb", "srekolam", "renjithravindrankannath", "haampie", "afzpatel") + libraries = ["librocblas"] + + license("MIT") + version("7.1.0", sha256="54f38222d0e58344cf5c86f151d418c071b59145297fd2ed953bb561df1e12c3") + version("7.0.2", sha256="8398cda68242db2386abc9eaf00c3588bb27e2b382e29be2bc5624c2d4ac8a99") + version("7.0.0", sha256="337a77cec31927e484672002d245d3aebf7a67e95658a8477fc593c95cf281fb") + version("6.4.3", sha256="754dcc88b30468a2293d2406d7fe40f78dc92dd77c193758f937532217ecdad3") + version("6.4.2", sha256="703226c458bb3dd1155aad8bdc02cdae2ff789c6b44e41e4a49ae28e40baff98") + version("6.4.1", sha256="517950ff6b3715dee8b2bcfbdd3968c65e1910e4b8e353e148574ae08aa6dc73") + version("6.4.0", sha256="ab8e75c9f98d17817a650aa4f06ff1e6c6af92cd143079e361cb6a0c96676aaa") + version("6.3.3", sha256="73e91bd50c920b818742fa5bf9990c0676be5bfbafe321d5781607dc2ce27060") + version("6.3.2", sha256="455cad760d926c21101594197c4456f617e5873a8f17bb3e14bd762018545a9e") + version("6.3.1", sha256="88d2de6ce6b23a157eea8be63408350848935e4dfc3e27e5f2add78834c6d6ba") + version("6.3.0", sha256="051f53bb69a9aba55a0c66c32688bf6af80e29e4a6b56b380b3c427e7a6aff9d") + version("6.2.4", sha256="8bacf74e3499c445f1bb0a8048df1ef3ce6f72388739b1823b5784fd1e8aa22a") + version("6.2.1", sha256="cf3bd7b47694f95f387803191615e2ff5c1106175473be7a5b2e8eb6fb99179f") + version("6.2.0", sha256="184e9b39dcbed57c25f351b047d44c613f8a2bbab3314a20c335f024a12ad4e5") + version("6.1.2", sha256="1e83918bd7b28ec9ee292c6fb7eb0fc5f4db2d5d831a9a3db541f14a90c20a1a") + version("6.1.1", sha256="c920742fb8f45512c360cdb40e37d0ac767f042e52f1981264853dab5ec2c876") + version("6.1.0", sha256="af00357909da60d82618038aa9a3cc1f9d4ce1bdfb54db20ec746b592d478edf") + version("6.0.2", sha256="d1bf31063a2d349797b88c994c91d05f94e681bafb5550ad9b53529703d89dbb") + version("6.0.0", sha256="befa4a75f1de0ea37f2358d4c2de5406d7bce671ca9936e2294b64d3b3bafb60") + version("5.7.1", sha256="2984a5ed0ea5a05d40996ee3fddecb24399cbe8ea3e4921fc254e54d8f52fe4f") + version("5.7.0", sha256="024edd98de9687ee5394badc4dd4c543eef4eb3f71c96ff64100705d851e1744") + + amdgpu_targets = ROCmPackage.amdgpu_targets + + variant( + "amdgpu_target", + description="AMD GPU architecture", + values=auto_or_any_combination_of(*amdgpu_targets), + sticky=True, + ) + variant("tensile", default=True, description="Use Tensile as a backend") + variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") + variant("hipblaslt", default=True, when="@6.3:", description="Build with hipblaslt") + + conflicts("+asan", when="os=rhel9") + conflicts("+asan", when="os=centos7") + conflicts("+asan", when="os=centos8") + + depends_on("c", type="build") # generated + depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") # generated + + depends_on("cmake@3.16.8:", type="build") + + depends_on("googletest@1.10.0:", type="test") + depends_on("amdblis", type="test") + + for ver in [ + "6.2.0", + "6.2.1", + "6.2.4", + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + "7.1.0", + ]: + depends_on(f"rocm-smi-lib@{ver}", type="test", when=f"@{ver}") + + for ver in [ + "5.7.0", + "5.7.1", + "6.0.0", + "6.0.2", + "6.1.0", + "6.1.1", + "6.1.2", + "6.2.0", + "6.2.1", + "6.2.4", + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + "7.1.0", + ]: + depends_on(f"hip@{ver}", when=f"@{ver}") + depends_on(f"llvm-amdgpu@{ver}", type="build", when=f"@{ver}") + depends_on(f"rocminfo@{ver}", type="build", when=f"@{ver}") + depends_on(f"rocm-cmake@{ver}", type="build", when=f"@{ver}") + depends_on(f"rocm-openmp-extras@{ver}", type="test", when=f"@{ver}") + + for ver in [ + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + "7.1.0", + ]: + depends_on(f"hipblaslt@{ver}", when=f"@{ver} +hipblaslt") + + for ver in ["6.4.0", "6.4.1", "6.4.2", "6.4.3", "7.0.0", "7.0.2", "7.1.0"]: + depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") + + depends_on("python@3.6:", type="build") + + with when("+tensile"): + depends_on("msgpack-c@3:") + + depends_on("py-virtualenv", type="build") + depends_on("perl-file-which", type="build") + depends_on("py-pyyaml", type="build") + depends_on("py-wheel", type="build") + depends_on("py-msgpack", type="build") + depends_on("py-pip", type="build") + depends_on("py-joblib", type="build") + depends_on("procps", type="build") + + for t_version, t_commit in [ + ("@5.7.0", "97e0cfc2c8cb87a1e38901d99c39090dc4181652"), + ("@5.7.1", "97e0cfc2c8cb87a1e38901d99c39090dc4181652"), + ("@6.0.0", "17df881bde80fc20f997dfb290f4bb4b0e05a7e9"), + ("@6.0.2", "17df881bde80fc20f997dfb290f4bb4b0e05a7e9"), + ("@6.1.0", "2b55ccf58712f67b3df0ca53b0445f094fcb96b2"), + ("@6.1.1", "2b55ccf58712f67b3df0ca53b0445f094fcb96b2"), + ("@6.1.2", "2b55ccf58712f67b3df0ca53b0445f094fcb96b2"), + ("@6.2.0", "dbc2062dced66e4cbee8e0591d76e0a1588a4c70"), + ("@6.2.1", "dbc2062dced66e4cbee8e0591d76e0a1588a4c70"), + ("@6.2.4", "81ae9537671627fe541332c0a5d953bfd6af71d6"), + ("@6.3.0", "aca95d1743c243dd0dd0c8b924608bc915ce1ae7"), + ("@6.3.1", "aca95d1743c243dd0dd0c8b924608bc915ce1ae7"), + ("@6.3.2", "aca95d1743c243dd0dd0c8b924608bc915ce1ae7"), + ("@6.3.3", "aca95d1743c243dd0dd0c8b924608bc915ce1ae7"), + ("@6.4.0", "be49885fce2a61b600ae4593f1c2d00c8b4fa11e"), + ("@6.4.1", "be49885fce2a61b600ae4593f1c2d00c8b4fa11e"), + ("@6.4.2", "be49885fce2a61b600ae4593f1c2d00c8b4fa11e"), + ("@6.4.3", "be49885fce2a61b600ae4593f1c2d00c8b4fa11e"), + ("@7.0.0", "cca3c8136aa812109629e6291ce9f0ca846b68d3"), + ("@7.0.2", "63c27e505cb532ff8e568d737bfdbd9e1d024665"), + ("@7.1.0", "0c8314da90fee8cf3b16dcb1bbc75bc1266e123f"), + ]: + resource( + name="Tensile", + git="https://github.com/ROCm/Tensile.git", + commit=t_commit, + when=f"{t_version} +tensile", + ) + + patch("0007-add-rocm-openmp-extras-include-dir.patch", when="@5.7") + patch("0008-link-roctracer.patch", when="@6.4") + patch("0009-use-rocm-smi-config.patch", when="@6.4:") + patch("0001-remove-blas-override.patch", when="@7.1:") + patch("offload_bundler_path.patch", when="@7.0:+tensile", working_dir="Tensile") + + def setup_build_environment(self, env: EnvironmentModifications) -> None: + env.set("CXX", self.spec["hip"].hipcc) + if self.spec.satisfies("+asan"): + env.set("CC", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang") + env.set("CXX", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang++") + env.set("ASAN_OPTIONS", "detect_leaks=0") + env.set("CFLAGS", "-fsanitize=address -shared-libasan") + env.set("CXXFLAGS", "-fsanitize=address -shared-libasan") + env.set("LDFLAGS", "-fuse-ld=lld") + + @classmethod + def determine_version(cls, lib): + match = re.search(r"lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)", lib) + if match: + ver = "{0}.{1}.{2}".format( + int(match.group(1)), int(match.group(2)), int(match.group(3)) + ) + else: + ver = None + return ver + + def cmake_args(self): + args = [ + self.define("BUILD_CLIENTS_TESTS", self.run_tests and "@4.2.0:" in self.spec), + self.define("BUILD_CLIENTS_BENCHMARKS", "OFF"), + self.define("BUILD_CLIENTS_SAMPLES", "OFF"), + self.define("RUN_HEADER_TESTING", "OFF"), + self.define_from_variant("BUILD_WITH_TENSILE", "tensile"), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + self.define("Tensile_CODE_OBJECT_VERSION", "default"), + ] + if self.run_tests: + args.append(self.define("LINK_BLIS", "ON")) + args.append( + self.define("ROCM_OPENMP_EXTRAS_DIR", self.spec["rocm-openmp-extras"].prefix) + ) + args.append( + self.define("BLIS_INCLUDE_DIR", self.spec["amdblis"].prefix + "/include/blis/") + ) + args.append( + self.define("BLAS_LIBRARY", self.spec["amdblis"].prefix + "/lib/libblis.a") + ) + + if "+tensile" in self.spec: + tensile_path = join_path(self.stage.source_path, "Tensile") + if self.spec.satisfies("@:6.2"): + tensile_compiler = "hipcc" + else: + tensile_compiler = f"{self.spec['llvm-amdgpu'].prefix}/bin/amdclang++" + args += [ + self.define("Tensile_TEST_LOCAL_PATH", tensile_path), + self.define("Tensile_COMPILER", tensile_compiler), + self.define("Tensile_LOGIC", "asm_full"), + self.define("BUILD_WITH_TENSILE_HOST", "@3.7.0:" in self.spec), + self.define("Tensile_LIBRARY_FORMAT", "msgpack"), + ] + # Used together with patch `offload_bundler_path.patch`` + if self.spec.satisfies("@7.0:+tensile"): + args.append(self.define("Tensile_OFFLOADBUNDLER", f"{self.spec['llvm-amdgpu'].prefix}/bin/clang-offload-bundler")) + # Restrict the number of jobs Tensile can spawn. + # If we don't specify otherwise, Tensile creates a job per available core, + # and that consumes a lot of system memory. + # https://github.com/ROCm/Tensile/blob/93e10678a0ced7843d9332b80bc17ebf9a166e8e/Tensile/Parallel.py#L38 + args.append(self.define("Tensile_CPU_THREADS", min(16, make_jobs))) + + if "auto" not in self.spec.variants["amdgpu_target"]: + if self.spec.satisfies("@7.1:"): + args.append(self.define_from_variant("GPU_TARGETS", "amdgpu_target")) + else: + args.append(self.define_from_variant("AMDGPU_TARGETS", "amdgpu_target")) + + # See https://github.com/ROCm/rocBLAS/issues/1196 + if self.spec.satisfies("^cmake@3.21.0:3.21.2"): + args.append(self.define("__skip_rocmclang", "ON")) + + if self.spec.satisfies("@:6.3.1"): + args.append(self.define("BUILD_FILE_REORG_BACKWARD_COMPATIBILITY", True)) + if self.spec.satisfies("@6.3:"): + args.append(self.define_from_variant("BUILD_WITH_HIPBLASLT", "hipblaslt")) + if self.spec.satisfies("@7.1:"): + args.append(self.define("ROCTX_PATH", self.spec["roctracer-dev"].prefix)) + return args + + @run_after("build") + @on_package_attributes(run_tests=True) + def check_build(self): + exe = Executable(join_path(self.build_directory, "clients", "staging", "rocblas-test")) + exe("--gtest_filter=*quick*-*known_bug*") From 7df04a7735d48ff557c65833b931098ab9802f18 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Fri, 19 Dec 2025 15:33:36 +0100 Subject: [PATCH 17/55] Disable all the rocprofiler related packages --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 300a8aa2a..d2285a9e9 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -36,10 +36,11 @@ gcc-env: - rocm-core %cxx=gcc - rocminfo - rocprim - - rocprofiler-dev - - rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc - - rocprofiler-sdk - - rocprofiler-systems +internal-dyninst + #- rocprofiler-dev # TODO(iomaganaris): reenable + #- rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc # TODO(iomaganaris): reenable + #- rocprofiler-sdk # TODO(iomaganaris): reenable + #- rocprofiler-systems +internal-dyninst # TODO(iomaganaris): reenable + #- rocprofiler-compute # TODO(iomaganaris): reenable - rocrand - rocsolver - rocsparse From 01633bc6f0f3b30a0feb91171ea11929f6636de1 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Fri, 19 Dec 2025 16:11:52 +0100 Subject: [PATCH 18/55] Add unwind dependency to rocprofiler-register and use python 3.12.12 with llvm-amdgpu to avoid rebuilding python packages --- .../prgenv-gnu/25.12/amdgpu/environments.yaml | 1 + ...-update-HIP_PATH-deduction-for-5.7.0.patch | 56 ++ .../001-Add-i1-mul-patterns-5.7.patch | 671 ++++++++++++++++++ .../llvm_amdgpu/002-Add-rpath-to-hiprt.patch | 13 + .../packages/llvm_amdgpu/detection_test.yaml | 103 +++ .../repo/packages/llvm_amdgpu/package.py | 389 ++++++++++ .../llvm_amdgpu/patch-llvm-5.5.0.patch | 38 + .../001-add-cpack-fmt-glog.patch | 38 + .../packages/rocprofiler_register/package.py | 53 ++ 9 files changed, 1362 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index d2285a9e9..583cff10d 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -66,6 +66,7 @@ gcc-env: - +rocm - amdgpu_target=gfx942,gfx90a - amdgpu_target_sram_ecc=gfx942,gfx90a + - ^python@3.12.12 views: default: link: roots diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch new file mode 100644 index 000000000..98a3e3838 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch @@ -0,0 +1,56 @@ +From 520d86b859bd6640fbd7f22b6a326a3b040c3671 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 23 Nov 2023 09:31:49 +0000 +Subject: [PATCH] update HIP_PATH deduction for 5.7.0 + +--- + clang/lib/Driver/ToolChains/AMDGPU.cpp | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp +index fe36646..8706f08 100644 +--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp ++++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp +@@ -437,12 +437,13 @@ void RocmInstallationDetector::detectDeviceLibrary() { + void RocmInstallationDetector::detectHIPRuntime() { + SmallVector HIPSearchDirs; + if (!HIPPathArg.empty()) +- HIPSearchDirs.emplace_back(HIPPathArg.str(), /*StrictChecking=*/true); ++ HIPSearchDirs.emplace_back(HIPPathArg.str()); + else if (std::optional HIPPathEnv = + llvm::sys::Process::GetEnv("HIP_PATH")) { + if (!HIPPathEnv->empty()) + HIPSearchDirs.emplace_back(std::move(*HIPPathEnv)); +- } else ++ } ++ if (HIPSearchDirs.empty()) + HIPSearchDirs.append(getInstallationPathCandidates()); + auto &FS = D.getVFS(); + +@@ -464,10 +465,21 @@ void RocmInstallationDetector::detectHIPRuntime() { + SharePath = InstallPath; + llvm::sys::path::append(SharePath, "share"); + ++ // Get parent of InstallPath and append "share" ++ SmallString<0> ParentSharePath = llvm::sys::path::parent_path(InstallPath); ++ llvm::sys::path::append(ParentSharePath, "share"); ++ ++ auto Append = [](SmallString<0> &path, const Twine &a, const Twine &b = "", ++ const Twine &c = "", const Twine &d = "") { ++ SmallString<0> newpath = path; ++ llvm::sys::path::append(newpath, a, b, c, d); ++ return newpath; ++ }; + // If HIP version file can be found and parsed, use HIP version from there. + for (const auto &VersionFilePath : +- {std::string(SharePath) + "/hip/version", +- std::string(BinPath) + "/.hipVersion"}) { ++ {Append(SharePath, "hip", "version"), ++ Append(ParentSharePath, "hip", "version"), ++ Append(BinPath, ".hipVersion")}) { + llvm::ErrorOr> VersionFile = + FS.getBufferForFile(VersionFilePath); + if (!VersionFile) +-- +2.39.3 + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch new file mode 100644 index 000000000..52ee52cc5 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch @@ -0,0 +1,671 @@ +From 92c7d307a51fc0e6c7cbd2b760014ae77bdc0a3f Mon Sep 17 00:00:00 2001 +From: Renjith Ravindran +Date: Fri, 3 Nov 2023 02:58:08 +0000 +Subject: [PATCH] Upcoming fix from PR 67291 + +--- + llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 2 + + llvm/test/CodeGen/AMDGPU/mul.ll | 400 ++++++++++++++++++---- + 2 files changed, 326 insertions(+), 76 deletions(-) + +diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +index 3f816c01a..30129fb4a 100644 +--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp ++++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +@@ -743,6 +743,8 @@ SITargetLowering::SITargetLowering(const TargetMachine &TM, + MVT::i8}, + Custom); + ++ setOperationAction(ISD::MUL, MVT::i1, Promote); ++ + setTargetDAGCombine({ISD::ADD, + ISD::ADDCARRY, + ISD::SUB, +diff --git a/llvm/test/CodeGen/AMDGPU/mul.ll b/llvm/test/CodeGen/AMDGPU/mul.ll +index 68c8f7d58..ed930e429 100644 +--- a/llvm/test/CodeGen/AMDGPU/mul.ll ++++ b/llvm/test/CodeGen/AMDGPU/mul.ll +@@ -1058,6 +1058,254 @@ entry: + store i32 %result, ptr addrspace(1) %out + ret void + } ++define amdgpu_kernel void @s_mul_i1(ptr addrspace(1) %out, [8 x i32], i1 %a, [8 x i32], i1 %b) nounwind { ++; SI-LABEL: s_mul_i1: ++; SI: ; %bb.0: ; %entry ++; SI-NEXT: s_load_dword s4, s[0:1], 0x13 ++; SI-NEXT: s_load_dword s5, s[0:1], 0x1c ++; SI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x9 ++; SI-NEXT: s_mov_b32 s3, 0xf000 ++; SI-NEXT: s_mov_b32 s2, -1 ++; SI-NEXT: s_waitcnt lgkmcnt(0) ++; SI-NEXT: s_mul_i32 s4, s4, s5 ++; SI-NEXT: s_and_b32 s4, s4, 1 ++; SI-NEXT: v_mov_b32_e32 v0, s4 ++; SI-NEXT: buffer_store_byte v0, off, s[0:3], 0 ++; SI-NEXT: s_endpgm ++; ++; VI-LABEL: s_mul_i1: ++; VI: ; %bb.0: ; %entry ++; VI-NEXT: s_load_dword s4, s[0:1], 0x70 ++; VI-NEXT: s_load_dword s5, s[0:1], 0x4c ++; VI-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x24 ++; VI-NEXT: s_mov_b32 s3, 0xf000 ++; VI-NEXT: s_mov_b32 s2, -1 ++; VI-NEXT: s_waitcnt lgkmcnt(0) ++; VI-NEXT: v_mov_b32_e32 v0, s4 ++; VI-NEXT: v_mul_lo_u16_e32 v0, s5, v0 ++; VI-NEXT: v_and_b32_e32 v0, 1, v0 ++; VI-NEXT: buffer_store_byte v0, off, s[0:3], 0 ++; VI-NEXT: s_endpgm ++; ++; GFX9-LABEL: s_mul_i1: ++; GFX9: ; %bb.0: ; %entry ++; GFX9-NEXT: s_load_dword s2, s[0:1], 0x70 ++; GFX9-NEXT: s_load_dword s3, s[0:1], 0x4c ++; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x24 ++; GFX9-NEXT: s_mov_b32 s7, 0xf000 ++; GFX9-NEXT: s_mov_b32 s6, -1 ++; GFX9-NEXT: s_waitcnt lgkmcnt(0) ++; GFX9-NEXT: v_mov_b32_e32 v0, s2 ++; GFX9-NEXT: v_mul_lo_u16_e32 v0, s3, v0 ++; GFX9-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX9-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; GFX9-NEXT: s_endpgm ++; ++; GFX10-LABEL: s_mul_i1: ++; GFX10: ; %bb.0: ; %entry ++; GFX10-NEXT: s_clause 0x2 ++; GFX10-NEXT: s_load_dword s2, s[0:1], 0x4c ++; GFX10-NEXT: s_load_dword s3, s[0:1], 0x70 ++; GFX10-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x24 ++; GFX10-NEXT: s_mov_b32 s7, 0x31016000 ++; GFX10-NEXT: s_mov_b32 s6, -1 ++; GFX10-NEXT: s_waitcnt lgkmcnt(0) ++; GFX10-NEXT: v_mul_lo_u16 v0, s2, s3 ++; GFX10-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX10-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; GFX10-NEXT: s_endpgm ++; ++; GFX11-LABEL: s_mul_i1: ++; GFX11: ; %bb.0: ; %entry ++; GFX11-NEXT: s_clause 0x2 ++; GFX11-NEXT: s_load_b32 s2, s[0:1], 0x4c ++; GFX11-NEXT: s_load_b32 s3, s[0:1], 0x70 ++; GFX11-NEXT: s_load_b64 s[0:1], s[0:1], 0x24 ++; GFX11-NEXT: s_waitcnt lgkmcnt(0) ++; GFX11-NEXT: v_mul_lo_u16 v0, s2, s3 ++; GFX11-NEXT: s_mov_b32 s3, 0x31016000 ++; GFX11-NEXT: s_mov_b32 s2, -1 ++; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) ++; GFX11-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX11-NEXT: buffer_store_b8 v0, off, s[0:3], 0 ++; GFX11-NEXT: s_nop 0 ++; GFX11-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ++; GFX11-NEXT: s_endpgm ++; ++; EG-LABEL: s_mul_i1: ++; EG: ; %bb.0: ; %entry ++; EG-NEXT: ALU 0, @10, KC0[], KC1[] ++; EG-NEXT: TEX 1 @6 ++; EG-NEXT: ALU 12, @11, KC0[CB0:0-32], KC1[] ++; EG-NEXT: MEM_RAT MSKOR T0.XW, T1.X ++; EG-NEXT: CF_END ++; EG-NEXT: PAD ++; EG-NEXT: Fetch clause starting at 6: ++; EG-NEXT: VTX_READ_8 T1.X, T0.X, 72, #3 ++; EG-NEXT: VTX_READ_8 T0.X, T0.X, 108, #3 ++; EG-NEXT: ALU clause starting at 10: ++; EG-NEXT: MOV * T0.X, 0.0, ++; EG-NEXT: ALU clause starting at 11: ++; EG-NEXT: AND_INT T0.W, KC0[2].Y, literal.x, ++; EG-NEXT: MULLO_INT * T0.X, T1.X, T0.X, ++; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) ++; EG-NEXT: AND_INT T1.W, PS, 1, ++; EG-NEXT: LSHL * T0.W, PV.W, literal.x, ++; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) ++; EG-NEXT: LSHL T0.X, PV.W, PS, ++; EG-NEXT: LSHL * T0.W, literal.x, PS, ++; EG-NEXT: 255(3.573311e-43), 0(0.000000e+00) ++; EG-NEXT: MOV T0.Y, 0.0, ++; EG-NEXT: MOV * T0.Z, 0.0, ++; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, ++; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) ++entry: ++ %mul = mul i1 %a, %b ++ store i1 %mul, ptr addrspace(1) %out, align 4 ++ ret void ++} ++ ++define amdgpu_kernel void @v_mul_i1(ptr addrspace(1) %out, ptr addrspace(1) %in) { ++; SI-LABEL: v_mul_i1: ++; SI: ; %bb.0: ; %entry ++; SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 ++; SI-NEXT: s_mov_b32 s7, 0xf000 ++; SI-NEXT: s_mov_b32 s6, -1 ++; SI-NEXT: s_mov_b32 s10, s6 ++; SI-NEXT: s_mov_b32 s11, s7 ++; SI-NEXT: s_waitcnt lgkmcnt(0) ++; SI-NEXT: s_mov_b32 s8, s2 ++; SI-NEXT: s_mov_b32 s9, s3 ++; SI-NEXT: buffer_load_ubyte v0, off, s[8:11], 0 ++; SI-NEXT: buffer_load_ubyte v1, off, s[8:11], 0 offset:4 ++; SI-NEXT: s_mov_b32 s4, s0 ++; SI-NEXT: s_mov_b32 s5, s1 ++; SI-NEXT: s_waitcnt vmcnt(0) ++; SI-NEXT: v_mul_lo_u32 v0, v0, v1 ++; SI-NEXT: v_and_b32_e32 v0, 1, v0 ++; SI-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; SI-NEXT: s_endpgm ++; ++; VI-LABEL: v_mul_i1: ++; VI: ; %bb.0: ; %entry ++; VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 ++; VI-NEXT: s_mov_b32 s7, 0xf000 ++; VI-NEXT: s_mov_b32 s6, -1 ++; VI-NEXT: s_mov_b32 s10, s6 ++; VI-NEXT: s_mov_b32 s11, s7 ++; VI-NEXT: s_waitcnt lgkmcnt(0) ++; VI-NEXT: s_mov_b32 s8, s2 ++; VI-NEXT: s_mov_b32 s9, s3 ++; VI-NEXT: buffer_load_ubyte v0, off, s[8:11], 0 ++; VI-NEXT: buffer_load_ubyte v1, off, s[8:11], 0 offset:4 ++; VI-NEXT: s_mov_b32 s4, s0 ++; VI-NEXT: s_mov_b32 s5, s1 ++; VI-NEXT: s_waitcnt vmcnt(0) ++; VI-NEXT: v_mul_lo_u16_e32 v0, v0, v1 ++; VI-NEXT: v_and_b32_e32 v0, 1, v0 ++; VI-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; VI-NEXT: s_endpgm ++; ++; GFX9-LABEL: v_mul_i1: ++; GFX9: ; %bb.0: ; %entry ++; GFX9-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 ++; GFX9-NEXT: s_mov_b32 s7, 0xf000 ++; GFX9-NEXT: s_mov_b32 s6, -1 ++; GFX9-NEXT: s_mov_b32 s10, s6 ++; GFX9-NEXT: s_mov_b32 s11, s7 ++; GFX9-NEXT: s_waitcnt lgkmcnt(0) ++; GFX9-NEXT: s_mov_b32 s8, s2 ++; GFX9-NEXT: s_mov_b32 s9, s3 ++; GFX9-NEXT: buffer_load_ubyte v0, off, s[8:11], 0 ++; GFX9-NEXT: buffer_load_ubyte v1, off, s[8:11], 0 offset:4 ++; GFX9-NEXT: s_mov_b32 s4, s0 ++; GFX9-NEXT: s_mov_b32 s5, s1 ++; GFX9-NEXT: s_waitcnt vmcnt(0) ++; GFX9-NEXT: v_mul_lo_u16_e32 v0, v0, v1 ++; GFX9-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX9-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; GFX9-NEXT: s_endpgm ++; ++; GFX10-LABEL: v_mul_i1: ++; GFX10: ; %bb.0: ; %entry ++; GFX10-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 ++; GFX10-NEXT: s_mov_b32 s6, -1 ++; GFX10-NEXT: s_mov_b32 s7, 0x31016000 ++; GFX10-NEXT: s_mov_b32 s10, s6 ++; GFX10-NEXT: s_mov_b32 s11, s7 ++; GFX10-NEXT: s_waitcnt lgkmcnt(0) ++; GFX10-NEXT: s_mov_b32 s8, s2 ++; GFX10-NEXT: s_mov_b32 s9, s3 ++; GFX10-NEXT: s_clause 0x1 ++; GFX10-NEXT: buffer_load_ubyte v0, off, s[8:11], 0 ++; GFX10-NEXT: buffer_load_ubyte v1, off, s[8:11], 0 offset:4 ++; GFX10-NEXT: s_mov_b32 s4, s0 ++; GFX10-NEXT: s_mov_b32 s5, s1 ++; GFX10-NEXT: s_waitcnt vmcnt(0) ++; GFX10-NEXT: v_mul_lo_u16 v0, v0, v1 ++; GFX10-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX10-NEXT: buffer_store_byte v0, off, s[4:7], 0 ++; GFX10-NEXT: s_endpgm ++; ++; GFX11-LABEL: v_mul_i1: ++; GFX11: ; %bb.0: ; %entry ++; GFX11-NEXT: s_load_b128 s[0:3], s[0:1], 0x24 ++; GFX11-NEXT: s_mov_b32 s6, -1 ++; GFX11-NEXT: s_mov_b32 s7, 0x31016000 ++; GFX11-NEXT: s_mov_b32 s10, s6 ++; GFX11-NEXT: s_mov_b32 s11, s7 ++; GFX11-NEXT: s_waitcnt lgkmcnt(0) ++; GFX11-NEXT: s_mov_b32 s8, s2 ++; GFX11-NEXT: s_mov_b32 s9, s3 ++; GFX11-NEXT: s_clause 0x1 ++; GFX11-NEXT: buffer_load_u8 v0, off, s[8:11], 0 ++; GFX11-NEXT: buffer_load_u8 v1, off, s[8:11], 0 offset:4 ++; GFX11-NEXT: s_mov_b32 s4, s0 ++; GFX11-NEXT: s_mov_b32 s5, s1 ++; GFX11-NEXT: s_waitcnt vmcnt(0) ++; GFX11-NEXT: v_mul_lo_u16 v0, v0, v1 ++; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) ++; GFX11-NEXT: v_and_b32_e32 v0, 1, v0 ++; GFX11-NEXT: buffer_store_b8 v0, off, s[4:7], 0 ++; GFX11-NEXT: s_nop 0 ++; GFX11-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) ++; GFX11-NEXT: s_endpgm ++; ++; EG-LABEL: v_mul_i1: ++; EG: ; %bb.0: ; %entry ++; EG-NEXT: ALU 0, @10, KC0[CB0:0-32], KC1[] ++; EG-NEXT: TEX 1 @6 ++; EG-NEXT: ALU 12, @11, KC0[CB0:0-32], KC1[] ++; EG-NEXT: MEM_RAT MSKOR T0.XW, T1.X ++; EG-NEXT: CF_END ++; EG-NEXT: PAD ++; EG-NEXT: Fetch clause starting at 6: ++; EG-NEXT: VTX_READ_8 T1.X, T0.X, 4, #1 ++; EG-NEXT: VTX_READ_8 T0.X, T0.X, 0, #1 ++; EG-NEXT: ALU clause starting at 10: ++; EG-NEXT: MOV * T0.X, KC0[2].Z, ++; EG-NEXT: ALU clause starting at 11: ++; EG-NEXT: AND_INT T0.W, KC0[2].Y, literal.x, ++; EG-NEXT: MULLO_INT * T0.X, T0.X, T1.X, ++; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) ++; EG-NEXT: AND_INT T1.W, PS, 1, ++; EG-NEXT: LSHL * T0.W, PV.W, literal.x, ++; EG-NEXT: 3(4.203895e-45), 0(0.000000e+00) ++; EG-NEXT: LSHL T0.X, PV.W, PS, ++; EG-NEXT: LSHL * T0.W, literal.x, PS, ++; EG-NEXT: 255(3.573311e-43), 0(0.000000e+00) ++; EG-NEXT: MOV T0.Y, 0.0, ++; EG-NEXT: MOV * T0.Z, 0.0, ++; EG-NEXT: LSHR * T1.X, KC0[2].Y, literal.x, ++; EG-NEXT: 2(2.802597e-45), 0(0.000000e+00) ++entry: ++ %b_ptr = getelementptr i32, ptr addrspace(1) %in, i32 1 ++ %a = load i1, ptr addrspace(1) %in ++ %b = load i1, ptr addrspace(1) %b_ptr ++ %result = mul i1 %a, %b ++ store i1 %result, ptr addrspace(1) %out ++ ret void ++} + + ; A standard 64-bit multiply. The expansion should be around 6 instructions. + ; It would be difficult to match the expansion correctly without writing +@@ -1213,7 +1461,7 @@ define amdgpu_kernel void @v_mul_i64(ptr addrspace(1) %out, ptr addrspace(1) %ap + ; SI-NEXT: v_mul_hi_u32 v4, v2, v0 + ; SI-NEXT: v_mul_lo_u32 v3, v3, v0 + ; SI-NEXT: v_mul_lo_u32 v0, v2, v0 +-; SI-NEXT: v_add_i32_e32 v1, vcc, v4, v1 ++; SI-NEXT: v_add_i32_e32 v1, vcc, v1, v4 + ; SI-NEXT: v_add_i32_e32 v1, vcc, v3, v1 + ; SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 + ; SI-NEXT: s_endpgm +@@ -1367,30 +1615,30 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; SI-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0xd + ; SI-NEXT: s_waitcnt lgkmcnt(0) + ; SI-NEXT: s_cmp_lg_u32 s2, 0 +-; SI-NEXT: s_cbranch_scc0 .LBB11_2 ++; SI-NEXT: s_cbranch_scc0 .LBB13_2 + ; SI-NEXT: ; %bb.1: ; %else + ; SI-NEXT: s_mul_i32 s6, s2, s3 + ; SI-NEXT: s_mov_b64 s[4:5], 0 +-; SI-NEXT: s_branch .LBB11_3 +-; SI-NEXT: .LBB11_2: ++; SI-NEXT: s_branch .LBB13_3 ++; SI-NEXT: .LBB13_2: + ; SI-NEXT: s_mov_b64 s[4:5], -1 + ; SI-NEXT: ; implicit-def: $sgpr6 +-; SI-NEXT: .LBB11_3: ; %Flow ++; SI-NEXT: .LBB13_3: ; %Flow + ; SI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x9 + ; SI-NEXT: s_andn2_b64 vcc, exec, s[4:5] + ; SI-NEXT: s_waitcnt lgkmcnt(0) + ; SI-NEXT: s_mov_b64 vcc, vcc +-; SI-NEXT: s_cbranch_vccnz .LBB11_5 ++; SI-NEXT: s_cbranch_vccnz .LBB13_5 + ; SI-NEXT: ; %bb.4: ; %if + ; SI-NEXT: s_mov_b32 s7, 0xf000 + ; SI-NEXT: s_mov_b32 s6, -1 + ; SI-NEXT: s_mov_b32 s4, s2 + ; SI-NEXT: s_mov_b32 s5, s3 + ; SI-NEXT: buffer_load_dword v0, off, s[4:7], 0 +-; SI-NEXT: s_branch .LBB11_6 +-; SI-NEXT: .LBB11_5: ++; SI-NEXT: s_branch .LBB13_6 ++; SI-NEXT: .LBB13_5: + ; SI-NEXT: v_mov_b32_e32 v0, s6 +-; SI-NEXT: .LBB11_6: ; %endif ++; SI-NEXT: .LBB13_6: ; %endif + ; SI-NEXT: s_mov_b32 s3, 0xf000 + ; SI-NEXT: s_mov_b32 s2, -1 + ; SI-NEXT: s_waitcnt vmcnt(0) +@@ -1402,18 +1650,18 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; VI-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x34 + ; VI-NEXT: s_waitcnt lgkmcnt(0) + ; VI-NEXT: s_cmp_lg_u32 s2, 0 +-; VI-NEXT: s_cbranch_scc0 .LBB11_2 ++; VI-NEXT: s_cbranch_scc0 .LBB13_2 + ; VI-NEXT: ; %bb.1: ; %else + ; VI-NEXT: s_mul_i32 s6, s2, s3 + ; VI-NEXT: s_mov_b64 s[4:5], 0 +-; VI-NEXT: s_branch .LBB11_3 +-; VI-NEXT: .LBB11_2: ++; VI-NEXT: s_branch .LBB13_3 ++; VI-NEXT: .LBB13_2: + ; VI-NEXT: s_mov_b64 s[4:5], -1 + ; VI-NEXT: ; implicit-def: $sgpr6 +-; VI-NEXT: .LBB11_3: ; %Flow ++; VI-NEXT: .LBB13_3: ; %Flow + ; VI-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 + ; VI-NEXT: s_andn2_b64 vcc, exec, s[4:5] +-; VI-NEXT: s_cbranch_vccnz .LBB11_5 ++; VI-NEXT: s_cbranch_vccnz .LBB13_5 + ; VI-NEXT: ; %bb.4: ; %if + ; VI-NEXT: s_mov_b32 s7, 0xf000 + ; VI-NEXT: s_mov_b32 s6, -1 +@@ -1421,10 +1669,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; VI-NEXT: s_mov_b32 s4, s2 + ; VI-NEXT: s_mov_b32 s5, s3 + ; VI-NEXT: buffer_load_dword v0, off, s[4:7], 0 +-; VI-NEXT: s_branch .LBB11_6 +-; VI-NEXT: .LBB11_5: ++; VI-NEXT: s_branch .LBB13_6 ++; VI-NEXT: .LBB13_5: + ; VI-NEXT: v_mov_b32_e32 v0, s6 +-; VI-NEXT: .LBB11_6: ; %endif ++; VI-NEXT: .LBB13_6: ; %endif + ; VI-NEXT: s_waitcnt lgkmcnt(0) + ; VI-NEXT: s_mov_b32 s3, 0xf000 + ; VI-NEXT: s_mov_b32 s2, -1 +@@ -1437,18 +1685,18 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX9-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x34 + ; GFX9-NEXT: s_waitcnt lgkmcnt(0) + ; GFX9-NEXT: s_cmp_lg_u32 s2, 0 +-; GFX9-NEXT: s_cbranch_scc0 .LBB11_2 ++; GFX9-NEXT: s_cbranch_scc0 .LBB13_2 + ; GFX9-NEXT: ; %bb.1: ; %else + ; GFX9-NEXT: s_mul_i32 s6, s2, s3 + ; GFX9-NEXT: s_mov_b64 s[4:5], 0 +-; GFX9-NEXT: s_branch .LBB11_3 +-; GFX9-NEXT: .LBB11_2: ++; GFX9-NEXT: s_branch .LBB13_3 ++; GFX9-NEXT: .LBB13_2: + ; GFX9-NEXT: s_mov_b64 s[4:5], -1 + ; GFX9-NEXT: ; implicit-def: $sgpr6 +-; GFX9-NEXT: .LBB11_3: ; %Flow ++; GFX9-NEXT: .LBB13_3: ; %Flow + ; GFX9-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 + ; GFX9-NEXT: s_andn2_b64 vcc, exec, s[4:5] +-; GFX9-NEXT: s_cbranch_vccnz .LBB11_5 ++; GFX9-NEXT: s_cbranch_vccnz .LBB13_5 + ; GFX9-NEXT: ; %bb.4: ; %if + ; GFX9-NEXT: s_mov_b32 s7, 0xf000 + ; GFX9-NEXT: s_mov_b32 s6, -1 +@@ -1456,10 +1704,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX9-NEXT: s_mov_b32 s4, s2 + ; GFX9-NEXT: s_mov_b32 s5, s3 + ; GFX9-NEXT: buffer_load_dword v0, off, s[4:7], 0 +-; GFX9-NEXT: s_branch .LBB11_6 +-; GFX9-NEXT: .LBB11_5: ++; GFX9-NEXT: s_branch .LBB13_6 ++; GFX9-NEXT: .LBB13_5: + ; GFX9-NEXT: v_mov_b32_e32 v0, s6 +-; GFX9-NEXT: .LBB11_6: ; %endif ++; GFX9-NEXT: .LBB13_6: ; %endif + ; GFX9-NEXT: s_waitcnt lgkmcnt(0) + ; GFX9-NEXT: s_mov_b32 s3, 0xf000 + ; GFX9-NEXT: s_mov_b32 s2, -1 +@@ -1473,17 +1721,17 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX10-NEXT: s_mov_b32 s4, 0 + ; GFX10-NEXT: s_waitcnt lgkmcnt(0) + ; GFX10-NEXT: s_cmp_lg_u32 s2, 0 +-; GFX10-NEXT: s_cbranch_scc0 .LBB11_2 ++; GFX10-NEXT: s_cbranch_scc0 .LBB13_2 + ; GFX10-NEXT: ; %bb.1: ; %else + ; GFX10-NEXT: s_mul_i32 s5, s2, s3 +-; GFX10-NEXT: s_branch .LBB11_3 +-; GFX10-NEXT: .LBB11_2: ++; GFX10-NEXT: s_branch .LBB13_3 ++; GFX10-NEXT: .LBB13_2: + ; GFX10-NEXT: s_mov_b32 s4, -1 + ; GFX10-NEXT: ; implicit-def: $sgpr5 + ; GFX10-NEXT: .LBB11_3: ; %Flow + ; GFX10-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x24 + ; GFX10-NEXT: s_andn2_b32 vcc_lo, exec_lo, s4 +-; GFX10-NEXT: s_cbranch_vccnz .LBB11_5 ++; GFX10-NEXT: s_cbranch_vccnz .LBB13_5 + ; GFX10-NEXT: ; %bb.4: ; %if + ; GFX10-NEXT: s_mov_b32 s7, 0x31016000 + ; GFX10-NEXT: s_mov_b32 s6, -1 +@@ -1491,10 +1739,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX10-NEXT: s_mov_b32 s4, s2 + ; GFX10-NEXT: s_mov_b32 s5, s3 + ; GFX10-NEXT: buffer_load_dword v0, off, s[4:7], 0 +-; GFX10-NEXT: s_branch .LBB11_6 +-; GFX10-NEXT: .LBB11_5: ++; GFX10-NEXT: s_branch .LBB13_6 ++; GFX10-NEXT: .LBB13_5: + ; GFX10-NEXT: v_mov_b32_e32 v0, s5 +-; GFX10-NEXT: .LBB11_6: ; %endif ++; GFX10-NEXT: .LBB13_6: ; %endif + ; GFX10-NEXT: s_waitcnt lgkmcnt(0) + ; GFX10-NEXT: s_mov_b32 s3, 0x31016000 + ; GFX10-NEXT: s_mov_b32 s2, -1 +@@ -1508,17 +1756,17 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX11-NEXT: s_mov_b32 s4, 0 + ; GFX11-NEXT: s_waitcnt lgkmcnt(0) + ; GFX11-NEXT: s_cmp_lg_u32 s2, 0 +-; GFX11-NEXT: s_cbranch_scc0 .LBB11_2 ++; GFX11-NEXT: s_cbranch_scc0 .LBB13_2 + ; GFX11-NEXT: ; %bb.1: ; %else + ; GFX11-NEXT: s_mul_i32 s5, s2, s3 +-; GFX11-NEXT: s_branch .LBB11_3 +-; GFX11-NEXT: .LBB11_2: ++; GFX11-NEXT: s_branch .LBB13_3 ++; GFX11-NEXT: .LBB13_2: + ; GFX11-NEXT: s_mov_b32 s4, -1 + ; GFX11-NEXT: ; implicit-def: $sgpr5 +-; GFX11-NEXT: .LBB11_3: ; %Flow ++; GFX11-NEXT: .LBB13_3: ; %Flow + ; GFX11-NEXT: s_load_b128 s[0:3], s[0:1], 0x24 + ; GFX11-NEXT: s_and_not1_b32 vcc_lo, exec_lo, s4 +-; GFX11-NEXT: s_cbranch_vccnz .LBB11_5 ++; GFX11-NEXT: s_cbranch_vccnz .LBB13_5 + ; GFX11-NEXT: ; %bb.4: ; %if + ; GFX11-NEXT: s_mov_b32 s7, 0x31016000 + ; GFX11-NEXT: s_mov_b32 s6, -1 +@@ -1526,10 +1774,10 @@ define amdgpu_kernel void @mul32_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX11-NEXT: s_mov_b32 s4, s2 + ; GFX11-NEXT: s_mov_b32 s5, s3 + ; GFX11-NEXT: buffer_load_b32 v0, off, s[4:7], 0 +-; GFX11-NEXT: s_branch .LBB11_6 +-; GFX11-NEXT: .LBB11_5: ++; GFX11-NEXT: s_branch .LBB13_6 ++; GFX11-NEXT: .LBB13_5: + ; GFX11-NEXT: v_mov_b32_e32 v0, s5 +-; GFX11-NEXT: .LBB11_6: ; %endif ++; GFX11-NEXT: .LBB13_6: ; %endif + ; GFX11-NEXT: s_waitcnt lgkmcnt(0) + ; GFX11-NEXT: s_mov_b32 s3, 0x31016000 + ; GFX11-NEXT: s_mov_b32 s2, -1 +@@ -1601,7 +1849,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; SI-NEXT: s_waitcnt lgkmcnt(0) + ; SI-NEXT: v_cmp_ne_u64_e64 s[10:11], s[4:5], 0 + ; SI-NEXT: s_and_b64 vcc, exec, s[10:11] +-; SI-NEXT: s_cbranch_vccz .LBB12_4 ++; SI-NEXT: s_cbranch_vccz .LBB14_4 + ; SI-NEXT: ; %bb.1: ; %else + ; SI-NEXT: v_mov_b32_e32 v0, s6 + ; SI-NEXT: v_mul_hi_u32 v0, s4, v0 +@@ -1612,22 +1860,22 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; SI-NEXT: v_add_i32_e32 v1, vcc, s5, v0 + ; SI-NEXT: v_mov_b32_e32 v0, s4 + ; SI-NEXT: s_andn2_b64 vcc, exec, s[8:9] +-; SI-NEXT: s_cbranch_vccnz .LBB12_3 +-; SI-NEXT: .LBB12_2: ; %if ++; SI-NEXT: s_cbranch_vccnz .LBB14_3 ++; SI-NEXT: .LBB14_2: ; %if + ; SI-NEXT: s_mov_b32 s7, 0xf000 + ; SI-NEXT: s_mov_b32 s6, -1 + ; SI-NEXT: s_mov_b32 s4, s2 + ; SI-NEXT: s_mov_b32 s5, s3 + ; SI-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0 +-; SI-NEXT: .LBB12_3: ; %endif ++; SI-NEXT: .LBB14_3: ; %endif + ; SI-NEXT: s_mov_b32 s3, 0xf000 + ; SI-NEXT: s_mov_b32 s2, -1 + ; SI-NEXT: s_waitcnt vmcnt(0) + ; SI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 + ; SI-NEXT: s_endpgm +-; SI-NEXT: .LBB12_4: ++; SI-NEXT: .LBB14_4: + ; SI-NEXT: ; implicit-def: $vgpr0_vgpr1 +-; SI-NEXT: s_branch .LBB12_2 ++; SI-NEXT: s_branch .LBB14_2 + ; + ; VI-LABEL: mul64_in_branch: + ; VI: ; %bb.0: ; %entry +@@ -1635,7 +1883,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; VI-NEXT: s_mov_b64 s[8:9], 0 + ; VI-NEXT: s_waitcnt lgkmcnt(0) + ; VI-NEXT: s_cmp_lg_u64 s[4:5], 0 +-; VI-NEXT: s_cbranch_scc0 .LBB12_4 ++; VI-NEXT: s_cbranch_scc0 .LBB14_4 + ; VI-NEXT: ; %bb.1: ; %else + ; VI-NEXT: v_mov_b32_e32 v0, s6 + ; VI-NEXT: v_mad_u64_u32 v[0:1], s[10:11], s4, v0, 0 +@@ -1644,22 +1892,22 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; VI-NEXT: s_mul_i32 s4, s5, s6 + ; VI-NEXT: v_add_u32_e32 v1, vcc, s4, v1 + ; VI-NEXT: s_andn2_b64 vcc, exec, s[8:9] +-; VI-NEXT: s_cbranch_vccnz .LBB12_3 +-; VI-NEXT: .LBB12_2: ; %if ++; VI-NEXT: s_cbranch_vccnz .LBB14_3 ++; VI-NEXT: .LBB14_2: ; %if + ; VI-NEXT: s_mov_b32 s7, 0xf000 + ; VI-NEXT: s_mov_b32 s6, -1 + ; VI-NEXT: s_mov_b32 s4, s2 + ; VI-NEXT: s_mov_b32 s5, s3 + ; VI-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0 +-; VI-NEXT: .LBB12_3: ; %endif ++; VI-NEXT: .LBB14_3: ; %endif + ; VI-NEXT: s_mov_b32 s3, 0xf000 + ; VI-NEXT: s_mov_b32 s2, -1 + ; VI-NEXT: s_waitcnt vmcnt(0) + ; VI-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 0 + ; VI-NEXT: s_endpgm +-; VI-NEXT: .LBB12_4: ++; VI-NEXT: .LBB14_4: + ; VI-NEXT: ; implicit-def: $vgpr0_vgpr1 +-; VI-NEXT: s_branch .LBB12_2 ++; VI-NEXT: s_branch .LBB14_2 + ; + ; GFX9-LABEL: mul64_in_branch: + ; GFX9: ; %bb.0: ; %entry +@@ -1667,7 +1915,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX9-NEXT: s_mov_b64 s[8:9], 0 + ; GFX9-NEXT: s_waitcnt lgkmcnt(0) + ; GFX9-NEXT: s_cmp_lg_u64 s[4:5], 0 +-; GFX9-NEXT: s_cbranch_scc0 .LBB12_3 ++; GFX9-NEXT: s_cbranch_scc0 .LBB14_3 + ; GFX9-NEXT: ; %bb.1: ; %else + ; GFX9-NEXT: s_mul_i32 s7, s4, s7 + ; GFX9-NEXT: s_mul_hi_u32 s10, s4, s6 +@@ -1676,21 +1924,21 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX9-NEXT: s_add_i32 s5, s7, s5 + ; GFX9-NEXT: s_mul_i32 s4, s4, s6 + ; GFX9-NEXT: s_andn2_b64 vcc, exec, s[8:9] +-; GFX9-NEXT: s_cbranch_vccnz .LBB12_4 +-; GFX9-NEXT: .LBB12_2: ; %if ++; GFX9-NEXT: s_cbranch_vccnz .LBB14_4 ++; GFX9-NEXT: .LBB14_2: ; %if + ; GFX9-NEXT: s_mov_b32 s7, 0xf000 + ; GFX9-NEXT: s_mov_b32 s6, -1 + ; GFX9-NEXT: s_mov_b32 s4, s2 + ; GFX9-NEXT: s_mov_b32 s5, s3 + ; GFX9-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0 +-; GFX9-NEXT: s_branch .LBB12_5 +-; GFX9-NEXT: .LBB12_3: ++; GFX9-NEXT: s_branch .LBB14_5 ++; GFX9-NEXT: .LBB14_3: + ; GFX9-NEXT: ; implicit-def: $sgpr4_sgpr5 +-; GFX9-NEXT: s_branch .LBB12_2 +-; GFX9-NEXT: .LBB12_4: ++; GFX9-NEXT: s_branch .LBB14_2 ++; GFX9-NEXT: .LBB14_4: + ; GFX9-NEXT: v_mov_b32_e32 v0, s4 + ; GFX9-NEXT: v_mov_b32_e32 v1, s5 +-; GFX9-NEXT: .LBB12_5: ; %endif ++; GFX9-NEXT: .LBB14_5: ; %endif + ; GFX9-NEXT: s_mov_b32 s3, 0xf000 + ; GFX9-NEXT: s_mov_b32 s2, -1 + ; GFX9-NEXT: s_waitcnt vmcnt(0) +@@ -1702,7 +1950,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX10-NEXT: s_load_dwordx8 s[0:7], s[0:1], 0x24 + ; GFX10-NEXT: s_waitcnt lgkmcnt(0) + ; GFX10-NEXT: s_cmp_lg_u64 s[4:5], 0 +-; GFX10-NEXT: s_cbranch_scc0 .LBB12_3 ++; GFX10-NEXT: s_cbranch_scc0 .LBB14_3 + ; GFX10-NEXT: ; %bb.1: ; %else + ; GFX10-NEXT: s_mul_i32 s7, s4, s7 + ; GFX10-NEXT: s_mul_hi_u32 s8, s4, s6 +@@ -1711,22 +1959,22 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX10-NEXT: s_mul_i32 s4, s4, s6 + ; GFX10-NEXT: s_add_i32 s5, s7, s5 + ; GFX10-NEXT: s_mov_b32 s6, 0 +-; GFX10-NEXT: s_cbranch_execnz .LBB12_4 +-; GFX10-NEXT: .LBB12_2: ; %if ++; GFX10-NEXT: s_cbranch_execnz .LBB14_4 ++; GFX10-NEXT: .LBB14_2: ; %if + ; GFX10-NEXT: s_mov_b32 s7, 0x31016000 + ; GFX10-NEXT: s_mov_b32 s6, -1 + ; GFX10-NEXT: s_mov_b32 s4, s2 + ; GFX10-NEXT: s_mov_b32 s5, s3 + ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], off, s[4:7], 0 +-; GFX10-NEXT: s_branch .LBB12_5 +-; GFX10-NEXT: .LBB12_3: ++; GFX10-NEXT: s_branch .LBB14_5 ++; GFX10-NEXT: .LBB14_3: + ; GFX10-NEXT: s_mov_b32 s6, -1 + ; GFX10-NEXT: ; implicit-def: $sgpr4_sgpr5 +-; GFX10-NEXT: s_branch .LBB12_2 +-; GFX10-NEXT: .LBB12_4: ++; GFX10-NEXT: s_branch .LBB14_2 ++; GFX10-NEXT: .LBB14_4: + ; GFX10-NEXT: v_mov_b32_e32 v0, s4 + ; GFX10-NEXT: v_mov_b32_e32 v1, s5 +-; GFX10-NEXT: .LBB12_5: ; %endif ++; GFX10-NEXT: .LBB14_5: ; %endif + ; GFX10-NEXT: s_mov_b32 s3, 0x31016000 + ; GFX10-NEXT: s_mov_b32 s2, -1 + ; GFX10-NEXT: s_waitcnt vmcnt(0) +@@ -1738,7 +1986,7 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX11-NEXT: s_load_b256 s[0:7], s[0:1], 0x24 + ; GFX11-NEXT: s_waitcnt lgkmcnt(0) + ; GFX11-NEXT: s_cmp_lg_u64 s[4:5], 0 +-; GFX11-NEXT: s_cbranch_scc0 .LBB12_3 ++; GFX11-NEXT: s_cbranch_scc0 .LBB14_3 + ; GFX11-NEXT: ; %bb.1: ; %else + ; GFX11-NEXT: s_mul_i32 s7, s4, s7 + ; GFX11-NEXT: s_mul_hi_u32 s8, s4, s6 +@@ -1747,21 +1995,21 @@ define amdgpu_kernel void @mul64_in_branch(ptr addrspace(1) %out, ptr addrspace( + ; GFX11-NEXT: s_mul_i32 s4, s4, s6 + ; GFX11-NEXT: s_add_i32 s5, s7, s5 + ; GFX11-NEXT: s_mov_b32 s6, 0 +-; GFX11-NEXT: s_cbranch_execnz .LBB12_4 +-; GFX11-NEXT: .LBB12_2: ; %if ++; GFX11-NEXT: s_cbranch_execnz .LBB14_4 ++; GFX11-NEXT: .LBB14_2: ; %if + ; GFX11-NEXT: s_mov_b32 s7, 0x31016000 + ; GFX11-NEXT: s_mov_b32 s6, -1 + ; GFX11-NEXT: s_mov_b32 s4, s2 + ; GFX11-NEXT: s_mov_b32 s5, s3 + ; GFX11-NEXT: buffer_load_b64 v[0:1], off, s[4:7], 0 +-; GFX11-NEXT: s_branch .LBB12_5 +-; GFX11-NEXT: .LBB12_3: ++; GFX11-NEXT: s_branch .LBB14_5 ++; GFX11-NEXT: .LBB14_3: + ; GFX11-NEXT: s_mov_b32 s6, -1 + ; GFX11-NEXT: ; implicit-def: $sgpr4_sgpr5 +-; GFX11-NEXT: s_branch .LBB12_2 +-; GFX11-NEXT: .LBB12_4: ++; GFX11-NEXT: s_branch .LBB14_2 ++; GFX11-NEXT: .LBB14_4: + ; GFX11-NEXT: v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5 +-; GFX11-NEXT: .LBB12_5: ; %endif ++; GFX11-NEXT: .LBB14_5: ; %endif + ; GFX11-NEXT: s_mov_b32 s3, 0x31016000 + ; GFX11-NEXT: s_mov_b32 s2, -1 + ; GFX11-NEXT: s_waitcnt vmcnt(0) +-- +2.31.1 + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch new file mode 100644 index 000000000..0107a2b17 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch @@ -0,0 +1,13 @@ +diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp +index ea628647d6ac..72a6b2bdfdc8 100644 +--- a/clang/lib/Driver/ToolChains/Linux.cpp ++++ b/clang/lib/Driver/ToolChains/Linux.cpp +@@ -985,7 +985,7 @@ void Linux::AddHIPRuntimeLibArgs(const ArgList &Args, + Args.MakeArgString(StringRef("-L") + RocmInstallation->getLibPath())); + + if (Args.hasFlag(options::OPT_frtlib_add_rpath, +- options::OPT_fno_rtlib_add_rpath, false)) { ++ options::OPT_fno_rtlib_add_rpath, true)) { + SmallString<0> p = RocmInstallation->getLibPath(); + llvm::sys::path::remove_dots(p, true); + CmdArgs.append({"-rpath", Args.MakeArgString(p)}); diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml new file mode 100644 index 000000000..5fa0fb526 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml @@ -0,0 +1,103 @@ +paths: +- layout: + - executables: + - "bin/amdclang" + - "bin/amdclang++" + script: | + echo "AMD clang version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-5.7.1 23382 f3e174a1d286158c06e4cc8276366b1d4bc0c914)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-5.7.1/llvm/bin" + echo "Configuration file: /opt/rocm-5.7.1/llvm/bin/clang.cfg" + - executables: + - "bin/amdflang" + script: | + echo "AMD flang-classic version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-5.7.1 23382 f3e174a1d286158c06e4cc8276366b1d4bc0c914)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-5.7.1/llvm/bin" + platforms: [linux] + results: + - spec: llvm-amdgpu@5.7.1 + extra_attributes: + compilers: + c: ".*/bin/amdclang" + cxx: ".*/bin/amdclang[+][+]" + fortran: ".*/bin/amdflang" + +- layout: + - executables: + - "bin/amdclang" + - "bin/amdclang++" + script: | + echo "AMD clang version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-5.7.1 23382 f3e174a1d286158c06e4cc8276366b1d4bc0c914)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-5.7.1/llvm/bin" + echo "Configuration file: /opt/rocm-5.7.1/llvm/bin/clang.cfg" + platforms: [linux] + results: + - spec: llvm-amdgpu@5.7.1 + extra_attributes: + compilers: + c: ".*/bin/amdclang" + cxx: ".*/bin/amdclang[+][+]" + +- layout: + - executables: + - "bin/amdclang" + - "bin/amdclang++" + script: | + echo "AMD clang version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-5.7.1 23382 f3e174a1d286158c06e4cc8276366b1d4bc0c914)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-5.7.1/llvm/bin" + echo "Configuration file: /opt/rocm-5.7.1/llvm/bin/clang.cfg" + - executables: + - "bin/amdflang" + script: | + echo "AMD flang-classic version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-5.7.1 23382 f3e174a1d286158c06e4cc8276366b1d4bc0c914)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-5.7.1/llvm/bin" + - executables: + - "bin/amdclang-6" + - "bin/amdclang++-6" + script: | + echo "AMD clang version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-6.0.2 24012 af27734ed982b52a9f1be0f035ac91726fc697e4)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-6.0.2/llvm/bin" + echo "Configuration file: /opt/rocm-6.0.2/llvm/bin/clang.cfg" + - executables: + - "bin/amdflang-6" + script: | + echo "AMD flang-classic version 17.0.0 (https://github.com/RadeonOpenCompute/llvm-project roc-6.0.2 24012 af27734ed982b52a9f1be0f035ac91726fc697e4)" + echo "Target: x86_64-unknown-linux-gnu" + echo "Thread model: posix" + echo "InstalledDir: /opt/rocm-6.0.2/llvm/bin" + platforms: [linux] + results: + - spec: llvm-amdgpu@6.0.2 + extra_attributes: + compilers: + c: ".*/bin/amdclang-6$" + cxx: ".*/bin/amdclang[+][+]-6$" + fortran: ".*/bin/amdflang-6$" + - spec: llvm-amdgpu@5.7.1 + extra_attributes: + compilers: + c: ".*/bin/amdclang" + cxx: ".*/bin/amdclang[+][+]" + fortran: ".*/bin/amdflang" +- layout: # does not detect upstream clang + - executables: + - "bin/clang" + - "bin/clang++" + script: | + echo "clang version 8.0.0 (tags/RELEASE_800/final" + echo "Target: x86_64-unknown-linux-gnu\n" + echo "Thread model: posix\n" + echo "InstalledDir: /usr/bin" + platforms: [linux] + results: [] diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py new file mode 100644 index 000000000..195953540 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py @@ -0,0 +1,389 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os +import re +import shutil + +from spack_repo.builtin.build_systems.cmake import CMakePackage, generator +from spack_repo.builtin.build_systems.compiler import CompilerPackage +from spack_repo.builtin.packages.llvm.package import LlvmDetection + +from spack.package import * + + +class LlvmAmdgpu(CMakePackage, LlvmDetection, CompilerPackage): + """Toolkit for the construction of highly optimized compilers, + optimizers, and run-time environments.""" + + homepage = "https://github.com/ROCm/llvm-project" + git = "https://github.com/ROCm/llvm-project.git" + url = "https://github.com/ROCm/llvm-project/archive/rocm-6.4.3.tar.gz" + tags = ["rocm", "compiler"] + executables = [ + r"amdclang", + r"amdclang\+\+", + r"amdflang", + r"clang.*", + r"flang.*", + "llvm-.*", + "amdldd", + ] + + compiler_wrapper_link_paths = { + "c": "rocmcc/amdclang", + "cxx": "rocmcc/amdclang++", + "fortran": "rocmcc/amdflang", + } + + stdcxx_libs = ("-lstdc++",) + + generator("ninja") + + maintainers("srekolam", "renjithravindrankannath", "haampie", "afzpatel") + + license("Apache-2.0") + version("7.1.0", sha256="87f5532b8b653bd18541cdf6e59923cbd340b300d8ec5046d3e4288d9e5195c0") + version("7.0.2", sha256="fd612fa750bebd0c3be0ea642b2cae8ff5c7e00a2280b22b9ea16ee86a11d763") + version("7.0.0", sha256="3d479a2aa615b6bb35cd3521122fbff34188dc0cc52d8b0acda59f9f55198211") + version("6.4.3", sha256="7a484b621d568eef000ee8c4d2d46d589e5682b950f1f410ce7215031f1f3ad7") + version("6.4.2", sha256="9f42cb73d90bd4561686c0366f60f6e58cfd32ff24b094c69e8259fb5d177457") + version("6.4.1", sha256="460ad28677092b9eb86ffdc49bcb4d01035e32b4f05161d85f90c9fa80239f50") + version("6.4.0", sha256="dca1c145a23f05229d5d646241f9d1d3c5dbf1d745b338ae020eabe33beb965c") + version("6.3.3", sha256="4df9aba24e574edf23844c0d2d9dda112811db5c2b08c9428604a21b819eb23d") + version("6.3.2", sha256="1f52e45660ea508d3fe717a9903fe27020cee96de95a3541434838e0193a4827") + version("6.3.1", sha256="e9c2481cccacdea72c1f8d3970956c447cec47e18dfb9712cbbba76a2820552c") + version("6.3.0", sha256="79580508b039ca6c50dfdfd7c4f6fbcf489fe1931037ca51324818851eea0c1c") + version("6.2.4", sha256="7af782bf5835fcd0928047dbf558f5000e7f0207ca39cf04570969343e789528") + version("6.2.1", sha256="4840f109d8f267c28597e936c869c358de56b8ad6c3ed4881387cf531846e5a7") + version("6.2.0", sha256="12ce17dc920ec6dac0c5484159b3eec00276e4a5b301ab1250488db3b2852200") + version("6.1.2", sha256="300e9d6a137dcd91b18d5809a316fddb615e0e7f982dc7ef1bb56876dff6e097") + version("6.1.1", sha256="f1a67efb49f76a9b262e9735d3f75ad21e3bd6a05338c9b15c01e6c625c4460d") + version("6.1.0", sha256="6bd9912441de6caf6b26d1323e1c899ecd14ff2431874a2f5883d3bc5212db34") + version("6.0.2", sha256="7d35acc84de1adee65406f92a369a30364703f84279241c444cd93a48c7eeb76") + version("6.0.0", sha256="c673708d413d60ca8606ee75c77e9871b6953c59029c987b92f2f6e85f683626") + version("5.7.1", sha256="6b54c422e45ad19c9bf5ab090ec21753e7f7d854ca78132c30eb146657b168eb") + version("5.7.0", sha256="4abdf00b297a77c5886cedb37e63acda2ba11cb9f4c0a64e133b05800aadfcf0") + + provides("c", "cxx") + provides("fortran", when="@7.0:") + + variant( + "rocm-device-libs", + default=True, + description=( + "Build ROCm device libs as external LLVM project instead of a " + "standalone spack package." + ), + ) + variant( + "llvm_dylib", + default=False, + description="Build LLVM shared library, containing all " + "components in a single shared library", + ) + variant( + "link_llvm_dylib", + default=False, + description="Link LLVM tools against the LLVM shared library", + ) + + provides("libllvm@17", when="@5.7:6.1") + provides("libllvm@18", when="@6.2:6.3") + provides("libllvm@19", when="@6.4") + provides("libllvm@20", when="@7.0") + + depends_on("c", type="build") # generated + depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") # generated + + depends_on("cmake@3.13.4:", type="build") + depends_on("python@3.12.12", type="build", when="@7.0:") + depends_on("z3", type="link") + depends_on("zlib-api", type="link") + depends_on("ncurses+termlib", type="link") + depends_on("libxml2", type="link") + depends_on("pkgconfig", type="build") + + depends_on("numactl", when="@7.1:") + depends_on("libdrm", when="@7.1:") + depends_on("libelf", when="@7.1:") + depends_on("xxd", when="@7.1:") + + for ver in ["7.1.0"]: + depends_on(f"rocm-core@{ver}", when=f"@{ver}") + + # This flavour of LLVM doesn't work on MacOS, so we should ensure that it + # isn't used to satisfy any of the libllvm dependencies on the Darwin + # platform. + conflicts("platform=darwin") + + patch("0001-update-HIP_PATH-deduction-for-5.7.0.patch", when="@:6.0") + + # Below patch is to set the flag -mcode-object-version=none until + # the below fix is available in device-libs release code. + # https://github.com/ROCm/ROCm-Device-Libs/commit/f0356159dbdc93ea9e545f9b61a7842f9c881fdf + patch("patch-llvm-5.5.0.patch", when="@5.7 +rocm-device-libs") + + # i1 muls can sometimes happen after SCEV. + # They resulted in ISel failures because we were missing the patterns for them. + # This fix is targeting 6.1 rocm release. + # Need patch until https://github.com/llvm/llvm-project/pull/67291 is merged. + patch("001-Add-i1-mul-patterns-5.7.patch", when="@5.7") + + # fixes the libamdhip64.so not found in some ROCm math lib tests + patch( + "https://github.com/ROCm/llvm-project/commit/444d1d12bbc0269fed5451fb1a9110a049679ca5.patch?full_index=1", + sha256="b4774ca19b030890d7b276d12c446400ccf8bc3aa724c7f2e9a73531a7400d69", + when="@6", + ) + patch("002-Add-rpath-to-hiprt.patch", when="@7.0:") + + # Fix for https://github.com/llvm/llvm-project/issues/78530 + # Patch from https://github.com/llvm/llvm-project/pull/80071 + patch( + "https://github.com/ROCm/llvm-project/commit/c651b2b0d9d1393fb5191ac3acfe96e5ecc94bbc.patch?full_index=1", + sha256="eaf700a5b51d53324a93e5c951bc08b6311ce2053c44c1edfff5119f472d8080", + when="@:6.2", + ) + + conflicts("^cmake@3.19.0") + + # https://github.com/spack/spack/issues/45746 + conflicts("^ninja@1.12:", when="@:6.0") + + root_cmakelists_dir = "llvm" + install_targets = ["clang-tidy", "install"] + + # Add device libs sources so they can be an external LLVM project + for d_version, d_shasum in [ + ("6.0.2", "c6d88b9b46e39d5d21bd5a0c1eba887ec473a370b1ed0cebd1d2e910eedc5837"), + ("6.0.0", "198df4550d4560537ba60ac7af9bde31d59779c8ec5d6309627f77a43ab6ef6f"), + ("5.7.1", "703de8403c0bd0d80f37c970a698f10f148daf144d34f982e4484d04f7c7bbef"), + ("5.7.0", "0f8780b9098573f1c456bdc84358de924dcf00604330770a383983e1775bf61e"), + ]: + resource( + name="rocm-device-libs", + placement="rocm-device-libs", + url=f"https://github.com/ROCm/ROCm-Device-Libs/archive/rocm-{d_version}.tar.gz", + sha256=d_shasum, + when=f"@{d_version} +rocm-device-libs", + ) + + for d_version, d_shasum in [ + ("7.1.0", "383fa8e1776c3ee527cdddc9f9ac6f7134c3fcd8758eae9be8bd3a8b7fdca9b1"), + ("7.0.2", "9c2020f7a42d60fe9775865ab58464078007926a3b01f1ca8128557c89e7a566"), + ("7.0.0", "9ea2cbcf343f643ede6e16d82fbd0303771e1978759b2e546d0efc0df3263e4c"), + ("6.4.3", "3b23bed04cbed72304d31d69901eb76afa2099c7ac37f055348dfcda2d25e41a"), + ("6.4.2", "8ad5dbf7cb0f728b8e515f46a41db24ed3b99ca894ccdd9f4d9bac969e9e35bb"), + ("6.4.1", "f72d100a46a2dd9f4c870cef156604777f1bdb1841df039d14bf37b19814b9da"), + ("6.4.0", "ff740e8c8f2229c6dc47577363f707b1a44ea4254f8ad74f8f0a669998829535"), + ("6.3.3", "aa2e30d3d68707d6df4840e954bb08cc13cd312cec1a98a64d97adbe07262f50"), + ("6.3.2", "aaecaa7206b6fa1d5d7b8f7c1f7c5057a944327ba4779448980d7e7c7122b074"), + ("6.3.1", "547ceeeda9a41cdffa21e57809dc5834f94938a0a2809c283aebcbcf01901df0"), + ("6.3.0", "8fd6bcd6a5afd0ae5a59e33b786a525f575183d38c34049c2dab6b9270a1ca3b"), + ("6.2.4", "b7aa0055855398d1228c39a6f4feb7d7be921af4f43d82855faf0b531394bb9b"), + ("6.2.1", "dbe477b323df636f5e3221471780da156c938ec00dda4b50639aa8d7fb9248f4"), + ("6.2.0", "c98090041fa56ca4a260709876e2666f85ab7464db9454b177a189e1f52e0b1a"), + ("6.1.2", "6eb7a02e5f1e5e3499206b9e74c9ccdd644abaafa2609dea0993124637617866"), + ("6.1.1", "72841f112f953c16619938273370eb8727ddf6c2e00312856c9fca54db583b99"), + ("6.1.0", "50386ebcb7ff24449afa2a10c76a059597464f877225c582ba3e097632a43f9c"), + ("6.0.2", "e7ff4d7ac35a2dd8aad1cb40b96511a77a9c23fe4d1607902328e53728e05c28"), + ("6.0.0", "99e8fa1af52d0bf382f28468e1a345af1ff3452c35914a6a7b5eeaf69fc568db"), + ("5.7.1", "655e9bfef4b0b6ad3f9b89c934dc0a8377273bb0bccbda6c399ac5d5d2c1c04c"), + ("5.7.0", "2c56ec5c78a36f2b847afd4632cb25dbf6ecc58661eb2ae038c2552342e6ce23"), + ]: + resource( + name="hsa-runtime", + placement="hsa-runtime", + url=f"https://github.com/ROCm/ROCR-Runtime/archive/rocm-{d_version}.tar.gz", + sha256=d_shasum, + when=f"@{d_version}", + ) + + for d_version, d_shasum in [ + ("6.0.2", "737b110d9402509db200ee413fb139a78369cf517453395b96bda52d0aa362b9"), + ("6.0.0", "04353d27a512642a5e5339532a39d0aabe44e0964985de37b150a2550385800a"), + ("5.7.1", "3b9433b4a0527167c3e9dfc37a3c54e0550744b8d4a8e1be298c8d4bcedfee7c"), + ("5.7.0", "e234bcb93d602377cfaaacb59aeac5796edcd842a618162867b7e670c3a2c42c"), + ]: + resource( + name="comgr", + placement="comgr", + url=f"https://github.com/ROCm/ROCm-CompilerSupport/archive/rocm-{d_version}.tar.gz", + sha256=d_shasum, + when=f"@{d_version}", + ) + + def _standard_flag(self, *, language, standard): + flags = { + "cxx": { + "11": "-std=c++11", + "14": "-std=c++14", + "17": "-std=c++17", + "20": "-std=c++20", + }, + "c": {"99": "-std=c99", "11": "-std=c1x"}, + } + return flags[language][standard] + + def cmake_args(self): + llvm_projects = ["clang", "lld", "clang-tools-extra", "compiler-rt"] + llvm_runtimes = ["libcxx", "libcxxabi"] + args = [ + self.define("LLVM_ENABLE_Z3_SOLVER", "OFF"), + self.define("LLLVM_ENABLE_ZLIB", "ON"), + self.define("CLANG_DEFAULT_LINKER", "lld"), + self.define("LIBCXX_ENABLE_SHARED", "OFF"), + self.define("LIBCXX_ENABLE_STATIC", "ON"), + self.define("LIBCXX_INSTALL_LIBRARY", "OFF"), + self.define("LIBCXX_INSTALL_HEADERS", "OFF"), + self.define("LIBCXXABI_ENABLE_SHARED", "OFF"), + self.define("LIBCXXABI_ENABLE_STATIC", "ON"), + self.define("LIBCXXABI_INSTALL_STATIC_LIBRARY", "OFF"), + self.define("LLVM_ENABLE_RTTI", "ON"), + self.define("LLVM_AMDGPU_ALLOW_NPI_TARGETS", "ON"), + self.define("PACKAGE_VENDOR", "AMD"), + self.define("CLANG_ENABLE_AMDCLANG", "ON"), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + self.define("CLANG_DEFAULT_RTLIB", "compiler-rt"), + self.define("CLANG_DEFAULT_UNWINDLIB", "libgcc"), + ] + + if self.spec.target.family == "aarch64": + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;AArch64")) + else: + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;X86")) + + # Enable rocm-device-libs as a external project + if self.spec.satisfies("+rocm-device-libs"): + if self.spec.satisfies("@:6.0"): + dir = os.path.join(self.stage.source_path, "rocm-device-libs") + elif self.spec.satisfies("@6.1:"): + dir = os.path.join(self.stage.source_path, "amd/device-libs") + + if self.spec.satisfies("@:7.0"): + args.extend( + [ + self.define("LLVM_EXTERNAL_PROJECTS", "device-libs"), + self.define("LLVM_EXTERNAL_DEVICE_LIBS_SOURCE_DIR", dir), + ] + ) + else: + args.append(self.define("ROCM_DEVICE_LIBS_INSTALL_PREFIX_PATH", self.prefix)) + args.append( + self.define("ROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC", "lib/clang/20/lib/amdgcn") + ) + + if self.spec.satisfies("+llvm_dylib"): + args.append(self.define("LLVM_BUILD_LLVM_DYLIB", True)) + + if self.spec.satisfies("+link_llvm_dylib"): + args.append(self.define("LLVM_LINK_LLVM_DYLIB", True)) + args.append(self.define("CLANG_LINK_CLANG_DYLIB", True)) + + # Get the GCC prefix for LLVM. + if self.compiler.name == "gcc" and self.spec.satisfies("@:6.3"): + args.append(self.define("GCC_INSTALL_PREFIX", self.compiler.prefix)) + if self.spec.satisfies("@:6.0"): + comgrinc_path = os.path.join(self.stage.source_path, "comgr/lib/comgr/include") + elif self.spec.satisfies("@6.1:"): + comgrinc_path = os.path.join(self.stage.source_path, "amd/comgr/include") + if self.spec.satisfies("@:6.2"): + hsainc_path = os.path.join(self.stage.source_path, "hsa-runtime/src/inc") + if self.spec.satisfies("@6.3:"): + hsainc_path = os.path.join( + self.stage.source_path, "hsa-runtime/runtime/hsa-runtime/inc" + ) + args.append("-DSANITIZER_HSA_INCLUDE_PATH={0}".format(hsainc_path)) + args.append("-DSANITIZER_COMGR_INCLUDE_PATH={0}".format(comgrinc_path)) + args.append("-DSANITIZER_AMDGPU:Bool=ON") + if self.spec.satisfies("@6.1:7.0"): + args.append(self.define("LLVM_ENABLE_LIBCXX", "OFF")) + if self.spec.satisfies("@6.1:"): + llvm_projects.remove("compiler-rt") + llvm_runtimes.extend(["compiler-rt", "libunwind"]) + args.append(self.define("CLANG_LINK_FLANG_LEGACY", True)) + args.append(self.define("CMAKE_CXX_STANDARD", 17)) + args.append(self.define("FLANG_INCLUDE_DOCS", False)) + args.append(self.define("LLVM_BUILD_DOCS", "ON")) + args.append(self.define("CLANG_DEFAULT_PIE_ON_LINUX", "OFF")) + if self.spec.satisfies("@7.0:"): + llvm_projects.extend(["mlir", "flang"]) + args.append(self.define("LIBOMPTARGET_BUILD_DEVICE_FORTRT", "ON")) + args.append(self.define("FLANG_RUNTIME_F128_MATH_LIB", "libquadmath")) + if self.spec.satisfies("@7.1:"): + llvm_runtimes.extend(["offload", "openmp"]) + args.append(self.define("LLVM_ENABLE_ZLIB", "ON")) + args.append(self.define("LLVM_INSTALL_UTILS", "ON")) + args.append(self.define("OPENMP_ENABLE_LIBOMPTARGET", "ON")) + args.append(self.define("LLVM_ENABLE_LIBCXX", "ON")) + args.append(self.define("LIBOMPTARGET_ENABLE_DEBUG", "ON")) + args.append(self.define("LIBOMPTARGET_NO_SANITIZER_AMDGPU", "ON")) + hsa_path = os.path.join(self.stage.source_path, "hsa-runtime") + args.append(self.define("LIBOMPTARGET_EXTERNAL_PROJECT_HSA_PATH", hsa_path)) + args.append(self.define("OFFLOAD_EXTERNAL_PROJECT_UNIFIED_ROCR", "ON")) + devlibs_dir = os.path.join(self.stage.source_path, "amd/device-libs") + args.append( + self.define("LIBOMPTARGET_EXTERNAL_PROJECT_ROCM_DEVICE_LIBS_PATH", devlibs_dir) + ) + + args.append(self.define("LLVM_ENABLE_PROJECTS", llvm_projects)) + args.append(self.define("LLVM_ENABLE_RUNTIMES", llvm_runtimes)) + return args + + compiler_languages = ["c", "cxx", "fortran"] + c_names = ["amdclang"] + cxx_names = ["amdclang++"] + fortran_names = ["amdflang"] + compiler_version_argument = "--version" + compiler_version_regex = r"roc-(\d+[._]\d+[._]\d+)" + + # Make sure that the compiler paths are in the LD_LIBRARY_PATH + def setup_run_environment(self, env: EnvironmentModifications) -> None: + env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) + + # Make sure that the compiler paths are in the LD_LIBRARY_PATH + def setup_dependent_run_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib) + # Required for enabling asan on dependent packages + for root, _, files in os.walk(self.prefix): + if "libclang_rt.asan-x86_64.so" in files: + env.prepend_path("LD_LIBRARY_PATH", root) + env.prune_duplicate_paths("LD_LIBRARY_PATH") + + @run_after("install") + def post_install(self): + if self.spec.satisfies("@6.1:7.0 +rocm-device-libs"): + exe = self.prefix.bin.join("llvm-config") + output = Executable(exe)("--version", output=str, error=str) + version = re.split("[.]", output)[0] + mkdirp(join_path(self.prefix.lib.clang, version, "lib"), "amdgcn") + install_tree( + self.prefix.amdgcn, join_path(self.prefix.lib.clang, version, "lib", "amdgcn") + ) + shutil.rmtree(self.prefix.amdgcn) + symlink( + join_path(self.prefix.lib.clang, version, "lib", "amdgcn"), + os.path.join(self.prefix, "amdgcn"), + ) + + # Required for enabling asan on dependent packages + def setup_dependent_build_environment( + self, env: EnvironmentModifications, dependent_spec: Spec + ) -> None: + for root, _, files in os.walk(self.prefix): + if "libclang_rt.asan-x86_64.so" in files: + env.prepend_path("LD_LIBRARY_PATH", root) + env.prune_duplicate_paths("LD_LIBRARY_PATH") + + def _cc_path(self): + return os.path.join(self.spec.prefix.bin, "amdclang") + + def _cxx_path(self): + return os.path.join(self.spec.prefix.bin, "amdclang++") + + def _fortran_path(self): + return os.path.join(self.spec.prefix.bin, "amdflang") diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch new file mode 100644 index 000000000..1495b6d3a --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch @@ -0,0 +1,38 @@ +From 7010d5da727825321d31863ceb9e2fe9eb22b5b9 Mon Sep 17 00:00:00 2001 +From: Renjith Ravindran +Date: Tue, 10 Oct 2023 05:16:47 +0000 +Subject: [PATCH] Condition check for enabling the flag + -mcode-object-version=none is failing in spack when device-libsis built with + llvm-amdgpu. The flag is required here as well as standalon build. + +--- + rocm-device-libs/cmake/OCL.cmake | 13 ++----------- + 1 file changed, 2 insertions(+), 11 deletions(-) + +diff --git a/rocm-device-libs/cmake/OCL.cmake b/rocm-device-libs/cmake/OCL.cmake +index 773c6f62e..30f60030b 100644 +--- a/rocm-device-libs/cmake/OCL.cmake ++++ b/rocm-device-libs/cmake/OCL.cmake +@@ -30,17 +30,8 @@ if (WIN32) + set(CLANG_OCL_FLAGS ${CLANG_OCL_FLAGS} -fshort-wchar) + endif() + +-# Disable code object version module flag if available. +-file(WRITE ${CMAKE_BINARY_DIR}/tmp.cl "") +-execute_process ( +- COMMAND ${LLVM_TOOLS_BINARY_DIR}/clang${EXE_SUFFIX} ${CLANG_OCL_FLAGS} -Xclang -mcode-object-version=none ${CMAKE_BINARY_DIR}/tmp.cl +- RESULT_VARIABLE TEST_CODE_OBJECT_VERSION_NONE_RESULT +- ERROR_QUIET +-) +-file(REMOVE ${CMAKE_BINARY_DIR}/tmp.cl) +-if (NOT TEST_CODE_OBJECT_VERSION_NONE_RESULT) +- set(CLANG_OCL_FLAGS ${CLANG_OCL_FLAGS} -Xclang -mcode-object-version=none) +-endif() ++# Disable code object version module flag. ++set(CLANG_OCL_FLAGS ${CLANG_OCL_FLAGS} -Xclang -mcode-object-version=none) + + set (BC_EXT .bc) + set (LIB_SUFFIX ".lib${BC_EXT}") +-- +2.31.1 + diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch new file mode 100644 index 000000000..d7b758c3e --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch @@ -0,0 +1,38 @@ +From 6eb75bd029d17dbe53a6470ca357b2721ba9d87e Mon Sep 17 00:00:00 2001 +From: Afzal Patel +Date: Mon, 12 Aug 2024 20:43:05 +0000 +Subject: [PATCH] add CPack include and find glog and fmt + +--- + cmake/rocprofiler_register_config_packaging.cmake | 1 + + source/lib/rocprofiler-register/CMakeLists.txt | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/cmake/rocprofiler_register_config_packaging.cmake b/cmake/rocprofiler_register_config_packaging.cmake +index 5e98f3e..88c4155 100644 +--- a/cmake/rocprofiler_register_config_packaging.cmake ++++ b/cmake/rocprofiler_register_config_packaging.cmake +@@ -81,6 +81,7 @@ foreach(COMPONENT_GROUP ${ROCPROFILER_REGISTER_COMPONENT_GROUPS}) + set(_NAME "${COMPONENT_NAME_${COMPONENT_GROUP}}") + set(_DESC "${COMPONENT_DESC_${COMPONENT_GROUP}}") + ++ include(CPack) + cpack_add_component_group( + ${COMPONENT_GROUP} + DISPLAY_NAME "${_NAME}" +diff --git a/source/lib/rocprofiler-register/CMakeLists.txt b/source/lib/rocprofiler-register/CMakeLists.txt +index 840fbed..4e30a3f 100644 +--- a/source/lib/rocprofiler-register/CMakeLists.txt ++++ b/source/lib/rocprofiler-register/CMakeLists.txt +@@ -16,7 +16,8 @@ endif() + target_include_directories( + rocprofiler-register PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/source + ${PROJECT_BINARY_DIR}/source) +- ++find_package(fmt CONFIG REQUIRED) ++find_package(glog CONFIG REQUIRED) + target_link_libraries( + rocprofiler-register + PUBLIC rocprofiler-register::headers +-- +2.43.5 diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py new file mode 100644 index 000000000..3cc3c988c --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py @@ -0,0 +1,53 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack_repo.builtin.build_systems.cmake import CMakePackage + +from spack.package import * + + +class RocprofilerRegister(CMakePackage): + """The rocprofiler-register library is a helper library that coordinates + the modification of the intercept API table(s) of the HSA/HIP/ROCTx runtime + libraries by the ROCprofiler (v2) library""" + + homepage = "https://github.com/ROCm/rocprofiler-register" + git = "https://github.com/ROCm/rocprofiler-register.git" + url = "https://github.com/ROCm/rocprofiler-register/archive/refs/tags/rocm-6.4.3.tar.gz" + + tags = ["rocm"] + + maintainers("afzpatel", "srekolam", "renjithravindrankannath") + + license("MIT") + version("7.1.0", sha256="29f050480d9efe9a8bd55e274f1d571a1c6001cd1db9f8648a1888f73e4ea2ef") + version("7.0.2", sha256="c76ffb35c510f8751d6d2db3a6366952ea7a76499556e9d64fdf8102a7a3ca5b") + version("7.0.0", sha256="fd8d22186385ee761c26acbeece89f61432c95492222c45865fe01027d99cfd7") + version("6.4.3", sha256="05a59920b75aaeb14f1911fa2d4b131c4210d3c6204167fc2fd678634ce9c1e7") + version("6.4.2", sha256="30da75f6b50fe4303c9c788ae29ed1aae79b0f653b7aa05e0f042b7313fb5de6") + version("6.4.1", sha256="bb8a55d73049f433c039300357713e040ba5b37ed5490336fae435385d09e596") + version("6.4.0", sha256="7439d789f722971b2dd2f8e7b5c5cbdb1522e47a6fbb428fd9bcb24234c6fd48") + version("6.3.3", sha256="afe4b1017ca604259de8cf7d06f98680bae63180214b914fcd7bd5da116b58c3") + version("6.3.2", sha256="2e973dd10af220cd37838c13f3c7d52671f5cf846a3f06311b138770b62f51f4") + version("6.3.1", sha256="82e2fbd2da058503398848c3e662f518e99f9bccb7b98880aa321c1f6511fca9") + version("6.3.0", sha256="51aae00e7a8bb44a369de9626fca360c80879034ab43092eb6e4ccfa1b51ca47") + version("6.2.4", sha256="e7c31d5e1100c1e8ae0a2c6de3bfea75341abc4a68d02b58089421e2a54bba54") + version("6.2.1", sha256="161d3502863147df4daeadc538d0eb156c314c94634f8c34ee5994f046f8753f") + version("6.2.0", sha256="5cdfdfc621da9ef5a6b828d1a3a342db222b648c91359f71651b9404bf7ba62c") + version("6.1.2", sha256="aa57b234cc1db5ae32c7494f4a9120b95a1845b95469dad447f470a6aa5e3cc9") + version("6.1.1", sha256="38242443d9147a04d61374de4cecee686578a3140fed17e88480f564a1f67cc7") + version("6.1.0", sha256="c6e60447ea2ccca8d6acd8758ac00037347892b16b450e1f99ddd04cc4b6cac1") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fmt") + depends_on("glog") + depends_on("unwind", when="@7.0:") + + patch("001-add-cpack-fmt-glog.patch") + + def cmake_args(self): + args = ["-DROCPROFILER_REGISTER_BUILD_FMT=OFF", "-DROCPROFILER_REGISTER_BUILD_GLOG=OFF"] + args.append(self.define("ROCPROFILER_REGISTER_BUILD_TESTS", self.run_tests)) + return args From fccb073779f33a4424c3e9a75be8f881b78134ac Mon Sep 17 00:00:00 2001 From: Simon Pintarelli Date: Tue, 23 Dec 2025 16:31:24 +0100 Subject: [PATCH 19/55] cray-mpich@8.1.33 --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index 70865e321..a77e6228a 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -1,7 +1,7 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: cray-mpich@8.1.32+rocm + mpi: cray-mpich@8.1.33+rocm specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible duplicates: From 8182e4220a4e95449349a032cd306d4d4b036ec5 Mon Sep 17 00:00:00 2001 From: Simon Pintarelli Date: Tue, 23 Dec 2025 17:22:00 +0100 Subject: [PATCH 20/55] cray-mpich@8.1.33 in rccl-test dependencies --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index a77e6228a..31f8ce3b1 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -58,7 +58,7 @@ gcc-env: - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi - - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.32 +rocm %c,cxx,fortran=gcc + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.33 +rocm %c,cxx,fortran=gcc variants: - +mpi - +rocm From 069636e566220a83d513ee969a1096b2fa60fa5d Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 8 Jan 2026 20:13:56 +0200 Subject: [PATCH 21/55] Trying to enable rocprofiler-compute and -systems --- .../prgenv-gnu/25.12/amdgpu/environments.yaml | 7 +- .../packages/rocprofiler_compute/package.py | 58 ++++ .../packages/rocprofiler_systems/package.py | 294 ++++++++++++++++++ 3 files changed, 354 insertions(+), 5 deletions(-) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 583cff10d..d9bdd87ed 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -36,11 +36,8 @@ gcc-env: - rocm-core %cxx=gcc - rocminfo - rocprim - #- rocprofiler-dev # TODO(iomaganaris): reenable - #- rocprofiler-register ^glog %cxx=gcc ^gflags %cxx=gcc # TODO(iomaganaris): reenable - #- rocprofiler-sdk # TODO(iomaganaris): reenable - #- rocprofiler-systems +internal-dyninst # TODO(iomaganaris): reenable - #- rocprofiler-compute # TODO(iomaganaris): reenable + - rocprofiler-systems +internal-dyninst+internal-boost + - rocprofiler-compute - rocrand - rocsolver - rocsparse diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py new file mode 100644 index 000000000..7ffffaa83 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py @@ -0,0 +1,58 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack_repo.builtin.build_systems.cmake import CMakePackage + +from spack.package import * + + +class RocprofilerCompute(CMakePackage): + """Advanced Profiling and Analytics for AMD Hardware""" + + homepage = "https://github.com/ROCm/rocprofiler-compute" + git = "https://github.com/ROCm/rocprofiler-compute.git" + url = "https://github.com/ROCm/rocprofiler-compute/archive/refs/tags/rocm-6.4.3.tar.gz" + + tags = ["rocm"] + + maintainers("afzpatel", "srekolam", "renjithravindrankannath") + + license("MIT") + version("7.1.0", sha256="11a65dac6e4099b4f2bb438320ef8206bb130a8a31bba52e90b594cdc235969b") + version("7.0.2", sha256="b56ab5c57883e2c3d75b7cc584279eb91157de195722f90c09cad51701ef4650") + version("7.0.0", sha256="0ef46ee668b6ee6936911ecd70947abb4e501ced1c4f87d8001a6e35b9781705") + version("6.4.3", sha256="d5005322dbfdd0feccd619d8fb6665f8631d74be1d6345be8726eff76829747b") + version("6.4.2", sha256="0a0c5cbcc6d54881c58899d2f0db7feaa0d5665bf13e19f0715cb22f54b11187") + version("6.4.1", sha256="a48837861dad010516f579ba627b1cf49469c56d74787f7b0883c5198de6e2a7") + version("6.4.0", sha256="484a8974ebf973fa00241bf3665eac790b3c317aa36b794cc2998f892b3036fc") + version("6.3.3", sha256="0f563874f71b593cbdcdf0eea58b08c7437f1abf807f0886a3a30afa9e7f4953") + version("6.3.2", sha256="317f19acfa6e6780923e6c8144c3c223b523c382588df528b6df001fae38d13d") + + depends_on("python@3.8:") + depends_on("py-pip", type="run") + depends_on("py-astunparse@1.6.2", type=("build", "run")) # wants exact version + depends_on("py-colorlover", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-matplotlib", type=("build", "run")) + depends_on("py-pandas@1.4.3:", type=("build", "run")) + depends_on("py-numpy@1.17.5:", type=("build", "run")) + depends_on("py-pymongo", type=("build", "run")) + depends_on("py-tabulate", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-kaleido@0.2.1", type=("build", "run")) + depends_on("py-plotille", type=("build", "run")) + depends_on("py-dash-svg", type=("build", "run")) + depends_on("py-dash@3.0.0:", type=("build", "run")) + depends_on("py-dash-bootstrap-components", type=("build", "run")) + depends_on("py-textual", when="@7.0:", type=("build", "run")) + depends_on("py-textual-plotext", when="@7.0:", type=("build", "run")) + depends_on("py-sqlalchemy@2.0.42:", when="@7.1:", type=("build", "run")) + + def cmake_args(self): + args = [self.define("ENABLE_TESTS", self.run_tests)] + return args + + @run_before("cmake") + def before_cmake(self): + touch(join_path(self.stage.source_path, "VERSION.sha")) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py new file mode 100644 index 000000000..685ee2935 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py @@ -0,0 +1,294 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import re + +from spack_repo.builtin.build_systems.cmake import CMakePackage + +from spack.package import * + + +class RocprofilerSystems(CMakePackage): + """Application Profiling, Tracing, and Analysis""" + + homepage = "https://github.com/ROCm/rocprofiler-systems" + git = "https://github.com/ROCm/rocprofiler-systems.git" + url = "https://github.com/ROCm/rocprofiler-systems/archive/refs/tags/rocm-6.3.1.tar.gz" + executables = ["rocprof-sys-sample"] + tags = ["rocm"] + + maintainers("dgaliffiAMD", "afzpatel", "srekolam", "renjithravindrankannath") + + license("MIT") + version( + "7.1.0", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-7.1.0", + commit="427f656162559f21fc3d6cb0e3688f3d31ae374c", + submodules=True, + ) + version( + "7.0.2", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-7.0.2", + commit="8bad624afb06ea2b567e985484d1b5d604865743", + submodules=True, + ) + version( + "7.0.0", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-7.0.0", + commit="1030d99db9934a07f1d276f6aadd0eb810b5f5f9", + submodules=True, + ) + version( + "6.4.3", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.4.3", + commit="ba0bfe8cf344294347cbb854084ab5b5df1b1a43", + submodules=True, + ) + version( + "6.4.2", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.4.2", + commit="ba0bfe8cf344294347cbb854084ab5b5df1b1a43", + submodules=True, + ) + version( + "6.4.1", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.4.1", + commit="2e945e4a08781e13a822f568814e2c434fd8858f", + submodules=True, + ) + version( + "6.4.0", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.4.0", + commit="c4cec593b6021f2b84294838f2ffe388ed8e911a", + submodules=True, + ) + version( + "6.3.3", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.3.3", + commit="f03ef1dd9a4e984e3e72056352532e6149e742fc", + submodules=True, + ) + version( + "6.3.2", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.3.2", + commit="2fd5fbbef941ff219a1ecef702f8cfaae6e8e5ba", + submodules=True, + ) + version( + "6.3.1", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.3.1", + commit="04a84dd0b0df3dfd61f7765696e0e474ec29f10b", + submodules=True, + ) + + version( + "6.3.0", + git="https://github.com/ROCm/rocprofiler-systems", + tag="rocm-6.3.0", + commit="71a5e271b5e07efd2948fb6e7b451db5e8e40cb8", + submodules=True, + ) + + variant( + "rocm", + default=True, + description="Enable ROCm API, kernel tracing, and GPU HW counters support", + ) + variant("strip", default=False, description="Faster binary instrumentation, worse debugging") + variant( + "python", default=False, description="Enable support for Python function profiling and API" + ) + variant("papi", default=True, description="Enable HW counters support via PAPI") + variant("ompt", default=True, description="Enable OpenMP Tools support") + variant( + "tau", + default=False, + description="Enable support for using TAU markers in omnitrace instrumentation", + ) + variant( + "caliper", + default=False, + description="Enable support for using Caliper markers in omnitrace instrumentation", + ) + variant( + "perfetto_tools", + default=False, + description="Install perfetto tools (e.g. traced, perfetto)", + ) + variant( + "mpi", + default=False, + description=( + "Enable intercepting MPI functions and aggregating output during finalization " + "(requires target application to use same MPI installation)" + ), + ) + variant( + "mpi_headers", + default=True, + description=( + "Enable intercepting MPI functions but w/o support for aggregating output " + "(target application can use any MPI installation)" + ), + ) + variant("internal-dyninst", default=False, description="build internal dyninst") + variant("internal-boost", default=False, description="build internal boost") + variant("internal-tbb", default=False, description="build internal tbb") + + conflicts("%rocmcc", when="+internal-tbb") + conflicts("%clang", when="+internal-tbb") + extends("python", when="+python") + + depends_on("c", type="build") # generated + depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") # generated + + # hard dependencies + depends_on("cmake@3.16:", type="build") + depends_on("dyninst@:12", when="@6 ~internal-dyninst") + depends_on("dyninst@13", when="@7 ~internal-dyninst") + depends_on( + "boost@:1.88" + "+atomic+chrono+date_time+filesystem+system+thread+timer+container+random+exception", + when="+internal-dyninst~internal-boost", + ) + depends_on("libiberty+pic", when="+internal-dyninst") + depends_on("intel-tbb@2019:2020.3", when="~internal-tbb") + depends_on("m4") + depends_on("texinfo") + depends_on("papi+shared", when="+papi") + depends_on("mpi", when="+mpi") + depends_on("tau", when="+tau") + depends_on("caliper", when="+caliper") + depends_on("python@3:", when="+python", type=("build", "run")) + depends_on("autoconf", when="+rocm") + depends_on("automake", when="+rocm") + depends_on("libtool", when="+rocm") + with when("+rocm"): + for ver in ["6.3.0", "6.3.1", "6.3.2", "6.3.3"]: + depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") + depends_on(f"rocprofiler-dev@{ver}", when=f"@{ver}") + for ver in ["6.3.0", "6.3.1", "6.3.2", "6.3.3", "6.4.0", "6.4.1", "6.4.2", "6.4.3"]: + depends_on(f"rocm-smi-lib@{ver}", when=f"@{ver}") + + for ver in [ + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + "7.1.0", + ]: + depends_on(f"hip@{ver}", when=f"@{ver}") + for ver in ["6.4.0", "6.4.1", "6.4.2", "6.4.3", "7.0.0", "7.0.2", "7.1.0"]: + depends_on(f"rocprofiler-sdk@{ver}", when=f"@{ver}") + for ver in ["7.0.0", "7.0.2", "7.1.0"]: + depends_on(f"amdsmi@{ver}", when=f"@{ver}") + + # Fix GCC 13 build failure caused by a missing include of in dyninst + patch( + "https://github.com/ROCm/dyninst/commit/09e781d414c83b4ad587083d449a3e976546937d.patch?full_index=1", + sha256="e64c6b75393e7fbd711c0bd0233628c176a352cd10b4057f00eec283426eaf0a", + when="@:6.4.0 +internal-dyninst", + working_dir="external/dyninst", + ) + patch( + "https://github.com/ROCm/timemory/commit/b5e41aa9e4b83ab0868211d81924ac4f639bd998.patch?full_index=1", + sha256="2696f59dd9b6e74bf44bfcc56a0536c3f1f3845c29fac18f0224dee72bd9225f", + when="%rocmcc", + working_dir="external/timemory", + ) + + def cmake_args(self): + spec = self.spec + + args = [ + self.define("SPACK_BUILD", True), + self.define("ROCPROFSYS_BUILD_PAPI", False), + self.define("ROCPROFSYS_BUILD_PYTHON", True), + self.define("ROCPROFSYS_BUILD_LIBUNWIND", True), + self.define("ROCPROFSYS_BUILD_STATIC_LIBGCC", False), + self.define("ROCPROFSYS_BUILD_STATIC_LIBSTDCXX", False), + self.define_from_variant("ROCPROFSYS_BUILD_DYNINST", "internal-dyninst"), + self.define_from_variant("ROCPROFSYS_BUILD_LTO", "ipo"), + self.define_from_variant("ROCPROFSYS_USE_MPI", "mpi"), + self.define_from_variant("ROCPROFSYS_USE_OMPT", "ompt"), + self.define_from_variant("ROCPROFSYS_USE_PAPI", "papi"), + self.define_from_variant("ROCPROFSYS_USE_RCCL", "rocm"), + self.define_from_variant("ROCPROFSYS_USE_PYTHON", "python"), + self.define_from_variant("ROCPROFSYS_USE_MPI_HEADERS", "mpi_headers"), + self.define_from_variant("ROCPROFSYS_STRIP_LIBRARIES", "strip"), + self.define_from_variant("ROCPROFSYS_INSTALL_PERFETTO_TOOLS", "perfetto_tools"), + self.define("ROCPROFSYS_BUILD_ELFUTILS", True), + # timemory arguments + self.define("TIMEMORY_BUILD_CALIPER", False), + self.define_from_variant("TIMEMORY_USE_TAU", "tau"), + self.define_from_variant("TIMEMORY_USE_CALIPER", "caliper"), + ] + if spec.satisfies("@:6.3"): + args.append(self.define_from_variant("ROCPROFSYS_USE_ROCM_SMI", "rocm")) + args.append(self.define_from_variant("ROCPROFSYS_USE_HIP", "rocm")) + args.append(self.define_from_variant("ROCPROFSYS_USE_ROCTRACER", "rocm")) + args.append(self.define_from_variant("ROCPROFSYS_USE_ROCPROFILER", "rocm")) + else: + args.append(self.define_from_variant("ROCPROFSYS_USE_ROCM", "rocm")) + + if "+tau" in spec: + tau_root = spec["tau"].prefix + args.append(self.define("TAU_ROOT_DIR", tau_root)) + + if "+mpi" in spec: + args.append(self.define("MPI_C_COMPILER", spec["mpi"].mpicc)) + args.append(self.define("MPI_CXX_COMPILER", spec["mpi"].mpicxx)) + + if spec.satisfies("@6.3:"): + args.append(self.define("dl_LIBRARY", "dl")) + if spec.satisfies("@7.0:"): + args.append(self.define_from_variant("ROCPROFSYS_BUILD_TBB", "internal-tbb")) + if spec.satisfies("+internal-dyninst"): + args.append(self.define_from_variant("DYNINST_BUILD_TBB", "internal-tbb")) + if spec.satisfies("+internal-boost"): + args.append(self.define_from_variant("ROCPROFSYS_BUILD_BOOST", "internal-boost")) + return args + + def flag_handler(self, name, flags): + if self.spec.satisfies("@6.3:"): + if name == "ldflags": + flags.append("-lintl") + return (flags, None, None) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.search(r"rocm: v(\d+)\.(\d+)", output) + if match: + ver = "{0}.{1}".format(int(match.group(1)), int(match.group(2))) + else: + ver = None + return ver + + def setup_build_environment(self, env: EnvironmentModifications) -> None: + if "+tau" in self.spec: + import glob + + # below is how TAU_MAKEFILE is set in packages/tau/package.py + pattern = join_path(self.spec["tau"].prefix.lib, "Makefile.*") + files = glob.glob(pattern) + if files: + env.set("TAU_MAKEFILE", files[0]) From d98ce89d60e6ab3a3a022ff4938126932c55ac4a Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 8 Jan 2026 21:03:57 +0200 Subject: [PATCH 22/55] Update py-dash recipe --- .../amdgpu/repo/packages/py_dash/package.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py new file mode 100644 index 000000000..b7dcd8056 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py @@ -0,0 +1,28 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack_repo.builtin.build_systems.python import PythonPackage + +from spack.package import * + + +class PyDash(PythonPackage): + """Dash is the most downloaded, trusted Python framework + for building ML & data science web apps.""" + + homepage = "https://dash.plotly.com/" + pypi = "dash/dash-2.17.1.tar.gz" + git = "https://github.com/plotly/dash.git" + + license("MIT") + + version("3.0.0", sha256="2cbb071836b3ca546dbe38655083908b8be543f3bea9c4bf660b96490d3d4953") + version("2.17.1", sha256="ee2d9c319de5dcc1314085710b72cd5fa63ff994d913bf72979b7130daeea28e") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-typing-extensions") + depends_on("py-flask") + depends_on("py-plotly@5") + depends_on("py-importlib-metadata") From 5fa76aa3cb19003184f067b07cfab1a9d04ec57a Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 12 Jan 2026 14:47:44 +0100 Subject: [PATCH 23/55] Trying to install all the profilers and fix issue with hipsparse not linked to rocsparse --- .../prgenv-gnu/25.12/amdgpu/environments.yaml | 2 + .../amdgpu/repo/packages/hipsparse/package.py | 144 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index d9bdd87ed..bb1625e74 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -36,6 +36,8 @@ gcc-env: - rocm-core %cxx=gcc - rocminfo - rocprim + - rocprofiler-dev + - rocprofiler-sdk - rocprofiler-systems +internal-dyninst+internal-boost - rocprofiler-compute - rocrand diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py new file mode 100644 index 000000000..d2e181263 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py @@ -0,0 +1,144 @@ +# Copyright Spack Project Developers. See COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import re + +from spack_repo.builtin.build_systems.cmake import CMakePackage +from spack_repo.builtin.build_systems.cuda import CudaPackage +from spack_repo.builtin.build_systems.rocm import ROCmPackage + +from spack.package import * + + +class Hipsparse(CMakePackage, CudaPackage, ROCmPackage): + """hipSPARSE is a SPARSE marshalling library, with + multiple supported backends""" + + homepage = "https://github.com/ROCm/hipSPARSE" + git = "https://github.com/ROCm/hipSPARSE.git" + url = "https://github.com/ROCm/hipSPARSE/archive/rocm-6.4.3.tar.gz" + tags = ["rocm"] + + maintainers("cgmb", "srekolam", "renjithravindrankannath", "haampie", "afzpatel") + libraries = ["libhipsparse"] + + license("MIT") + version("7.1.0", sha256="1d399d16a388279f71c8de19e6ccfde35a3dedc5ba49858bca7a377aa08198c0") + version("7.0.2", sha256="8f2d187ef9a44e58538a7bf3298b245e740066c74e431da01c38ed35fad649fc") + version("7.0.0", sha256="09102f4a74cfcffb8371428f70a592a004b72f4f08135d35738b34c4d5a5edba") + version("6.4.3", sha256="0ac06136778a25e7d38c69d831d169b85ad370d0ae1cd45deb5f63a43797244e") + version("6.4.2", sha256="e6ed9a0dab093f428418c7914f3d2e1612cafc280cd0ee27ab4df8c93284a5ed") + version("6.4.1", sha256="cae547776076066c0ee19a7f98516ac2e9a0cf3bb3b0809d7a4e474f9ee4cb90") + version("6.4.0", sha256="aaab3e9a905f5c5f470634ed7a0929ef93e28d2c5fe4f6f89338b39a937f1825") + version("6.3.3", sha256="61c26eb93e857c942a03ea4350a403e20191be465041e542ad7da00058e89ead") + version("6.3.2", sha256="9fbc3468632fdc828d7bae386c2737eb371d78811f53da7348b417fb00d62808") + version("6.3.1", sha256="d64bc48e0aa5ec2f48853272a9c554b37ec98cb0724135e45f21b1340df7bccb") + version("6.3.0", sha256="550fd5a480490e631507e8c34b2b0cf9cbc2ad2a5bf84e8ea0a8fad96eecb25a") + version("6.2.4", sha256="0ecc0ff1eeb99e9a9ac419e49e9be9ec4cd23a117d819710114ee2f35aefe88b") + version("6.2.1", sha256="5a3241c857f705b1e5c64b3f5163575726e64a8d19f3957f7326622fda277710") + version("6.2.0", sha256="e51b9871d764763519c14be2ec52c1e1ae3959b439afb4be6518b9f9a6f0ebaf") + version("6.1.2", sha256="dd44f9b6000b3b0ac0fa238037a80f79d6745a689d4a6755f2d595643be1ef6d") + version("6.1.1", sha256="307cff012f0465942dd6666cb00ae60c35941699677c4b26b08e4832bc499059") + version("6.1.0", sha256="1d9277a11f71474ea4a9f8419a7a2c37170a86969584e5724e385ec74241e565") + version("6.0.2", sha256="40c1d2493f87c686d9afd84a00321ad10ca0d0d80d6dcfeee8e51858dd1bd8c1") + version("6.0.0", sha256="718a5f03b6a579c0542a60d00f5688bec53a181b429b7ee8ce3c8b6c4a78d754") + version("5.7.1", sha256="16c3818260611226c3576d8d55ad8f51e0890d2473503edf2c9313250ae65ca7") + version("5.7.0", sha256="729b749b5340034639873a99e6091963374f6f0456c8f36d076c96f03fe43888") + + # default to an 'auto' variant until amdgpu_targets can be given a better default than 'none' + amdgpu_targets = ROCmPackage.amdgpu_targets + variant( + "amdgpu_target", + description="AMD GPU architecture", + values=disjoint_sets(("auto",), amdgpu_targets) + .with_default("auto") + .with_error( + "the values 'auto' and 'none' are mutually exclusive with any of the other values" + ) + .with_non_feature_values("auto", "none"), + sticky=True, + ) + variant("rocm", default=True, description="Enable ROCm support") + variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") + conflicts("+cuda +rocm", msg="CUDA and ROCm support are mutually exclusive") + conflicts("~cuda ~rocm", msg="CUDA or ROCm support is required") + + depends_on("c", type="build") + depends_on("cxx", type="build") # generated + depends_on("fortran", type="build") # generated + + depends_on("hip +cuda", when="+cuda") + + depends_on("cmake@3.5:", type="build") + depends_on("git", type="build") + depends_on("googletest", when="@6.3:") + + for ver in [ + "5.7.0", + "5.7.1", + "6.0.0", + "6.0.2", + "6.1.0", + "6.1.1", + "6.1.2", + "6.2.0", + "6.2.1", + "6.2.4", + "6.3.0", + "6.3.1", + "6.3.2", + "6.3.3", + "6.4.0", + "6.4.1", + "6.4.2", + "6.4.3", + "7.0.0", + "7.0.2", + "7.1.0", + ]: + depends_on(f"rocm-cmake@{ver}:", type="build", when=f"@{ver}") + depends_on(f"rocsparse@{ver}", when=f"+rocm @{ver}", type=("build", "link", "run")) + + for tgt in ROCmPackage.amdgpu_targets: + depends_on(f"rocsparse amdgpu_target={tgt}", when=f"+rocm amdgpu_target={tgt}") + + # Add c++17 to hipsparse to fix error with std::filesystem + patch( + "https://github.com/ROCm/hipSPARSE/commit/037b54ecc129edaaff59d3df149a3f071466ba29.patch?full_index=1", + sha256="02f44a3bac6f9983648afeb606aa43b7329547218e0f13b9d31b685acb8b198e", + when="@6.3", + ) + + @classmethod + def determine_version(cls, lib): + match = re.search(r"lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)", lib) + if match: + ver = "{0}.{1}.{2}".format( + int(match.group(1)), int(match.group(2)), int(match.group(3)) + ) + else: + ver = None + return ver + + def setup_build_environment(self, env: EnvironmentModifications) -> None: + if self.spec.satisfies("+asan"): + self.asan_on(env) + + def cmake_args(self): + args = [ + self.define("BUILD_CLIENTS_SAMPLES", "OFF"), + self.define("BUILD_CLIENTS_TESTS", "OFF"), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + ] + + args.append(self.define_from_variant("BUILD_CUDA", "cuda")) + + # FindHIP.cmake is still used for +cuda + if self.spec.satisfies("+cuda"): + args.append(self.define("CMAKE_MODULE_PATH", self.spec["hip"].prefix.lib.cmake.hip)) + if self.spec.satisfies("@:6.3.1"): + args.append(self.define("BUILD_FILE_REORG_BACKWARD_COMPATIBILITY", True)) + if self.spec.satisfies("@:6"): + args.append(self.define("CMAKE_CXX_STANDARD", "14")) + return args From b78552edccb58e1a1c743a809d7c594bad9576eb Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 13 Jan 2026 14:47:30 +0100 Subject: [PATCH 24/55] Expose hsa-rocr-dev package and add miopen-hip --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index bb1625e74..1cd2a729f 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -48,6 +48,7 @@ gcc-env: - roctracer-dev - rocm-gdb - rocm-debug-agent + - hsa-rocr-dev # hip packages - hipblas - hipblaslt @@ -55,6 +56,7 @@ gcc-env: - hipsparse - hipfft - hipblas-common + - miopen-hip # networking - rccl # commits pinned for reproducibility, not bugs; update when updating recipe From c4df8f7f6cf627bf79f7ff965178278c4a0433f0 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 15 Jan 2026 10:59:17 +0100 Subject: [PATCH 25/55] Increase build CI timelimit --- ci/ci.yml | 2 +- config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/ci.yml b/ci/ci.yml index 7fbe0d46a..0e1f054ad 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -7,7 +7,7 @@ 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/iomaganaris/uenv-pipeline.git - ./uenv-pipeline/configure-pipeline -c./config.yaml -r./recipes -s$system -u$uenv -a$uarch -o./pipeline.yml artifacts: paths: diff --git a/config.yaml b/config.yaml index 0807321bd..a79a72052 100644 --- a/config.yaml +++ b/config.yaml @@ -68,7 +68,7 @@ clusters: F7T_CLIENT_SECRET: $F7T_TDS_CLIENT_SECRET F7T_URL: "https://api.tds.cscs.ch/stp/firecrest/v2" F7T_TOKEN_URL: "https://auth-tds.cscs.ch/auth/realms/firecrest-clients/protocol/openid-connect/token" - SLURM_TIMELIMIT: '500' + SLURM_TIMELIMIT: '720' SLURM_CPUS_PER_TASK: '64' runner: f7t uenvs: From 919305bcd7ae69b843e9857deb2252a5f35b6374 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Fri, 16 Jan 2026 15:17:41 +0100 Subject: [PATCH 26/55] Try building hipsparse as static library to avoid issues in cupy Issue is: ImportError: /user-environment/env/default/lib/libhipsparse.so.4: undefined symbol: rocsparse_destroy_spmv_descr which is strange because: ldd /user-environment/env/default/lib/libhipsparse.so.4 linux-vdso.so.1 (0x00007ffddc1c1000) /user-environment/env/default/lib/librocsparse.so (0x00007f6af9a27000) nm /user-environment/linux-zen3/rocsparse-7.1.0-qfflrfxfu2vaqu52hitvwyukdwq767rf/lib/librocsparse.so | grep rocsparse_destroy_spmv_descr 0000000002f33fc0 T rocsparse_destroy_spmv_descr --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 6 +++--- .../25.12/amdgpu/repo/packages/hipsparse/package.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 1cd2a729f..dc4598552 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -48,15 +48,15 @@ gcc-env: - roctracer-dev - rocm-gdb - rocm-debug-agent - - hsa-rocr-dev + # - hsa-rocr-dev # TODO(iomaganaris): enable for julia AMD gpu build # hip packages - hipblas - hipblaslt - hiprand - - hipsparse + - hipsparse~shared-libs - hipfft - hipblas-common - - miopen-hip + # - miopen-hip # TODO(iomaganaris): enable for julia AMD gpu build # networking - rccl # commits pinned for reproducibility, not bugs; update when updating recipe diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py index d2e181263..8e0adec21 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py @@ -59,6 +59,7 @@ class Hipsparse(CMakePackage, CudaPackage, ROCmPackage): .with_non_feature_values("auto", "none"), sticky=True, ) + variant("shared-libs", default=True, description="Build shared libraries") variant("rocm", default=True, description="Enable ROCm support") variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") conflicts("+cuda +rocm", msg="CUDA and ROCm support are mutually exclusive") @@ -133,6 +134,7 @@ def cmake_args(self): ] args.append(self.define_from_variant("BUILD_CUDA", "cuda")) + args.append(self.define_from_variant("HIPSPARSE_BUILD_SHARED_LIBS", "shared-libs")) # FindHIP.cmake is still used for +cuda if self.spec.satisfies("+cuda"): From 7e1a261580784ff74834c67b83c0145b6ea4118a Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 19 Jan 2026 12:43:01 +0100 Subject: [PATCH 27/55] Trying to fix LD_PRELOAD use in rocprofiler-compute --- .../rocprofiler_compute/keep_ld_preload.patch | 30 +++++++++++++++++++ .../packages/rocprofiler_compute/package.py | 2 ++ 2 files changed, 32 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch new file mode 100644 index 000000000..f798c20c2 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch @@ -0,0 +1,30 @@ +diff --git a/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py b/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py +index aa29be9e8c..0e3f4d042c 100644 +--- a/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py ++++ b/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py +@@ -66,6 +66,10 @@ class rocprofiler_sdk_profiler(RocProfCompute_Base): + args.rocprofiler_sdk_library_path, + rocprofiler_attach_tool_path, + ] ++ # Add any paths already in LD_PRELOAD variable ++ existing_ld_preload = os.environ.get("LD_PRELOAD", "") ++ if existing_ld_preload: ++ ld_preload.extend(existing_ld_preload.split(":")) + options = { + "ROCPROFILER_LIBRARY_CTOR": "1", + "LD_PRELOAD": ":".join(ld_preload), +diff --git a/projects/rocprofiler-compute/src/utils/utils.py b/projects/rocprofiler-compute/src/utils/utils.py +index 2ae5020d7c..da6becbf15 100644 +--- a/projects/rocprofiler-compute/src/utils/utils.py ++++ b/projects/rocprofiler-compute/src/utils/utils.py +@@ -962,6 +962,10 @@ def pc_sampling_prof( + rocprofiler_sdk_tool_path, + rocprofiler_sdk_library_path, + ] ++ # Add any paths already in LD_PRELOAD variable ++ existing_ld_preload = os.environ.get("LD_PRELOAD", "") ++ if existing_ld_preload: ++ ld_preload.extend(existing_ld_preload.split(":")) + options = { + "ROCPROFILER_LIBRARY_CTOR": "1", + "LD_PRELOAD": ":".join(ld_preload), diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py index 7ffffaa83..5ea51a675 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py @@ -49,6 +49,8 @@ class RocprofilerCompute(CMakePackage): depends_on("py-textual-plotext", when="@7.0:", type=("build", "run")) depends_on("py-sqlalchemy@2.0.42:", when="@7.1:", type=("build", "run")) + patch("keep_ld_preload.patch", when="@7.1.0") + def cmake_args(self): args = [self.define("ENABLE_TESTS", self.run_tests)] return args From 2520ec1249312355646e798bb97a0cc81e49e809 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 19 Jan 2026 16:02:43 +0100 Subject: [PATCH 28/55] Try to fix patch paths --- .../rocprofiler_compute/keep_ld_preload.patch | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch index f798c20c2..5e0812864 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch @@ -1,7 +1,7 @@ -diff --git a/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py b/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py +diff --git a/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py b/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py index aa29be9e8c..0e3f4d042c 100644 ---- a/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py -+++ b/projects/rocprofiler-compute/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py +--- a/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py ++++ b/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py @@ -66,6 +66,10 @@ class rocprofiler_sdk_profiler(RocProfCompute_Base): args.rocprofiler_sdk_library_path, rocprofiler_attach_tool_path, @@ -13,10 +13,10 @@ index aa29be9e8c..0e3f4d042c 100644 options = { "ROCPROFILER_LIBRARY_CTOR": "1", "LD_PRELOAD": ":".join(ld_preload), -diff --git a/projects/rocprofiler-compute/src/utils/utils.py b/projects/rocprofiler-compute/src/utils/utils.py +diff --git a/src/utils/utils.py b/src/utils/utils.py index 2ae5020d7c..da6becbf15 100644 ---- a/projects/rocprofiler-compute/src/utils/utils.py -+++ b/projects/rocprofiler-compute/src/utils/utils.py +--- a/src/utils/utils.py ++++ b/src/utils/utils.py @@ -962,6 +962,10 @@ def pc_sampling_prof( rocprofiler_sdk_tool_path, rocprofiler_sdk_library_path, From a5ca1d5cfd91071138370bcc39302fb4817577e1 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 19 Jan 2026 17:10:26 +0100 Subject: [PATCH 29/55] Fix patch --- .../rocprofiler_compute/keep_ld_preload.patch | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch index 5e0812864..fdc37cf34 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch @@ -1,8 +1,16 @@ diff --git a/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py b/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py -index aa29be9e8c..0e3f4d042c 100644 +index aa29be9e8c..f10f927c11 100644 --- a/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py +++ b/src/rocprof_compute_profile/profiler_rocprofiler_sdk.py -@@ -66,6 +66,10 @@ class rocprofiler_sdk_profiler(RocProfCompute_Base): +@@ -25,6 +25,7 @@ + + import argparse + import shlex ++import os + from pathlib import Path + from typing import Union + +@@ -66,6 +67,10 @@ class rocprofiler_sdk_profiler(RocProfCompute_Base): args.rocprofiler_sdk_library_path, rocprofiler_attach_tool_path, ] From 7dc8f937f482ba564cb692230cd3e68264704d7d Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 22 Jan 2026 13:09:52 +0100 Subject: [PATCH 30/55] Add rocprof-trace-decoder library to rocprof-systems --- .../packages/rocprof_trace_decoder/package.py | 16 ++++++++++++++++ .../repo/packages/rocprofiler_systems/package.py | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py new file mode 100644 index 000000000..780284546 --- /dev/null +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py @@ -0,0 +1,16 @@ +from spack.package import * + +class RocprofTraceDecoder(Package): + """rocprof-trace-decoder: ROCm trace decoder tool.""" + + homepage = "https://github.com/ROCm/rocprof-trace-decoder" + url = "https://github.com/ROCm/rocprof-trace-decoder/releases/download/0.1.6/rocprof-trace-decoder-manylinux-2.28-0.1.6-Linux.tar.gz" + + version("2.28-0.1.6", sha256="57a49c74db7dcd29433888ef5d408ca8e22223f2680c566855e4c3c68da7b36d") + + def install(self, spec, prefix): + # Just untar everything into the prefix + install_tree('.', prefix) + + def setup_run_environment(self, env): + env.prepend_path('LD_LIBRARY_PATH', self.prefix.opt.rocm.lib) \ No newline at end of file diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py index 685ee2935..d1303b812 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py @@ -145,6 +145,7 @@ class RocprofilerSystems(CMakePackage): variant("internal-dyninst", default=False, description="build internal dyninst") variant("internal-boost", default=False, description="build internal boost") variant("internal-tbb", default=False, description="build internal tbb") + variant("trace-decoder", default=False, description="build trace-decoder tool") conflicts("%rocmcc", when="+internal-tbb") conflicts("%clang", when="+internal-tbb") @@ -200,6 +201,7 @@ class RocprofilerSystems(CMakePackage): depends_on(f"rocprofiler-sdk@{ver}", when=f"@{ver}") for ver in ["7.0.0", "7.0.2", "7.1.0"]: depends_on(f"amdsmi@{ver}", when=f"@{ver}") + depends_on("rocprof-trace-decoder", when="+trace-decoder", type="run") # Fix GCC 13 build failure caused by a missing include of in dyninst patch( From ccb8410a877d0bab796a6f1c42e66cc45a2a85eb Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 22 Jan 2026 13:10:20 +0100 Subject: [PATCH 31/55] Try fixing issue with rocsparse missing symbols in hipsparse --- .../25.12/amdgpu/repo/packages/hipsparse/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py index 8e0adec21..1aa72ab7d 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py @@ -126,6 +126,11 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) + def setup_run_environment(self, env: EnvironmentModifications) -> None: + # Avoid cupy import error due to missing rocsparse symbols + if self.spec.satisfies("+rocm @6.4.1:"): + env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) + def cmake_args(self): args = [ self.define("BUILD_CLIENTS_SAMPLES", "OFF"), From fcc19af2c8dce55116a4845d3329aacc16613b0f Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 22 Jan 2026 17:12:26 +0100 Subject: [PATCH 32/55] Enable trace decoder library --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index dc4598552..3afb2cb9c 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -38,7 +38,7 @@ gcc-env: - rocprim - rocprofiler-dev - rocprofiler-sdk - - rocprofiler-systems +internal-dyninst+internal-boost + - rocprofiler-systems +internal-dyninst+internal-boost+trace-decoder - rocprofiler-compute - rocrand - rocsolver From 9efe30cad1d0c7f01da4385bbf6b5be792423107 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Tue, 27 Jan 2026 09:10:14 +0100 Subject: [PATCH 33/55] Fix trace decoder library path --- .../amdgpu/repo/packages/rocprof_trace_decoder/package.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py index 780284546..3c346f66f 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py +++ b/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py @@ -9,8 +9,4 @@ class RocprofTraceDecoder(Package): version("2.28-0.1.6", sha256="57a49c74db7dcd29433888ef5d408ca8e22223f2680c566855e4c3c68da7b36d") def install(self, spec, prefix): - # Just untar everything into the prefix - install_tree('.', prefix) - - def setup_run_environment(self, env): - env.prepend_path('LD_LIBRARY_PATH', self.prefix.opt.rocm.lib) \ No newline at end of file + install_tree('opt/rocm/lib', self.prefix.lib) From 386294f025f0ccf9477718aa05f2d3de2df79f91 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Wed, 18 Feb 2026 12:20:23 +0100 Subject: [PATCH 34/55] Add the rocprof-trace-decoder package to the environment.yaml file to try and create a softlink to the /user-environment/env/default/lib directory --- recipes/prgenv-gnu/25.12/amdgpu/environments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml index 3afb2cb9c..5431a927c 100644 --- a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml @@ -38,6 +38,7 @@ gcc-env: - rocprim - rocprofiler-dev - rocprofiler-sdk + - rocprof-trace-decoder - rocprofiler-systems +internal-dyninst+internal-boost+trace-decoder - rocprofiler-compute - rocrand From 11f640ec59558694dd40b242d2e7c401dd2e539e Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Wed, 18 Feb 2026 12:22:07 +0100 Subject: [PATCH 35/55] Revert changes regarding the timeout --- ci/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/ci.yml b/ci/ci.yml index 0e1f054ad..7fbe0d46a 100644 --- a/ci/ci.yml +++ b/ci/ci.yml @@ -7,7 +7,7 @@ pipeline-configure: tags: [languard-k8s-lightweight] image: docker.io/python:latest script: - - git clone https://github.com/iomaganaris/uenv-pipeline.git + - git clone https://github.com/eth-cscs/uenv-pipeline.git - ./uenv-pipeline/configure-pipeline -c./config.yaml -r./recipes -s$system -u$uenv -a$uarch -o./pipeline.yml artifacts: paths: From 3973c92644b57cbb89ddc4250b0be58b96a2b8ea Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 23 Feb 2026 11:11:42 +0100 Subject: [PATCH 36/55] Revert cray-mpich related changes Co-authored-by: Mikael Simberg --- recipes/prgenv-gnu/25.7/amdgpu/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml index c2f0cc14d..dcdef6c38 100644 --- a/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/25.7/amdgpu/environments.yaml @@ -1,7 +1,7 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: cray-mpich@8.1.33+rocm + mpi: cray-mpich@8.1.32+rocm specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible duplicates: @@ -63,7 +63,7 @@ gcc-env: - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi - - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.33 +rocm %c,cxx,fortran=gcc + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.32 +rocm %c,cxx,fortran=gcc variants: - +mpi - +rocm From 4a0ed6cbdc357f21a93f4b220351a241451f25a8 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 23 Feb 2026 13:59:53 +0100 Subject: [PATCH 37/55] Renamed 25.12 to 7.1.0 --- config.yaml | 4 ++-- recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/compilers.yaml | 0 recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/config.yaml | 0 recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/environments.yaml | 0 recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/extra/reframe.yaml | 0 recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/modules.yaml | 0 recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/post-install | 0 .../repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch | 0 ...1-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch | 0 .../packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch | 0 .../hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch | 0 .../repo/packages/hipblaslt/002-link-roctracer.7.0.patch | 0 .../amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch | 0 .../repo/packages/hipblaslt/003-use-rocm-smi-config.patch | 0 .../packages/hipblaslt/005-add-roctracer-include-dir.patch | 0 .../amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch | 0 .../amdgpu/repo/packages/hipblaslt/package.py | 0 .../amdgpu/repo/packages/hipsparse/package.py | 0 .../0001-update-HIP_PATH-deduction-for-5.7.0.patch | 0 .../packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch | 0 .../repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch | 0 .../amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml | 0 .../amdgpu/repo/packages/llvm_amdgpu/package.py | 0 .../amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch | 0 .../{25.12 => 7.1.0}/amdgpu/repo/packages/py_dash/package.py | 0 .../repo/packages/rocblas/0001-remove-blas-override.patch | 0 .../rocblas/0007-add-rocm-openmp-extras-include-dir.patch | 0 .../amdgpu/repo/packages/rocblas/0008-link-roctracer.patch | 0 .../repo/packages/rocblas/0009-use-rocm-smi-config.patch | 0 .../amdgpu/repo/packages/rocblas/offload_bundler_path.patch | 0 .../{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/package.py | 0 .../amdgpu/repo/packages/rocprof_trace_decoder/package.py | 0 .../repo/packages/rocprofiler_compute/keep_ld_preload.patch | 0 .../amdgpu/repo/packages/rocprofiler_compute/package.py | 0 .../rocprofiler_register/001-add-cpack-fmt-glog.patch | 0 .../amdgpu/repo/packages/rocprofiler_register/package.py | 0 .../amdgpu/repo/packages/rocprofiler_systems/package.py | 0 37 files changed, 2 insertions(+), 2 deletions(-) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/compilers.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/config.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/environments.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/extra/reframe.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/modules.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/post-install (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipblaslt/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/hipsparse/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/py_dash/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/offload_bundler_path.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocblas/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprof_trace_decoder/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprofiler_compute/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprofiler_register/package.py (100%) rename recipes/prgenv-gnu/{25.12 => 7.1.0}/amdgpu/repo/packages/rocprofiler_systems/package.py (100%) diff --git a/config.yaml b/config.yaml index c9a90cc25..ccc311436 100644 --- a/config.yaml +++ b/config.yaml @@ -349,9 +349,9 @@ uenvs: santis: [gh200] bristen: [a100] eiger: [zen2] - "25.12": + "7.1.0": recipes: - mi200: 25.12/amdgpu + mi200: 7.1.0/amdgpu deploy: beverin: [mi200] prgenv-gnu-openmpi: diff --git a/recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/compilers.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/compilers.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/config.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/config.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/environments.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/extra/reframe.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/extra/reframe.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/modules.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/modules.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/modules.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/modules.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/post-install b/recipes/prgenv-gnu/7.1.0/amdgpu/post-install similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/post-install rename to recipes/prgenv-gnu/7.1.0/amdgpu/post-install diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM-Path-6.3.Patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0001-Set-LLVM_Path-Add-Hiblas-Include-to-CmakeLists-6.1.Patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/0004-Set-rocm-smi-ld-path-7.0.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/001_Set_LLVM_Paths_And_Add_Includes.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/002-link-roctracer.7.0.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/002-link-roctracer.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/003-use-rocm-smi-config.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/005-add-roctracer-include-dir.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/offload_bundler_path.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipblaslt/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipblaslt/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/hipsparse/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/0001-update-HIP_PATH-deduction-for-5.7.0.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/001-Add-i1-mul-patterns-5.7.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/002-Add-rpath-to-hiprt.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/detection_test.yaml diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/llvm_amdgpu/patch-llvm-5.5.0.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/py_dash/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/py_dash/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/py_dash/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0001-remove-blas-override.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0008-link-roctracer.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/0009-use-rocm-smi-config.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/offload_bundler_path.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/offload_bundler_path.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/offload_bundler_path.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocblas/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocblas/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprof_trace_decoder/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprof_trace_decoder/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprof_trace_decoder/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_compute/keep_ld_preload.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_compute/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_compute/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_compute/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_register/001-add-cpack-fmt-glog.patch diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_register/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_register/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_register/package.py diff --git a/recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_systems/package.py similarity index 100% rename from recipes/prgenv-gnu/25.12/amdgpu/repo/packages/rocprofiler_systems/package.py rename to recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/rocprofiler_systems/package.py From f469554982dc6a8a9e30df57919a1b0849994e93 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 25 Feb 2026 16:35:08 +0100 Subject: [PATCH 38/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 5431a927c..c4b56389d 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -2,7 +2,6 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: mpi: cray-mpich@8.1.32+rocm - specs: [ 'libfabric@2.3 +rocm' ] unify: when_possible duplicates: strategy: full From 4717a64378f7f4c3f8ba097b082f4eef7479a91e Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 25 Feb 2026 16:36:30 +0100 Subject: [PATCH 39/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index c4b56389d..d4c687695 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -48,7 +48,8 @@ gcc-env: - roctracer-dev - rocm-gdb - rocm-debug-agent - # - hsa-rocr-dev # TODO(iomaganaris): enable for julia AMD gpu build + - hsa-rocr-dev + - comgr # hip packages - hipblas - hipblaslt From c1ae96db4fedd2383e4ca8698a46e98e1013ffd2 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 25 Feb 2026 16:36:52 +0100 Subject: [PATCH 40/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index d4c687695..402897b1f 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -1,7 +1,7 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: cray-mpich@8.1.32+rocm + mpi: cray-mpich@9.0.1+rocm unify: when_possible duplicates: strategy: full From 9fbc379937ddcd966fe695c56c71d4940f720c52 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 25 Feb 2026 20:34:44 +0100 Subject: [PATCH 41/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 402897b1f..fb81dd0b1 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -1,7 +1,7 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: cray-mpich@9.0.1+rocm + mpi: openmpi+rocm unify: when_possible duplicates: strategy: full From aec16170257915501704210ad833847820822c48 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 25 Feb 2026 20:57:12 +0100 Subject: [PATCH 42/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index fb81dd0b1..f6acb4677 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -62,7 +62,7 @@ gcc-env: - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi - - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich@8.1.32 +rocm %c,cxx,fortran=gcc + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^openmpi +rocm %c,cxx,fortran=gcc variants: - +mpi - +rocm From 5b990c643a5e9fa61450d93f9686e1cd451985b5 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Thu, 5 Mar 2026 13:36:07 +0100 Subject: [PATCH 43/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index f6acb4677..3a66afbfe 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -11,7 +11,7 @@ gcc-env: - fftw - fmt - gsl - - hdf5+cxx+hl+fortran + - hdf5+cxx+hl+fortran+mpi - netlib-scalapack - lua - libtree @@ -24,7 +24,6 @@ gcc-env: - zlib-ng # add GPU-specific packages here, for easier comparison with mc version - hip@7.1.0 ^mesa@23.3.6 - - hdf5+mpi - hipcub - llvm-amdgpu # rocm packages From 21568479aeb634822e21499b857b5aa4cc65f6af Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 11:51:43 +0100 Subject: [PATCH 44/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py --- .../prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py index 1aa72ab7d..81a3fc0f8 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py @@ -129,7 +129,8 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: def setup_run_environment(self, env: EnvironmentModifications) -> None: # Avoid cupy import error due to missing rocsparse symbols if self.spec.satisfies("+rocm @6.4.1:"): - env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) + ... + # env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) def cmake_args(self): args = [ From cfae52125c375e3861bb5cb11920066bc0b4d354 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 14:17:15 +0100 Subject: [PATCH 45/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 3a66afbfe..b744d7ad0 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -1,7 +1,7 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: openmpi+rocm + mpi: cray-mpich+rocm unify: when_possible duplicates: strategy: full From a9fdeac9d6b3ffe9dab818b4e82f104164b78cc2 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 15:48:06 +0100 Subject: [PATCH 46/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml index 7bb823164..6abab72d7 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml @@ -5,5 +5,5 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/spack/spack-packages.git - commit: f941c2ba6edf03a7783138619aad104b6e8d543d # develop on 2025-12-19 + commit: b49741c7c536246ca95762193100907befd06214 # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) From bb1cc134c63c13305543e8b5c0fcb1294e76b664 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 15:50:07 +0100 Subject: [PATCH 47/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index b744d7ad0..377c365f8 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -60,7 +60,7 @@ gcc-env: # networking - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - - aws-ofi-rccl@git.6dae1b0d588c27689ba6daa32710359ea96de78c=cxi + - aws-ofi-nccl@1.18.0 - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^openmpi +rocm %c,cxx,fortran=gcc variants: - +mpi From 1e6764722eacc555d20768e69fb0999d661f4f78 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 15:51:01 +0100 Subject: [PATCH 48/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 377c365f8..0893c48f4 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -61,7 +61,7 @@ gcc-env: - rccl # commits pinned for reproducibility, not bugs; update when updating recipe - aws-ofi-nccl@1.18.0 - - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^openmpi +rocm %c,cxx,fortran=gcc + - rccl-tests@git.6405c76e6826663bbb67bd40aeee8c70aa5d3094=develop %cxx=llvm-amdgpu ^cray-mpich +rocm %c,cxx,fortran=gcc variants: - +mpi - +rocm From 8a88033bd2085e03a892e1f740ed26a2238cfce3 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 9 Mar 2026 15:51:27 +0100 Subject: [PATCH 49/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml index 6abab72d7..0fbfa0067 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml @@ -4,6 +4,6 @@ spack: commit: releases/v1.0 repo: https://github.com/spack/spack.git packages: - repo: https://github.com/spack/spack-packages.git + repo: https://github.com/msimberg/spack-packages.git commit: b49741c7c536246ca95762193100907befd06214 # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) From cbb476303935fd3efbe787a8530b102e3810a08a Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Tue, 10 Mar 2026 17:34:41 +0100 Subject: [PATCH 50/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml index 0fbfa0067..3b64e58cb 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml @@ -5,5 +5,5 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/msimberg/spack-packages.git - commit: b49741c7c536246ca95762193100907befd06214 # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm + commit: aws-ofi-nccl-with-rocm # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X) From 42564586497878784c05ff5b3f30ecc3b4efea7a Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Tue, 10 Mar 2026 17:37:26 +0100 Subject: [PATCH 51/55] Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 0893c48f4..2ff36d5d6 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -76,3 +76,7 @@ gcc-env: add_compilers: true prefix_paths: LD_LIBRARY_PATH: [lib, lib64] + env_vars: + set: + - NCCL_NET_PLUGIN: "ofi" + - HSA_NO_SCRATCH_RECLAIM: "1" From 77145a1b0389859cf918dc10787cffb8777beb3f Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Thu, 12 Mar 2026 17:29:20 +0100 Subject: [PATCH 52/55] Add netcdf and revert change to LD_PRELOAD to create usable uenv --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 4 ++++ .../7.1.0/amdgpu/repo/packages/hipsparse/package.py | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index 2ff36d5d6..b95dab85f 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -22,6 +22,10 @@ gcc-env: - osu-micro-benchmarks ~xccl - python@3 - zlib-ng + - netcdf-c + - netcdf-cxx + - netcdf-cxx4 + - netcdf-fortran # add GPU-specific packages here, for easier comparison with mc version - hip@7.1.0 ^mesa@23.3.6 - hipcub diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py index 81a3fc0f8..1aa72ab7d 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py @@ -129,8 +129,7 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: def setup_run_environment(self, env: EnvironmentModifications) -> None: # Avoid cupy import error due to missing rocsparse symbols if self.spec.satisfies("+rocm @6.4.1:"): - ... - # env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) + env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) def cmake_args(self): args = [ From 214056cedbc8d07667c8eb5ad049af00272f407e Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 18 Mar 2026 11:06:35 +0100 Subject: [PATCH 53/55] Disable LD_PRELOAD hack again --- .../7.1.0/amdgpu/repo/packages/hipsparse/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py index 1aa72ab7d..be3c3f307 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/package.py @@ -126,10 +126,10 @@ def setup_build_environment(self, env: EnvironmentModifications) -> None: if self.spec.satisfies("+asan"): self.asan_on(env) - def setup_run_environment(self, env: EnvironmentModifications) -> None: - # Avoid cupy import error due to missing rocsparse symbols - if self.spec.satisfies("+rocm @6.4.1:"): - env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) + # def setup_run_environment(self, env: EnvironmentModifications) -> None: + # # Avoid cupy import error due to missing rocsparse symbols + # if self.spec.satisfies("+rocm @6.4.1:"): + # env.prepend_path("LD_PRELOAD", self.spec["rocsparse"].prefix.lib.join("librocsparse.so")) def cmake_args(self): args = [ From ae15f13c119a0ac88ae42de09ff981c3675bf5b0 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Wed, 18 Mar 2026 11:07:33 +0100 Subject: [PATCH 54/55] Use cray-mpich 9.1 --- recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml index b95dab85f..8c4426be1 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml @@ -1,12 +1,12 @@ gcc-env: compiler: [gcc, llvm-amdgpu] network: - mpi: cray-mpich+rocm + mpi: cray-mpich@9.1 +rocm unify: when_possible duplicates: strategy: full specs: - - boost@1.88.0 +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer + - boost +chrono +filesystem +iostreams +mpi +python +regex +serialization +shared +system +timer - cmake - fftw - fmt From 23edcd9ad42a8fc3e92091ae6aa3e25956b186d8 Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Thu, 19 Mar 2026 12:03:25 +0100 Subject: [PATCH 55/55] Apply suggestion from @msimberg --- recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml index 3b64e58cb..77fae0799 100644 --- a/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml +++ b/recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml @@ -5,5 +5,5 @@ spack: repo: https://github.com/spack/spack.git packages: repo: https://github.com/msimberg/spack-packages.git - commit: aws-ofi-nccl-with-rocm # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm + commit: aws-ofi-nccl-with-rocm-old-develop # develop on 2025-12-19 + https://github.com/spack/spack-packages/compare/develop...msimberg:spack-packages:aws-ofi-nccl-with-rocm-old-develop description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X)