LINUX.ORG.RU
ФорумTalks

Опять нытья тред про то как трудно чтобы что-то работало в OpenSource. AMD ROCm, сборка Firefox

 ,


0

1

Может пост более в Development, но все же OpenSource - хорошо, но иногда руки начинают опускаться, насколько все как-то нечетко, неопределенно, не работает на каждом шагу.

На этот раз с «целиком открытыми» драйверами ROCm. До некоторой степени я вообще ради ROCm апгрейд сделал. Понимаю, звучит глупо. Разумеется не только и не столько, но можно сказать толчком, который все же окончательно побудил они стали.

Ну и вот. Не работаютЪ-с. Или не они, а hashcat --benchmark. Использую для тестирования - сильно нагружают OpenCL по полной.

Ну для начала, официально Rocm до сих пор для Ubuntu 16.4 с ядром 4.10. Блин, 2020-й год уже. Для тех же AMD Ryzen и матплат под него давно желательны более новые ядра. Например, 4.19 в Debian 10 не видит датчика температуры на Ryzen 3900X, 5.4 - видит.

Но придумали какие-то kfd-модули для более новых версий ядер. То есть, чтобы не собираться rock-dkms и rocm-dkms (которые не собираются). Ну Ok. Использовал такой подход.

Запускаю hashcat --benchmark и оп-па

Hashmode: 0 - MD5

clCreateCommandQueue(): CL_OUT_OF_HOST_MEMORY

Гуглеж показал, что такие ошибки бывают. Количество памяти на хосте явно более чем достаточно. И что на форуме AMD не смогли понять, в чем дело =))) https://community.amd.com/thread/220038

Обнаружил, что однако если запустить от рута , то хотя бы начинает работать. Сравниваю выхлопы strace в обоих случаях и что-то не вижу причины. Целиком не привожу, но рядом с проблемным местом.

Успешный запуск:

futex(0x7efb87ffc9d0, FUTEX_WAIT, 4473, NULL) = 0
mmap(NULL, 278528, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7efbf00a8000
mprotect(0x7efbf00a9000, 274432, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7efbf00eafb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7efbf00eb9d0, tls=0x7efbf00eb700, child_tidptr=0x7efbf00eb9d0) = 4474
futex(0x5655577af608, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x5655577af528, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
futex(0x56555769da98, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
chdir("/usr/share/hashcat/OpenCL")      = 0

Сбой

futex(0x7efb9fffd9d0, FUTEX_WAIT, 4505, NULL) = 0
mmap(NULL, 278528, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7efbf00a8000
mprotect(0x7efbf00a9000, 274432, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7efbf00eafb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7efbf00eb9d0, tls=0x7efbf00eb700, child_tidptr=0x7efbf00eb9d0) = 4506
futex(0x5655577af118, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x5655577af038, FUTEX_WAKE_PRIVATE, 1) = 1
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
futex(0x56555769dae8, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, FUTEX_BITSET_MATCH_ANY) = 0
write(2, "\33[31m", 5[31m)                  = 5
write(2, "clCreateCommandQueue(): CL_OUT_O"..., 45clCreateCommandQueue(): CL_OUT_OF_HOST_MEMORY) = 45
write(2, "\33[0m", 4[0m)                   = 4
write(2, "\n", 1
)                       = 1
write(2, "\n", 1
)

Где-то на что-то чего-то прав не хватило. На что, на чего - хз. Обычно я такие ситуации ловил strace, но не в этот раз. Возможно, что с доступом к API ядерного модуля что-то не то.

От рута, однако запускается без сообщения об ошибке, даже несколько первых тестов отрабатывает успешно, но затем после нескольких успешных тестов грохается (все не привожу)

clBuildProgram(): CL_BUILD_PROGRAM_FAILURE

/usr/share/hashcat/OpenCL/comgr-0c4bcf/input/CompileSource:1016:15: warning: loop not unrolled: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering
__kernel void m02500_aux3 (KERN_ATTR_TMPS_ESALT (wpa_pbkdf2_tmp_t, wpa_eapol_t))
Error: Creating the executable from LLVM IRs failed.

* Device #1: Kernel /usr/share/hashcat/OpenCL/m02500-pure.cl build failed - proceeding without this device.

Кто виноват? Возможно hashcat, а не ROCm. А может и ROCm, если чего-то недореализовали в OpenCL.

На старой системе (Debian 9) с проприетарным драйвером OpenCL 1.2 работает без проблем и от юзера в том числе. Но там и hashcat версия иная.

Ну и на закуску. apt-get source firefox-esr и последующая попытка сборки происходит не удачно, валится с ошибкой. chromium однако собрался, хотя и отожрал в процессе сборки около 30Гб. Система stable, разве что deb-multimedia подключены, неужто из-за них?

И вот устаешь уже от этого постоянного чего-то не работания. И проверяния, проверяния потом. Причины же почему разработчики от AMD настолько ограничены в выборе конфигураций и это уже далеко не для альфа-беты за гранью понимания. Кстати, и в проприетарных драйверах тоже не особо разнообразие систем.

★★★★★

Ответ на: комментарий от imul

Не знаю. Может больше доскональности разработчикам, а AMD поменьше жлобиться на разработку софта, нанять хотя бы еще одного и хотя бы пару лишних десктопов для тестов своим девелоперам купить =)

praseodim ★★★★★ ()

так он у тебя поди падает на ворнинге. отключи конкретный ворнинг и попробуй собрать. хотя я в упор не понимаю, зачем тебе там OpenCL.

Iron_Bug ★★★★★ ()
Ответ на: комментарий от Iron_Bug

так он у тебя поди падает на ворнинге. отключи конкретный ворнинг и попробуй собрать.

Там нечего отключать - это готовая программа, а падает «программа» для OpenCL. Как я понял, она компилируется непосредственно перед передачей в видеокарту.

хотя я в упор не понимаю, зачем тебе там OpenCL.

Скорости на некоторые вещи в 10 раз выше.

P.S. Или ты про Firefox - это другое, это вообще я первый раз вижу, что софт после скачивания исходников из репы и build-dep не собрался. Ну что дожили, однако. То была лотерея соберется или нет софт с офсайта, теперь даже исходники, подготовленные мейнтейнерами не собираются.

praseodim ★★★★★ ()
Последнее исправление: praseodim (всего исправлений: 1)

OpenSource - хорошо, но иногда руки начинают опускаться, насколько все как-то нечетко, неопределенно, не работает на каждом шагу.

Половину сегодняшнего рабочего дня втроём искали воркэраунд для бага 2013 года в Джире. Закрытость и цена ничего не гарантируют.

Баг в багтрекере!!!

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от praseodim

ну, в теме написано «сборка Firefox», а дальше какая-то муть про OpenCL и при чём он тут - непонятно.

впрочем, туда уже могли втащить непонятно что. я перестала его использовать, после того, как они с С++ на ненужно перешли. теперь только палемун.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Ё-моё. Две с половиной темы затронуты.

1) Проблемы OpenSource-ного драйвера от AMD для OpenCL для AMD-ных видеокарт - ROCm.

1а) hashcat - хороший тест для ROCm, который тот не прошел. В принципе может быть дело в hashcat, но вряд ли. Его чуть более старая версия отлично работает с проприетарным драйвером OpenCL.

2) Невозможность собрать Firefox из исходников, даже после build-dep в Debian.

praseodim ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.