OpenCL 中的向量
每個基本的 opencl 型別都有一個向量版本。你可以通過在型別後面附加所需元件的數量來使用向量型別。支援的元件數量為 2,3,4,8 和 16.OpenCL 1.0 不提供三個元件。
你可以使用兩種方式初始化任何向量:
- 提供單個標量
- 滿足所有元件
float4 a = (float4)(1); //a = (1, 1, 1, 1)
要麼
float4 b = (float4)(1, 2, 3, 4);
float4 c = (float4)(1, (float3)(2));
或滿足元件數量的任何其他向量組合。要訪問向量的元素,你可以使用不同的方法。你可以使用索引:
a[0] = 2;
或使用文字。文字的優點是你可以按照你想要的方式組合它們,馬上做好。你可以使用訪問所有向量元件
a.s0 = 2; // same as a[0] = 2
你還可以將多個元件組合到一個新的向量中
a.s02 = (float2)(0, 0); // same as a[0] = 0; a[2] = 0; or even a.s20 = (float2)(0, 0)
你可以以任何方式更改元件的順序。
a.s1423 = a.s4132; // flip the vector
但你不能做類似的事情
a.s11 = ... // twice the same component is not possible
有一些方便的縮寫用於訪問向量元件。以下縮寫僅適用於尺寸 2,4,8 和 16
a.hi //=a.s23 for vectors of size 4, a.4567 for size 8 and so on.
a.lo //=a.s01
a.even //=a.s02
a.odd //=a.13
對於向量大小 2,3 和 4,還有一些額外的縮寫
a.x //=a.s0
a.y //=a.s1
a.z //=a.s2
a.w //=a.s3