【问题标题】:Main difference between OpenCL and OpenCL Embedded profileOpenCL 和 OpenCL Embedded 配置文件之间的主要区别
【发布时间】:2013-08-30 16:15:54
【问题描述】:

最近我在一些开发板上看到了 OpenCL EP 支持,比如 odroid XU。我知道的一件事是 OpenCL EP 适用于 ARM 处理器,但它与基于主要桌面的 OpenCL 在哪些功能上有所不同。

【问题讨论】:

    标签: opencl


    【解决方案1】:

    主要区别列举如下(从 OpenCL 1.2 开始):

    • 64 位整数支持是可选的。

    • 对 3D 图像的支持是可选的。

    • 对二维图像阵列写入的支持是可选的。如果cles_khr_2d_image_array_writes 嵌入式配置文件支持扩展,支持写入二维图像数组。

    • 图像和图像数组的可用通道数据类型存在一些限制(特别是通道数据类型为CL_FLOATCL_HALF_FLOAT 的图像仅支持CL_FILTER_NEAREST 采样器过滤模式)

    • 图像和图像数组可用的采样器寻址模式存在限制。

    • 您可能需要考虑一些浮点舍入更改。

    • 浮点加法、减法和乘法将始终正确舍入,除法和平方根等其他运算具有不同的精度。还有很多其他的浮点问题需要注意。

    • 整数数据类型和浮点整数之间的转换在精度上受到限制(但也有例外)。

    简而言之,这里的主要区别在于浮点精度。换句话说,嵌入式配置文件不需要遵守 IEEE 754 浮点规范,如果您进行大量依赖它的数值计算,这可能是个问题。引用自规范:

    放宽了遵守 IEEE 754 要求的要求 对于基本的浮点运算,虽然非常不可取,但 为更严格的嵌入式设备提供灵活性 对硬件面积预算的要求。

    还有一些在第 10 节中没有提到但值得注意的东西:虽然桌面配置文件必须有一个可用于编译 OpenCL 内核的编译器,但嵌入式配置文件不需要提供一个。这可以通过clGetDeviceInfo 文档看到,该文档指出:

    CL_DEVICE_COMPILER_AVAILABLE: Return type: cl_bool
    
    Is CL_FALSE if the implementation does not have a compiler available
    to compile the program source. Is CL_TRUE if the compiler is available.
    This can be CL_FALSE for the embededed (sic) platform profile only.
    

    如需 OpenCL Embedded Profile 规范的完整和详细列表,请启动 PDF 阅读器,下载 OpenCL 规范(无论您正在开发哪个版本),然后找到相关部分。

    【讨论】:

    • 有趣,这是否意味着用opencl 1.1 编写的神经网络的结果可能不会产生正确的输出?
    【解决方案2】:

    标准中的第 10 部分回答了您的问题。本节完全专注于 OCL 嵌入式配置文件,并从枚举此配置文件所暗示的限制开始。

    【讨论】:

      最近更新 更多