LINUX.ORG.RU

Как заставить работать OpenCV DNN на Vulkan?

 , , , ,


0

3

Привет всем!

Ковыряюсь с OpenCV и моделями Caffe. Пытаюсь ускорить это дело, т.к. средствами процессора скорость получается очень печальной.
К своему сожалению выяснил, что OpenCL, похоже пролетает. Встроенный GPU от Intel HD Graphics 4600 не поддерживается проприетарным драйвером Intel, на свободном beignet тоже какое-то шаманство и не собирается ядро. Есть отдельная видеокарта AMD R9 270x, и на ней шаманство с драйверами и поддержкой OpenCL. AMDGPU-Pro официально её не поддерживает. Включить можно опцией при загрузке. Старый Blender (2.78) даже что-то рендерит в Cycles, но при запуске OpenCV опять не собирается ругается так:

Status -11: CL_BUILD_PROGRAM_FAILURE
-DT=float -Dconvert_T=convert_float -DRELU_NO_SLOPE -D AMD_DEVICE
Остаётся попробовать Vulkan, вроде у меня он работает, vulkan-smoketest чайники рисует. Но как его вообще включить?
cv2.dnn_Net.setPreferableBackend(net, cv2.dnn.DNN_BACKEND_VKCOM)
cv2.dnn_Net.setPreferableTarget(net, cv2.dnn.DNN_TARGET_VULKAN)
- не приводит ни к чему. OpenCV просто молча использует процессор. Куда копать?
opencv-contrib-python - 4.0.0.21
python - 3.6.6

★★★★★

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

а ROCm поддерживает твою карту?

Я думал, что AMDGPU-Pro и работает через этот ROCm. Попробую погуглить. UPD Судя по этому списку, не поддерживается.

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)

Странно, что у тебя проблемы с OpenCL + Intel. Я тут решил завести нейронки на ноуте, тоже 4600. Всё определилось (правда 1.2 версия и нейронки всё равно не работают, но это уже проблема с api бэкэнда).

ZERG ★★★★★
()
Ответ на: комментарий от ls-h

Да, там ещё вроде для tf есть пакет computecpp, но я пока не хочу с зависимостями возиться.

ZERG ★★★★★
()

Единственная стабильная штука для нейронок - CUDA. Ну и я не пробовал Intel Compute Stick и другие специализированные решения.

Norgat ★★★★★
()

#Зато_без_блобов #Зато_свободный_стандарт #Зато_хуангу_не_заплатил

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

Эх, беда с этими новомодными стандартами

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

Единственная стабильная штука для нейронок - CUDA

При этом, как ни странно, OpenCV не умеет ускоряться через CUDA.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ZERG

А не дешевле купить бюджетку для прототипирования

Как у Nvidia с OpenCL? Что бы уж сразу и то и другое API.
1060, например, для прототипов нормальная бюджета?

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)

Встроенный GPU от Intel HD Graphics 4600

OpenCV до сих пор с intel толком не работает: https://github.com/opencv/opencv/issues/8275

Баг до сих пор висит открытым.

Есть отдельная видеокарта AMD R9 270x, и на ней шаманство с драйверами и поддержкой OpenCL.

Целый пакет драйверов тебе ставить не нужно. Достаточно opencl-icd.

Вот полезная информация по теме: https://community.amd.com/thread/222956

Вообще у тебя есть даже несколько вариантов. Если хочешь изолированную среду, то ты можешь как дуалбут с подходящим набором драйверов сделать, так и виртуальную машину настроить с пробросом радеона и установкой fglrx и icd.

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

Единственная стабильная штука для нейронок - CUDA.

При этом корректность вычислений там до сих пор под вопросом.

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

Умеет, но не все алгоритмы реализованы.

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

Как у Nvidia с OpenCL?

Медленнее, чем AMD.

1060, например, для прототипов нормальная бюджета?

Ты можешь взять поддерживаемую ROCm видяху от AMD дешевле, чем эту поделка кожаного китайца, поддержку которой он потихоньку сводит к замедлению драйверами.

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

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

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

Я подразумевал cuda код

OpenCL в отличии от CUDA работает и на CPU (причем не только x86) и на GPU и на FPGA

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

Вот полезная информация по теме:

Ну, откат до 14.04 это прямо жесть. Начнётся геморрой с тем, что какая-нибудь другая нужная библиотека откажется работать без бубна.
Вообще, clinfo говорит, что OpenCL через проприетарный драйвер у меня есть: https://pastebin.com/PVLaZ3By
Может быть ошибка, что я написал в первом сообщении, это косяк OpenCV, а не установки/настроек OpenCL? Старый Blender таки работает и рендерит через Cycles. Как бы ещё проверить OpenCL, чем потестировать?

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

Ты можешь взять поддерживаемую ROCm видяху от AMD дешевле

Но я опять останусь без CUDA. Слишком много где оно является единственным выбором. Ведь нет же никакого способа запуска CUDA на AMD?

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

При этом корректность вычислений там до сих пор под вопросом.

А есть подробности?

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

CUDA - nVidia only. если ты что то пишешь с использованием OpenCV то наверное это должно быть кроссплатформенно и в таком случае единственное решение это использовать OpenCL

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

Да, но гораздо проще найти nvidia и относительно рабочий cuda код. Я потратил кучу времени только на настройку opencl, да и то не закончил.

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

Вряд ли у AMD есть такая альтернатива

amd fire pro && amd radeon instinct

mi60 вроде как самый производительный одиночный gpu на данный момент.

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