Skip to content
Open
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
0d1a2a8
Add rccl and rccl-tests to rocm uenv
msimberg Nov 14, 2025
be76c7f
Disable duplicates strategy for now
msimberg Nov 17, 2025
c58f3bd
Verify that we can't concretize with one cray-mpich
msimberg Nov 17, 2025
fe92e52
Merge remote-tracking branch 'origin/main' into prgenv-gnu-rocm-rccl-…
msimberg Nov 20, 2025
161e5e4
Enable duplicates:strategy:full again
msimberg Nov 20, 2025
bc2d134
Add prgenv-gnu rocm 7.0.2 uenv
msimberg Nov 20, 2025
9126f90
Update spack-packages
msimberg Nov 24, 2025
565dda6
Temporarily disable rocprofiler-systems
msimberg Nov 24, 2025
54f4b3a
Merge remote-tracking branch 'origin/main' into prgenv-gnu-rocm-7
msimberg Nov 26, 2025
4a7989e
Disable hipblaslt for now
msimberg Nov 26, 2025
c40da6f
Fix linaro forge config
msimberg Nov 26, 2025
47ff00f
Disable tensile temporarily
msimberg Nov 26, 2025
023d28e
Apply suggestion from @msimberg
msimberg Nov 28, 2025
de8e342
Try ROCm 7.1.0 from spack PR
iomaganaris Dec 15, 2025
cb127d1
Trying to fix hipblaslt
iomaganaris Dec 16, 2025
63cb72f
Fix 7.1.0 hipblaslt
iomaganaris Dec 16, 2025
71a0efb
Fix compiler version in yml file
iomaganaris Dec 16, 2025
ca3cd15
New try with fixes of clang-offload-bunder
iomaganaris Dec 19, 2025
7df04a7
Disable all the rocprofiler related packages
iomaganaris Dec 19, 2025
01633bc
Add unwind dependency to rocprofiler-register and use python 3.12.12 …
iomaganaris Dec 19, 2025
fccb073
cray-mpich@8.1.33
simonpintarelli Dec 23, 2025
8182e42
cray-mpich@8.1.33 in rccl-test dependencies
simonpintarelli Dec 23, 2025
069636e
Trying to enable rocprofiler-compute and -systems
iomaganaris Jan 8, 2026
d98ce89
Update py-dash recipe
iomaganaris Jan 8, 2026
5fa76aa
Trying to install all the profilers and fix issue with hipsparse not …
iomaganaris Jan 12, 2026
b78552e
Expose hsa-rocr-dev package and add miopen-hip
iomaganaris Jan 13, 2026
c4df8f7
Increase build CI timelimit
iomaganaris Jan 15, 2026
919305b
Try building hipsparse as static library to avoid issues in cupy
iomaganaris Jan 16, 2026
7e1a261
Trying to fix LD_PRELOAD use in rocprofiler-compute
iomaganaris Jan 19, 2026
2520ec1
Try to fix patch paths
iomaganaris Jan 19, 2026
a5ca1d5
Fix patch
iomaganaris Jan 19, 2026
7dc8f93
Add rocprof-trace-decoder library to rocprof-systems
iomaganaris Jan 22, 2026
ccb8410
Try fixing issue with rocsparse missing symbols in hipsparse
iomaganaris Jan 22, 2026
fcc19af
Enable trace decoder library
iomaganaris Jan 22, 2026
9efe30c
Fix trace decoder library path
iomaganaris Jan 27, 2026
386294f
Add the rocprof-trace-decoder package to the environment.yaml file to…
iomaganaris Feb 18, 2026
89f75bb
Merge remote-tracking branch 'origin/main' into prgenv-gnu-rocm-7
iomaganaris Feb 18, 2026
11f640e
Revert changes regarding the timeout
iomaganaris Feb 18, 2026
3973c92
Revert cray-mpich related changes
iomaganaris Feb 23, 2026
4a0ed6c
Renamed 25.12 to 7.1.0
iomaganaris Feb 23, 2026
f469554
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Feb 25, 2026
4717a64
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Feb 25, 2026
c1ae96d
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Feb 25, 2026
9fbc379
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Feb 25, 2026
aec1617
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Feb 25, 2026
5b990c6
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Mar 5, 2026
2156847
Update recipes/prgenv-gnu/7.1.0/amdgpu/repo/packages/hipsparse/packag…
msimberg Mar 9, 2026
cfae521
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Mar 9, 2026
a9fdeac
Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml
msimberg Mar 9, 2026
bb1cc13
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Mar 9, 2026
1e67647
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Mar 9, 2026
8a88033
Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml
msimberg Mar 9, 2026
cbb4763
Update recipes/prgenv-gnu/7.1.0/amdgpu/config.yaml
msimberg Mar 10, 2026
4256458
Update recipes/prgenv-gnu/7.1.0/amdgpu/environments.yaml
msimberg Mar 10, 2026
77145a1
Add netcdf and revert change to LD_PRELOAD to create usable uenv
iomaganaris Mar 12, 2026
214056c
Disable LD_PRELOAD hack again
msimberg Mar 18, 2026
ae15f13
Use cray-mpich 9.1
msimberg Mar 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ci/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
9 changes: 7 additions & 2 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -224,7 +224,7 @@ uenvs:
deploy:
daint: [gh200]
eiger: [zen2]
linaro_forge:
linaro-forge:
"25.1":
recipes:
zen2: "25.1"
Expand Down Expand Up @@ -324,6 +324,11 @@ uenvs:
santis: [gh200]
bristen: [a100]
eiger: [zen2]
"25.12":
recipes:
mi200: 25.12/amdgpu
deploy:
beverin: [mi200]
prgenv-nvfortran:
"24.11":
recipes:
Expand Down
4 changes: 4 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/compilers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
gcc:
version: "13"
llvm-amdgpu:
version: "7.1.0"
9 changes: 9 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
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: f941c2ba6edf03a7783138619aad104b6e8d543d # develop on 2025-12-19
description: GNU Compiler toolchain with cray-mpich, Python, CMake and other development tools for gfx90a, gfx942 (MI300A, MI250X)
78 changes: 78 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/environments.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
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@1.88.0 +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 ~xccl
- python@3
- 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
- rocblas ^py-msgpack %cxx=gcc
- rocfft
- rocm-cmake %cxx=gcc
- rocm-openmp-extras
- rocm-core %cxx=gcc
- rocminfo
- rocprim
- rocprofiler-dev
- rocprofiler-sdk
- rocprofiler-systems +internal-dyninst+internal-boost
- rocprofiler-compute
- rocrand
- rocsolver
- rocsparse
- rocthrust
- roctracer-dev-api %cxx=gcc
- roctracer-dev
- rocm-gdb
- rocm-debug-agent
# - hsa-rocr-dev # TODO(iomaganaris): enable for julia AMD gpu build
# hip packages
- hipblas
- hipblaslt
- hiprand
- hipsparse~shared-libs
- hipfft
- hipblas-common
# - miopen-hip # TODO(iomaganaris): enable for julia AMD gpu build
# 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
- ^python@3.12.12
views:
default:
link: roots
exclude: ["llvm"]
uenv:
add_compilers: true
prefix_paths:
LD_LIBRARY_PATH: [lib, lib64]
16 changes: 16 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/extra/reframe.yaml
Original file line number Diff line number Diff line change
@@ -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
23 changes: 23 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/modules.yaml
Original file line number Diff line number Diff line change
@@ -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}'
8 changes: 8 additions & 0 deletions recipes/prgenv-gnu/25.12/amdgpu/post-install
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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 $<BUILD_INTERFACE:${HIPBLAS-COMMON_INCLUDE_DIRS}>
+ 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")

Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
From 085d965e11cda1830cf325e0d12db3faf61a94d0 Mon Sep 17 00:00:00 2001
From: sreenivasa murthy kolam <sreenivasamurthy.kolam@amd.com>
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
$<BUILD_INTERFACE:${BLAS_INCLUDE_DIR}>
$<BUILD_INTERFACE:${BLIS_INCLUDE_DIR}> # may be blank if not used
$<BUILD_INTERFACE:${GTEST_INCLUDE_DIRS}>
+ $<BUILD_INTERFACE:${HIPBLAS_INCLUDE_DIRS}>
)
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

Original file line number Diff line number Diff line change
@@ -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"
)

Loading