OpenCL和OpenCL嵌入式配置文件之间的主要区别

Meg*_*raj 2 opencl

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

Tho*_*mas 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.
Run Code Online (Sandbox Code Playgroud)

有关OpenCL嵌入式配置文件规范的完整和详细列表,请启动您的PDF阅读器,下载OpenCL规范(所开发的版本),然后找到相关部分。