From 6dac38da598c455603bae82417a32e30b8f9c6b0 Mon Sep 17 00:00:00 2001 From: Anthony Beerens Date: Thu, 31 Jul 2025 10:16:40 +0200 Subject: [PATCH 1/4] Add easyconfigs for ROCm using ROCm-LLVM toolchain --- .../AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb | 39 ++++++ .../b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb | 32 +++++ .../CppHeaderParser-2.7.4-GCCcore-13.3.0.eb | 35 +++++ .../g/glog/glog-0.7.1-GCCcore-13.3.0.eb | 33 +++++ .../h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb | 112 ++++++++++++++++ ...rect_paths_clang_and_rocm_agent_enum.patch | 57 ++++++++ .../hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb | 29 ++++ .../hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb | 38 ++++++ .../easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb | 24 ++++ .../msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb | 36 +++++ .../o/OpenSSL/OpenSSL-1.1.1-GCCcore-13.3.0.eb | 23 ++++ .../ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb | 39 ++++++ .../ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb | 32 +++++ .../ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb | 124 ++++++++++++++++++ .../ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb | 38 ++++++ ...ofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb | 47 +++++++ ...OCm-6.4.1_disable_packaging_external.patch | 30 +++++ 17 files changed, 768 insertions(+) create mode 100644 easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/g/glog/glog-0.7.1-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch create mode 100644 easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/o/OpenSSL/OpenSSL-1.1.1-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch diff --git a/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..8788f27656a --- /dev/null +++ b/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,39 @@ +easyblock = 'CMakeMake' + +name = 'AMDSMI' +version = '6.4.1' + +homepage = 'https://github.com/ROCm/amdsmi' +description = """The AMD System Management Interface (AMD SMI) library offers a unified tool +for managing and monitoring GPUs, particularly in high-performance computing environments. +It provides a user-space interface that allows applications to control GPU operations, +monitor performance, and retrieve information about the system's drivers and GPUs.""" +docurls = ['https://rocmdocs.amd.com/projects/amdsmi/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ['rocm-%(version)s.tar.gz'] +checksums = ['5e1030cebacf2c92e63a555db6433ce7bb4f91409910ec98947e459d36630401'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('libdrm', '2.4.122'), + ('Python', '3.12.3'), + ('PyYAML', '6.0.2'), +] + +sanity_check_paths = { + 'files': ['bin/amd-smi', 'libexec/amdsmi_cli/amdsmi_cli.py', 'lib/libamd_smi.%s' % SHLIB_EXT, + f'lib/libgoamdsmi_shim64.{SHLIB_EXT}'], + 'dirs': ['include/amd_smi'], +} +sanity_check_commands = ['amd-smi --help'] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..28ac1632d8d --- /dev/null +++ b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,32 @@ +name = 'Boost' +version = '1.85.0' + +homepage = 'https://www.boost.org/' +description = """Boost provides free peer-reviewed portable C++ source libraries.""" + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchainopts = {'pic': True} + +source_urls = ['https://archives.boost.io/release/%(version)s/source/'] +sources = ['%%(namelower)s_%s.tar.gz' % '_'.join(version.split('.'))] +patches = ['Boost-1.85.0_fix-ppc-charconv.patch'] +checksums = [ + 'be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b', + {'Boost-1.85.0_fix-ppc-charconv.patch': 'bb392cc087fe4951e2c427731020b541c3258ec75f113524303dfb44624f98bc'}, +] + +dependencies = [ + ('bzip2', '1.0.8'), + ('zlib', '1.3.1'), + ('XZ', '5.4.5'), + ('zstd', '1.5.6'), + ('ICU', '75.1'), +] + +configopts = '--without-libraries=python,mpi' + +# disable MPI, build Boost libraries with tagged layout +boost_mpi = False +tagged_layout = True + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..8acf2f4299a --- /dev/null +++ b/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb @@ -0,0 +1,35 @@ +easyblock = 'PythonBundle' + +name = 'CppHeaderParser' +version = '2.7.4' + +homepage = 'https://senexcanis.com/open-source/cppheaderparser' +description = """CppHeaderParser is a pure python module that will parse C++ +header files and generate a data structure representing the class.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +dependencies = [ + ('binutils', '2.42'), + ('Python', '3.12.3'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('ply', '3.11', { + 'checksums': ['00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3'], + }), + (name, version, { + 'modulename': False, + 'checksums': ['382b30416d95b0a5e8502b214810dcac2a56432917e2651447d3abe253e3cc42'], + }), +] + +fix_python_shebang_for = [ + 'lib/python%(pyshortver)s/site-packages/CppHeaderParser/*.py', + 'lib/python%(pyshortver)s/site-packages/CppHeaderParser/examples/*.py', +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/g/glog/glog-0.7.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/glog/glog-0.7.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..b59788a4f54 --- /dev/null +++ b/easybuild/easyconfigs/g/glog/glog-0.7.1-GCCcore-13.3.0.eb @@ -0,0 +1,33 @@ +easyblock = 'CMakeMake' + +name = 'glog' +version = '0.7.1' + +homepage = 'https://github.com/google/glog' +description = "A C++ implementation of the Google logging module." + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'cstd': 'c++14'} + +source_urls = ['https://github.com/google/glog/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['00e4a87e87b7e7612f519a41e491f16623b12423620006f59f5688bfd8d13b08'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +dependencies = [ + ('gflags', '2.2.2'), + ('libunwind', '1.8.1'), +] + +configopts = '-DBUILD_SHARED_LIBS=ON ' + +sanity_check_paths = { + 'files': ['include/glog/logging.h', 'include/glog/raw_logging.h', 'lib/libglog.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'devel' diff --git a/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..2bfcd3616d9 --- /dev/null +++ b/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,112 @@ +easyblock = 'Bundle' + +name = 'HIP' +_rocm_version = '6.4.1' +version = _rocm_version + +homepage = 'https://github.com/ROCm/HIP' +description = """HIP is a C++ Runtime API and Kernel Language that allows +developers to create portable applications for AMD and NVIDIA GPUs from single +source code.""" +docurls = ['https://rocmdocs.amd.com/projects/HIP/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('CppHeaderParser', '2.7.4'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('libxml2', '2.12.7'), + ('numactl', '2.0.18'), + ('Perl', '5.38.2'), + ('libglvnd', '1.7.0'), + ('ROCmInfo', '%(version)s'), + ('ROCm-CMake', '%(version)s'), + ('ROCprofiler-register', '%(version)s'), +] + +default_easyblock = 'CMakeMake' + +components = [ + ('HIPCC', 'rocm-%s' % _rocm_version, { + 'sources': [ + { + 'source_urls': ['https://github.com/ROCm/llvm-project/archive/'], + 'download_filename': '%(version)s.tar.gz', + 'filename': 'llvm-project-%(version)s.tar.gz', + 'alt_location': 'ROCm-LLVM', + 'extract_cmd': 'tar xfz %s && mv llvm-project-%(version)s llvm-project-%(version)s.src', + }, + ], + 'patches': [('HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch', + 'llvm-project-%(version)s.src')], + 'checksums': [ + # llvm-project-rocm-6.4.1.tar.gz + '460ad28677092b9eb86ffdc49bcb4d01035e32b4f05161d85f90c9fa80239f50', + # HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch + 'ab58ee1bae0b5c4cec293063758da119dd6c90f944e6821141205dfe1bdbb47e', + ], + 'srcdir': 'llvm-project-%(version)s.src/amd/hipcc', + }), + ('HIP', 'rocm-%s' % _rocm_version, { + 'sources': [ + { + 'source_urls': ['https://github.com/ROCm/clr/archive/'], + 'download_filename': '%(version)s.tar.gz', + 'filename': 'clr-%(version)s.tar.gz', + }, + { + 'source_urls': ['https://github.com/ROCm/HIP/archive/'], + 'download_filename': '%(version)s.tar.gz', + 'filename': 'HIP-%(version)s.tar.gz', + }, + ], + 'checksums': [ + '18ee75a04f6fc55e72f8b3fcad1e0d58eceb2ce0e0696ca76d9b3dfaf4bfd7ff', # clr-rocm-6.4.1.tar.gz + 'f26f098b08504636c6f4e1da45b162f1df2ce6608eba85606fa7932d8fea960f', # HIP-rocm-6.4.1.tar.gz + ], + 'srcdir': 'clr-rocm-%s' % _rocm_version, + 'configopts': '-DHIP_COMMON_DIR=%(builddir)s/hip-%(version)s/ -DHIP_PLATFORM=amd ' + + '-DHIPCC_BIN_DIR=%(installdir)s/bin -DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF' + }), +] + +sanity_check_paths = { + 'files': ['bin/%s' % x for x in ['hipcc', 'hipcc.pl', 'hipconfig', 'hipconfig.pl']] + + ['bin/%s' % x for x in ['roc-obj', 'roc-obj-extract', 'roc-obj-ls']] + + ['include/hip/hip_common.h', 'include/hip/hip_runtime.h', 'lib/libamdhip64.%s' % SHLIB_EXT], + 'dirs': [], +} +sanity_check_commands = [ + 'hipcc --help', + 'hipconfig --full' +] + +modextravars = { + 'HIP_COMPILER': 'clang', + 'HIP_INCLUDE_PATH': '%(installdir)s/include', + 'HIP_LIB_PATH': '%(installdir)s/lib', + 'HIP_PATH': '%(installdir)s', + 'HIP_RUNTIME': 'rocclr', + 'ROCM_PATH': '%(installdir)s', +} + +modluafooter = """ +setenv("DEVICE_LIB_PATH", os.getenv("EBROOTROCMMINLLVM") .. "/amdgcn/bitcode") +setenv("HIP_CLANG_INCLUDE_PATH", os.getenv("EBROOTROCMMINLLVM") .. "/include") +setenv("HIP_CLANG_PATH", os.getenv("EBROOTROCMMINLLVM") .. "/bin") +setenv("HSA_PATH", os.getenv("EBROOTROCMMINLLVM")) +""" + +modtclfooter = """ +setenv DEVICE_LIB_PATH $::env(EBROOTROCMMINLLVM)/amdgcn/bitcode +setenv HIP_CLANG_INCLUDE_PATH $::env(EBROOTROCMMINLLVM)/include +setenv HIP_CLANG_PATH $::env(EBROOTROCMMINLLVM)/bin +setenv HSA_PATH $::env(EBROOTROCMMINLLVM) +""" + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch b/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch new file mode 100644 index 00000000000..5811bfea6a0 --- /dev/null +++ b/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch @@ -0,0 +1,57 @@ +From 8d2e14328cd99bbad2eaa498c207cf41f688fc30 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Mon, 23 Sep 2024 10:34:16 +0000 +Subject: [PATCH] Use the rocminfo_path and hipclang_path inside the hipcc.pl + and hipbin_amd.h + +--- + amd/hipcc/bin/hipcc.pl | 9 ++++++--- + amd/hipcc/src/hipBin_amd.h | 2 +- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/amd/hipcc/bin/hipcc.pl b/amd/hipcc/bin/hipcc.pl +index 27839e5..fcb8d4e 100755 +--- a/amd/hipcc/bin/hipcc.pl ++++ b/amd/hipcc/bin/hipcc.pl +@@ -160,11 +160,13 @@ if ($HIP_PLATFORM eq "amd") { + if($isWindows) { + $execExtension = ".exe"; + } +- $HIPCC=get_normalized_path("$HIP_CLANG_PATH/clang++" . $execExtension); ++ # hip_clang_path is set inside the hip recipe ++ $HIP_CLANG_PATH= $ENV{'HIP_CLANG_PATH'}; ++ $HIPCC="${HIP_CLANG_PATH}/clang++" . $execExtension; + + # If $HIPCC clang++ is not compiled, use clang instead + if ( ! -e $HIPCC ) { +- $HIPCC=get_normalized_path("$HIP_CLANG_PATH/clang" . $execExtension); ++ $HIPCC="${HIP_CLANG_PATH}/clang" . $execExtension; + $HIPLDFLAGS = "--driver-mode=g++"; + } + # to avoid using dk linker or MSVC linker +@@ -480,7 +482,8 @@ if($HIP_PLATFORM eq "amd"){ + $targetsStr = $ENV{HCC_AMDGPU_TARGET}; + } elsif (not $isWindows) { + # Else try using rocm_agent_enumerator +- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator"; ++ $ROCMINFO_PATH = $ENV{'EBROOTROCMINFO'} // $ROCMINFO_PATH; ++ $ROCM_AGENT_ENUM = "${EBROOTROCMINFO}/bin/rocm_agent_enumerator"; + $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`; + $targetsStr =~ s/\n/,/g; + } +diff --git a/amd/hipcc/src/hipBin_amd.h b/amd/hipcc/src/hipBin_amd.h +index 57d0098..d53d081 100644 +--- a/amd/hipcc/src/hipBin_amd.h ++++ b/amd/hipcc/src/hipBin_amd.h +@@ -752,7 +752,7 @@ void HipBinAmd::executeHipCCCmd(vector argv) { + } else if (os != windows) { + // Else try using rocm_agent_enumerator + string ROCM_AGENT_ENUM; +- ROCM_AGENT_ENUM = roccmPath + "/bin/rocm_agent_enumerator"; ++ ROCM_AGENT_ENUM = string(getenv("EBROOTROCMINFO")) + "/bin/rocm_agent_enumerator"; + targetsStr = ROCM_AGENT_ENUM +" -t GPU"; + SystemCmdOut sysOut = hipBinUtilPtr_->exec(targetsStr.c_str()); + regex toReplace("\n+"); +-- +2.39.3 + diff --git a/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..d6670001f72 --- /dev/null +++ b/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,29 @@ +easyblock = 'CMakeMake' + +name = 'hipBLAS-common' +version = '6.4.1' + +homepage = 'https://github.com/ROCm/hipBLAS-common' +description = """hipBLAS-common is a header-only library that provides common files for hipBLAS and hipBLASLt.""" + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ['rocm-%(version)s.tar.gz'] +checksums = ['ba3cb314ceab9183aeac851e536c5d143933986f3099533edd327ffeb4b48e9b'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +sanity_check_paths = { + 'files': ['lib/cmake/hipblas-common/hipblas-common-config.cmake', + 'include/hipblas-common/hipblas-common.h'], + 'dirs': ['lib/cmake/hipblas-common', + 'share/doc/hipblas-common', + 'include/hipblas-common'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..4132f13277f --- /dev/null +++ b/easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,38 @@ +easyblock = 'CMakeMake' + +name = 'hipRAND' +version = '6.4.1' + +homepage = 'https://github.com/ROCm/hipRAND' +description = """hipRAND is a RAND marshalling library with multiple supported backends. +It sits between your application and the backend RAND library, where it marshals inputs +to the backend and results to the application. hipRAND exports an interface that doesn't +require the client to change, regardless of the chosen backend.""" +docurls = ['https://rocm.docs.amd.com/projects/hipRAND/en/latest/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ['rocm-%(version)s.tar.gz'] +checksums = ['6310b63c31c68e454f6498f06679843bdbd27e1eca0fd40ed1700cae9fce88e0'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] +dependencies = [ + ('HIP', '%(version)s'), + ('rocRAND', '%(version)s'), +] + +sanity_check_paths = { + 'files': ['lib/libhiprand.so', + 'lib/cmake/hiprand/hiprand-config.cmake', + 'include/hiprand/hiprand.hpp'], + 'dirs': ['lib/cmake/hiprand', + 'share/doc/hiprand', + 'include/hiprand'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..28866df99bc --- /dev/null +++ b/easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,24 @@ +easyblock = 'Bundle' + +name = 'LLVMtc' +version = 'ROCm-6.4.1' + +homepage = 'https://github.com/ROCm/llvm-project' +description = """ROCm-LLVM is an open source Clang/LLVM based compiler. +It is an AMD Fork of The LLVM Compiler Infrastructure, and aims to contain all of upstream LLVM. +It also includes several AMD-specific additions in the llvm-project/amd directory.""" +docurls = ['https://rocmdocs.amd.com'] + +toolchain = SYSTEM + +local_gcc_version = '13.3.0' + +dependencies = [ + ('ROCm-LLVM', version, '', ('GCCcore', local_gcc_version)), +] + +altroot = 'ROCm-LLVM' +altversion = 'ROCm-LLVM' + +# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS) +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..3d8fb911399 --- /dev/null +++ b/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,36 @@ +easyblock = 'CMakeMake' + +name = 'msgpack-cxx' +version = '7.0.0' + +homepage = 'http://msgpack.org/' +description = """MessagePack is an efficient binary serialization format, which lets you exchange +data among multiple languages like JSON, except that it's faster and smaller. +Small integers are encoded into a single byte while typical short strings +require only one extra byte in addition to the strings themselves.""" + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +source_urls = ['https://github.com/msgpack/msgpack-c/releases/download/cpp-%(version)s'] +sources = ['msgpack-cxx-%(version)s.tar.gz'] +checksums = ['7504b7af7e7b9002ce529d4f941e1b7fb1fb435768780ce7da4abaac79bb156f'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('googletest', '1.15.2'), +] + +dependencies = [ + ('Boost', '1.85.0') +] + +sanity_check_paths = { + 'files': [ + ['lib/cmake/msgpack-cxx/msgpack-cxx-config.cmake'], + ['include/msgpack.hpp'] + ], + 'dirs': ['include/msgpack'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/o/OpenSSL/OpenSSL-1.1.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/o/OpenSSL/OpenSSL-1.1.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..c2a6003b873 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenSSL/OpenSSL-1.1.1-GCCcore-13.3.0.eb @@ -0,0 +1,23 @@ +name = 'OpenSSL' +version = '1.1.1' + +homepage = 'https://www.openssl.org/' +description = """The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, + and Open Source toolchain implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) + protocols as well as a full-strength general purpose cryptography library. """ + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = ['https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1/'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d'] + +dependencies = [('zlib', '1.3.1')] + +builddependencies = [ + ('Perl', '5.38.2'), + ('binutils', '2.42'), +] + +moduleclass = 'system' diff --git a/easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..7029fec5ad8 --- /dev/null +++ b/easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,39 @@ +easyblock = 'CMakeMake' + +name = 'ROCTracer' +version = '6.4.1' + +homepage = 'https://github.com/ROCm/roctracer' +description = """ROCM cmake modules provides cmake modules for common build +tasks needed for the ROCM software stack""" +docurls = ['https://rocm.docs.amd.com/projects/roctracer/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ['rocm-%(version)s.tar.gz'] +checksums = ['57d61441d95b05b12cd05210a80d81cd1d7a21dab7487680897427dfbdafddca'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('CppHeaderParser', '2.7.4'), + ('Doxygen', '1.11.0'), + ('Python', '3.12.3'), +] +dependencies = [ + ('HIP', '%(version)s'), +] + +sanity_check_paths = { + 'files': ['lib/libroctracer64.so', + 'lib/libroctx64.so', + 'lib/roctracer/libroctracer_tool.so', + 'include/roctracer/roctx.h', + 'include/roctracer/roctracer.h'], + 'dirs': ['lib/roctracer', + 'include/roctracer'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..bdb65de4c4c --- /dev/null +++ b/easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,32 @@ +easyblock = 'CMakeMake' + +name = 'ROCm-CMake' +version = '6.4.1' + +homepage = 'https://github.com/ROCm/rocm-cmake' +description = """ROCM cmake modules provides cmake modules for common build +tasks needed for the ROCM software stack""" +docurls = ['https://rocm.docs.amd.com/projects/ROCmCMakeBuildTools/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ['rocm-%(version)s.tar.gz'] +checksums = ['d6dfa862009d593f4d334e0c6da9ac52b228e52bb3b38b53405975f28087ca2f'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +sanity_check_paths = { + 'files': ['share/rocm/cmake/ROCMConfig.cmake', 'share/rocm/cmake/ROCMConfigVersion.cmake', + 'share/rocmcmakebuildtools/cmake/ROCMChecks.cmake', + 'share/rocmcmakebuildtools/cmake/ROCMCppCheck.cmake', + 'share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake', + 'share/rocmcmakebuildtools/cmake/ROCMSetupVersion.cmake'], + 'dirs': ['share/rocm/cmake'], +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb new file mode 100644 index 00000000000..04ab93870c2 --- /dev/null +++ b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb @@ -0,0 +1,124 @@ +easyblock = 'Bundle' + +name = 'ROCm-LLVM' +version = 'ROCm-6.4.1' +_rocm_version = '6.4.1' +_llvm_version = '19.0.0' + +homepage = 'https://github.com/ROCm/llvm-project' +description = """ROCm-LLVM is an open source Clang/LLVM based compiler. +It is an AMD Fork of The LLVM Compiler Infrastructure, and aims to contain all of upstream LLVM. +It also includes several AMD-specific additions in the llvm-project/amd directory.""" +docurls = ['https://rocmdocs.amd.com'] + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +builddependencies = [ + ('CMake', '3.29.3'), + ('Perl', '5.38.2'), + ('Python', '3.12.3'), + ('pkgconf', '2.2.0'), + ('xxd', '9.1.1275'), +] + +dependencies = [ + ('binutils', '2.42'), + ('elfutils', '0.191'), + ('zlib', '1.3.1'), + ('hwloc', '2.10.0'), + ('GMP', '6.3.0'), + ('libxml2', '2.12.7'), + ('ncurses', '6.5'), + ('libffi', '3.4.5'), + ('libdrm', '2.4.122'), + ('numactl', '2.0.18'), +] + +local_rocm_llvm_source = 'llvm-project-rocm-%s.tar.gz' % _rocm_version +local_common_cmake_configopts = ' '.join([ + '-DCMAKE_C_COMPILER=%(installdir)s/bin/clang', + '-DCMAKE_CXX_COMPILER=%(installdir)s/bin/clang++', + '-DLLVM_INSTALL_PREFIX=%(installdir)s', + '-DLLVM_DIR=%(installdir)s/lib/cmake/llvm', +]) + +checksums = [{ + 'llvm-project-rocm-6.4.1.tar.gz': + '460ad28677092b9eb86ffdc49bcb4d01035e32b4f05161d85f90c9fa80239f50', + 'ROCR-Runtime-rocm-6.4.1.tar.gz': + 'f72d100a46a2dd9f4c870cef156604777f1bdb1841df039d14bf37b19814b9da', + 'aomp-extras-rocm-6.4.1.tar.gz': + 'cf20b02b1f99f506c198866ef03f2265dc355627760f82cda3878d5bc6486afc', +}] + +default_easyblock = 'CMakeMake' + +default_component_specs = { + 'source_urls': ['https://github.com/ROCm/%(name)s/archive/'], + 'sources': [{ + 'download_filename': '%(version)s.tar.gz', + 'filename': '%(name)s-%(version)s.tar.gz', + }], + 'srcdir': '%(name)s-%(version)s', +} + +components = [ + ('llvm-project', '%s-rocm-%s' % (_llvm_version, _rocm_version), { + 'easyblock': 'EB_ROCm_minus_LLVM', + 'sources': [{ + 'download_filename': 'rocm-%s.tar.gz' % _rocm_version, + 'filename': local_rocm_llvm_source, + 'extract_cmd': 'tar xfz %%s && mv %%(name)s-rocm-%s %%(name)s-%%(version)s.src' % _rocm_version, + }], + 'start_dir': f'llvm-project-{_llvm_version}-rocm-{_rocm_version}.src', + 'bootstrap': True, + 'build_lld': True, + 'build_clang_extras': True, + 'build_openmp_offload': False, + 'build_openmp_tools': False, + 'build_runtimes': True, + 'full_llvm': False, + 'skip_all_tests': True, + }), + ('ROCm-comgr', 'rocm-%s' % _rocm_version, { + 'sources': [{'filename': local_rocm_llvm_source, 'extract_cmd': 'echo %s'}], + 'srcdir': 'llvm-project-%s-%%(version)s.src/amd/comgr' % _llvm_version, + 'prebuildopts': 'export ROCM_PATH=%(installdir)s && ', + 'configopts': local_common_cmake_configopts + ' -DROCM_DIR=%(installdir)s/share/rocm/cmake' + }), + ('ROCR-Runtime', 'rocm-%s' % _rocm_version, { + 'srcdir': '%(name)s-%(version)s', + 'configopts': local_common_cmake_configopts + ' -DBUILD_SHARED_LIBS=ON', + }), + ('llvm-project-openmp', '%s-rocm-%s' % (_llvm_version, _rocm_version), { + 'easyblock': 'EB_ROCm_minus_LLVM', + 'sources': [{ + 'download_filename': 'rocm-%s.tar.gz' % _rocm_version, + 'filename': local_rocm_llvm_source, + 'extract_cmd': 'echo %s', + }], + 'start_dir': f'llvm-project-{_llvm_version}-rocm-{_rocm_version}.src', + 'bootstrap': True, + 'build_lld': True, + 'build_clang_extras': True, + 'build_openmp_offload': True, + 'build_openmp_tools': True, + 'build_runtimes': True, + 'full_llvm': False, + 'skip_all_tests': True, + }), + ('aomp-extras', 'rocm-%s' % _rocm_version, { + 'configopts': + local_common_cmake_configopts + + ' -DAOMP_STANDALONE_BUILD=0 ' + '-DAOMP_VERSION_STRING=%s ' % _rocm_version + }), +] + +sanity_check_components = ['llvm-project'] + +modextravars = { + 'HIP_DEVICE_LIB_PATH': '%(installdir)s/amdgcn/bitcode', +} + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..3ea4d5a209d --- /dev/null +++ b/easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,38 @@ +easyblock = 'CMakeMake' + +name = 'ROCmInfo' +version = '6.4.1' + +homepage = 'https://github.com/RadeonOpenCompute/rocminfo' +description = """ROCm Application for Reporting System Info""" +docurls = ['https://rocm.docs.amd.com/projects/rocminfo/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ["rocm-%(version)s.tar.gz"] +checksums = ['eabbe4bfb29152900bbde812c6fffd5555b45842259242d85f29e449c00f3249'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] +dependencies = [ + ('Python', '3.12.3'), +] + +configopts = "-DCMAKE_EXE_LINKER_FLAGS='-Wl,--disable-new-dtags'" +configopts += " -DROCRTST_BLD_TYPE=Release" +configopts += " -DROCM_DIR=%(installdir)s" + +sanity_check_paths = { + 'files': ['bin/rocminfo', 'bin/rocm_agent_enumerator'], + 'dirs': [], +} +sanity_check_commands = [ + 'rocminfo --help', + 'rocm_agent_enumerator' +] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb new file mode 100644 index 00000000000..b247e26a05a --- /dev/null +++ b/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb @@ -0,0 +1,47 @@ +easyblock = 'CMakeMake' + +name = 'ROCprofiler-register' +version = '6.4.1' + +homepage = 'https://github.com/RadeonOpenCompute/rocprofiler-register' +description = """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. The purpose of this library is to provide a consistent and automated +mechanism of enabling performance analysis in the ROCm runtimes which does not rely on +environment variables or unique methods for each runtime library.""" +docurls = ['https://rocm.docs.amd.com/projects/rocprofiler-register/'] + +toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = ["rocm-%(version)s.tar.gz"] +patches = ['ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch'] +checksums = [ + # rocm-6.4.1.tar.gz + 'bb8a55d73049f433c039300357713e040ba5b37ed5490336fae435385d09e596', + # ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch + '2ef7373721a907ad133a8b21e1a77e3009937b21865d2f49b7362bfbb864695d', +] + +configopts = '-DROCPROFILER_REGISTER_BUILD_GLOG=OFF -DROCPROFILER_REGISTER_BUILD_FMT=OFF ' + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('git', '2.45.1'), +] + +dependencies = [ + ('fmt', '11.0.2'), + ('glog', '0.7.1'), +] + +sanity_check_paths = { + 'files': ['lib/librocprofiler-register.so', + 'include/rocprofiler-register/rocprofiler-register.h'], + 'dirs': ['lib/cmake/rocprofiler-register', + 'include/rocprofiler-register/',], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch b/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch new file mode 100644 index 00000000000..93b87da9901 --- /dev/null +++ b/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch @@ -0,0 +1,30 @@ +Disable packaging settings to avoid CPack command error. +Also explicitly search for required packages, as targets are +not correctly exported from external subdirectory. + +Author: Jan Andre Reuter (jan@zyten.de) + +diff --color -Naur rocprofiler-register-rocm-6.4.1.orig/CMakeLists.txt rocprofiler-register-rocm-6.4.1/CMakeLists.txt +--- rocprofiler-register-rocm-6.4.1.orig/CMakeLists.txt 2025-02-18 01:53:49.000000000 +0100 ++++ rocprofiler-register-rocm-6.4.1/CMakeLists.txt 2025-06-16 17:27:10.986677141 +0200 +@@ -100,7 +100,9 @@ + enable_testing() + include(CTest) + +-add_subdirectory(external) ++# add_subdirectory(external) ++find_package(fmt REQUIRED) ++find_package(glog REQUIRED) + add_subdirectory(source) + + include(rocprofiler_register_config_install) +@@ -113,6 +115,8 @@ + add_subdirectory(samples) + endif() + +-include(rocprofiler_register_config_packaging) ++# Disable packaging for EasyBuild, as bugged (CPack is imported too late) ++# and since we will not build Debian or RHEL packages. ++# include(rocprofiler_register_config_packaging) + + rocprofiler_register_print_features() From d62accf9a1f7a3e05ec13d6ab177dea1a41d3c9c Mon Sep 17 00:00:00 2001 From: Anthony Beerens Date: Thu, 7 Aug 2025 15:18:04 +0200 Subject: [PATCH 2/4] First set of fixes after discussion --- .../AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb | 39 ---- ...amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb | 74 +++++++ .../CppHeaderParser-2.7.4-GCCcore-13.3.0.eb | 3 - ...m-6.4.1.eb => LLVMtc-19.0.0-ROCm-6.4.1.eb} | 6 +- ...0.eb => ROCm-LLVM-6.4.1-GCCcore-13.3.0.eb} | 7 +- ...lvm-project-19.0.0_fix-offload-build.patch | 209 ++++++++++++++++++ ...cmake-0.14.0-GCCcore-13.3.0-ROCm-6.4.1.eb} | 10 +- ...cminfo-1.5.0-GCCcore-13.3.0-ROCm-6.4.1.eb} | 10 +- 8 files changed, 305 insertions(+), 53 deletions(-) delete mode 100644 easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb create mode 100644 easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb rename easybuild/easyconfigs/l/LLVMtc/{LLVMtc-ROCm-6.4.1.eb => LLVMtc-19.0.0-ROCm-6.4.1.eb} (80%) rename easybuild/easyconfigs/r/ROCm-LLVM/{ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb => ROCm-LLVM-6.4.1-GCCcore-13.3.0.eb} (93%) create mode 100644 easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch rename easybuild/easyconfigs/r/{ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb => rocm-cmake/rocm-cmake-0.14.0-GCCcore-13.3.0-ROCm-6.4.1.eb} (82%) rename easybuild/easyconfigs/r/{ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb => rocminfo/rocminfo-1.5.0-GCCcore-13.3.0-ROCm-6.4.1.eb} (80%) diff --git a/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb deleted file mode 100644 index 8788f27656a..00000000000 --- a/easybuild/easyconfigs/a/AMDSMI/AMDSMI-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ /dev/null @@ -1,39 +0,0 @@ -easyblock = 'CMakeMake' - -name = 'AMDSMI' -version = '6.4.1' - -homepage = 'https://github.com/ROCm/amdsmi' -description = """The AMD System Management Interface (AMD SMI) library offers a unified tool -for managing and monitoring GPUs, particularly in high-performance computing environments. -It provides a user-space interface that allows applications to control GPU operations, -monitor performance, and retrieve information about the system's drivers and GPUs.""" -docurls = ['https://rocmdocs.amd.com/projects/amdsmi/'] - -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} - -github_account = 'ROCm' -source_urls = [GITHUB_SOURCE] -sources = ['rocm-%(version)s.tar.gz'] -checksums = ['5e1030cebacf2c92e63a555db6433ce7bb4f91409910ec98947e459d36630401'] - -builddependencies = [ - ('binutils', '2.42'), - ('CMake', '3.29.3'), - ('pkgconf', '2.2.0'), -] - -dependencies = [ - ('libdrm', '2.4.122'), - ('Python', '3.12.3'), - ('PyYAML', '6.0.2'), -] - -sanity_check_paths = { - 'files': ['bin/amd-smi', 'libexec/amdsmi_cli/amdsmi_cli.py', 'lib/libamd_smi.%s' % SHLIB_EXT, - f'lib/libgoamdsmi_shim64.{SHLIB_EXT}'], - 'dirs': ['include/amd_smi'], -} -sanity_check_commands = ['amd-smi --help'] - -moduleclass = 'tools' diff --git a/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb b/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb new file mode 100644 index 00000000000..ff4b26d9df9 --- /dev/null +++ b/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb @@ -0,0 +1,74 @@ +easyblock = 'CMakeMake' + +name = 'amdsmi' +version = '25.4.2' +_rocm_version = '6.4.1' +# amdsmi includes esmi as a component, which needs to be copied into the amdsmi sources. +# Required version can be found in amdsmi/CMakeLists.txt by searching for current_esmi_tag. +_esmi_version = '4.1.2' +versionsuffix = f'-ROCm-{_rocm_version}' + +homepage = 'https://github.com/ROCm/amdsmi' +description = """ +The AMD System Management Interface (AMD SMI) library offers a unified tool for managing and monitoring +GPUs, particularly in high-performance computing environments. It provides a user-space interface that +allows applications to control GPU operations, monitor performance, and retrieve information about the +system's drivers and GPUs.""" +docurls = ['https://rocm.docs.amd.com/projects/amdsmi/en/latest/'] + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [ + 'https://github.com/ROCm/amdsmi/archive/refs/tags/', + 'https://github.com/amd/esmi_ib_library/archive/refs/tags/' +] +sources = [ + f'rocm-{_rocm_version}.tar.gz', + f'esmi_pkg_ver-{_esmi_version}.tar.gz', +] +patches = ['amdsmi-25.4.2_handle-non-standard-rocm-paths.patch'] +checksums = [ + {'rocm-6.4.1.tar.gz': + '5e1030cebacf2c92e63a555db6433ce7bb4f91409910ec98947e459d36630401'}, + {'esmi_pkg_ver-4.1.2.tar.gz': + 'd95f12c1500c60dc01b500d8928864a276757bd3bbb4a6daa84fb8c028e2978b'}, + {'amdsmi-25.4.2_handle-non-standard-rocm-paths.patch': + '97b9067a7702d8131b4c25fba990ebfa538a08de3180c5898271591470ea8d80'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('pkgconf', '2.2.0'), + # Needed as amdsmi tries to find git to determine commit hash it was built from + ('git', '2.49.0'), + ('libdrm', '2.4.122'), +] + +dependencies = [ + ('Python', '3.12.3'), # Needed as amdsmi is a python script +] + +preconfigopts = (f"cp -r %(builddir)s/esmi_ib_library-esmi_pkg_ver-{_esmi_version} " + f"%(builddir)s/amdsmi-rocm-{_rocm_version}/esmi_ib_library && ") + +sanity_check_paths = { + 'files': [f'lib/libamd_smi.{SHLIB_EXT}', + 'include/amd_smi/amdsmi.h'], + 'dirs': ['lib/cmake/amd_smi', + 'share/doc/amd_smi'] +} + +# Sanity check commands require kernel drivers to be loaded. +# The command itself will result in an exit code of non-zero, therefore try to grep +# the tool version, which is always present. +# Trying any amd-smi command without the correct kernel drivers loaded will fail with: +# ERROR:root:Unable to get devices, driver not initialized (amdgpu not found in modules) +# ERROR:root:Unable to detect any GPU devices, check amdgpu version and module status (sudo modprobe amdgpu) +# ERROR:root:Unable to detect any CPU devices, check amd_hsmp version and module status (sudo modprobe amd_hsmp) +# AMDSMI Tool: 25.4.2+unknown | AMDSMI Library version: 25.4.0 | ROCm version: N/A +sanity_check_commands = [ + f'amd-smi version | grep "AMDSMI Tool: {version}"', +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb index 8acf2f4299a..8cfe727c62b 100644 --- a/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb +++ b/easybuild/easyconfigs/c/CppHeaderParser/CppHeaderParser-2.7.4-GCCcore-13.3.0.eb @@ -14,9 +14,6 @@ dependencies = [ ('Python', '3.12.3'), ] -use_pip = True -sanity_pip_check = True - exts_list = [ ('ply', '3.11', { 'checksums': ['00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3'], diff --git a/easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/l/LLVMtc/LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 80% rename from easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/l/LLVMtc/LLVMtc-19.0.0-ROCm-6.4.1.eb index 28866df99bc..6dde635d996 100644 --- a/easybuild/easyconfigs/l/LLVMtc/LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/l/LLVMtc/LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,7 +1,9 @@ easyblock = 'Bundle' name = 'LLVMtc' -version = 'ROCm-6.4.1' +version = '19.0.0' +_rocm_version = '6.4.1' +version_suffix = f'-ROCm-{_rocm_version}' homepage = 'https://github.com/ROCm/llvm-project' description = """ROCm-LLVM is an open source Clang/LLVM based compiler. @@ -14,7 +16,7 @@ toolchain = SYSTEM local_gcc_version = '13.3.0' dependencies = [ - ('ROCm-LLVM', version, '', ('GCCcore', local_gcc_version)), + ('ROCm-LLVM', _rocm_version, '', ('GCCcore', local_gcc_version)), ] altroot = 'ROCm-LLVM' diff --git a/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1-GCCcore-13.3.0.eb similarity index 93% rename from easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb rename to easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1-GCCcore-13.3.0.eb index 04ab93870c2..d00562332b9 100644 --- a/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-ROCm-6.4.1-GCCcore-13.3.0.eb +++ b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1-GCCcore-13.3.0.eb @@ -1,9 +1,9 @@ easyblock = 'Bundle' name = 'ROCm-LLVM' -version = 'ROCm-6.4.1' _rocm_version = '6.4.1' _llvm_version = '19.0.0' +version = _rocm_version homepage = 'https://github.com/ROCm/llvm-project' description = """ROCm-LLVM is an open source Clang/LLVM based compiler. @@ -49,6 +49,8 @@ checksums = [{ 'f72d100a46a2dd9f4c870cef156604777f1bdb1841df039d14bf37b19814b9da', 'aomp-extras-rocm-6.4.1.tar.gz': 'cf20b02b1f99f506c198866ef03f2265dc355627760f82cda3878d5bc6486afc', + 'ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch': + '2ce1454aa3d2f50795bbc331c239f44be07f8ec836978cad130406af4340e30d', }] default_easyblock = 'CMakeMake' @@ -97,6 +99,9 @@ components = [ 'filename': local_rocm_llvm_source, 'extract_cmd': 'echo %s', }], + 'patches': [ + 'ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch', + ], 'start_dir': f'llvm-project-{_llvm_version}-rocm-{_rocm_version}.src', 'bootstrap': True, 'build_lld': True, diff --git a/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch new file mode 100644 index 00000000000..4567173d580 --- /dev/null +++ b/easybuild/easyconfigs/r/ROCm-LLVM/ROCm-LLVM-6.4.1_llvm-project-19.0.0_fix-offload-build.patch @@ -0,0 +1,209 @@ +This patch contains two parts: +1. Update how the ROCm .bc libraries are found. Older ROCm versions are very sensetive when it comes + to LIBRARY_PATH being set, easily causing errors because the .bc files weren't found. + The changes implemented in e3ea278 [a] improve the situation, by allowing searching in additional paths. + Expanded the patch to ensure that this detection also works when .bc files are within its own target directory. +2. Fix missing braces in OmptTracing, which could cause compilation failures due to the macro expanded being + longer than a single line. + +[a] https://github.com/ROCm/llvm-project/commit/e3ea27822c6bf53554a93ac777de4fb430227f29 + +Author: Jan Andre Reuter (jan@zyten.de) + +diff --color -Naur llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp +--- llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp 2025-05-08 21:07:38.000000000 +0200 ++++ llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp 2025-06-30 19:59:40.693751999 +0200 +@@ -232,12 +232,6 @@ + LibSuffix.append("/asan"); + } + +- // If device debugging turned on, add specially built bc files +- StringRef libpath = Args.MakeArgString(C.getDriver().Dir + "/../" + LibSuffix); +- std::string lib_debug_perf_path = FindDebugPerfInLibraryPath(LibSuffix); +- if (!lib_debug_perf_path.empty()) +- libpath = lib_debug_perf_path; +- + llvm::SmallVector BCLibs; + + std::string AsanRTL; +@@ -260,27 +254,33 @@ + // not the installed compiler. + std::string LibDeviceName = "/libomptarget-amdgpu-" + GPUArch.str() + ".bc"; + +- SmallString<128> Path(Args.MakeArgString(libpath + LibDeviceName)); +- if (LibSuffix != "lib" || llvm::sys::fs::exists(Path)) { +- BCLibs.push_back(Args.MakeArgString(Path)); +- } else { +- // Check if the device library can be found in +- // one of the LIBRARY_PATH directories. +- bool EnvOmpLibDeviceFound = false; +- for (auto &EnvLibraryPath : EnvironmentLibraryPaths) { +- std::string EnvOmpLibDevice = EnvLibraryPath + LibDeviceName; +- if (llvm::sys::fs::exists(EnvOmpLibDevice)) { +- EnvOmpLibDeviceFound = true; +- BCLibs.push_back(EnvOmpLibDevice); +- break; +- } +- } +- // If LIBRARY_PATH doesn't point to the device library, +- // then use the default one. +- if (!EnvOmpLibDeviceFound) { +- std::string RtDir = "/../runtimes/runtimes-bins/offload"; +- BCLibs.push_back(Args.MakeArgString(libpath + RtDir + LibDeviceName)); +- } ++ // Check if libomptarget device bitcode can be found in a LIBRARY_PATH dir ++ bool EnvOmpLibDeviceFound = false; ++ for (auto &EnvLibraryPath : EnvironmentLibraryPaths) { ++ std::string EnvOmpLibDevice = EnvLibraryPath + LibDeviceName; ++ if (llvm::sys::fs::exists(EnvOmpLibDevice)) { ++ EnvOmpLibDeviceFound = true; ++ BCLibs.push_back(EnvOmpLibDevice); ++ break; ++ } ++ } ++ ++ // If not found in LIBRARY_PATH, use default for the correct LibSuffix. ++ if (!EnvOmpLibDeviceFound) { ++ StringRef bc_file_suf = Args.MakeArgString(C.getDriver().Dir + "/../" + ++ LibSuffix + LibDeviceName); ++ StringRef bc_file_lib = ++ Args.MakeArgString(C.getDriver().Dir + "/../lib" + LibDeviceName); ++ StringRef bc_file_target_suf = ++ Args.MakeArgString(C.getDriver().Dir + "/../lib/" + ++ LLVM_DEFAULT_TARGET_TRIPLE + "/" + LibDeviceName); ++ if (llvm::sys::fs::exists(bc_file_suf)) ++ BCLibs.push_back(Args.MakeArgString(bc_file_suf)); ++ else if (llvm::sys::fs::exists(bc_file_lib)) ++ // In case a LibSuffix version not found, use suffix "lib" ++ BCLibs.push_back(Args.MakeArgString(bc_file_lib)); ++ else if (llvm::sys::fs::exists(bc_file_target_suf)) ++ BCLibs.push_back(Args.MakeArgString(bc_file_target_suf)); + } + + if (!AsanRTL.empty()) { +diff --color -Naur llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/CommonArgs.cpp llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/CommonArgs.cpp +--- llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/CommonArgs.cpp 2025-05-08 21:07:38.000000000 +0200 ++++ llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/CommonArgs.cpp 2025-06-30 20:17:20.183880125 +0200 +@@ -1162,29 +1162,6 @@ + } + } + +-std::string tools::FindDebugPerfInLibraryPath(const std::string &RLib) { +- const char *DirList = ::getenv("LIBRARY_PATH"); +- if (!DirList) +- return ""; +- StringRef Dirs(DirList); +- if (Dirs.empty()) // Empty string should not add '.'. +- return ""; +- +- StringRef::size_type Delim; +- while ((Delim = Dirs.find(llvm::sys::EnvPathSeparator)) != StringRef::npos) { +- if (Delim != 0) { // Leading colon. +- if (Dirs.substr(0, Delim).ends_with(RLib)) +- return Dirs.substr(0, Delim).str(); +- } +- Dirs = Dirs.substr(Delim + 1); +- } +- if (!Dirs.empty()) { +- if (Dirs.ends_with(RLib)) +- return Dirs.str(); +- } +- return ""; +-} +- + void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC, + const ArgList &Args, + ArgStringList &CmdArgs) { +@@ -1200,9 +1177,16 @@ + if (TC.getSanitizerArgs(Args).needsAsanRt()) + LibSuffix.append("/asan"); + } +- std::string CandidateRPath = FindDebugPerfInLibraryPath(LibSuffix); +- if (CandidateRPath.empty()) +- CandidateRPath = D.Dir + "/../" + LibSuffix; ++ // Check if the device library cna be found in ++ // one of the LIBRARY_PATH directories. ++ ArgStringList EnvLibraryPaths; ++ addDirectoryList(Args, EnvLibraryPaths, "", "LIBRARY_PATH"); ++ for (auto &EnvLibraryPath : EnvLibraryPaths) { ++ if(llvm::sys::fs::exists(EnvLibraryPath)) { ++ CmdArgs.push_back("-rpath"); ++ CmdArgs.push_back(Args.MakeArgString(EnvLibraryPath)); ++ } ++ } + + if (Args.hasFlag(options::OPT_fopenmp_implicit_rpath, + options::OPT_fno_openmp_implicit_rpath, true)) { +@@ -1215,8 +1199,41 @@ + CmdArgs.push_back("-rpath"); + CmdArgs.push_back(Args.MakeArgString(TC.getCompilerRTPath())); + } ++ ++ // In case LibSuffix was not built, try lib ++ std::string CandidateRPath_suf = D.Dir + "/../" + LibSuffix; + CmdArgs.push_back("-rpath"); +- CmdArgs.push_back(Args.MakeArgString(CandidateRPath.c_str())); ++ CmdArgs.push_back(Args.MakeArgString(CandidateRPath_suf.c_str())); ++ ++ // Add lib directory in case LibSuffix does not exist ++ std::string CandidateRPath_lib = D.Dir + "/../lib"; ++ if ((!llvm::sys::fs::exists(CandidateRPath_suf)) && ++ (llvm::sys::fs::exists(CandidateRPath_lib))) { ++ CmdArgs.push_back("-rpath"); ++ CmdArgs.push_back(Args.MakeArgString(CandidateRPath_lib.c_str())); ++ } ++ ++ std::string rocmPath = ++ Args.getLastArgValue(clang::driver::options::OPT_rocm_path_EQ).str(); ++ if(rocmPath.size() != 0) { ++ std::string rocmPath_lib = rocmPath + "/lib"; ++ std::string rocmPath_suf = rocmPath + "/" + LibSuffix; ++ std::string rocmPath_target_lib = ++ rocmPath + "/lib/" + LLVM_DEFAULT_TARGET_TRIPLE; ++ if(llvm::sys::fs::exists(rocmPath_suf)) { ++ CmdArgs.push_back("-rpath"); ++ CmdArgs.push_back(Args.MakeArgString(rocmPath_suf.c_str())); ++ } ++ if(llvm::sys::fs::exists(rocmPath_lib)) { ++ CmdArgs.push_back("-rpath"); ++ CmdArgs.push_back(Args.MakeArgString(rocmPath_lib.c_str())); ++ } ++ if(llvm::sys::fs::exists(rocmPath_target_lib)) { ++ CmdArgs.push_back("-rpath"); ++ CmdArgs.push_back(Args.MakeArgString(rocmPath_target_lib.c_str())); ++ } ++ } ++ + if (llvm::find_if(CmdArgs, [](StringRef str) { + return !str.compare("--enable-new-dtags"); + }) == CmdArgs.end()) +diff --color -Naur llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/CommonArgs.h llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/CommonArgs.h +--- llvm-project-rocm-6.4.1.orig/clang/lib/Driver/ToolChains/CommonArgs.h 2025-05-08 21:07:38.000000000 +0200 ++++ llvm-project-rocm-6.4.1/clang/lib/Driver/ToolChains/CommonArgs.h 2025-06-30 19:52:52.947564571 +0200 +@@ -119,8 +119,6 @@ + const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs); + +-std::string FindDebugPerfInLibraryPath(const std::string &RLib); +- + void addOpenMPRuntimeSpecificRPath(const ToolChain &TC, + const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs); +diff --color -Naur llvm-project-rocm-6.4.1.orig/offload/plugins-nextgen/common/OMPT/OmptTracing.cpp llvm-project-rocm-6.4.1/offload/plugins-nextgen/common/OMPT/OmptTracing.cpp +--- llvm-project-rocm-6.4.1.orig/offload/plugins-nextgen/common/OMPT/OmptTracing.cpp 2025-05-08 21:07:38.000000000 +0200 ++++ llvm-project-rocm-6.4.1/offload/plugins-nextgen/common/OMPT/OmptTracing.cpp 2025-06-28 00:28:33.718073512 +0200 +@@ -95,11 +95,12 @@ + auto DeviceIterator = Devices.find(Device); + if (DeviceIterator != Devices.end()) { + auto CurrentDeviceId = DeviceIterator->second; +- if (DeviceId == CurrentDeviceId) ++ if (DeviceId == CurrentDeviceId) { + REPORT("Tried to duplicate OMPT Device=%p (ID=%d)\n", Device, DeviceId); +- else ++ } else { + REPORT("Tried to overwrite OMPT Device=%p (ID=%d with new ID=%d)\n", + Device, CurrentDeviceId, DeviceId); ++ } + return; + } + Devices.emplace(Device, DeviceId); diff --git a/easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/rocm-cmake/rocm-cmake-0.14.0-GCCcore-13.3.0-ROCm-6.4.1.eb similarity index 82% rename from easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/r/rocm-cmake/rocm-cmake-0.14.0-GCCcore-13.3.0-ROCm-6.4.1.eb index bdb65de4c4c..ae2ebe307a3 100644 --- a/easybuild/easyconfigs/r/ROCm-CMake/ROCm-CMake-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/r/rocm-cmake/rocm-cmake-0.14.0-GCCcore-13.3.0-ROCm-6.4.1.eb @@ -1,18 +1,20 @@ easyblock = 'CMakeMake' -name = 'ROCm-CMake' -version = '6.4.1' +name = 'rocm-cmake' +version = '0.14.0' +_rocm_version = '6.4.1' +version_suffix = f'-ROCm-{_rocm_version}' homepage = 'https://github.com/ROCm/rocm-cmake' description = """ROCM cmake modules provides cmake modules for common build tasks needed for the ROCM software stack""" docurls = ['https://rocm.docs.amd.com/projects/ROCmCMakeBuildTools/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ['rocm-%(version)s.tar.gz'] +sources = [f'rocm-{_rocm_version}.tar.gz'] checksums = ['d6dfa862009d593f4d334e0c6da9ac52b228e52bb3b38b53405975f28087ca2f'] builddependencies = [ diff --git a/easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/rocminfo/rocminfo-1.5.0-GCCcore-13.3.0-ROCm-6.4.1.eb similarity index 80% rename from easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/r/rocminfo/rocminfo-1.5.0-GCCcore-13.3.0-ROCm-6.4.1.eb index 3ea4d5a209d..88d36f83760 100644 --- a/easybuild/easyconfigs/r/ROCmInfo/ROCmInfo-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/r/rocminfo/rocminfo-1.5.0-GCCcore-13.3.0-ROCm-6.4.1.eb @@ -1,17 +1,19 @@ easyblock = 'CMakeMake' -name = 'ROCmInfo' -version = '6.4.1' +name = 'rocminfo' +version = '1.5.0' +_rocm_version = '6.4.1' +version_suffix = f'-ROCm-{_rocm_version}' homepage = 'https://github.com/RadeonOpenCompute/rocminfo' description = """ROCm Application for Reporting System Info""" docurls = ['https://rocm.docs.amd.com/projects/rocminfo/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ["rocm-%(version)s.tar.gz"] +sources = [f'rocm-{_rocm_version}.tar.gz'] checksums = ['eabbe4bfb29152900bbde812c6fffd5555b45842259242d85f29e449c00f3249'] builddependencies = [ From 5446692e0d9c9bc350b7edc6e27283cb060c0b22 Mon Sep 17 00:00:00 2001 From: Anthony Beerens Date: Fri, 8 Aug 2025 12:08:22 +0200 Subject: [PATCH 3/4] Second set of fixes after discussion --- .../amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb | 2 +- ...=> HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 16 ++++++++-------- ...orrect_paths_clang_and_rocm_agent_enum.patch} | 0 ...r-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 15 ++++++++------- ...-ROCm-6.4.1_disable_packaging_external.patch} | 0 .../roctracer-4.1.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 13 +++++++------ 6 files changed, 24 insertions(+), 22 deletions(-) rename easybuild/easyconfigs/h/HIP/{HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb => HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1.eb} (89%) rename easybuild/easyconfigs/h/HIP/{HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch => HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch} (100%) rename easybuild/easyconfigs/r/{ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb => rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (76%) rename easybuild/easyconfigs/r/{ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch => rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1_disable_packaging_external.patch} (100%) rename easybuild/easyconfigs/r/{ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb => roctracer/roctracer-4.1.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (79%) diff --git a/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb b/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb index ff4b26d9df9..a4bda85cb2a 100644 --- a/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/a/amdsmi/amdsmi-25.4.2-GCCcore-13.3.0-ROCm-6.4.1.eb @@ -41,7 +41,7 @@ builddependencies = [ ('CMake', '3.29.3'), ('pkgconf', '2.2.0'), # Needed as amdsmi tries to find git to determine commit hash it was built from - ('git', '2.49.0'), + ('git', '2.45.1'), ('libdrm', '2.4.122'), ] diff --git a/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/HIP/HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 89% rename from easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/h/HIP/HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1.eb index 2bfcd3616d9..cd99e5875cc 100644 --- a/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/h/HIP/HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,8 +1,8 @@ -easyblock = 'Bundle' +easyblock = 'EB_ROCmComponent' name = 'HIP' +version = '6.4.43483' _rocm_version = '6.4.1' -version = _rocm_version homepage = 'https://github.com/ROCm/HIP' description = """HIP is a C++ Runtime API and Kernel Language that allows @@ -10,7 +10,7 @@ developers to create portable applications for AMD and NVIDIA GPUs from single source code.""" docurls = ['https://rocmdocs.amd.com/projects/HIP/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} builddependencies = [ ('binutils', '2.42'), @@ -24,9 +24,9 @@ dependencies = [ ('numactl', '2.0.18'), ('Perl', '5.38.2'), ('libglvnd', '1.7.0'), - ('ROCmInfo', '%(version)s'), - ('ROCm-CMake', '%(version)s'), - ('ROCprofiler-register', '%(version)s'), + ('rocminfo', '1.5.0'), + ('rocm-cmake', '0.14.0'), + ('rocprofiler-register', '0.5.0'), ] default_easyblock = 'CMakeMake' @@ -42,12 +42,12 @@ components = [ 'extract_cmd': 'tar xfz %s && mv llvm-project-%(version)s llvm-project-%(version)s.src', }, ], - 'patches': [('HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch', + 'patches': [('HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch', 'llvm-project-%(version)s.src')], 'checksums': [ # llvm-project-rocm-6.4.1.tar.gz '460ad28677092b9eb86ffdc49bcb4d01035e32b4f05161d85f90c9fa80239f50', - # HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch + # HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch 'ab58ee1bae0b5c4cec293063758da119dd6c90f944e6821141205dfe1bdbb47e', ], 'srcdir': 'llvm-project-%(version)s.src/amd/hipcc', diff --git a/easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch b/easybuild/easyconfigs/h/HIP/HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch similarity index 100% rename from easybuild/easyconfigs/h/HIP/HIP-6.4.1-LLVMtc-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch rename to easybuild/easyconfigs/h/HIP/HIP-6.4.43483-LLVMtc-19.0.0-ROCm-6.4.1_correct_paths_clang_and_rocm_agent_enum.patch diff --git a/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 76% rename from easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/r/rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index b247e26a05a..bbf2898471f 100644 --- a/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/r/rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,7 +1,8 @@ -easyblock = 'CMakeMake' +easyblock = 'EB_ROCmComponent' -name = 'ROCprofiler-register' -version = '6.4.1' +name = 'rocprofiler-register' +version = '0.5.0' +_rocm_version = '6.4.1' homepage = 'https://github.com/RadeonOpenCompute/rocprofiler-register' description = """The rocprofiler-register library is a helper library that coordinates the @@ -11,16 +12,16 @@ mechanism of enabling performance analysis in the ROCm runtimes which does not r environment variables or unique methods for each runtime library.""" docurls = ['https://rocm.docs.amd.com/projects/rocprofiler-register/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ["rocm-%(version)s.tar.gz"] -patches = ['ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch'] +sources = [f'rocm-{_rocm_version}.tar.gz'] +patches = ['rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1_disable_packaging_external.patch'] checksums = [ # rocm-6.4.1.tar.gz 'bb8a55d73049f433c039300357713e040ba5b37ed5490336fae435385d09e596', - # ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch + # rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1_disable_packaging_external.patch '2ef7373721a907ad133a8b21e1a77e3009937b21865d2f49b7362bfbb864695d', ] diff --git a/easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch b/easybuild/easyconfigs/r/rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1_disable_packaging_external.patch similarity index 100% rename from easybuild/easyconfigs/r/ROCprofiler-register/ROCprofiler-register-6.4.1-LLVMtc-ROCm-6.4.1_disable_packaging_external.patch rename to easybuild/easyconfigs/r/rocprofiler-register/rocprofiler-register-0.5.0-LLVMtc-19.0.0-ROCm-6.4.1_disable_packaging_external.patch diff --git a/easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/roctracer/roctracer-4.1.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 79% rename from easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/r/roctracer/roctracer-4.1.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index 7029fec5ad8..7afae957b56 100644 --- a/easybuild/easyconfigs/r/ROCTracer/ROCTracer-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/r/roctracer/roctracer-4.1.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,18 +1,19 @@ -easyblock = 'CMakeMake' +easyblock = 'EB_ROCmComponent' -name = 'ROCTracer' -version = '6.4.1' +name = 'roctracer' +version = '4.1.0' +_rocm_version = '6.4.1' homepage = 'https://github.com/ROCm/roctracer' description = """ROCM cmake modules provides cmake modules for common build tasks needed for the ROCM software stack""" docurls = ['https://rocm.docs.amd.com/projects/roctracer/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ['rocm-%(version)s.tar.gz'] +sources = [f'rocm-{_rocm_version}.tar.gz'] checksums = ['57d61441d95b05b12cd05210a80d81cd1d7a21dab7487680897427dfbdafddca'] builddependencies = [ @@ -23,7 +24,7 @@ builddependencies = [ ('Python', '3.12.3'), ] dependencies = [ - ('HIP', '%(version)s'), + ('HIP', '6.4.43483'), ] sanity_check_paths = { From 7e83912fbccf9001fc3e5b24faee09479d6e1782 Mon Sep 17 00:00:00 2001 From: Anthony Beerens Date: Mon, 11 Aug 2025 10:57:07 +0200 Subject: [PATCH 4/4] Third set of fixes after discussion --- ... Boost-1.85.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 2 +- ...-common-1.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 9 +++-- ...ipRAND-2.12.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 13 ++++--- ...ack-cxx-7.0.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} | 2 +- .../rocRAND-3.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb | 38 +++++++++++++++++++ 5 files changed, 52 insertions(+), 12 deletions(-) rename easybuild/easyconfigs/b/Boost/{Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb => Boost-1.85.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (93%) rename easybuild/easyconfigs/h/hipBLAS-common/{hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb => hipBLAS-common-1.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (79%) rename easybuild/easyconfigs/h/hipRAND/{hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb => hipRAND-2.12.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (80%) rename easybuild/easyconfigs/m/msgpack-cxx/{msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb => msgpack-cxx-7.0.0-LLVMtc-19.0.0-ROCm-6.4.1.eb} (93%) create mode 100644 easybuild/easyconfigs/r/rocRAND/rocRAND-3.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb diff --git a/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 93% rename from easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index 28ac1632d8d..bfe1260e1c9 100644 --- a/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/b/Boost/Boost-1.85.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -4,7 +4,7 @@ version = '1.85.0' homepage = 'https://www.boost.org/' description = """Boost provides free peer-reviewed portable C++ source libraries.""" -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} toolchainopts = {'pic': True} source_urls = ['https://archives.boost.io/release/%(version)s/source/'] diff --git a/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-1.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 79% rename from easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-1.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index d6670001f72..4f80063e4b4 100644 --- a/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/h/hipBLAS-common/hipBLAS-common-1.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,16 +1,17 @@ -easyblock = 'CMakeMake' +easyblock = 'EB_ROCmComponent' name = 'hipBLAS-common' -version = '6.4.1' +version = '1.3.0' +_rocm_version = '6.4.1' homepage = 'https://github.com/ROCm/hipBLAS-common' description = """hipBLAS-common is a header-only library that provides common files for hipBLAS and hipBLASLt.""" -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ['rocm-%(version)s.tar.gz'] +sources = [f'rocm-{_rocm_version}.tar.gz'] checksums = ['ba3cb314ceab9183aeac851e536c5d143933986f3099533edd327ffeb4b48e9b'] builddependencies = [ diff --git a/easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/h/hipRAND/hipRAND-2.12.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 80% rename from easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/h/hipRAND/hipRAND-2.12.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index 4132f13277f..3e40271da00 100644 --- a/easybuild/easyconfigs/h/hipRAND/hipRAND-6.4.1-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/h/hipRAND/hipRAND-2.12.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -1,7 +1,8 @@ -easyblock = 'CMakeMake' +easyblock = 'EB_ROCmComponent' name = 'hipRAND' -version = '6.4.1' +version = '2.12.0' +_rocm_version = '6.4.1' homepage = 'https://github.com/ROCm/hipRAND' description = """hipRAND is a RAND marshalling library with multiple supported backends. @@ -10,11 +11,11 @@ to the backend and results to the application. hipRAND exports an interface that require the client to change, regardless of the chosen backend.""" docurls = ['https://rocm.docs.amd.com/projects/hipRAND/en/latest/'] -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} github_account = 'ROCm' source_urls = [GITHUB_SOURCE] -sources = ['rocm-%(version)s.tar.gz'] +sources = [f'rocm-{_rocm_version}.tar.gz'] checksums = ['6310b63c31c68e454f6498f06679843bdbd27e1eca0fd40ed1700cae9fce88e0'] builddependencies = [ @@ -22,8 +23,8 @@ builddependencies = [ ('CMake', '3.29.3'), ] dependencies = [ - ('HIP', '%(version)s'), - ('rocRAND', '%(version)s'), + ('HIP', '6.4.43483'), + ('rocRAND', '3.3.0'), ] sanity_check_paths = { diff --git a/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb b/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-19.0.0-ROCm-6.4.1.eb similarity index 93% rename from easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb rename to easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-19.0.0-ROCm-6.4.1.eb index 3d8fb911399..6c003aa5715 100644 --- a/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-ROCm-6.4.1.eb +++ b/easybuild/easyconfigs/m/msgpack-cxx/msgpack-cxx-7.0.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -9,7 +9,7 @@ data among multiple languages like JSON, except that it's faster and smaller. Small integers are encoded into a single byte while typical short strings require only one extra byte in addition to the strings themselves.""" -toolchain = {'name': 'LLVMtc', 'version': 'ROCm-6.4.1'} +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} source_urls = ['https://github.com/msgpack/msgpack-c/releases/download/cpp-%(version)s'] sources = ['msgpack-cxx-%(version)s.tar.gz'] diff --git a/easybuild/easyconfigs/r/rocRAND/rocRAND-3.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb b/easybuild/easyconfigs/r/rocRAND/rocRAND-3.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb new file mode 100644 index 00000000000..10f78ef4ace --- /dev/null +++ b/easybuild/easyconfigs/r/rocRAND/rocRAND-3.3.0-LLVMtc-19.0.0-ROCm-6.4.1.eb @@ -0,0 +1,38 @@ +easyblock = 'EB_ROCmComponent' + +name = 'rocRAND' +version = '3.3.0' +_rocm_version = '6.4.1' + +homepage = 'https://github.com/ROCm/rocRAND' +description = """The rocRAND project provides functions that generate pseudorandom and +quasirandom numbers. The rocRAND library is implemented in the HIP programming language +and optimized for AMD's latest discrete GPUs. It is designed to run on top of AMD's ROCm +runtime, but it also works on CUDA-enabled GPUs.""" +docurls = ['https://rocm.docs.amd.com/projects/rocRAND/en/latest/'] + +toolchain = {'name': 'LLVMtc', 'version': '19.0.0-ROCm-6.4.1'} + +github_account = 'ROCm' +source_urls = [GITHUB_SOURCE] +sources = [f'rocm-{_rocm_version}.tar.gz'] +checksums = ['690f8edc7789719876cf6119e58aa1335b4ca17b775a753dffb9a07000af9df7'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] +dependencies = [ + ('HIP', '6.4.43483'), +] + +sanity_check_paths = { + 'files': ['lib/librocrand.so', + 'lib/cmake/rocrand/rocrand-config.cmake', + 'include/rocrand/rocrand.hpp'], + 'dirs': ['lib/cmake/rocrand', + 'share/doc/rocrand', + 'include/rocrand'], +} + +moduleclass = 'lib'