【问题标题】:Influence of work size dimension to performance OpenCL工作规模维度对 OpenCL 性能的影响
【发布时间】:2018-10-23 12:24:34
【问题描述】:

我最初的工作单元大小为11*11*6779。为了简单起见,我不想将其转换为 1D 全局工作大小。当我将其更改为 21*21*6779 时,性能比以前慢 5-6 倍。据我所知,代码与正在运行的线程数无关。

传输的数据量只有 4x 大,我认为这不是程序运行速度较慢的原因,因为我测试了内存分配过程。

请注意,我的设备的最大工作项为 256*256*256,这意味着我将使用所有可用工作项的一半,这不是专用设备(也用于显示..)。

我想知道将工作项大小设置为21*21*6779 是否使用了我的工作项太多,或者尺寸只是不方便 openCL 调整?

【问题讨论】:

    标签: opencl


    【解决方案1】:

    如果您的最大工作项是 256x256x256,那么为什么要使用 21x21x6779(其中 6779 大于 256)?请注意,如果未指定工作组大小,则运行时将尝试选择一个可以划分您的全局工作大小的组。如果您的维度不容易被运行时整除,它可能会选择错误的工作组大小。这可以解释为什么性能会根据全局工作大小而变化。我建议您指定工作组大小,并将全局工作大小设为其倍数(如有必要,将实际大小作为参数传递,并在每个工作项中检查它是否在范围内;这是您将看到的典型模式在 OpenCL 中很多)。

    【讨论】:

    • 所以我尝试了您提出的解决方案,但速度大致相同(比工作项数量较少的解决方案慢 4 倍,4 毫秒与 16 毫秒相比)。您认为主机和设备之间的传输可能是这里的因素吗?在较快的情况下,我有 2,4 百万个浮点数,在较慢的情况下,我有 9 mils
    • 是的,数据传输可能与此有关。
    • 我找到了原因,我通过重用设备中保留的内存来修复它,然后才创建新内存。
    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 2015-01-10
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2021-03-09
    相关资源
    最近更新 更多