openmp vs opencl用于计算机视觉

use*_*711 1 c++ openmp opencl

我正在创建一个计算机视觉应用程序,通过网络摄像头检测对象.我目前专注于应用程序的性能

我的问题在于使用Haartraining文件生成XML级联文件的应用程序的一部分.这非常慢,大约需要6 .为了解决这个问题,我决定使用多处理,以最大限度地减少生成Haartraining XML文件的总时间.

我找到了两个解决方案:opencl和(openMp和openMPI).

现在我对使用哪一个感到困惑.我读到opencl是在同一台机器上使用多个CPU和GPU .是这样吗?另一方面,OpenMP用于多处理,使用openmpi,我们可以通过网络使用多个CPU.但是OpenMP没有GPU支持.

能否请您建议使用其中任何一个库的优缺点.

And*_*zos 6

OpenCL用于使用GPU流处理器. http://en.wikipedia.org/wiki/Opencl

OpenMP用于使用CPU核心. http://en.wikipedia.org/wiki/Openmp

OpenMPI用于使用分布式网络群集. http://en.wikipedia.org/wiki/Openmpi

哪个最好使用取决于您的问题规范,但我会先尝试使用OpenMP,因为最简单的方法是将单个线程程序移植到它上面.有时你可以把一个pragma告诉它来准确一个主循环,你可以按CPU核心数量级的顺序获得加速.

如果您的问题非常数据并行并且浮点数 - 比您可以从GPU获得更好的性能 - 但您必须使用类似C语言编写内核并在主机和GPU之间映射或读/写内存缓冲区.它很麻烦,但在某些情况下,性能提升可以达到100,因为GPU是专为数据并行工作而设计的.

OpenMPI将为您带来最大的性能,但您需要一个集群(同一网络上的一堆服务器),而且它们很昂贵.

  • 不,OpenCL 也可以使用 CPU,但如果您使用 CPU,最好使用 OpenMP。 (2认同)