2

如果这是微不足道的,我深表歉意,但我无法通过谷歌找到答案。

根据 OpenCL 标准(自 1.0 起),出于存储原因支持 half 类型。

然而,在我看来,如果没有 cl_khr_fp16 扩展,就不可能将它用于任何事情?

我想做的是将我的值保存为一半,但以浮点数执行所有计算。

我尝试使用 convert_half(),但没有 cl_khr_fp16 不支持。我尝试在自动 c 样式转换的一半之前只写 (float),但没有奏效。

所以我的问题是,我如何利用一半进行存储?

我需要能够读写一半。

4

3 回答 3

3

使用vload_halfNstore_halfN。存储的 halfN 值将转换为 floatN 或从 floatN 转换。

于 2012-11-20T19:41:29.863 回答
1

据我所知,只有 GPU 支持 half 类型,但是只要您对按位操作有所了解,您就可以相当简单地将其转换为浮点数和从浮点数转换回来。

请查看以下链接,以获得有关如何执行此操作的良好说明。

ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf
于 2012-11-20T16:18:27.733 回答
1

由于在任何其他答案中都没有提到它,我想我会补充:您也可以在 OpenCL 图像中使用半浮点数,并且read_imagefandwrite_imagef函数将为您执行与浮点数的转换(不需要 cl_khr_fp16 扩展名)。该扩展仅用于将变量放入(并进行数学运算)一半。

于 2014-04-16T15:06:48.087 回答