Skip to content

add generic ROCmComponent easyblock to build & install ROCm components#3861

Merged
casparvl merged 17 commits intoeasybuilders:developfrom
Thyre:20250731143304_new_pr_rocmcomponent
Apr 8, 2026
Merged

add generic ROCmComponent easyblock to build & install ROCm components#3861
casparvl merged 17 commits intoeasybuilders:developfrom
Thyre:20250731143304_new_pr_rocmcomponent

Conversation

@Thyre
Copy link
Copy Markdown
Collaborator

@Thyre Thyre commented Jul 31, 2025

(created using eb --new-pr)

This is a draft EasyBlock supporting the build of ROCm components by unifying similar config options into one EasyBlock on top of CMakeMake.
A few things can be cleaned up, e.g. using list_to_cmake_arg of the CMakeMake EasyBlock, now that this has been integrated.

ROCm components will slowly be added in EasyConfig PRs, with one example being easybuilders/easybuild-easyconfigs#23542, which can benefit significantly.

@Thyre Thyre marked this pull request as draft July 31, 2025 12:33
@Thyre Thyre changed the title new easyblock for rocmcomponent New EasyBlock to build ROCm components Jul 31, 2025
Signed-off-by: Jan André Reuter <[email protected]>
@Thyre Thyre added the new label Aug 1, 2025
@boegel boegel added this to the 5.x milestone Aug 12, 2025
@boegel boegel changed the title New EasyBlock to build ROCm components add custom easyblock to build & install ROCm components Aug 12, 2025
@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 12, 2025

@Thyre Seems like this should be a generic easyblock instead, since it's not specific to one single software package, but will cover a whole group?

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Aug 12, 2025

@Thyre Seems like this should be a generic easyblock instead, since it's not specific to one single software package, but will cover a whole group?

Yeah, I agree. I wasn't really sure initially where to place it, so I left it there for now.

I'll move it to the generic ones. As you've guessed, this can be used for most ROCm components.

Signed-off-by: Jan André Reuter <[email protected]>
@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Jan 23, 2026

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS HIP-6.4.1-rocm-compilers-19.0.0-ROCm-6.4.1.eb

Build succeeded for 1 out of 1 (total: 1 min 50 secs) (1 easyconfigs in total)
jrc0850.jureca - Linux Rocky Linux 9.6 (Blue Onyx), x86_64, AMD EPYC 7443 24-Core Processor (zen3), 8 x AMD AMD Instinct MI250X / MI250 (model: 0x740c, driver: "6.12.12"), Python 3.9.21
See https://gist.github.com/Thyre/fe11ea7428f1608d914ab8905d581983 for a full test report.

@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Feb 12, 2026

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS rocm-cmake-0.14.0-llvm-compilers-20.1.8.eb

  • SUCCESS hipBLAS-common-1.4.0-llvm-compilers-20.1.8.eb

  • SUCCESS hipBLAS-3.2.0-llvm-compilers-20.1.8-CUDA-12.9.1.eb

Build succeeded for 3 out of 3 (total: 54 secs) (3 easyconfigs in total)
jrc0900.jureca - Linux Rocky Linux 9.7, AArch64, ARM UNKNOWN (neoverse_v2), 1 x NVIDIA NVIDIA GH200 480GB, 590.48.01, Python 3.9.25
See https://gist.github.com/Thyre/fa6fca8e84810c3008293c280cb577ed for a full test report.

Comment thread easybuild/easyblocks/generic/rocmcomponent.py Outdated
@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Mar 16, 2026

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS rocTracer-4.1.0-rocm-compilers-22.0.0-ROCm-7.2.0.eb

