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;//奇數索引部分