Apple OS X 上的 OpenCL 半精度扩展支持
Posted
技术标签:
【中文标题】Apple OS X 上的 OpenCL 半精度扩展支持【英文标题】:OpenCL half precision extension support on Apple OS X 【发布时间】:2013-07-02 11:12:01 【问题描述】:有谁知道 Apple 实现的 OpenCL 中半精度浮点支持的状态。
根据 OpenCL 1.1 规范,以下语句应该启用 half2:
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
但是当我开始构建内核时,编译器会抛出一条消息,例如
error: variable has incomplete type 'half4' (aka 'struct __Reserved_Name__Do_
下面的帖子问了一个类似的问题:OpenCL half4 type Apple OS X 但是这个线程是旧的。谁能告诉我最近苹果是否支持半精度?
【问题讨论】:
【参考方案1】:当您想知道特定实现是否支持扩展时(无论是 Apple 的还是其他的),只需使用该函数
cl_int clGetPlatformInfo(cl_platform_id platform,
cl_platform_info param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
为 param_name 参数传递值 CL_PLATFORM_EXTENSIONS。 它将返回一个以空格分隔的扩展名列表。 请注意,此列表必须返回“与此平台关联的所有设备都支持”的扩展。
所以这意味着即使平台支持 cl_khr_fp16 扩展但不支持您的设备,它也不会出现在列表中。 要了解您设备上可用的扩展程序,请使用
clGetDeviceInfo(...)
param_name 参数的值为 CL_DEVICE_EXTENSIONS。
【讨论】:
我已经知道我当前版本的 Apple OS 不支持 OpenCL cl_khr_fp16 扩展。我的问题是 Apple OS 的最新版本是否支持此功能?如果是这样,那么我将安装该版本的 Apple OS。【参考方案2】:有关 OpenCL 扩展查询的通用答案,请参见上面 CaptainObvious 的答案 (https://***.com/a/17425167/5394228)。
我就此询问了 Apple 开发人员支持,他们说 Metal 提供了一半的支持,现在没有计划向 OpenCL 添加新功能。 (他们于 2017 年 11 月回答)
【讨论】:
以上是关于Apple OS X 上的 OpenCL 半精度扩展支持的主要内容,如果未能解决你的问题,请参考以下文章
OpenCL 的精度,hello world 示例中的浮点比较