cuda 計算1維的卷積

2021-08-28 02:41:41 字數 1021 閱讀 9474

1維卷積的公式如下.

用c++序列計算,程式如下:

void conv(vector&uin, vector&vin, vector&convout)

(1:32);

endlastarr32 = zeros(1,32);

if(iy>1)

lastarr32 = blocksstep1(33:64);

endblocksstep2 = currarr32+lastarr32;

endend

其中blocknumy

為2.3

結果矩陣的總行數,

blocknumx

為2.3

結果矩陣的總列數。

4.將第3步的結果矩陣中的每乙個元素中的32個資料 進行 列排列,1x32 à32x1。然後將矩陣的每一行的4個32x1陣列拼接成乙個32x4的矩陣。然後將這個32x4的矩陣的每一行的值進行相加,就得到32個資料。對應於第3步的矩陣中,每一行會有32個資料結果。然後將所有結果按順序儲存下來,得到最後的結果,資料個數為32x8最後乙個資料無效,那麼有效資料個數為32x8 – 1.

5.此文中,以128長度的陣列為例進行解釋,對於1024長度的資料,也是一樣的道理,那麼2.3的結果矩陣大小為32x32,第3步的結果矩陣大小為64x32.最後的總的結果數為64x32-1.

測試結果如下:

1,電腦配置:cpu, intel pentinum g860@ 3.00ghz雙核。

gpu,nvidia geforce gtx 1060 3g (七彩虹)

2,資料長度,a的長度為1024,b的長度為1024

3,結果如下:

cuda conv cost 0.001453s

sum is 1074003968

cpu conv cost 0.294342s

sum is 1074003968

gpu還是很有優勢的,如果把cpu換成高效能的,應該不用花費290ms這麼多,但是也比不上gpu快

測試程式在

cuda做卷積計算初稿

include cuda runtime.h include device launch parameters.h include using namespace std 返回thread和block intgetthreadnum global void conv float imggpu,flo...

一維卷積神經網路 卷積神經網路中的計算

卷積的基本介紹 卷積操作後張量的大小計算 卷積參數量的計算 卷積flops的計算 感受野的計算 卷積神經網路中的卷積是指定義好卷積核 kernel 並對影象 或者特徵圖,feature map 進行滑動匹配,即對應位置相乘再相加。其特點就在於能夠捕捉區域性的空間特徵。具體過程如下圖所示 圖1 二維卷...

caffe中的卷積的計算細節和1x1卷積作用

在卷積神經網路中,卷積算是乙個必不可少的操作,下圖是乙個簡單的各層的關係。可以看出乙個很好的擴充套件的關係,下面是整個卷積的大概的過程 圖中上半部分是傳統的卷積的操作,下圖是乙個矩陣的相乘的操作。下圖是在乙個卷積層中將卷積操作展開的具體操作過程,他裡面按照卷積核的大小取資料然後展開,在同一張圖里的不...