OpenMP vs OpenCL 用于计算机视觉
openmp vs opencl for computer vision
我正在创建一个计算机视觉应用程序,通过网络摄像头检测物体。我目前专注于应用程序的性能
我的问题在于使用 Haartraining 文件生成 XML 级联文件的应用程序的一部分。这很慢,大约需要 6天 .为了解决这个问题,我决定使用多处理,以尽量减少生成Haartraining XML文件的总时间。
我找到了两个解决方案:opencl和(openMp和openMPI)。
现在我对使用哪一个感到困惑。我读到opencl是在同一台机器上使用多个CPU和GPU。是吗?另一方面,OpenMP 用于多处理,使用 openmpi,我们可以通过网络使用多个 CPU。但是OpenMP不支持GPU。
您能否建议使用任一库的优缺点。
OpenCL 用于使用 GPU 流处理器。 http://en.wikipedia.org/wiki/Opencl
OpenMP 用于使用 CPU 内核。 http://en.wikipedia.org/wiki/Openmp
OpenMPI 用于使用分布式网络集群。 http://en.wikipedia.org/wiki/Openmpi
哪个最好使用取决于您的问题规范,但我会首先尝试使用 OpenMP,因为它是将单线程程序移植到它上的最简单方法。 有时你可以放一个编译指示,告诉它对主循环进行平行化,你可以按照CPU内核数量的顺序获得加速。
如果你的问题非常数据并行和浮点 - 那么你可以从GPU中获得更好的性能 - 但你必须用类似C的语言编写内核,并在主机和GPU之间映射或读/写内存缓冲区。 这很麻烦,但在某些情况下,性能提升可能达到 100 倍,因为 GPU 是专门为数据并行工作而设计的。
OpenMPI将为您提供最高的性能,但您需要一个集群(同一网络上的一堆服务器),而且它们很昂贵。
性能问题可能出在 XML 文件本身吗?
您是否尝试过使用不同的、更轻的文件格式?
我认为需要 6 天才能生成的 XML 文件一定相当长且复杂。如果您可以控制此数据格式,请尝试使用 Google 的协议缓冲区。
在深入研究OpenMP,OpenCL或其他任何东西之前,请检查访问硬盘所花费的时间;如果这是问题所在,并行库将不会改善情况。
研究OpenCV,看看是否有帮助。
- 用于立体视觉的OpenCV分散处理
- 在计算机视觉中减去两个图像
- OpenCV,计算机视觉
- 使用计算机视觉进行产品检测-使用opencv进行边缘检测
- 使用OpENCV的2个相机的视频(用于立体声视觉),但其中一个是落后的
- 视觉C++库,用于在不使用Opencv的情况下将一组图像转换为视频
- 从图像中检测和分离单个未知物体(计算机视觉)
- 计算机视觉,提取有关桌子,椅子,床的特征.家具
- 使用 C++ 的视觉魔术,va_arg不适用于具有双精度的 64 位架构
- 模拟计算机视觉数据集
- 用于视觉C++的 pthreads
- OpenMP vs OpenCL 用于计算机视觉
- 关于机器学习/计算机视觉领域实用方法的问题
- OpenGL与OpenCV结合的计算机视觉教程
- 为什么在OpenCV如此完备的情况下,Matlab在计算机视觉社区如此受欢迎?< / h1 >
- 计算机视觉,c++或Java
- c++计算机视觉透视渲染
- 用于后续计算机视觉处理的屏幕截图
- "MATLAB style"计算机视觉\图像处理可视化\调试工具
- 计算机视觉-在TensorFlow上运行C++inception-v3时出现非法指令错误