OpenCL和OpenCL Embedded配置文件的主要区别

时间:2013-08-30 07:37:38

标签: opencl

最近我在odroid XU等开发板上看到了OpenCL EP的支持。我知道的一件事是OpenCL EP适用于ARM处理器,但它与基于主桌面的OpenCL有什么不同。

2 个答案:

答案 0 :(得分:4)

主要区别如下(从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规范(您正在开发的版本),并找到相关部分。

答案 1 :(得分:2)

标准中的第10部分回答了您的问题。本节完全专用于OCL嵌入式配置文件,首先列举此配置文件所暗示的限制。