[Slackbuilds-users] AMD ROCm SlackBuilds
414N
414N at slacky.it
Sat Dec 30 19:25:13 UTC 2023
Greetings,
last summer I started working on SlackBuild scripts for AMD ROCm to play
around with some AI stuff/Blender. I based my work entirely on the Arch
PKGBUILD scripts (thanks Arch maintainers) and finished packaging all of
them only recently. These are 33 packages in total, where 2 (half and
python3-cppheaderparser) are external dependencies currently missing on SBo.
I tested the runtime mainly against software using pytorch-2.1.6, ollama
and Blender[1] and found that it seems to be working properly on my
RX590 card (Polaris/gfx803 architecture).
I'd like to share them with anyone interested to test them out, possibly
with an AMD GPU.
You can find them on my `rocm-5.5.1` branch on github[2]:
https://github.com/414n/slackbuilds.org/blob/rocm-5.5.1
The ROCm version I packaged, as you can see, is version 5.5.1. I know
it's not the latest one, but I'd like to do a version bump after having
published all of this on SBo.
There's a top-level "rocm_packages.list" that contains all the packages
to build in the (I hope) correct order and also a "README_rocm.md" with
some additional notes and TODOs.
Please do read the attached READMEs to every package, as there are some
caveats for a number of packages.
I'm not currently sharing any prebuilt package (but will hopefully do
someday) because I took some shortcuts with some packages i.e. building
them only for my GPU target and not the others to hasten the build process.
I'd like to ask admin/maintainers what are the best practices regarding:
- location: I've currently put all the ROCm packages under the
"graphics" section. Is this correct or should I change it?
- ROCm "standard" prologue in README/slack-desc: initially, I've put
the same prologue explaining what ROCm is in every README/slack-desc but
grew tired of it after the first 20 packages or so ^_^. The prologue is
this:
> ROCm is a brand name for the ROCm open software platform (for software)
> or the ROCm open platform ecosystem (includes hardware like FPGAs or
> other CPU architectures).
Should I put it in every package description or is this not necessary?
- parallelization: some packages can build different GPU target files
in parallel, but I observed that the number of jobs running concurrently
is MAKE_NUMJOBS **times** this number, so running "make -j8" with 8
parallel jobs for HIP targets results in a system under heavy load. Do
we just ignore this possibility altogether or make it optional with a
note in the README?
- Polaris/gfx803 support: this generation is not officially supported,
however by forcing some build flags or with trivial patches this support
can be easily re-enabled and, from what I've seen on my own GPU, it
seems to actually work okay. Both Arch and Debian[3] packages do enable
back support for this generation of cards, so I'd do the same. What do
you think about it?
Kindest regards and happy new year everyone!
[1]: Blender 3.3.10 requires some "persuasion" to work with a gfx803
card: a patch when compiling it to re-enable working on GFX < 9
era-cards and a pre-compiled and patched hip kernel for Cycles,
otherwise all the rendering gets black
[2]: the branch actually contains some WIP scripts/TODOs that I plan to
remove when all the issues are resolved.
[3]: https://lists.debian.org/debian-ai/2023/03/msg00050.html
--
Alan Alberghini
SBo clone: https://github.com/414n/slackbuilds.org
More information about the SlackBuilds-users
mailing list