OpenCL,一半与浮动性能



我目前正在开发一个需要存储和处理大量变量的应用程序(~4gb 浮点数)

由于单个变量的精度不太重要(我知道它们将被限制),我看到我可以使用 OpenCL 的一半而不是浮点数,因为这确实会减少内存量。

我的问题是双重的。

  • 使用一半而不是浮点数是否有任何性能影响(我会为浮点操作构建图像显卡)

  • 计算中混合浮点数和一半浮点数是否会影响性能?(即,浮点数乘以一半。

真诚地,安德烈亚斯·法尔肯斯特罗姆·米耶里茨

ARM CPU 和 GPU 在其 ALU 中原生支持half,因此您可以获得接近双倍的速度,并大幅节省能耗。编辑:PowerVR GPU也是如此。

桌面硬件仅支持加载/存储和纹理单元 AFAIK 中的half。即便如此,我希望half纹理的性能优于任何 GPU 上的float纹理或缓冲区。特别是如果你能巧妙地使用纹理过滤。

OpenCL 内核几乎总是内存速度或 PCI 速度限制。如果要将相当一部分数据转换为半浮点数,这将加快值的传输速度。几乎可以肯定,在任何平台/设备上都更快。

就性能而言,一半很少比浮动差。我相当确定任何支持一半的设备都会像使用浮点数一样快地进行计算。同样,即使这里有轻微的开销,您也可以在远超的传输时间内弥补它。

最新更新