• 沒有找到結果。

實驗 B - GPU 參數對執行效率的結果與分析

實驗與結果分析

5.3 實驗 B - GPU 參數對執行效率的結果與分析

5.1: 實驗 B - CGP 參數表

(a) CGP

共同參數

Parameters Value

Image size 256 × 256

CGP grid size 8 × 4

Level back 2

Number of function 16

Stopping criteria 5000 generations Population size 100

(b)

交配與突變機率

Crossover Mutation

CGP1 40% 40%

CGP2 60% 60%

CPG3 80% 80%

當遮罩大小為3 × 3 ,代表遮罩數量為 (256 − 3 + 1)264516個 。 將一個遮罩的過 濾交給一個 thread 計算,共動用 64516thread

為了提高運算效率, 以硬體的執行角度分析,分析過程的數據參考表5.2

1. 一個 STMP 內的共享記憶體空間為16384 bytes : 影像為 8-bits 灰階圖,所需要 的共享記憶體空間為 32+ 8 × 441 bytes 。 代表一個 STMP 內可用的 thread 將被限制最多為399個 。

2. 分組: thread需要64516個但被限制為最多399,因此須分組成數個block 。 若 以質因數分解, 64516可分解為: 254 、127421 ,相對應的 block 數量將為 254、508

16129、3225864516

3. Warp : STMP 以 warp 為單位執行,一個 warp32thread 組成 。 若宣告 的數量不足32也會成為一個warp ,代表有數個thread的浪費 。因此254127

30、 3 1

4. Occupancy :為了減少延遲,需讓 STMP 有足夠的 warp 做文本切換 。 但有以下 考量:

• 一個 STMP 最多只能放入 32個warp :因此能使用的 block 數量為 4、8、 32、

32、32

• 一個 STMP 內共享記憶體空間 :因此能使用的 block 數量為 1299、 199 、399(*共享記憶體會保留空間放執行的程式碼 ,因此無法全部使用 。 )

• 一個STMP 最多只能放入8block

在上三點的限制下得到的 block 數量為12888

5. 綜合考量:考量thread因包裝成warp而造成的浪費與佔有率後,選擇thread浪 費最少的或者佔有率高的 。

實驗結果如圖5.4 ,左邊縱軸為各種thread設定下所花費的時間, 以長條圖表示 ,單 位為秒 。 右邊縱軸為各種 thread 設定下的 speedup , speedup 為 CPU 與 GPU 版 本程式的時間比值, CPU 版本程式所花費的時間呈現於圖上方的表格,以折線圖表示 。 從thread 數量來分析,可以發現在 thread 數量為 254127的運算時間相差不多 ,但 thread 數量為 127的時間較短, 表示在相同的占有率下,浪費的 thread 越少,運算效 能越好 。 而在 thread 數量為 421, 運算時間也為倍數差 。 從交配率來分析,比 較交配率 40%60%的計算時間, 兩者的時間倍數幾乎為 1.5,40%80%的計 算時間幾乎為 2,表示本研究提出的方法很適合平行化計算 。

5.2: GPU 參數分析 (遮罩大小為3 × 3)

5.3: GPU 參數分析 (遮罩大小為5 × 5)

Thread 數量 252 189 144 63 48

換算成 warp 8 6 5 2 2

Thread 浪費的數量 4 3 0 (16) 1 0 (16)

換算成 block

STMP 內最多共 32warp 4 5 6 16 16

受限於共享記憶體的 block 數量 1 1 1 4 5 多核心處理器內的 warp8 × 1 6 × 1 5 × 1 2 × 4 2 × 5

佔有率 25% 18.75% 15.63% 25% 31.50%

而遮罩大小為 5 × 5時, 遮罩數量變成 (256 − 5 + 1)2共63504 ,所需要的共享記 憶體空間為 52 + 8 × 4共 57 bytes。 遮罩數量比 3 × 3,但一個 thread 所需的記憶 體空間便多了,因此一個 STMP 能容納的最大 thread 將變少為 287個 。 而 63504可 以拆解的質因數共有 38,因此 thread 有較多的選擇 。 但許多組合下 thread 的浪費 數量較多,在運算效能上的表現較差 ,因此只列出幾組數據討論 。 分析的方法同上敘述, 分析結果請參考表5.3 ,實驗結果請參考圖5.5

此實驗結果分為三部分–warpoccupancy 和綜合討論:

• warp :雖然第三組和第五組的 thread浪費量為16 ,但恰好為 half-warp 的組合, 因此此兩組的時間花費較為其他組少 。

• occupancy :由於本研究使用的GPU 卡以 block 為主要文本切換單位 ,因此只探 討前三組 block 數量皆為 1的情況 。但由於第三組的 thead 浪費量為 0 ,與前兩 組有差別,因此只比較第一和第二組實驗結果 。 可以發現在相差不多的 thread

DEF GH

dIdx(144,1)和 BlockIdx(441,100)。

相關文件