2

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

4

2 回答 2

5

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

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

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

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

  • 图像和图像数组的可用通道数据类型存在一些限制(特别是通道数据类型为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 规范(无论您正在开发哪个版本),然后找到相关部分。

于 2013-08-30T08:15:54.923 回答
2

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

于 2013-08-30T08:07:27.923 回答