簡體   English   中英

OpenCV 中的預編程並行性

[英]Preprogrammed parallelism in OpenCV

我知道 OpenCV 具有多線程形式的並行能力。 例如 forEach 構造允許使用 NumThreads 線程加速循環。

我不清楚一些計算密集型函數(比如 FFT)是否作為並行版本實現。 我在這里不考慮 GPU 加速。

你有更多信息嗎?

Opencv 是一個多年開發的復雜庫,它集成了目前計算機的大多數並行形式。 這包括 SIMD 處理(針對不同的處理器供應商和不同的架構代)、使用 CUDA、opencl 或 opengl 和多線程的加速器

關於后者,opencv 可以根據其可用性使用不同的框架(有些是第三方軟件,或者僅在某些特定系統中可用)。 這包括 macOS 和 Windows 上的 openMP、英特爾線程構建塊 (TBB)、pthread 和專有框架。

但是,我不能說,如果您計算機上的給定 opencv 函數是並行化的。 並非所有函數都使用並行支持進行編程,並且必須在編譯時明確選擇並行特性。 但是 opencv 庫經常使用對多線程的 open-MP 支持來構建。

你需要挖掘源代碼。

例如 cv::dft 函數包含幾個實現:

  1. GPU、CPU 或 iGPU 上的 OpenCL(您可以設置目標設備)。 它也將在 CPU 上並行。 您需要使用 OpenCL 支持配置 OpenCV 構建,設置 use OpenCL true 並設置目標設備 CPU(或其他)。

  2. 如果您的 OpenCV 構建在 CMake 中使用 IPP 配置,則 IPP 實現。

  3. HAL 實現- 也在 CMake 中。

  4. 一個簡單的 OcvDftImpl。

一切盡在您的手中!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM