Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setNumThreads(x)是否正在并行化我的OpenCV代码?_Opencv - Fatal编程技术网

setNumThreads(x)是否正在并行化我的OpenCV代码?

setNumThreads(x)是否正在并行化我的OpenCV代码?,opencv,Opencv,我真的想知道是否使用OpenCV的setNumThreads()确实允许我的代码并行运行。我在互联网上搜索了很多,没有找到我的问题的答案 有人能回答我的问题吗?效果很大程度上取决于您在cmake configure上选择的配置选项,例如,请参见,以及不同配置的捕获: 有了这些,你就能理解。尽管如此,如果你运行的是一个固有的顺序算法,并行引擎将不会有多大作用,这实际上是OpenCV下的一切。。。我的猜测是,如果您有几个OpenCV程序并行运行,您可能会看到一个有意义的差异。觉得有必要根据migue

我真的想知道是否使用OpenCV的
setNumThreads()
确实允许我的代码并行运行。我在互联网上搜索了很多,没有找到我的问题的答案


有人能回答我的问题吗?

效果很大程度上取决于您在cmake configure上选择的配置选项,例如,请参见,以及不同配置的捕获:


有了这些,你就能理解。尽管如此,如果你运行的是一个固有的顺序算法,并行引擎将不会有多大作用,这实际上是OpenCV下的一切。。。我的猜测是,如果您有几个OpenCV程序并行运行,您可能会看到一个有意义的差异。

觉得有必要根据miguelao的答案构建:OpenCV的大部分功能不是多线程的。setNumThreads仅影响多线程函数,例如
calcOpticalFlowPyrLK

通常默认情况下,OpenCV将使用与内核数量相同的线程。因此
setNumThreads
不会给您带来速度提升

我的主要用途是禁用多线程,这样我就可以用更粗的粒度来完成自己的任务

/* IMPORTANT: always use the same order of defines
   1. HAVE_TBB         - 3rdparty library, should be explicitly enabled
   2. HAVE_CSTRIPES    - 3rdparty library, should be explicitly enabled
   3. HAVE_OPENMP      - integrated to compiler, should be explicitly enabled
   4. HAVE_GCD         - system wide, used automatically        (APPLE only)
   5. HAVE_CONCURRENCY - part of runtime, used automatically    (Windows only - MSVS 10, MSVS 11)
*/