当前位置:  开发笔记 > 人工智能 > 正文

为什么OpenCL工作组是三维的?

如何解决《为什么OpenCL工作组是三维的?》经验,为你挑选了1个好方法。

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

例如,这个人发现切换轴以两倍的速度加快了他的执行速度.

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



1> mfa..:

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

那么为什么规范允许更多尺寸呢?正如您所指出的,可以使用单个维度模拟更高的维度.一个例子是用于物理/分子模拟的三维N体仿真.

选择使用3D工作组的一个巨大优势是可以减少代码复杂性.在幕后,您正在运行openCL的SDK可能正在为您进行仿真.

至于你的例子中2倍的性能提升:这种提升是由于更好的内存访问模式,而不是硬件本身在2D工作组上运行时非常糟糕.这个问题的答案解释了进一步优化内核的方法,这对于今天的GPU硬件来说是很好的策略.

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


TL; DR - 三维工作组纯粹是一种便利功能.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有