0

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

4

2 回答 2

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。

于 2013-07-02T12:04:58.007 回答
0

有关 OpenCL 扩展查询的通用答案,请参见上面 CaptainObvious 的答案 ( https://stackoverflow.com/a/17425167/5394228 )。

我就此询问了 Apple 开发者支持,他们说 Metal 提供了一半的支持,现在没有计划向 OpenCL 添加新功能。(他们于 2017 年 11 月回答)

于 2018-03-05T10:57:03.603 回答