LINUX.ORG.RU

OpenCL и линукс?

 , ,


0

1

Доброго времени суток. У меня задача завести видеокарточку под линуксом, но сделать это не из под убунту, а почти на голом ядре. Иными словами, я использую buildroot чтобы собрать легковесный дистрибутив для выполнения одной единственной задачи - чтобы там крутилась моя прога, которая общается с видеокартой через OpenCL.

Добр человек, поясни, как это всё настраивается и работает? OpenCL стек в норме. там всё что надо в /etc/OpenCL/vendors.. lspci карточку видит. lsmod не выдаёт ничего. и find /dev -group video тоже пусто. Значит дрова на карты не загружены?.. не очень понимаю что надо сделать.

что такое fglrx, radeon и amdgpu и зачем для одной видеокарты столько разных драйверов? ведь кристалл не начнёт иначе исполнять инструкции?))) У меня видеокарта RX480. Какой драйвер нужен мне и почему? Я указал в buildroot fglrx, но почему-то не собирается, я его выключил.. и я не видел где в menuconfig'е buildroot'a amdgpu..

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

Я указал в buildroot fglrx, но почему-то не собирается, я его выключил.. и я не видел где в menuconfig'е buildroot'a amdgpu..

Ты чего-то гонишь. Buildroot-2017.05 нет никакого fglrx, сплошной amdgpu. Открой глазаmake xconfig

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

у меня buildroot 2016.11 хотя дела это особо не меняет.

второе. я догнал как грузануть драйвер. я сделал make menuconfig НО уже в папке с ведром. оказывается таки можно ядро тюнить. увидел стандарный конфиг ядра. там можно врубить amdgpu. вызвал make clean

перешёл снова в корень билдрута и снова собрал make.

и правда, всё стало определяться, девайсы на месте. при загрузке разрешение экрана стало меняться на нормальное, «буковке мелкие». в итоге сообщение что amdgpu загружен. lsmod теперь его пишет. но ситуацию с opencl это не поменяло, нет девайсов. как будто buildroot сконфигурировал opencl так, чтоб тот юзал fglrx из состава amd_catalyst (но тот даже не подумает собираться для ядер от 4.8, где то(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855309) я видел даже баг репорт, от февраля 2017)

и fglrx как я понял это для боле старых карт. поэтому оставим попытки его собрать.

как настроить opencl для amdgpu?

xakepp35
() автор топика
Ответ на: комментарий от arson

мне нужно завести opencl без xorg. дистрибутив весит менее 70мб.. дрова на месте. бинарные блобы в наилчии. kms отрабатывает... вендор opencl есть, платформа окей. взяты либы от amdgpu-pro. но кто что где и как заполняет этот пресловутый список устройств? он пуст, карту не видно! остался всего лишь маленький микрокостыль! кто знает? кто работал с opencl глубже юзерапп девелопера?

xakepp35
() автор топика

fglrx уже давно закопали. Для старых радеонов используют свободный драйвер radeon, для видеокарт на архитектуре >=gcn1.0 используется свободный amdgpu. Плюс к этому в ядро нужно вкомпиливать firmware'и. Какие именно, можно посмотреть на Gentoo Wiki.

В amdgpu нету opencl. Для него нужно ставить amdgpu-pro, который базируется на amdgpu. Но вон говорят, что для opencl можно выдернуть только одну либу из amdgpu-pro и использовать чистый amdgpu.

BceM_IIpuBeT ★★☆☆☆
()

Последняя версия закрытого драйвера Catalyst для Linux вышла в декабре 2015 года. Тебе нужно версию ядра Linux и версию X-Server, как в Ubuntu 15.10.

На смену Catalyst пришёл AMDGPU-PRO. Он работает даже в самых последних версиях дистрибутивов Linux. Только вот я не знаю, есть ли там разгон.

> RX480

Catalyst её не поддерживает - тебе нужен AMDGPU-PRO.

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

Последняя версия закрытого драйвера Catalyst для Linux вышла в декабре 2015 года. Тебе нужно версию ядра Linux и версию X-Server, как в Ubuntu 15.10.

Последний поддерживаемый X-Server 1.18.4. А вот последнее ядро - как раз очень свежее 4.11 (патчи у арчика). Проверено, работает в Debian testing (со старым X-Server 1.18.3).

(Разве что при старте фаерфокса, хромиума, mpv появляются упс во всех окнах с эмулятором терминала. Интересно было бы разобраться.)

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

я ещё думаю, что есть вот библиотека-реализация этого OpenCL:
https://fakenmc.github.io/cf4ocl/
а в википедии есть примеры программ для расчётов с использованием OpenCL.

Но смущает, что glib в зависимостях...

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

что ещё какие команды можно посмотреть?

ldd на все библиотеки и исполняемые файлы.
Подозреваю, поскольку ты собирал систему вручную (копированием), ты не все нужные библиотеки собрал (какие-нибудь libdrm, libstdc++)

