代码之家  ›  专栏  ›  技术社区  ›  Yves Daoust

opencv中的预编程并行

  •  1
  • Yves Daoust  · 技术社区  · 5 年前

    我知道opencv具有多线程形式的并行能力。例如,foreach结构允许使用numthreads线程加速循环。

    我不清楚的是,如果一些计算密集型函数(FFT)被实现为并行化版本。我不考虑GPU加速。

    你有更多的信息吗?

    2 回复  |  直到 5 年前
        1
  •  0
  •   Alain Merigot    5 年前

    opencv是一个经过多年开发的复杂库,它集成了当前计算机的大多数并行形式。这包括SIMD处理(针对不同的处理器供应商和不同的体系结构代)、使用CUDA、OpenCL或OpenGL的多个AcError和多线程。

    关于后者,OpenCV可以根据它们的可用性使用不同的框架(有些是第三方软件,或者仅在某些特定系统中可用)。这包括OpenMP、英特尔线程构建块(TBB)、P螺纹和Mac OS和Windows上的专有框架。

    但是,我不能说,如果给定的OpenCV函数在你的计算机上是并行的。并非所有功能都是并行编程的,必须在编译时显式选择并行特征。但是opencv libs通常是用open mp支持多线程来构建的。

        2
  •  0
  •   Nuzhny    5 年前

    你需要挖掘源代码。

    例如CV::DFT函数包含若干实现:

    1. 在GPU、CPU或IGPU上打开CL(您可以设置目标设备)。它也将在CPU上并行。您需要使用opencl支持配置opencv build,设置use opencl true并设置目标设备cpu(或其他)。

    2. 如果在CMake中用IPP配置OpenCV构建,则实现IPP。

    3. HAL implementation -也在芝加哥。

    4. 一个简单的ocvdftimpl。

    全在你手里!