Перейти к содержимому
Compvision.ru
Андрей_Андрей

Сборка OpenCV 2.4

Recommended Posts

Пытаюсь собрать Opencv 2.4.11 с TBB и IPP в надежде что это уменьшит тормоза моего приложения
Если кто знает, просветите пожалуйста насчет следующих моментов: 

- встречал посты где люди пишут, что начиная с версии OpenCV 2.4.5 нет необходимости в сборке с TBB, якобы автоматом будут задействованы методы, которые используют мультрединг, так-ли это? 

- я с первого раза собрал Opencv 2.4.11 с TBB под студию 2013 с родным компилятором студии. посмотрел getBuildInformation() - TBB задействовано, но прироста производительности я не замечаю - как было 60 мс на один проход цикла, так и осталось. Что с TBB, что без него, загрузка всех 4-х ядер процессора равномерная. 
- при попытке собрать и с TBB и с IPP компилятор валит ошибки вида: Error    95    error LNK1181: cannot open input file '..\..\lib\Release\opencv_calib3d2411.lib'    C:\opencv\build_tbb_ipp\modules\ocl\LINK    opencv_ocl - хотя делаю все так-же, с чем это может быть связано? 
- в скомпилированной директории я не нахожу файлов #include <opencv2/highgui/highgui.hpp> и #include <opencv2/opencv.hpp> и дело не в путях , в получившейся в рез-те компиляции папке build этих файлов *.hpp нет в принципе. ЧЯДНТ?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Error    95    error LNK1181: cannot open input file '..\..\lib\Release\opencv_calib3d2411.lib'

Это явно не первая ошибка в списке.

А вообще, включите OpenMP и хватит, можете его еще использовать в своей программе, это довольно просто, и может дать больший прирост производительности, так как функции OpenCV и так достаточно хорошо оптимизированы.

Помнится там конфликт был между TBB и OpenMP, они по сути, одно и то же делают. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Включаю\отключаю использование OpenMP и TBB. Включаю/отключаю именно их вместе, т.к. они оба включены в сборке. вне зависимости от того, включены они или нет, вижу от 5 до 12 потоков своего приложения. они в совокупности грузят все 4 ядра. совокупная загрузка цп - 38 - 40%. включаю использование OpenMP добавляя #include <omp.h> и #pragma omp parallel for перед процедурами, которые, как мне кажется, можно распараллелить. 

никаких изменений по сравнению с вариантом когда я не использую OpenMP я не вижу. что так ,что эдак, время цикла на CoreI7 с 4 ядрами колеблется от 50 до 60 мс. Можно-ли выжать что-то еще из моего железа, до того как перейти на GPU ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в опциях компилятора OpenMP разрешен ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну тогда если только оптимизировать Ваши алгоритмы под распараллеливание. Но сдается мне что сильно не ускорится. Если процы не на 100% загружены.

Интенсивная работа с диском может тоже быть источником тормозов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотрите сорцы, где там TBB, IPP, OpenMP секции.

 

Хотя не очень понятно типа cv::parallel_for может иметь несколько "бэкэндов"

https://github.com/opencv/opencv/blob/93e5947f55f04ad6590cb889206a633683cb01be/modules/core/src/parallel.cpp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

mrgloom, правильно я понял Вашу мысль, что если есть TBB, то OpenMP задействовано не будет? Что Вы имеете ввиду "cv::parallel_for может иметь несколько "бэкэндов" ? в файле по ссылке упоминаний про IPP я не нашел...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата

что если есть TBB, то OpenMP задействовано не будет?

Ну да там вроде исключающие дефайны.

Я не уверен что в OpenCV всё сделано через cv::parallel_for_

 

IPP да это скорее performance primitives, быстрые конструкции типа SSE, для ускорения, а не для распараллеливания.

 

Чтобы понять что пересборка что то даёт надо найти какой то код  в opencv который использует cv::parallel_for_  или OpenMP и т.д. в явном виде и написать сентетический тест.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×