Apple OS X上的OpenCL半精度扩展支持

时间:2013-07-02 11:12:02

标签: macos opencl

是否有人知道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 但是这个线程很老了。有人可以告诉我最近苹果是否支持半精度?

2 个答案:

答案 0 :(得分:0)

如果您想知道特定实施是否支持扩展(无论是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。

答案 1 :(得分:0)

有关OpenCL扩展查询的一般答案,请参阅CaptainObvious'回答上面(https://stackoverflow.com/a/17425167/5394228)。

我向Apple开发人员支持部门询问了这一点,并且他们表示Metal提供了一半支持,并且现在没有计划向OpenCL添加新功能。 (他们回答2017年11月)