我们能否将 CUDA 或 OpenCL 的速度与 CPU 性能进行比较?

标签 c cuda opencl gpu cpu-speed

与一般的单处理器内核相比,CUDA 或 OpenCL 代码上的算法运行速度有多快? (考虑到算法是针对 CPU 和 GPU 目标编写和优化的)。

我知道这取决于显卡和 CPU,但是说,NVIDIA 最快的 GPU 之一和英特尔 i7 处理器的(单核)?

而且我知道这也取决于算法的类型。

我不需要一个严格的答案,但有经验的例子如下:对于使用 double 浮点和每个像素 10 次操作的图像处理算法,前 5 分钟花费了前 5 分钟,现在使用此硬件运行 x 秒。

最佳答案

您的问题过于宽泛,很难回答。此外,只有一小部分算法(处理没有太多共享状态的算法)适用于 GPU。

但我确实想敦促您对声明持批评态度。我在图像处理领域,阅读了很多关于该主题的文章,但在 GPU 的情况下,将输入数据上传到 GPU 并将结果下载回主内存的时间不是包含在因子的计算中。

虽然在少数情况下这无关紧要(两者都很小,或者有第二阶段的计算进一步减小了结果的大小),但通常确实需要传输结果和初始数据。

我已经看到这会将声称的正数变成负数,因为仅上传/下载时间就比主 CPU 进行计算所需的时间要长。

几乎相同的事情适用于组合不同 GPU 卡的结果。

更新 较新的 GPU 似乎能够使用乒乓缓冲区同时上传/下载和计算。但彻底检查边境状况的建议仍然有效。那里有很多旋转。

更新 2 为此,经常使用与视频输出共享的 GPU 并不是最佳选择。考虑例如为视频添加低预算卡,并将板载视频用于 GPGPU 任务

关于我们能否将 CUDA 或 OpenCL 的速度与 CPU 性能进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268181/

相关文章:

c++ - 使用 OpenCL 的图像卷积中的参数大小无效

linux - 是否有适用于 Linux 的 32 位版本的 OpenCL(任何供应商)?

c - 来自 "The C Programming Language 2nd Edition"的这段代码是否包含错误?

c - 为什么 C 不允许结构中存在成员函数?

c - 数组、指针和Sizeof关系

c++ - 依赖于 Alpha 的模板匹配

c - 如何在 C 中将字符串小写?

c - GT540M 上的低性能 CUDA 代码

cuda - 适用于 NVIDIA 硬件的 OpenCL 1.2 何时可用?

opencl - OpenCL 应用程序中的多个程序(与内核)