OpenCL,一半与浮动表现

时间:2012-10-16 16:59:13

标签: c++ c opencl gpu gpgpu

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

由于各个变量的精度不太重要(我知道它们会受到限制),我看到我可以使用OpenCL的一半而不是浮点数,因为那样会真正减少内存量。

我的问题是双重的。

  • 使用half而不是float(我为浮动操作构建图像显卡)是否有任何性能损失

  • 在计算中混合浮点数和一半是否有性能损失? (即浮动时间为一半。)

Sincerily, AndreasFalkenstrømMieritz

2 个答案:

答案 0 :(得分:4)

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

桌面硬件仅在加载/存储和纹理单元AFAIK中支持half。即便如此,我希望half纹理在任何GPU上都比float纹理或缓冲区表现更好。特别是如果你可以巧妙地使用纹理过滤。

答案 1 :(得分:2)

OpenCL内核几乎总是内存速度或pci速度限制。如果要将一大块数据转换为半浮点数,则可以更快地传输值。在任何平台/设备上几乎肯定都会更快。

就性能而言,一半很少比浮动差。我相当确定任何支持half的设备都会像浮动那样快速地进行计算。同样,即使这里有轻微的开销,你也可以在远远优越的转移时间内弥补它。