# Opencv parallel framework

**URL:** <https://forum.opencv.org/t/opencv-parallel-framework/10983>\
**Category:** C++\
**Tags:** build\
**Created:** [November 16, 2022, 7:29am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983 "2022-11-16T07:29:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![HEUBITLYJ](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/heubitlyj/32/6515_2.png) [@HEUBITLYJ](https://forum.opencv.org/u/HEUBITLYJ)\
**Post date:** [November 16, 2022, 7:29am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/1 "2022-11-16T07:29:33Z")

</div>

Hello，i am trying to accerate my application on windows with intel cpu。As far as i know，opencv support parallel framework such as： TBB、HPX、OPENMP …，i am using the opencv download from github, and the cv::getBuildInformation()'s output is:

```auto
  Platform:
    Timestamp: 2021-12-25T04:33:15Z
    Host: Windows 10.0.19041 AMD64
    CMake: 3.16.4
    CMake generator: Visual Studio 15 2017
    CMake build tool: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/Bin/MSBuild.exe
    MSVC: 1916
    Configuration: Debug Release

  CPU/HW features:
    Baseline: SSE SSE2 SSE3
      requested: SSE3
    Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
      requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (16 files): + SSSE3 SSE4_1
      SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (0 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (4 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (31 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
      AVX512_SKX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

  C/C++:
    Built as dynamic libs?: YES
    C++ standard: 11
    C++ Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe (ver 19.16.27042.0)
    C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP2 /MD /O2 /Ob2 /DNDEBUG
    C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP2 /MDd /Zi /Ob0 /Od /RTC1
    C Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
    C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /MP2 /MD /O2 /Ob2 /DNDEBUG
    C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /MP2 /MDd /Zi /Ob0 /Od /RTC1
    Linker flags (Release): /machine:x64 /INCREMENTAL:NO
    Linker flags (Debug): /machine:x64 /debug /INCREMENTAL
    ccache: NO
    Precompiled headers: NO
    Extra dependencies:
    3rdparty dependencies:

  OpenCV modules:
    To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo stitching video videoio world
    Disabled: python2 python3
    Disabled by dependency: -
    Unavailable: java ts
    Applications: apps
    Documentation: NO
    Non-free algorithms: NO

  Windows RT support: NO

  GUI:
    Win32 UI: YES
    VTK support: NO

  Media I/O:
    ZLib: build (ver 1.2.11)
    JPEG: build-libjpeg-turbo (ver 2.1.2-62)
    WEBP: build (ver encoder: 0x020f)
    PNG: build (ver 1.6.37)
    TIFF: build (ver 42 - 4.2.0)
    JPEG 2000: build (ver 2.4.0)
    OpenEXR: build (ver 2.3.0)
    HDR: YES
    SUNRASTER: YES
    PXM: YES
    PFM: YES

  Video I/O:
    DC1394: NO
    FFMPEG: YES (prebuilt binaries)
      avcodec: YES (58.134.100)
      avformat: YES (58.76.100)
      avutil: YES (56.70.100)
      swscale: YES (5.9.100)
      avresample: YES (4.0.0)
    GStreamer: NO
    DirectShow: YES
    Media Foundation: YES
      DXVA: YES

  Parallel framework: Concurrency

  Trace: YES (with Intel ITT)

```

what i want to ask is:

1. is opencv is using the parallel framework when running?
2. how can i know which kind of parallel framwork is opencv using?
3. how can i select the parallel framework when opencv is running, so i can compare the performance?

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [November 16, 2022, 7:35am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/2 "2022-11-16T07:35:08Z")

</div>

please, be so kind to replace the useless screenshot with TEXT, thank you.

---

<div class="post-metadata">

**Author:** ![HEUBITLYJ](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/heubitlyj/32/6515_2.png) [@HEUBITLYJ](https://forum.opencv.org/u/HEUBITLYJ)\
**Post date:** [November 16, 2022, 7:37am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/3 "2022-11-16T07:37:56Z")

</div>

ok. i have replace pic to txt

---

<div class="post-metadata">

**Author:** ![HEUBITLYJ](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/heubitlyj/32/6515_2.png) [@HEUBITLYJ](https://forum.opencv.org/u/HEUBITLYJ)\
**Post date:** [November 16, 2022, 8:03am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/4 "2022-11-16T08:03:36Z")

</div>

> [@berak](#):
>
> please, be so kind to replace the useless screenshot with TEXT, thank you.

thanks for reply,can you help me with the three problems?

---

<div class="post-metadata">

**Author:** ![crackwitz](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/crackwitz/32/14_2.png) [@crackwitz](https://forum.opencv.org/u/crackwitz)\
**Post date:** [November 16, 2022, 10:43am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/5 "2022-11-16T10:43:40Z")

</div>

Parallelization framework is currently not runtime-selectable but there is work to make it so. I don’t know how far that has progressed.

You can always use OpenCL through OpenCV’s “transparent” API. Wrap your data in `UMat` and use with regular OpenCV functions.

---

<div class="post-metadata">

**Author:** ![HEUBITLYJ](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/heubitlyj/32/6515_2.png) [@HEUBITLYJ](https://forum.opencv.org/u/HEUBITLYJ)\
**Post date:** [November 16, 2022, 12:36pm UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/6 "2022-11-16T12:36:51Z")

</div>

Thanks fot reply， looking forward to this work finish。  
After a day of trying， i successfully compile opencv with TBB，

```auto
 Platform:
    Timestamp: 2022-11-16T10:45:07Z
    Host: Windows 10.0.19044 AMD64
    CMake: 3.24.0-rc5
    CMake generator: Visual Studio 17 2022
    CMake build tool: C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/amd64/MSBuild.exe
    MSVC: 1934
    Configuration: Debug Release

  CPU/HW features:
    Baseline: SSE SSE2 SSE3
      requested: SSE3
    Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
      requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (18 files): + SSSE3 SSE4_1
      SSE4_2 (2 files): + SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (34 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
      AVX512_SKX (8 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

  C/C++:
    Built as dynamic libs?: YES
    C++ standard: 11
    C++ Compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe (ver 19.34.31933.0)
    C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /wd4819 /MP -openmp /MD /O2 /Ob2 /DNDEBUG 
    C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /wd4819 /MP -openmp /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe
    C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /MP -openmp /MD /O2 /Ob2 /DNDEBUG 
    C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:precise /MP -openmp /MDd /Zi /Ob0 /Od /RTC1 
    Linker flags (Release): /machine:x64 /INCREMENTAL:NO 
    Linker flags (Debug): /machine:x64 /debug /INCREMENTAL 
    ccache: NO
    Precompiled headers: NO
    Extra dependencies:
    3rdparty dependencies:

  OpenCV modules:
    To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching ts video videoio world
    Disabled: -
    Disabled by dependency: -
    Unavailable: java python2 python2
    Applications: tests perf_tests examples apps
    Documentation: NO
    Non-free algorithms: NO

  Windows RT support: NO

  GUI: 
    Win32 UI: YES
    VTK support: NO

  Media I/O: 
    ZLib: build (ver 1.2.12)
    JPEG: build-libjpeg-turbo (ver 2.1.3-62)
      SIMD Support Request: YES
      SIMD Support: NO
    WEBP: build (ver encoder: 0x020f)
    PNG: build (ver 1.6.37)
    TIFF: build (ver 42 - 4.2.0)
    JPEG 2000: build (ver 2.4.0)
    OpenEXR: build (ver 2.3.0)
    HDR: YES
    SUNRASTER: YES
    PXM: YES
    PFM: YES

  Video I/O:
    DC1394: NO
    FFMPEG: YES (prebuilt binaries)
      avcodec: YES (58.134.100)
      avformat: YES (58.76.100)
      avutil: YES (56.70.100)
      swscale: YES (5.9.100)
      avresample: YES (4.0.0)
    GStreamer: NO
    DirectShow: YES
    Media Foundation: YES
      DXVA: YES

  Parallel framework: TBB (ver 2021.7 interface 12070)

  Trace: YES (with Intel ITT)

  Other third-party libraries:
    Intel IPP: 2020.0.0 Gold [2020.0.0]
           at: C:/lib/opencv/build/3rdparty/ippicv/ippicv_win/icv
    Intel IPP IW: sources (2020.0.0)
              at: C:/lib/opencv/build/3rdparty/ippicv/ippicv_win/iw
    Lapack: NO
    Eigen: NO
    Custom HAL: NO
    Protobuf: build (3.19.1)

  OpenCL: YES (NVD3D11)
    Include path: C:/lib/opencv/3rdparty/include/opencl/1.2
    Link libraries: Dynamic load

  Python 3:
    Interpreter: C:/Users/lyj11/AppData/Local/Programs/Python/Python310/python.exe (ver 3.10.7)
    Libraries: C:/Users/lyj11/AppData/Local/Programs/Python/Python310/libs/python310.lib (ver 3.10.7)
    numpy: C:/Users/lyj11/AppData/Local/Programs/Python/Python310/lib/site-packages/numpy/core/include (ver 1.23.3)
    install path: C:/Users/lyj11/AppData/Local/Programs/Python/Python310/Lib/site-packages/cv2/python-3.10

  Python (for build): C:/Users/lyj11/AppData/Local/Programs/Python/Python310/python.exe

  Java:                          
    ant: NO
    JNI: NO
    Java wrappers: NO
    Java tests: NO

```

And in my benchmark，  
with Parallel framework: Concurrency，it cost 350us ；  
with Parallel framework: TBB，it cost 800us ；  
is it reasonable？

---

<div class="post-metadata">

**Author:** ![HEUBITLYJ](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/heubitlyj/32/6515_2.png) [@HEUBITLYJ](https://forum.opencv.org/u/HEUBITLYJ)\
**Post date:** [November 17, 2022, 11:32am UTC](https://forum.opencv.org/t/opencv-parallel-framework/10983/7 "2022-11-17T11:32:42Z")

</div>

hello, is TBB faster than Concurrency? in my test TBB is mush slower than Concurrency
