LINUX.ORG.RU

Хочу OpenCL

 ,


0

2

С Nvidia картами вроде понятно как, а вот насчет amd видеокарт что-то я запутался.

Объясните, что надо для использования OpenCL с амд-видеокартами?

Как я понимаю, есть amdgpu-pro, есть Rocm. Rocm почему-то выдвигает требования к процессору.

Как вообще это использовать все?

★★★★★

Хочешь - ставь amdgpu-pro, хочешь - ROCm. amdgpu-pro заведётся 100%, ROCm - может придётся повозиться, переткнуть карту в более удачный PCI слот или поперебирать версию ядра или ещё что. Можно им issues на гитхаб писать если что-то не взлетело. Ну и читать, большинство грабель уже пройдено другими по сто раз. Особо умелые заводят сразу и то, и то и пользуются двумя AMD-шными OpenCL-стэками по настроению.

Если ты не знаешь, нужен тебе OpenCL из amdgpu-pro или OpenCL из ROCm - ставь amdgpu-pro.

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

В данном случае amdgpu-pro и rocm являются набором библиотек и на бэкенде все равно amdgpu или rocm содержит свой модуль ядра?

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

Да, это библиотеки в user space а модуль ядра у них один и тот же. amdgpu-pro более всеяден, ROCm более капризен. Но уже тоже должен запускаться на мэйнстримовом убунтушном ядре.

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

ROCm как раз хорошо заведётся. Просто там поддержка некоторых видеокарт завязана на наличие PCI-E 3.0 и выше.

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

Ну pcie3 у меня все равно нет, так что остается amdgpu-pro

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от tim239

У меня debian. Попытка поставить amdgpu-pro с флагом --compute приводит к нерабочему OpenGL. А без этого флага вообще проблема с установкой. Можно как-то установить только OpenCL часть amdgpu-pro, не поломав остальное?

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Поищи в backports новые пакеты с графическим стеком. Может, с ними и проприетарный драйвер заработает

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

Поищи в backports новые пакеты с графическим стеком. Может, с ними и проприетарный драйвер заработает

проприетарный драйвер рассчитан на старые версии ядра и тащит свой собственный amdgpu.ko и Ко который на более свеших ядрах не собирается а с новым ванильным amdgpu.ko не работает.

anonymous
()
Ответ на: комментарий от anonymous
Number of platforms                               2
  Platform Name                                   AMD Accelerated Parallel Processing
  Platform Vendor                                 Advanced Micro Devices, Inc.
  Platform Version                                OpenCL 2.1 AMD-APP (2814.0)
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd cl_amd_event_callback cl_amd_offline_devices 
  Platform Host timer resolution                  1ns
  Platform Extensions function suffix             AMD

  Platform Name                                   Clover
  Platform Vendor                                 Mesa
  Platform Version                                OpenCL 1.1 Mesa 18.3.4
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd
  Platform Extensions function suffix             MESA
...
=====================    
HSA System Attributes    
=====================    
Runtime Version:         1.1
System Timestamp Freq.:  1000.000000MHz
Sig. Max Wait Duration:  18446744073709551615 (number of timestamp)
Machine Model:           LARGE                              
System Endianness:       LITTLE                             

==========               
HSA Agents               
==========               
*******                  
Agent 1                  
*******                  
  Name:                    AMD Ryzen 7 2700X Eight-Core Processor
  Vendor Name:             CPU                        
...
*******                  
Agent 2                  
*******                  
  Name:                    gfx803                             
  Vendor Name:             AMD                                
anonymous
()
Ответ на: комментарий от anonymous

и да. дебиан тестинг/анстейбл с rocm

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

Без дичайшего пердолинга наверняка не обошлось.

а то. apt install это очень сложно.

anonymous
()
Ответ на: комментарий от steemandlinux

но он таки включает в себя фирменный opencl а не месовский

anonymous
()

А хочет ли он тебя? Хинт: бери куду.

anonymous
()
Ответ на: комментарий от cvs-255

у меня pcie2.0

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

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

rocm требует pcie3.0, т.к. требует атомарные операции

видеокарта rx 570

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

Этл понятно, но во всяких Amazon Web Services и Google Cloud крутят тока Nvidia + CUDA - о чём-то это говорит? АМД тоже скоро выкатит что-нибудь по типу Vulcan Shaders для расчётов, т.к. хронос груп уже профукали полимеры.

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

во всяких Amazon Web Services и Google Cloud крутят тока Nvidia + CUDA - о чём-то это говорит?

nvidia не скупилась на гранты разработчикам [d]ml фреймворков для поддержки cuda.

anonymous
()
Ответ на: комментарий от menangen

хронос груп уже профукали полимеры

можно подробнее что они там накосячили?

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

Beginning with ROCm 1.8, GFX9 GPUs (such as Vega 10) no longer require PCIe atomics. We have similarly opened up more options for number of PCIe lanes. GFX9 GPUs can now be run on CPUs without PCIe atomics and on older PCIe generations, such as PCIe 2.0. This is not supported on GPUs below GFX9, e.g. GFX8 cards in the Fiji and Polaris families.

We do not support GFX8-class GPUs (Fiji, Polaris, etc.) on CPUs that do not have PCIe 3.0 with PCIe atomics.

У меня то Polaris

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

C amdgpu-pro как-то скверно получается. dkms его модуль собрать не может ни на 4.9, ни на 4.13 (из убунтовской репы) ни на 4.19. Если использовать amdgpu, идущий в ядре, то будет ошибка при старте Xorg:

«amdgpu: module abi major version 23 doesn't match servers version 24»

но при это определяется opencl. При этом установлена libdrm от amfgpu-pro. А со стандартной libdrm, от просто amdgpu, Xorg работает, но не работает OpenCL

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Там есть опция для игнорирования различий abi, в иксах. Я дооолгое время пользовался этой фичей, просто мастхэв. Потом другую карту купил.

anonymous
()
Ответ на: комментарий от cvs-255

Для арча имеется пакет, позволяющий крутить OpenCL-рантайм от AMDGPU-PRO на стандартных драйверах. Вполне вероятно, что и для убунты есть нечто подобное.

dvrpd
()
Ответ на: комментарий от tim239

Какая у тебя версия ядра?

Я взял 4.15 от убунты, но все равно не собирается

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

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

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

Ну вот я взял убунтовское ядро, но все равно не собирается

cvs-255 ★★★★★
() автор топика

Потратил пару минут и собрал opencl-amd из AUR. Это, конечно, не deb-пакет, но внутри всего несколько файлов с нужными путями, которые достаточно кинуть в рут. Должно работать без каких-либо других частей amdgpu-pro, вроде тех же модулей ядра.
https://my.mixtape.moe/ssiiab.tar.xz
Если паранойя, то можно самостоятельно скачать установщик amdgpu-pro и указанные в package() pkgbuild'а махинации.

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

сегфолтится((

Starting program: /usr/bin/clinfo 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff201c700 (LWP 26172)]
[New Thread 0x7ffff1694700 (LWP 26173)]
[New Thread 0x7ffff0e93700 (LWP 26174)]
[New Thread 0x7fffe3fff700 (LWP 26175)]
[New Thread 0x7fffdbfff700 (LWP 26176)]
[New Thread 0x7fffe37fe700 (LWP 26177)]
[New Thread 0x7fffe2ffd700 (LWP 26178)]
[New Thread 0x7fffe27fc700 (LWP 26179)]
[New Thread 0x7fffe1ffb700 (LWP 26180)]
[New Thread 0x7fffe17fa700 (LWP 26181)]
[New Thread 0x7fffe0ff9700 (LWP 26182)]
[Thread 0x7fffe0ff9700 (LWP 26182) exited]
[Thread 0x7fffe17fa700 (LWP 26181) exited]
[Thread 0x7fffe1ffb700 (LWP 26180) exited]
[Thread 0x7fffe27fc700 (LWP 26179) exited]

Thread 1 "clinfo" received signal SIGSEGV, Segmentation fault.
0x00007fffb83c912c in ?? () from /usr/local/lib/libamdocl-orca64.so
(gdb) backtr
#0  0x00007fffb83c912c in ?? () from /usr/local/lib/libamdocl-orca64.so
#1  0x00007fffb83bea21 in ?? () from /usr/local/lib/libamdocl-orca64.so
#2  0x00007fffb83c1a11 in ?? () from /usr/local/lib/libamdocl-orca64.so
#3  0x00007fffb83db5b8 in ?? () from /usr/local/lib/libamdocl-orca64.so
#4  0x00007fffb8733294 in ?? () from /usr/local/lib/libamdocl-orca64.so
#5  0x00007fffb83b12d9 in ?? () from /usr/local/lib/libamdocl-orca64.so
#6  0x00007fffb83b134f in ?? () from /usr/local/lib/libamdocl-orca64.so
#7  0x00007fffb83b21c3 in ?? () from /usr/local/lib/libamdocl-orca64.so
#8  0x00007fffb87d71fc in ?? () from /usr/local/lib/libamdocl-orca64.so
#9  0x00007fffb87d87aa in ?? () from /usr/local/lib/libamdocl-orca64.so
#10 0x00007fffb87d89c6 in ?? () from /usr/local/lib/libamdocl-orca64.so
#11 0x00007fffb8385467 in ?? () from /usr/local/lib/libamdocl-orca64.so
#12 0x00007fffb836839a in clIcdGetPlatformIDsKHR () from /usr/local/lib/libamdocl-orca64.so
#13 0x00007ffff7f8ca24 in ?? () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#14 0x00007ffff7f8d4e3 in clGetPlatformIDs () from /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
#15 0x000055555555a478 in ?? ()
#16 0x00007ffff7de509b in __libc_start_main (main=0x55555555a2c0, argc=1, argv=0x7fffffffe7f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe7e8)
    at ../csu/libc-start.c:308
#17 0x000055555555a7ba in ?? ()

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от cvs-255

В архиве был путь /usr/lib, а у либы в логе /usr/local/lib. Это точно библиотека из архива, а не оставшаяся после попытки установки? Возможно, ещё нужно ядро посвежее, вроде 4.15, если оно уже не установлено.

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

Я в local положил, чтобы /usr/lib не засорять. Это критично?

Ядро 4.15 и брал

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Так amdgpu.ids присутствует? В /opt/ это был симлинк на /usr/share/libdrm/amdgpu.ids, возможно, в дебиане его нет, в таком случае загрузил его сюда. Если нерабочие либы уже не удалил.

dvrpd
()
Ответ на: комментарий от cvs-255

ты же rocm поставил. какой еще amdgpu?

anonymous
()

В общем, сумел в итоге поставить amdgpu-pro, opencl и opengl работают. Всем спасибо!

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