ссыль на кошерное, запущу, сообщу результат, но догадываюсь, что проблема в том, что OpenCL да и весь стек rocm - хромая индейка, если карт больше двух подцеплено в системе с одним процессором Ryzen.
Собственно задачка запустить OpenCL на больше чем две карточки Vega56 с одним процессором Ryzen. На офтопике работает OpencL на 7 карточках Vega56, а на Linux стеке rocm даже на трех Vega56 не хочет ничего считаться в OpenCL. На одной Vega56 и на двух Vega56 работает OpencL!
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 2)
Сколько бы я не сидел на AMD и не смотрел аниме у меня такого никогда не было!!!! А вот зато, как я слышал, на Интеле и Нвидии там постоянный пердолинг с драйверами - крайне не советую SakuraKun не даст соврать!
Это потому что третья видеокарта подключена к чипсету с кастрированным pcie, а не процессору. Исправляется переходом на threadripper или Skylake-X. Если брать Skylake-X, то надо предварительно убедиться, что все pcie линии на месте.
tensorflow, caffe2, pytorch и многие другие, портирование приложений с cuda на нее более чем простое, а вот обратно никак, ибо кудах сосет по функциональности.
PS. А стенда со Skylake нет для теста и брать не планируется даже если на Skylake вдруг заработает у кого. Смотрю в сторону Threadripper 1950/2950 и четырех карт на один процессор, воткнутых напрямую в плату, без райзеров.
А пока денег мало, хотелось бы на каждом из Ryzen крутить по 6-7 Вег56 без оффтопика 10ки, на котором хоть и с шаманскими обрядами, но работает по 7 карт Вега56 на один процессор.
Сейчас конфигурация моего стенда такая:
lspci -tv
-[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex
+-00.2 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O Memory Management Unit
+-01.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-01.1-[01]----00.0 Lite-On Technology Corporation Device 21f1
+-01.3-[02-0c]--+-00.0 Advanced Micro Devices, Inc. [AMD] X370 Series Chipset USB 3.1 xHCI Controller
| +-00.1 Advanced Micro Devices, Inc. [AMD] X370 Series Chipset SATA Controller
| \-00.2-[03-0c]--+-02.0-[04]----00.0 Intel Corporation I211 Gigabit Network Connection
| +-04.0-[05]--
| +-05.0-[06-08]----00.0-[07-08]----00.0-[08]--+-00.0 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64]
| | \-00.1 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
| +-06.0-[09-0b]----00.0-[0a-0b]----00.0-[0b]--+-00.0 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64]
| | \-00.1 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
| \-07.0-[0c]--
+-02.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-03.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-03.1-[0d-0f]----00.0-[0e-0f]----00.0-[0f]--+-00.0 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 XL/XT [Radeon RX Vega 56/64]
| \-00.1 Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]
+-04.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-07.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-07.1-[10]--+-00.0 Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function
| +-00.2 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor
| \-00.3 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
+-08.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
+-08.1-[11]--+-00.0 Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function
| \-00.3 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller
+-14.0 Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller
+-14.3 Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge
+-18.0 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0
+-18.1 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1
+-18.2 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2
+-18.3 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3
+-18.4 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4
+-18.5 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5
+-18.6 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6
\-18.7 Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 2)
Ограничения может и сняты, только вот нет материнских плат с 3 и более pcie на процессор. Как оно не работало через чипсет, так и не работает, будет возможно на следующей серии чипсетов, когда добавят всю требуемую функциональность. Проверяется элементарно, выдерните карту с процессора и оставьте одну в процессоре, вторую на чипсете, будут точно такие же проблемы как и с тремя. Это решаемо либо использованием opencl 1.2 в windows, либо использованием threadripper и rocm.
С ядром Linux 5.1.1 три карты работают, но только больше трех карт пока не пробовал, НО только OpenCL версии 1.1 от Mesa 19.0.4. Здесь уже был совет что нужно попробовать, чтобы завести и повыше версии OpenCL (для расчетов нужно не ниже версии 1.2, а АМД в закрытых дровах и соответствующем ПО вроде как поддерживает и OpenCL даже версии 2.1), сам пока ещё не пробовал - изучаю вопрос.
Ограничений в новых версиях ядра и стека rocm больше нет, карты можно втыкать хоть в PCIe версии 2.0 х1 и даже более того в платы со старыми процессорами AMD (!) и больше ядро не глючит от этого. Раньше же действительно, даже загрузка драйвера amdgpu не шла, когда втыкал три карты и более на один Ryzen. Также обязательно проверю и на старых процессорах Phenom II как все будет заводиться, но лишь после того как удастся победить Ryzen.
Проблема исключительно в самом rocm или моем неумении его приготовить. Позже выясню и сообщу.
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 1)
Работают три карты с ROCM 2.4.0 - система с ними грузилась, не работает лишь clinfo на стеке ROCM и то потому что рецепт не нашел ещё. Впрочем clinfo заработал, тот что из пакета amdgpu-pro, в окружении ROCM 2.4.0, но мне показывал лишь OpenCL 1.1 от Mesa 19.0.4. Тут уже была подсказка что пробовать нужно. Дойдут руки и хватит если остатков мозгов - разберусь и с этим :)
Вопрос нужно было поставить так, а в работающей системе Ryzen 1800х + более чем две карты Vega56 на стеке ROCM удалось завести OpenCL версии выше чем 1.1 ?
Ответ: не пытался снова, ожидаю помощи или подсказки от сообщества, или когда баги и ограничения пофиксит сама AMD.
Также добавлю что в 2018 году система на ROCM даже не грузилась, были ограничения и баги которые AMD успешно исправила или убрала в начале 2019 с выходом rocm версий выше 2.0
Теперь система грузится, даже с тремя картами, но как завести OpenCL версии выше чем 1.1. пока не разбирался, работа на галерах все время съедает, четыре проекта одновременно - сил и времени на хобби не остается совсем! А еще и опыта маловато в ядерных делах и в разработке и исправлении драйверов и компиляторов clang/llvm.
Если располагаете своими карточками Vega и имеете на руках готовый рецепт (патчик к проекту rocm и/или что даже лучше к ядру ot-sources-5.1.4) - напишите мне сколько денег хотите за помощь
perestoronin собака gmail.com
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 3)
Через коммутатор три карты и четыре от материнской платы - все семь карт работают, приятным бонусом OpenCL версии 2.0 в дровах amdgpu-pro 19.10.785425 для карт Vega56.
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 1)
У тебя Gentoo? Выкини rocm, поставь amdgpu-pro-opencl. На крайняк можешь посмотреть eselect opencl list Ну и да. mesa должна быть собрана БЕЗ opencl. Ты просто не так всё сделал. А вот когда заведётся то, что у тебя есть, тогда будешь ковырять rocm. хотя можешь пересобрать mesa без opencl.
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 1)
Да нет, я говорил что месу без опенсл собирать именно что без этого нормально не поставить опенсл от амдгпу-про. Только и делов. В общем, как понимаю, в данный момент проблема решена, так что уже не важно :)
После некоторых обновлений системы проблема вернулась с новыми ошибками:
# clinfo
Number of platforms 1
Platform Name AMD Accelerated Parallel Processing
Platform Vendor Advanced Micro Devices, Inc.
Platform Version OpenCL 2.1 AMD-APP (2841.4)
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 AMD Accelerated Parallel Processing
Number of devices 7
Device Name gfx900
Device Vendor Advanced Micro Devices, Inc.
Device Vendor ID 0x1002
Device Version OpenCL 2.0 AMD-APP (2841.4)
Driver Version 2841.4 (PAL,HSAIL)
Device OpenCL C Version OpenCL C 2.0
Device Type GPU
Device Board Name (AMD) Radeon RX Vega
Device Topology (AMD) PCI-E, 1b:00.0
Device Profile FULL_PROFILE
Device Available Yes
Compiler Available Yes
Linker Available Yes
Max compute units 56
SIMD per compute unit (AMD) 4
SIMD width (AMD) 16
SIMD instruction width (AMD) 1
Max clock frequency 1590MHz
Graphics IP (AMD) 9.0
Device Partition (core)
Max number of sub-devices 56
Supported partition types None
Supported affinity domains (n/a)
Max work item dimensions 3
Max work item sizes 1024x1024x1024
Max work group size 256
Preferred work group size (AMD) 256
Max work group size (AMD) 1024
дальше вывода нет, на этом месте консоль и висит
Захотелось поставить не только OpenCL но и все остальное из amdgpu-pro, тем более что вышла недавно новая версия 19.20.
Но даже 19.20 рассчитана на старые ядра, а как бы amdgpu-pro-dkms установить в linux kernel 5.1.12 ?
Пока не удалось:
#make -j16 KERNELRELEASE=5.1.12-gentoo -j16 kdir=/lib/modules/5.1.12-gentoo/build -C /lib/modules/5.1.12-gentoo/build M=/var/lib/dkms/amdgpu/19.20-812932/build...(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.1.12-gentoo (x86_64)
Consult /var/lib/dkms/amdgpu/19.20-812932/build/make.log for more information.
#cat make.log
...
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c: В функции «amdgpu_pmops_runtime_suspend»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c:1166:2: ошибка: неявная декларация функции «drm_kms_helper_poll_disable»; имелось в виду «drm_fb_helper_pan_display»? [-Werror=implicit-function-declaration]
drm_kms_helper_poll_disable(drm_dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_pan_display
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_ttm.o
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_bo_vm.o
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_object.o
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c: В функции «amdgpu_pmops_runtime_resume»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c:1205:2: ошибка: неявная декларация функции «drm_kms_helper_poll_enable»; имелось в виду «drm_fb_helper_fill_var»? [-Werror=implicit-function-declaration]
drm_kms_helper_poll_enable(drm_dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_fill_var
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_module.o
LD [M] /var/lib/dkms/amdgpu/19.20-812932/build/amd/amdkcl/amdkcl.o
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_execbuf_util.o
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_page_alloc.o
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c: На верхнем уровне:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.c:1325:24: ошибка: «DRIVER_IRQ_SHARED» не описан здесь (не в функции); имелось в виду «TIMER_IRQSAFE»?
DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
^~~~~~~~~~~~~~~~~
TIMER_IRQSAFE
LD [M] /var/lib/dkms/amdgpu/19.20-812932/build/scheduler/amd-sched.o
cc1: некоторые предупреждения считаются ошибками
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_bo_manager.o
make[2]: *** [scripts/Makefile.build:276: /var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_drv.o] Ошибка 1
make[2]: *** Ожидание завершения заданий…
CC [M] /var/lib/dkms/amdgpu/19.20-812932/build/ttm/ttm_page_alloc_dma.o
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c: В функции «amdgpu_switcheroo_set_state»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c:1018:3: ошибка: неявная декларация функции «drm_kms_helper_poll_enable»; имелось в виду «drm_fb_helper_fill_var»? [-Werror=implicit-function-declaration]
drm_kms_helper_poll_enable(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_fill_var
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c:1021:3: ошибка: неявная декларация функции «drm_kms_helper_poll_disable»; имелось в виду «drm_fb_helper_pan_display»? [-Werror=implicit-function-declaration]
drm_kms_helper_poll_disable(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_pan_display
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c: В функции «amdgpu_device_fini»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c:2774:4: ошибка: неявная декларация функции «drm_crtc_force_disable_all»; имелось в виду «drm_helper_force_disable_all»? [-Werror=implicit-function-declaration]
drm_crtc_force_disable_all(adev->ddev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drm_helper_force_disable_all
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c: В функции «amdgpu_device_resume»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c:3023:3: ошибка: неявная декларация функции «drm_helper_hpd_irq_event»; имелось в виду «drm_fb_helper_hotplug_event»? [-Werror=implicit-function-declaration]
drm_helper_hpd_irq_event(dev);
^~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_hotplug_event
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_device.c:3025:3: ошибка: неявная декларация функции «drm_kms_helper_hotplug_event»; имелось в виду «drm_fb_helper_hotplug_event»? [-Werror=implicit-function-declaration]
drm_kms_helper_hotplug_event(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_hotplug_event
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_connectors.c: В функции «amdgpu_connector_lvds_detect»:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_connectors.c:735:7: ошибка: неявная декларация функции «drm_kms_helper_is_poll_worker»; имелось в виду «drm_fb_helper_initial_config»? [-Werror=implicit-function-declaration]
if (!drm_kms_helper_is_poll_worker()) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_fb_helper_initial_config
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_connectors.c: На верхнем уровне:
/var/lib/dkms/amdgpu/19.20-812932/build/amd/amdgpu/amdgpu_connectors.c:835:16: ошибка: «drm_helper_probe_single_connector_modes» не описан здесь (не в функции); имелось в виду «drm_helper_move_panel_connectors_to_head»?
.fill_modes = drm_helper_probe_single_connector_modes,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drm_helper_move_panel_connectors_to_head
...
Вдруг кто уже починил, или может у кого руки прямее моих и может подсобить оперативно патчиком ? Не бесплатно ;)