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

问题描述 投票:0回答:2

有没有人知道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但是这个帖子已经过时了。有人可以告诉我最近苹果是否支持半精度?

macos opencl
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。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.