Build succeeded for 1 out of 1 (total: 45 secs) (1 easyconfigs in total)
Linux - Linux Arch Linux UNKNOWN, x86_64, AMD Ryzen 7 7800X3D 8-Core Processor (zen4), 1 x AMD Navi 48 [Radeon RX 9070/9070 XT/9070 GRE] (device id: 0x7550, gfx: gfx1201, driver: Linuxversion6.19.6-arch1-1(linux@archlinux)(gcc(GCC)15.2.120260209,GNUld(GNUBinutils)2.46)#1SMPPREEMPT_DYNAMICWed,04Mar202618:25:08+0000), 1 x AMD Raphael (device id: 0x164e, gfx: gfx1036, driver: Linuxversion6.19.6-arch1-1(linux@archlinux)(gcc(GCC)15.2.120260209,GNUld(GNUBinutils)2.46)#1SMPPREEMPT_DYNAMICWed,04Mar202618:25:08+0000), Python 3.14.3
See https://gist.github.com/Thyre/444798f64f9943f2fa4219bcf527e891 for a full test report.

@casparvl
Copy link
Copy Markdown
Contributor

Succesful test report using this easyblock here, for 10 builds that use this.

Comment thread easybuild/easyblocks/generic/rocmcomponent.py
Comment thread easybuild/easyblocks/generic/rocmcomponent.py
Comment thread easybuild/easyblocks/generic/rocmcomponent.py
Comment thread easybuild/easyblocks/generic/rocmcomponent.py Outdated
Comment thread easybuild/easyblocks/generic/rocmcomponent.py Outdated
@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Mar 17, 2026

Old style EasyConfig with compiler_toolchain = 'rocm-llvm'


Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS rocTracer-4.1.0-GCCcore-14.2.0-ROCm-6.4.1.eb

Build succeeded for 1 out of 1 (total: 1 min 36 secs) (1 easyconfigs in total)
jrc0850.jureca - Linux Rocky Linux 9.7 (Blue Onyx), x86_64, AMD EPYC 7443 24-Core Processor (zen3), 8 x AMD AMD INSTINCT MI250 (MCM) OAM AC MBA (device id: 0x740c, gfx: gfx90a, driver: 6.16.6), Python 3.9.25
See https://gist.github.com/Thyre/06e24934aa46acc57aa23e52c55c95d5 for a full test report.

Comment thread easybuild/easyblocks/generic/rocmcomponent.py Outdated
Comment thread easybuild/easyblocks/generic/rocmcomponent.py Outdated
@Thyre
Copy link
Copy Markdown
Collaborator Author

Thyre commented Mar 17, 2026

The test correctly uses hipcc. The failure comes from rocTracer not supporting hipcc to build the code. That doesn't surprise me too much.


Test report by @Thyre

Overview of tested easyconfigs (in order)

Build succeeded for 0 out of 1 (total: 39 secs) (1 easyconfigs in total)
jrc0850.jureca - Linux Rocky Linux 9.7 (Blue Onyx), x86_64, AMD EPYC 7443 24-Core Processor (zen3), 8 x AMD AMD INSTINCT MI250 (MCM) OAM AC MBA (device id: 0x740c, gfx: gfx90a, driver: 6.16.6), Python 3.9.25
See https://gist.github.com/Thyre/2d9b4ee401cbb80e55b930740014461a for a full test report.

Thyre and others added 4 commits March 17, 2026 16:11
Signed-off-by: Jan André Reuter <[email protected]>
Add CMAKE_IGNORE_PATH flag to generic `rocmcomponent` easyblock
@casparvl
Copy link
Copy Markdown
Contributor

This EasyBlock has a lot of succesful test reports for cross-compilation: 25 easyconfigs from easybuilders/easybuild-easyconfigs#25576 (comment) (with the one failing one being fixed and retested at easybuilders/easybuild-easyconfigs#25576 (comment)

A test build is currently running on jsc-zen3 easybuilders/easybuild-easyconfigs#25576 (comment) .

I'll do builds on a system with a native MI210 soon (hopefully tonight) using that same EasyConfigs PR. If that all succeds then, together with the test builds in which @Thyre already tested specific functionality, I think that's sufficient. This is all new functionality after all - it won't break anything existing for anyone. And I'd really like the unit tests on easybuilders/easybuild-easyconfigs#25576 to no longer complain about the missing easyblock, so we can clean up any remaining issues with unit tests there.

Copy link
Copy Markdown
Contributor

@casparvl casparvl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've done a ton of testing with EasyConfigs from easybuilders/easybuild-easyconfigs#25576 . By now, we only see issues there related to the easyconfigs themselves, which makes me confident that this easyblock does what it is supposed to do.

Thanks @Thyre

@casparvl casparvl merged commit 7fdf589 into easybuilders:develop Apr 8, 2026
22 checks passed
@boegel boegel changed the title add custom easyblock to build & install ROCm components add generic ROCmComponent easyblock to build & install ROCm components Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants