问题
Is there a list of functions/methods of OpenCV that have been optimized with IPP and/or TBB and/or OpenMP?
回答1:
Disclaimer: I have no experience in OpenCV usage.
I found no such a list on the official opencv.org site. However, the ChangeLog says:
switched all the remaining parallel loops from TBB-only tbb::parallel_for() to universal cv::parallel_for_() with many possible backends (MS Concurrency, Apple's GDC, OpenMP, Intel TBB etc.)
Now, we know what to search and grep -IRl parallel_for_
applied on opencv
directory gives us the following:
build/include/opencv2/core/core.hpp
sources/apps/traincascade/boost.cpp
sources/modules/calib3d/src/stereobm.cpp
sources/modules/contrib/src/basicretinafilter.cpp
sources/modules/contrib/src/magnoretinafilter.cpp
sources/modules/contrib/src/parvoretinafilter.cpp
sources/modules/contrib/src/retinacolor.cpp
sources/modules/contrib/src/templatebuffer.hpp
sources/modules/core/include/opencv2/core/core.hpp
sources/modules/core/src/matrix.cpp
sources/modules/core/src/parallel.cpp
sources/modules/core/src/stat.cpp
sources/modules/features2d/src/detectors.cpp
sources/modules/gpu/src/calib3d.cpp
sources/modules/highgui/test/test_ffmpeg.cpp
sources/modules/imgproc/src/clahe.cpp
sources/modules/imgproc/src/color.cpp
sources/modules/imgproc/src/distransform.cpp
sources/modules/imgproc/src/generalized_hough.cpp
sources/modules/imgproc/src/histogram.cpp
sources/modules/imgproc/src/imgwarp.cpp
sources/modules/imgproc/src/morph.cpp
sources/modules/imgproc/src/smooth.cpp
sources/modules/imgproc/src/thresh.cpp
sources/modules/ml/src/ann_mlp.cpp
sources/modules/ml/src/gbt.cpp
sources/modules/ml/src/knearest.cpp
sources/modules/ml/src/nbayes.cpp
sources/modules/ml/src/svm.cpp
sources/modules/nonfree/src/surf.cpp
sources/modules/objdetect/src/cascadedetect.cpp
sources/modules/objdetect/src/haar.cpp
sources/modules/objdetect/src/hog.cpp
sources/modules/ocl/src/kmeans.cpp
sources/modules/photo/src/denoising.cpp
sources/modules/stitching/src/matchers.cpp
sources/modules/superres/src/btv_l1.cpp
sources/modules/video/src/bgfg_gaussmix2.cpp
sources/modules/video/src/bgfg_gmg.cpp
sources/modules/video/src/lkpyramid.cpp
sources/modules/video/src/tvl1flow.cpp
Here, we see the list of modules and parts which use the parallel loop. I hope it's enough to answer the question for TBB and OpenMP. For more details, please open the corresponding file and search for parallel_for_
to find out in which circumstances it is applied.
As for IPP, it seems it is quite extensively used by the core library, egrep -IRl '\bipp'
gives the following:
modules/calib3d/src/calibration.cpp
modules/core/include/opencv2/core/core_c.h
modules/core/include/opencv2/core/internal.hpp
modules/core/src/arithm.cpp
modules/core/src/dxt.cpp
modules/core/src/mathfuncs.cpp
modules/core/src/matmul.cpp
modules/core/src/precomp.hpp
modules/core/src/stat.cpp
modules/core/src/system.cpp
modules/imgproc/src/canny.cpp
modules/imgproc/src/color.cpp
modules/imgproc/src/deriv.cpp
modules/imgproc/src/distransform.cpp
modules/imgproc/src/filter.cpp
modules/imgproc/src/imgwarp.cpp
modules/imgproc/src/morph.cpp
modules/imgproc/src/samplers.cpp
modules/imgproc/src/smooth.cpp
modules/imgproc/src/sumpixels.cpp
modules/legacy/test/test_pyrsegmentation.cpp
modules/objdetect/src/haar.cpp
modules/objdetect/src/hog.cpp
modules/ocl/src/haar.cpp
来源:https://stackoverflow.com/questions/23716639/opencv-tbb-ipp-openmp-functions