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

OpenCL和OpenCL嵌入式配置文件之间的主要区别,opencl,Opencl,最近我在一些开发板上看到了OpenCLEP支持,比如OdroidXu。我知道的一件事是OpenCL EP是针对ARM处理器的,但它与基于桌面的OpenCL有哪些不同的功能。标准中的第10节回答了您的问题。本节专门介绍OCL嵌入式配置文件,ans首先列举了该配置文件所暗示的限制。以下列举了主要差异(从OpenCL 1.2开始): 64位整数支持是可选的 支持3D图像是可选的 支持二维图像数组写入是可选的。如果cles\u khr\u 2d\u image\u array\u写入 嵌入式配置文件支

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

标准中的第10节回答了您的问题。本节专门介绍OCL嵌入式配置文件,ans首先列举了该配置文件所暗示的限制。

以下列举了主要差异(从OpenCL 1.2开始):

  • 64位整数支持是可选的

  • 支持3D图像是可选的

  • 支持二维图像数组写入是可选的。如果
    cles\u khr\u 2d\u image\u array\u写入
    嵌入式配置文件支持扩展,支持对二维图像阵列的写入

  • 图像和图像阵列的可用通道数据类型存在一些限制(特别是通道数据类型为
    CL\u FLOAT
    CL\u HALF\u FLOAT
    的图像仅支持
    CL\u FILTER\u 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嵌入式概要文件规范的完整详细列表,请启动PDF阅读器,下载OpenCL规范(无论您开发的是哪个版本),并找到相关部分。

有趣的是,这是否意味着用OpenCL 1.1编写的神经网络结果可能不会产生正确的输出?