我目前正在开发一个需要存储和处理大量变量的应用程序(浮点数约为4gb)
由于各个变量的精度不太重要(我知道它们会受到限制),我看到我可以使用OpenCL的一半而不是浮点数,因为那样会真正减少内存量。
我的问题是双重的。
使用half而不是float(我为浮动操作构建图像显卡)是否有任何性能损失
在计算中混合浮点数和一半是否有性能损失? (即浮动时间为一半。)
Sincerily, AndreasFalkenstrømMieritz
答案 0 :(得分:4)
ARM CPU和GPU在其ALU中对half
提供原生支持,因此您可以接近双倍的速度,并大幅节省能源消耗。 编辑:PowerVR GPU也是如此。
桌面硬件仅在加载/存储和纹理单元AFAIK中支持half
。即便如此,我希望half
纹理在任何GPU上都比float
纹理或缓冲区表现更好。特别是如果你可以巧妙地使用纹理过滤。
答案 1 :(得分:2)
OpenCL内核几乎总是内存速度或pci速度限制。如果要将一大块数据转换为半浮点数,则可以更快地传输值。在任何平台/设备上几乎肯定都会更快。
就性能而言,一半很少比浮动差。我相当确定任何支持half的设备都会像浮动那样快速地进行计算。同样,即使这里有轻微的开销,你也可以在远远优越的转移时间内弥补它。