gpt4 book ai didi

c++ - 用于计算机视觉的 openmp 与 opencl

转载 作者:行者123 更新时间:2023-11-30 02:04:53 27 4
gpt4 key购买 nike

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

我的问题出在使用 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,因为它最容易将单线程程序移植到它上面。有时您可以只放置一个 pragma 告诉它并行化一个主循环,您可以按照 CPU 核心数量的顺序获得加速。

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

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

关于c++ - 用于计算机视觉的 openmp 与 opencl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com