Установка ROCm

ROCm - платформа с открытым исходным кодом для высокопроизводительных вычислений и сверхмасштабных вычислений на GPU.
Открытая реализация OpenCL

Создать файл репозитория

1
2
3
4
5
6
7
8
9
10
11
12
sudo tee /etc/zypp/repos.d/rocm.repo <<EOF
[rocm]
name=ROCm
enabled=1
autorefresh=1
gpgcheck=1
baseurl=https://repo.radeon.com/rocm/zyp/4.1/
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key
type=rpm-md
skip_if_unavailable=True
keeppackages=0
EOF

Теперь можно приступать к установке пакетов

ВАЖНО!!! для пользователей openSUSE Tumbleweed!!!

C недавних пор директория /usr/lib/ переехала в другое место /usr/libexec
dkms устанавливает скрипты уже в новую директорию, но пакеты собраны для leap где расположение скриптов осталось в старой директории
соотвественно при выполнении pre и post скриплетов из пакета необходимые скрипты не могут быть найдены, по этому я пересобрал пакет dkms
с нужными путями. Но тут есть одно большое НО, я не знаю отработают ли скриплеты из других dkms модулей если они есть у кого то в системе, по этому сначала проверьте
наличие установки других dkms модулей в системе, например у кого что может быть установлен WiFi модуль при помощи dkms. Если таковых нет, то можно продолжать установку.

1
sudo zypper ar -f obs://home:Dead_Mozay:dkms home:Dead_Mozay:dkms
1
sudo zypper dup --from home:Dead_Mozay:dkms --allow-vendor-change

если не установлен

1
sudo zypper install dkms

Запустим демон dkms

1
sudo systemctl enable --now dkms
1
sudo zypper install rocm-dkms rocm-opencl hip-base

на ошибку

1
2
3
Проблема: ничто не предоставляет libffi.so.7()(64bit), необходимый для openmp-extras-12.41.0.40100-sles152.26.x86_64
Решение 1: не устанавливать rocm-dkms-4.1.0.40100-sles152.26.x86_64
Решение 2: повредить openmp-extras-12.41.0.40100-sles152.26.x86_64, игнорируя некоторые из его зависимостей

отвечаем 2

Установка займет довольно продолжительное время, объем загружаемых пакетов 2 Гб.

Проверить модуль можно командой

1
sudo dkms status

Если видите

1
amdgpu, 4.1-26.el7: added

Значит все ОК
Далее нужно поправить шебанг у скрипта rocm_agent_enumerator
Выполняем в терминале

1
sudo sed -i 's/^#!.*/#!\/usr\/bin\/python3/' /opt/rocm-4.1.0/bin/rocm_agent_enumerator

Так же желательно указать корректный путь к библиотеке libamdocl64.so в файле amdocl64_40100.icd
Открываем любым удобным способом
Например:

1
sudoedit /etc/OpenCL/vendors/amdocl64_40100.icd

и указываем корректный путь

1
/opt/rocm-4.1.0/opencl/lib/libamdocl64.so

Еще нужно созать rocm профиль с переменными, создаем скрипт

1
sudo vim /etc/profile.d/rocm.sh

c таким содержимым

1
2
3
4
export PATH=$PATH:/opt/rocm-4.1.0/opencl/bin
export PATH=/opt/rocm-4.1.0/bin:$PATH \
ROCM_PATH=/opt/rocm-4.1.0 \
HIP_PATH=/opt/rocm-4.1.0/hip

Пеоезагружаем ПК.
Для проверки работоспособности можно использовать утилиту hashcat

1
sudo zypper install hashcat

Запускаем бенчмарк

1
hashcat -b

Если тест прошел успешно, значит все работает.

Или утилитой rocminfo
первой же строкой должна быть

1
ROCk module is loaded

Blender пока не работает с OpenCL

https://github.com/RadeonOpenCompute/ROCm/issues/1106