我们正在编译一个使用 OpenMP 的应用程序。我们正在使用带有 -fopenmp 的 gcc 4.4。该应用程序还使用 IPP,其中包括自己的 OpenMP 版本 (libiomp5)。(注意:我们通过调用 ippSetNumThread(1) 来禁用 IPP 的内部线程。根据 Intel 的文档,这应该避免与其他线程库发生冲突。但是,与 IPP 的链接仍然在 libiomp5.so 中链接。)
由于 libiomp5.so 已经链接,我们还没有链接 libgomp.so(gcc 的 OpenMP 版本)。很长一段时间以来,这一直有效,但是在看似无关紧要的更改之后,我们开始在我们支持的四个平台之一上看到非常奇怪的与 OpenMP 相关的崩溃(其他三个平台仍然可以正常工作)。
如果我在 libgomp.so 和 libiomp5.so 中链接,我可以使崩溃消失。
我对此有几个问题:
我已经安装了系统opencv-3.0
。我需要检查是否IPP
在 opencv 中启用。我该如何检查?
我已经使用 Intel IPP 构建了 OpenCV,因此我认为只要有可能就会使用它(例如矩阵乘法)。
我想通过与串行版本进行比较来测试并行应用程序的可扩展性。为了做到这一点,当我这样做时:
omp_set_num_threads(1);
cv::setNumThreads(1);
Run Code Online (Sandbox Code Playgroud)
但是,通过监视 CPU 使用情况,我发现仍然使用多个 CPU。这是为什么?如何仅使用一个CPU强制执行程序?
我想在Intel IPP或OpenCV中使用过滤器功能。关于锚点的位置存在争论,我不知道它们是什么或如何使用它们。
锚点是什么,它的作用是什么?
假设有人使用IPP(Intel Performance Primitives)编译本机dll,并使用托管包装器将其部署到Azure,是否可以实现IPP的性能提升?
正如这里所说,OpenCV 使用 IPP,而 IPP 使用 GPU:
\n\n\n\n\n原来 OpenCV 正在使用 IPP,而 IPP 本身现在也可以使用 GPU\n。
\n\n以防万一其他人在 google 上搜索“opencv gpu 速度较慢”并且不知道\n IPP GPU 支持;)
\n
另外,我发现了这个:
\n\n\n\n\n使用Intel\xc2\xae IPP异步优化增强现实管道
\n\n使用 Intel\xc2\xae GPU优化 Total Immersion 的 D\'Fusion* 增强现实管道的性能和功耗
\n
而且没有一个关键字:OpenCL、OpenACC、CUDA、nVidia,...
\n\n与GPU相关的关键字只有一个:OpenGL
\n\n这是否意味着Intel IPP仅支持Intel GPU?或者 Intel IPP 支持任何支持 OpenGL 的 GPU(nVidia GeForce、AMD Radeon)?
\n