【问题标题】:Speedup when combining CPU and GPU with OpenCL将 CPU 和 GPU 与 OpenCL 相结合时的加速
【发布时间】:2020-07-17 17:35:41
【问题描述】:

我有一个应用程序,它使用 OpenCL 在多个设备上拆分矩阵向量乘法。我在具有 Intel Xeon CPU 和三个相同的 NVIDIA Kepler GPU 的计算机上测试了该应用程序。如果我使用 2048x2048 的输入大小,那么与 GPU 相比,CPU 的加速比约为 1.4。与一个 GPU 相比,两个 GPU 的加速比约为 2,但一个 GPU 加一个 CPU 的加速比仅为 ~1.7。如果我使用三个设备,与一个 GPU 相比,结果看起来相似:三个 GPU 的加速比约为 3,但两个 GPU 加一个 CPU 的加速比仅为 ~2.4。

所以我的问题是:当我用 CPU 替换 GPU 时,加速下降的原因是什么? CPU 比 GPU 快。

【问题讨论】:

    标签: performance opencl cpu gpu


    【解决方案1】:

    当您说“与 GPU 相比,CPU 的加速比约为 1.4”时,这意味着您的 CPU 实际上比 GPU 快 40%?

    我之前在使用我的 OpenCL Monte Carlo 代码(http://mcx.space/mcxcl 和网页中链接的the paper 中的图 3b)时遇到过类似的问题。

    关键是工作负载平衡 - 如果您将工作平均分配给 CPU 和 GPU,在许多情况下,您的速度可能不会比单独使用 CPU 快得多(增加了额外的开销)。但是,如果您将更多工作负载分配给功能更强大的硬件,例如 GPU:CPU 之间的 80:20 拆分,您可能会看到整体增加。玩弄这个工作量分配比例,你可能会找到一个平衡点。

    【讨论】:

    • 是的,CPU 确实比 GPU 快。我将我的工作量分成块,然后由设备逐渐处理。更快的设备可以处理更多的块,因此应该会出现加速。您是否能够确定在您的工作中结合 CPU 和 GPU 的速度存在的普遍问题?
    • 不,这不是一个普遍的问题(除非 OpenCL 的开销变得很大——当我尝试在我的一个包含 12 个 GPU 的装备上使用超过 8 个 NVIDIA GPU 时发生过这种情况)。使用 CUDA 处理这个问题要容易得多,因为您可以使用 nvprof 来查看瓶颈在哪里。 OpenCL 没有好的分析器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2013-08-20
    • 2018-07-21
    • 2015-09-23
    • 2018-12-10
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多