在 OpenCL 中将一半转换为浮点数

Convert half to float in OpenCL

本文关键字:转换 浮点数 一半 OpenCL      更新时间:2023-10-16

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

根据 OpenCL 标准(从 1.0 开始),出于存储原因,支持半类型。

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

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

我尝试使用 convert_half(),但没有 cl_khr_fp16 就不支持。我尝试在一半之前只写(浮点)进行自动 c 样式转换,没有工作八。

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

我需要能够读写一半。

使用 vload_halfNstore_halfN 。存储的 halfN 值将转换为浮点数 N/从浮点数转换。

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

据我所知,类型 half 仅在 GPU 上受支持,但您可以相当简单地将其与浮点数相互转换,只要您对按位操作有所了解。

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

ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf