1、opencl 标量数据类型
bool char unsigned char/uchar short 16位有符号整数(补码) ushort int 32位有符号整数(补码) uint 32位无符号 long 64位有符号 ulong half 16位浮点数 float 32位浮点数 intptr_t 有符号整数指针 uintptr_t 无符号整数指针 ptrdiff_t 有符号的整数(指针相减) size_t 无符号整数(操作符大小) void
2、向量数据类型
charn
ucharn
shortn
ushortn
intn
uintn
longn
ulongn
floatn
向量宽度:
通过查询设备信息,可以获得首选向量宽度常见的可以取128位(16个字节)等
//使用 clGetDeviceInfo 获取设备支持类型向量长度 cl_uint length; clGetDeviceIndo(device,CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR,sizeof(length),&length,NULL);
// 向量的初始化 float4 f_vec=(float4)(1.1); // 4个float, 1.1 int4 i_vec=int4(1,2,3,4); float2 a_vec=(float2)(1.2, 1.4); float4 b_vec=(float4)(a_vec, 3.1, 0.4); //读取、修改 char16 msg=(char16)('f','e','i','h','o','p','e','n','c','l','t','e','s','t','r','d'); //数字索引 char temp = msg.s0; temp=msg.s8; char temp2 = msg.sC; //12的十六进制 为 C,相当于 msg.s12 char8=(char8)(msg.s0427,msg.sE4,msg.EC); // hi lo even odd ushort8 shorts = (ushort8)(0, 10, 20, 30, 40, 50, 60, 70); ushort4 a = shorts.hi; //索引较高的部分 ushort4 b = shorts.lo; //索引较低的部分 ushort4 c = shorts.even;//偶数索引部分 ushort4 d = shorts.odd;//奇数索引部分