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

★★★

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

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

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

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

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

ZERG ★★★★ ()
Ответ на: комментарий от 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 ★★★★★ ()
Ответ на: комментарий от ls-h

Как у Nvidia с OpenCL?

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

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

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

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

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

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

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

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

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

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

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

exception13 ★★★★★ ()