mbox series

[bug#55948,0/2] gnu: Update rocm to 5.1.3.

Message ID ForlI9pwyimRYtR94XmPipgXx6bzs-Y1jQCExNj9rQaTxBedIjgvrK4nW2nEzO2YbLkDH79uRpzxmlC128hf7Tcy3Jnf7U6SNUAjRg36Xwk=@protonmail.com
Headers show
Series gnu: Update rocm to 5.1.3. | expand

Message

John Kehayias June 13, 2022, 5:23 p.m. UTC
Hi Guixers,

Incoming are two patches to update the rocm packages (AMD's OpenCL stuff) to the latest version. With this I can use OpenCL in Darktable with my current gen GPU (note: I'm not on linux-libre, which likely impacts what cards can be used).

I tested that everything builds and darktable-cltest reports successful output, as well as rocminfo. E.g. running

./pre-inst-env guix shell rocm-opencl-runtime rocm-device-libs opencl-icd-loader darktable -- darktable-cltest

A few quick notes on these patches. Most of this was discussed on IRC recently, but for the record:

1. llvm-for-rocm: The first patch updates this to use llvm-14, which is what the current rocm version is based on.

2. rocm: All of the packages are updated in one commit as they share a version number and there some interdependencies.

3. rocclr: This is no longer meant as a standalone package: cmake will output a warning and there is no install to be done. It is meant to be included in packages that use it. I've made a plain origin for the rocclr source that is needed (see rocm-opencl-runtime that uses it) and renamed the old version to rocclr-4 since that will still build/install in case it is of use.

This is the commit that changed the build behavior, active since v4.5 at least: https://github.com/ROCm-Developer-Tools/ROCclr/commit/df1449608e92c9e42b4ce5799e6eb51934ae7d4a

4. Relatedly, both Arch and Gentoo build rocclr before building rocm-opencl-runtime, but this doesn't seem to do anything. Unfortunately the rocm readmes are unclear/not up to date on exactly what is needed. From my testing, just setting a configure flag to point to the rocclr source is all that is needed.

The Arch and Gentoo recipes are here:

https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=rocm-opencl-runtime

https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-5.0.2.ebuild

We can do the same thing by adding in this phase for rocm-opencl-runtime. I did not see any change in the final output and everything (with Darktable) seemed fine without it. It will take a little longer to build as it does build rocclr explicitly. Anyway, in case it is of use to anyone, here is the code

          (add-before 'configure 'configure-rocclr
            (lambda* (#:key inputs #:allow-other-keys)
              (invoke "cmake" (string-append "-DAMD_OPENCL_PATH="
                                             #$(package-source this-package))
                      "-B build-rocclr" "-S" #$rocclr-src)
              (invoke "make" "-C" "build-rocclr")))

Okay, that's it! Overall is mostly updating hashes and some patches, other than the rocclr notes above. I hope I got the (long) commit message correct on the second patch. The changes work well for me locally.

Thanks!
John

Comments

Ludovic Courtès June 16, 2022, 11:35 a.m. UTC | #1
Hello John,

Pushed!

  67c30ff8ad gnu: rocm: Update to 5.1.3.
  25809f5a40 gnu: Update llvm-for-rocm: Update to 5.1.3.

John Kehayias <john.kehayias@protonmail.com> skribis:

> Okay, that's it! Overall is mostly updating hashes and some patches, other than the rocclr notes above. I hope I got the (long) commit message correct on the second patch. The changes work well for me locally.

Thanks for the explanations, it’s great to know the context and things
you addressed.

Ludo’.