最近我在odroid XU等开发板上看到了OpenCL EP的支持。我知道的一件事是OpenCL EP适用于ARM处理器,但它与基于主桌面的OpenCL有什么不同。
答案 0 :(得分:4)
主要区别如下(从OpenCL 1.2开始):
64位整数支持是可选的。
支持3D图像是可选的。
支持2D图像阵列写入是可选的。如果cles_khr_2d_image_array_writes
嵌入式配置文件支持扩展,支持对2D图像阵列的写入。
图像和图像数组的可用通道数据类型存在一些限制(特别是,通道数据类型为CL_FLOAT
且CL_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嵌入式配置文件,首先列举此配置文件所暗示的限制。