mrgloom 242 Жалоба Опубликовано April 17, 2011 Наблюдая за тем, как при использовании opencv работает всего одно ядро, я начал задумываться об многопоточности. но не все так гладко. ставил на VS2008 под вин7 х64 запутался, пока отложил. далее ставил на вин7 х32. тут еще нужно отметить что у intel теперь все в какие то пакеты объединено и хрен их поймешь. итак скачал Parallel Studio 2011 (Intel c++ компилятор+IPP+TBB) IPP не завелось, скачал отдельно IPP(ComposerXE-2011)- завелось, но только если компилировать opencv в VS compiler, а в intel compiler пишет, что ошибка в cv3dtracker.cpp (как решить не понял пока) + учитывая что я поправил все проекты http://software.intel.com/en-us/articles/new-directory-structure-and-library-naming-in-ipp/ протестировать производительность не получилось cxcoretest и т.д. у меня работает только на чистой сборке. на моем приложении и core2 duo E8500 чистая сборка 42 сек с IPP 41 сек с TBB и IPP 32 сек но можно отметить что взяв свое приложение где что то от opencv, что то стороннее(и скорее всего не параллелится) нагрузка была теперь 100% на 2 ядра, и скорее всего время исполнения тоже уменьшилось.(причем само приложение компилируется как VS compiler,так и Intel compiler(на пару сек выигрывает вроде)) еще я видимо не учитывал флаги компиляции по умолчанию вроде O2 cтоит. если у кого есть идеи тестового приложения для проверки можно попробовать скомпилировать. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TroyashkA 12 Жалоба Опубликовано April 21, 2011 Хм действительно актуально ... поигрался бы с многопоточностью на своем 8-ми ядернике Core i7 Q740 (тоже видел, что юзается только одно ядро, что не есть гуд), но, увы, времени сейчас нет ... планировал ближе к лету этим заняться, как сессию закрою Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 22, 2011 хотелось бы увидеть список функций которые используют IPP и TBB , а то явно не все используют. но радует хотя бы то, что можно мозгами вообще не думать, а просто перекомпилировать библиотеку и получить какой то прирост на халяву. и еще Is it desirable to get OpenCV 2.0 to use the IPP libraries? For some functions the use of IPP still gives a noticeable performance improvement, but the number of such functions is much, much smaller than in OpenCV 1.x Why was the support for IPP dropped? Does the road map for OpenCV intend to steer clear of IPP in the future? IPP support was not dropped completely; we still use IPP, but in a smaller extent. Desirably, OpenCV should run faster on various platforms without having to use commercial closed-source libraries. We do not have plans to get rid of IPP, but we have ongoing optimization efforts to optimize critical time-consuming algorithms that we use, and so IPP is removed there and supported natively. We found that only few algorithms can be optimized using existing OpenCV or IPP functions. Instead, many of the algorithms, such as HOG people detector, outlet detector, stereo correspondence etc., require manual optimization of the inner loops using intrinsics, OpenMP etc. We optimize such loops, but I doubt that any significant part of this optimized code will be included into IPP in the near future. If it happens and IPP counterparts do much better comparing to OpenCV, we will certainly include the corresponding hooks. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 22, 2011 cписок функций которые используют IPP и TBB , а то явно не все используют можно попробовать в сорцах по маске *.cpp осуществить поиск внутри файлов parallel_for (хотя не знаю насколько это точно будет) = C:\OpenCV-2.1.0-win\OpenCV-2.1.0\apps\traincascade\boost.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvcascadedetect.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvdistransform.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvhaar.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvlkpyramid.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvstereobm.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cv\cvsurf.cpp C:\OpenCV-2.1.0-win\OpenCV-2.1.0\src\cvaux\cvhog.cpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах