1

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

我的问题在于使用 Haartraining 文件生成 XML 级联文件的应用程序的一部分。这很慢,大约需要6 天。为了解决这个问题,我决定使用多处理,以最小化生成 Haartraining XML 文件的总时间。

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

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

您能否建议使用任何一个库的优缺点。

4

3 回答 3

7

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 将为您提供最高性能,但您需要一个集群(同一网络上的一堆服务器),而且它们很昂贵。

于 2012-04-07T18:25:08.247 回答
0

性能问题可能出在 XML 文件本身吗?

您是否尝试过使用不同的、更轻的文件格式?

我认为需要 6 天才能生成的 XML 文件一定很长很复杂。如果您可以控制这种数据格式,请尝试 Google 的Protocol Buffers

在深入研究 OpenMP、OpenCL 或其他任何东西之前,请检查访问硬盘所花费的时间;如果这是问题所在,并行库将不会改进。

于 2012-05-15T15:55:06.500 回答
-3

研究opencv,看看它是否有帮助。

于 2014-04-24T02:30:27.433 回答