在 OpenCL 中将一半转换为浮点数
Convert half to float in OpenCL
如果这是微不足道的,我深表歉意,但我无法通过谷歌找到答案。
根据 OpenCL 标准(从 1.0 开始),出于存储原因,支持半类型。
然而,在我看来,如果没有cl_khr_fp16扩展名,就不可能将其用于任何事情?
我想做的是将我的值保存为一半,但以浮点数执行所有计算。
我尝试使用 convert_half(),但没有 cl_khr_fp16 就不支持。我尝试在一半之前只写(浮点)进行自动 c 样式转换,没有工作八。
所以我的问题是,我如何利用一半用于存储?
我需要能够读写一半。
使用 vload_halfN
和 store_halfN
。存储的 halfN 值将转换为浮点数 N/从浮点数转换。
由于在任何其他答案中都没有提到它,我想我会补充: 您也可以在 OpenCL 图像中使用半浮点数,read_imagef
和 write_imagef
函数将为您进行与浮点数之间的转换(不需要cl_khr_fp16扩展名)。该扩展仅适用于在一半中包含变量(并在一半中进行数学运算)。
据我所知,类型 half 仅在 GPU 上受支持,但您可以相当简单地将其与浮点数相互转换,只要您对按位操作有所了解。
请查看以下链接,以获取有关如何执行此操作的良好说明。
ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf
相关文章:
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 如何将浮点数(*)[6]转换为浮点**类型?
- 如何将浮点数转换为uint8_t?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- C++ - 转换标准::浮点数组的字符串
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- Zedboard zynq-7000 Opencl 浮点数从类型 'double*' 强制转换为类型 'double' 无效
- 将浮点数转换为字符串时如何加快此代码的速度?
- 我可以安全地将浮点数的结构转换为浮点数组吗C++?
- 如何将带有浮点数的字符串转换为十进制?
- 浮点到整数转换出错(即使浮点数已经是整数)
- C/C++ - 将浮点数转换为字节数组,以便字节保持排序
- 将整数的二进制数据转换为浮点数
- 使用 avr-gcc 隐式转换为浮点数:uint8_t vs. uint16_t
- 将浮点数向量转换为十六进制/二进制字符串
- 精确且无公差地将浮点数转换为字符串