gpt4 book ai didi

opencl - 为什么 OpenCL 工作组是 3 维的?

转载 作者:行者123 更新时间:2023-12-04 22:44:11 24 4
gpt4 key购买 nike

我对这种架构感到沮丧,因为没有明显的解释为什么工作组应该是 3 维的,或者我还没有找到解释。由于可以从一维工作组中模拟任意数量的维度,因此它似乎增加了额外的复杂性,并使理解将工作划分为工作组的最佳方法变得更加困难。

For example, this person discovered that switching axis sped up his execution with a factor of two.

我的一个假设是 OpenCL 希望在工作项 ID 和内存查找之间建立一种微不足道的关系,以允许可预测的内存操作可以进行 I/O 优化。

最佳答案

如果您的应用程序/算法不需要,工作组不必是三维的。您可以指定 1、2 或 3 个维度——毫无疑问,将来还会有更多。因此,当自然适合您的应用时,请使用更少的尺寸。

那么为什么规范会允许更多的维度呢?就像您指出的那样,可以使用单个维度来模拟更高的维度。一个例子是用于物理/分子模拟的 3 维 N 体模拟。

选择使用 3D 工作组的一个巨大优势是将代码复杂性降低了很多。在幕后,您运行 openCL 的 SDK 可能正在为您进行模拟。

至于您的示例中 2 倍的性能提升:这种提升是更好的内存访问模式的结果,而不是硬件在 2D 工作组上运行时本身就很糟糕。该问题的答案解释了进一步优化内核的方法,这是当今 GPU 硬件的绝佳策略。

使用 3D 工作组的一个更微妙的好处是 future 的硬件可能不需要模拟额外的维度。也许内存、处理器等将针对 3D 工作组进行定制,并减少或消除不良内存访问模式的惩罚。如果您使用 1D 组编写代码,您将错过这些平台上潜在的性能提升。即使在今天,创建 FPGA/ASIC 芯片以比 GPU 更好地处理 3D 工作组也是可能的。

关于opencl - 为什么 OpenCL 工作组是 3 维的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294133/

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