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