矢量数据类型
OpenCL C还增加了对矢量数据类型的支持。矢量数据类型如下定义,首先是类型名,具体包括char、uchar、short、ushort、int、uint、float、long或ulong,后面是一个字面值n
来定义矢量中的元素个数。对于所有矢量数据类型,支持的n
值包括2、3、4、8和16。另外,还可以为double
和half
定义矢量数据类型,不过只有当设备支持双精度和半精度扩展时才可用。支持的矢量数据类型见表4-2。
声明为一个标量或矢量数据类型的变量要按所用数据类型的大小(字节数)对齐。内置数据类型大小必须按2的幂(字节数)对齐。如果一个内置数据类型的大小(字节数)不是2的幂,则要按紧邻的下一个2的幂值对齐(即大于它的最小的2的幂值)。这个规则不适用于结构(struct
)或联合(union
)。
例如,一个float4
变量要按16字节边界对齐,char2
变量要按2字节边界对齐。对于一个包含3个