OpenCL半平方根

时间:2016-12-02 23:27:12

标签: opencl

我正在为运行OpenCL 1.2的GPU开发。

我正在尝试使用半平方根函数来计算我的半数据类型的平方根。

但是对于所有half_square根函数,最终都是标准平方根函数的宏扩展。

这导致编译器错误,因为没有任何函数重载与半数据类型匹配。

我在我的内核文件#pragma OPENCL EXTENSION cl_khr_fp16 : enable

中使用了以下编译指示

1 个答案:

答案 0 :(得分:2)

OpenCL中的

half类型支持仅在cl_khr_fp16扩展名可用时才可用。它是可选的,并非在所有设备上都可用。对于支持半精度浮点的OpenCL设备,应用程序可以使用带有CL_DEVICE_HALF_FP_CONFIG的操作码clGetDeviceInfo来查询配置信息。见https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/cl_khr_fp16.html

例外情况是,如果支持 images ,您可以拥有包含half类型的图像,但所有读写和计算都以单精度float完成。另一个例外是您可以使用向量数据加载/存储功能(例如,vload_half)将half值从内存加载并保存到float标量和向量。在这两种情况下都不会在sqrt中进行half等计算,只需要存储。