为什么 OpenCL 1.0 中的字节可寻址存储限制?
Why Byte Addressable Stores Limitation in OpenCL 1.0?
我是 OpenCL 的新手,阅读 The OpenCL Specifications v1.0 我看到:为了对大小小于 32 位的指针执行写入,必须包含以下指令:
#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
我的问题是:
为什么引入此限制?
存在限制是因为 is/was 硬件(主要是 GPU)仅支持 32 位内存写入,这意味着 32 位压缩向量类型(例如 char4)是写出小型类型的唯一方法。因此,该标准被设计为最小公分母,并且强制要求 32 位写入大小。
但是,由于某些 OpenCL 兼容设备确实具有支持 16 位或 8 位大小写入的内存控制器,因此添加了扩展以允许将小型类型直接写入内存,而无需打包到向量包含中。
相关问题here。
我是 OpenCL 的新手,阅读 The OpenCL Specifications v1.0 我看到:为了对大小小于 32 位的指针执行写入,必须包含以下指令:
#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
我的问题是: 为什么引入此限制?
存在限制是因为 is/was 硬件(主要是 GPU)仅支持 32 位内存写入,这意味着 32 位压缩向量类型(例如 char4)是写出小型类型的唯一方法。因此,该标准被设计为最小公分母,并且强制要求 32 位写入大小。
但是,由于某些 OpenCL 兼容设备确实具有支持 16 位或 8 位大小写入的内存控制器,因此添加了扩展以允许将小型类型直接写入内存,而无需打包到向量包含中。
相关问题here。