P.S. А вообще, ты не дал никакой информации, кроме того, что ты осваиваешь buildroot :) Конфиги, логи, какие тесты запускаешь...
P.P.S. У меня нет ни amd, ни opencl, ничем помочь не могу ;)

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

а зачем нужна кнопка отменить? обычно есть крестик в углу странички.. а вот кнопки отправить нет. блин, я все версии, всё перепечатал вручную, так хорошо ответ по полочкам.. на ворклог целый час ушёл. а лор вот меня button reset встречает =( убирай кнопку свою, не нужна она.

теперь будет в двух словах, с полностью пропавшим настроем. kms отрабатывает. следовательно с дровами норм.

clinfo пишет пратформ «1 штука», платформа «OpenCL 2.0 AMD-APP (1800.8)» устройств: 1 штука. Устройство - это процессор INTEL (SSE)

модули radeon и amdgpu стоят. распаковывал admgpupro, AMDAPPSDK.. libdrm стоят, ocl разных либ стоят, export AMDAPP*** разных делалось. не видит. кто где и как заполняет этот пресловутый список устройств? и почему он пуст когда все остальные всё прекрасно видят и мы в полушаге от запуска xorg (xinit поведал что не подходит ABI amdgpu драйвера и xorg сервера)

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

до кучи, скрипта ldd у меня нет, равно как и не поможет он. но можно команду: LD_TRACE_LOADED_OBJECTS=1 clinfo тогда скажет что мы гружим «libOpenCL.so» и всё. дальше догадки, что тот грузит (динамически) ровно то, что указано в /etc/OpenCL/vendors/amdocl64.icd а конкретно libamdocl64.so а их есть разные версии в зависимости откуда тянем - из buildroot, или из amdgpu-pro или же из AMDAPPSDK у меня как минимум 3 разные версии этой пижни есть..

ну а уж что тот грузит это вовсе не отследить, собственно то и вопрос как это всё дебажить и как понять - почему он не видит карт? и чего где нет?

xakepp35
() автор топика
Ответ на: комментарий от Anoxemian

боевое окружение - очень сложно. боевое окружение представляет собой виртуалку. там и в помине никакого opencl нет. там просто кросс-компиляция. на железном же хосте крутится слишком важный сервис, от него зависит жизнеобеспечение =) там winserver. не могу его ни отключить ни там линукс вертеть, только виртуалка с рабочим debian.

то есть в наличии - виртуалка + есть целевая платформа x86-64, без носителей данных, загрузка только по сетке. на целевой платформе есть pci-express и можно разные карты совать. пробовал 290 390 480. резулт одинаков. ядром дрова подхватываются, kms выставляет разрешение, запускается busybox (на glibc). юзер в системе единственный и это root. из под него стартуем clinfo. список opencl устройств «почти пуст» - там проц intel, и всё.

по вашей методе - самое простое это взять убунту и организовать network boot. но это опять не про нас. допустим на убунте всё заработает. а на голом ядре опять чего-то нет. моя задача именно разобраться в чём дело, чего не хватает и как поднять вычисления opencl имея минимальное количество либ и бинарников в системе.

xakepp35
() автор топика
Ответ на: комментарий от Einstok_Fair

strace - пособите, как это использовать? вот у меня есть бинарник, clinfo. я его запускаю он отрабатывает, выводит инфо и выходит.

какое типовое использование в данном случае?

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

я не знаю наверняка
вот такое почитай:
https://dri.freedesktop.org/wiki/GalliumCompute/

Я лумаю, что существует опенсорсная реализация этого OpenCL и работает она поверх Gallium, который часть Mesa. Но это всё мои личные фантазии.

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

ВСЁ УРА!!!!!!!

это я короче намешал либ от разных разных сущностей (но назывались они все в духе libamdocl64.so кто ж так делает!!!!)

итак, решив уже задвинуть на это дело тк даже на лоре народ не знает - я предпринял 1) я сделал полный клин сборки. 2) убил в menuconfige все месы, корги, ксорги, зерги и прочее, что пытался в порыве дикого отчаяния поставить.. никаких галлиумов и ничего такого, также в билдруте выключил вшитый opencl от catalyst - это походу пережитки fglrx, возможно он то мне всё и портил. 3) в билдруте указал только

- прошивку (packages/hw handling/firmware/linux-video/amd radeon firmware),

- в либах - libdrm для amdgpu,

4) само ядро 4.11, в меню конфиге его поменять единственную настройку - только включить драйвер (только amdgpu, без radeon) 5) конечно же тщательно проработал оверлей самое важное - это чётко распаковал из amdgpu-pro всё на свои места, (не родные для АМД «/opt/amdgpu-pro» а родные для линуха - тоесть все либы из amdgpupro -> в /usr/lib, ну и в том духе. чтоб поменьше зависеть от конфигов и разных экспортов, это всётаки не ось а прошивка.

суммарный вес рабочего образа с целевым ПО получился всего 57 мегов.. по сравнению с виндой которая платная (для предприятий как тут) и которая жрала все 30гб это просто глоток воздуха!!! пойду открывать шампанское..

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