OenCL 向量資料型別

2021-10-04 11:55:18 字數 1395 閱讀 4289

1.首選向量寬度:函式clgetdeviceinfo需要乙個引數來表示所需的資訊型別,opencl提供了一系列的引數來引用向量寬度,名字形如:cl_device_prefered_vector_width_type,函式的返回值是資料結構cl_uint,表示乙個給定型別的向量其中有多少個相應型別的標量資料.type可以設為char,short,int,long或float,當然也可為half或double,但前提是裝置要能支援這些資料型別,否則函式的返回值為0。

目標裝置首選128位(16位元組)的向量,這樣寬度的向量可以相應的儲存16個char型數,8個short型數,4個int型數,2個long型或是4個float型數。較多的char16和float4在內的128位的向量。

核心設計資料型別:首先呼叫函式clgetdeviceinfo找出目標裝置所支援的首選向量寬度,然後將其設為函式clbuildprogram的編譯選項。例如-dvector_size_128(float4)或-dvector_size_256(float8);

2.初始化向量:向量分量必須要帶小括號,而不是大括號,資料需要作型別轉化,變為相應的向量型別。下面是用四個float型數初始化向量data_vec:

float4 data_vec =

(float4)

(1.0

,1.0

,1.0

,1.0

);

如果向量分量的數值都相同,那麼**就可以簡化為:

float4 data_vec =

(float4)

(1.0

);

如果直接標量數值不是必須的,也可以用寬度較小的向量來進行初始化。

採用標量數值和向量混用的方式來進行向量初始化也是合法的。

3.讀取和修改向量分量:opencl提供了三種方法來選擇向量分量:數字索引、字元索引以及hi/lo/even/odd.一般的應用程式使用數字索引十分的方便,而在影象應用中則更適合使用字幕索引,hi,lo,even,和odd的字尾方法則更適合一次訪問一半的向量分量。和獲取復合資料結構的各個領域的點標記法相似,這三種方法也都採用了點標記法。0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f.

如果向量中包含有全部四個分量,就可以使用全部四種字元,否則的話,你就只能使用n(n=x,y,z,w)字元來訪問相應的向量分量;最後一種索引方法時使用字尾名.hi, .lo, .even和.odd。各個字尾名表示的是一半的向量分量:

.hi--後半部分的向量分量(索引號等於n/

2,n/2+

1...

1);.lo--前半部分的向量分量(索引號等於0,1,。。。。n/

21);

.even--索引號為奇數的向量分量;

.odd--索引號為偶數的向量分量。

gsl資料型別之向量

gsl中的向量與矩陣是基於一種底層的資料型別,即資料塊 block 實現的。因此我們的分析,就從資料塊開始。與複數一樣,gsl中也有各種不同資料型別的資料塊,詳細列表如下 gsl block double gsl block float float gsl block long double lon...

資料型別基礎資料型別

資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...

資料型別 基本資料型別和引用資料型別

一.分類 1,五種簡單資料型別 基本資料型別 number,string,boolean,null,undefined,新增symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。1 undefined 宣告的變...