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