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

есть ли библиотеки написанные на asm?

Recommended Posts

есть ли библиотеки компьютерного зрения написанные на asm? или хотя бы какие то подрутины и т.д.

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


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

Вот целая куча библиотек (это просто для справки). А вот цитата с этого сайта:

Intel Image Processing Library - Optimized assembly MMX code for image processing, pattern recognition, signal processing, and matrix manipulation (no source - but still free)

IPL - это основа OpenCV (правда насколько сейчас это верно не знаю ).

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


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

ну про opencv то

Does OpenCV work on other processors?

Yes, OpenCV itself is open source and written in quite portable C/C++, it runs on other processors already and should be fairly easy to port (for example, there are already some CUDA optimizations on NVidia. On the other hand, OpenCV can sometimes run much faster on Intel processors (and sometimes AMD) because it can take advantage of SSE optimizations. OpenCV can be compiled statically with IPP libraries from Intel also which can speed up some function.

Does OpenCV still work with the optimized Intel IPP libraries?

a) Is it possible to get OpenCV 2.0 to use the IPP libraries?

Yes, WITH_IPP option should be selected in CMake and you must ensure that after configuration it prints "Use IPP: YES"

B) 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

c) For best performance should we be using IPP, and if not, then what is the recommended practice for best performance?

IPP has been designed as the library of low-level primitives suitable for optimization of various performance-critical applications. So, of course, you are welcome to use IPP directly to improve performance of your applications. It should be easy to use both OpenCV and IPP in the same application. Similarly, you are free to use SIMD intrinsics (MMX, SSE, SSE2 ...), OpenMP, OpenCL and any other performance-enhancing tools.

d) Is there a list, and if not can we get a list, of OpenCV functions for versions 1.0 and 2.0 that can use IPP?

The list of the function can be retrieved using the following commands:

cd opencv/src/cxcore

grep "ipp[is]" *.cpp

cd ../cv

grep "ipp[is]" *.cpp

e) 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.

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

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


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

Честно говоря, я не очень представляю задачи, где библиотеки на ASM было бы предпочтительнее применять.

Такой код будет очень быстро устаревать из-за изменения архитектуры процессоров. Да и то что хорошо для Intel не всегда хорошо для AMD, не говоря уже о разных семействах процессоров/контроллеров, коих тьма-тьмущая.

Архитектуры процессоров разрабатываются с оглядкой на эффективность компиляторов, а не наоборот. (см. "Компиляторы. Принципы, технологии, инструменты." Альфред Ахо, Моника Лам, Рави Сети, Джефри Ульман.)

И естественно, современные компиляторы выдают очень неплохие результаты при грамотном использовании, в большинстве случаев лучше чем рукописный ASM код.

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


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

вот заинтересовался насчет библиотек параллельной обработки изображений пока нашел только http://loi.sscc.ru/lab/RFFI07/ru/SSCC-PIPL/main.htm

в opencv как то с этим туго.(хотя они вроде говорили что есть и openmp и tbb, но процент покрытия ими кода видимо очень малый)

по поиску openmp в opencv_2.3.0 выдается

blobtrackingmsfg.cpp

blobtrackanalysisior.cpp

cvhaartraining.cpp

cvboost.cpp

surf.cpp

stardetector.cpp

system.cpp

core_c.h

spinimages.cpp

selfsimilarity.cpp

по TBB

stereo_multi.cpp

multi.cpp

driver_api_stereo_multi.cpp

driver_api_multi.cpp

latentsvmdetect.cpp

test_latentsvmdetector.cpp

matching.cpp

lsvmtbbversion.cpp

latentsvm.cpp

haar.cpp

cascadedetect.cpp

_lsvm_tbbversion.h

_lsvm_matching.h

_lsvm_error.h

gbt.cpp

ann_mlp.cpp

ml.hpp

window_w32.cpp

qtgui.png

surf.cpp

internal.hpp

stereobm.cpp

solvepnp.cpp

jas_image.c

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


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

Нашел на SIMD

http://sourceforge.net/projects/simd/?source=directory

http://simd.sourceforge.net/

 

 

кстати в IPP еще есть много чего для computer vision.

https://software.intel.com/en-us/node/504440

https://software.intel.com/en-us/intel-ipp

хотя IPP тоже на базе SIMD

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


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

По-моему писать что-то на асме в данном случае не имеет смысла, потому что получается что здесь писать на асме только ради того чтобы писать на асме.

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


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

По-моему писать что-то на асме в данном случае не имеет смысла, потому что получается что здесь писать на асме только ради того чтобы писать на асме.

Ну почему. Когда алгоритм готов и его нужно запустить в реальном времени на таргетном железе, то и на асме будешь писать, если это даст прирост производительности.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×