• 沒有找到結果。

單一 GPU 效能分析

在文檔中 中 華 大 學 (頁 44-65)

第四章 實驗與結果分析

4.2 單一 GPU 效能分析

在 這 個 實 驗 中 使 用 與 論 文 相 同 的 軟 硬 體 架 構 , 並 且 輸 入 的 資 料 為 T10I4D100K 門檻值 200 (0.2%),硬體架構及輸入資料如表 4-5。

表 4-5 用於與 GPU-FPM 比較的 T10I4D100K 門檻值 200 的運算平台與資料特性 CPU AMD Phenom II X4 965

GPU ATI Radeon HD 5850

T 10

I 4

D 100,000 N 100,000 門檻值 200

如圖 4-1 顯示,CSFPM 有效的改良 GPU-FPM 的執行速度,並且可以得到 約 2.6 倍的加速比,由於 GPU 的各核心速度較慢,故較不適合使用高運算量的 計算方式。

34

圖 4-1 T10I4D100K,T200 使用表 4-5 之主機運算結果

表 4-6 T10I4D100K 門檻值 200 的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10

I 4

D 100,000 N 100,000 門檻值 200

由於 GPU-FPM 只使用單一張 GPU 作為運算,因此圖 4-2 為單一張 GTX 580 的運算時間比較如表 4-6,使用的資料庫為 T10I4D100K,門檻值 200,由於 GPU 的效能增加了,因此運算時間也相對縮短,但是 CSFPM 於 Thread 65536 運算時

Thread 256 Thread 512 Thread 1024

GPU-FPM 121.462 63.82 35.787

CSFPM 49.4804 26.183 13.756

0 20 40 60 80 100 120 140

T im e (se c.)

T10I4D100K,T200

35

可提升 1.4 倍的加速比。

圖 4-2 CSFPM 與 GPU-FPM 使用一張 GTX 580 於 T10I4D100K,T200 的比較 當門檻值下降為 100 時,候選項目集開始增加,但 CSFPM 依然有較好的加 速效果,於 Thread 為 16384 時還是擁有 1.22 的加速比,但是因為候選項目的數 量變多,CSFPM 的運算時間下降較快,因為此運算量都算小的運算量,每個核 心都可以負擔,因此分散於更多核心的加速效果將會更好,但是由於負載平衡較 為差,因此運算時存在著等待時間,因此運算效能較差。

Thread 256

Thread 1024

Thread 2048

Thread 4096

Thread 8192

Thread 16384

Thread 32768

Thread 65536 GPU-FPM 9.797 5.226 5.133 2.66 1.138 0.936 0.717 0.546

CSFPM 3.9 1.06 0.53 0.312 0.249 0.234 0.39 0.39

0 2 4 6 8 10 12

T im e (se c.)

T10I4D100K,T200

36

圖 4-3 CSFPM 與 GPU-FPM 使用一張 GTX 580 於 T10I4D100K,T100 的比較

利用不同的資料量,並且使用相同門檻值相同 Thread 數量之運算結果,於 圖 4-4 所示,T10I4DXK,T0.2%,Thread 16384,X 為變化的資料量,因資料量不 同其門檻值非固定常數,故使用 T0.2%表示,其代表意義為門檻值等於資料量乘 以 0.2%,例如資料量 100 k,則門檻值為 200。

圖中 GPU-FPM 於資料量 300K 以後並無法運算,GPU-FPM 利用𝑘個 for 迴 圈檢查物品出現次數,其運算複雜度為𝑛𝑘,以 T10I4D300K,T0.2%為例,超過門 檻值的數量至少需要 600,其中𝑛為大於門檻值之常數在此範例為 600 以上,𝑘為 階層數量,由於 GPU 無法運算,因此一再出現錯誤訊息並且跳出 GPU 運算,故

Thread 4096

Thread 8192

Thread 16384

Thread 32768

Thread 65535

Thread 65538 GPU-FPM 142.598 80.073 44.86

CSFPM 60.996 37.393 36.769 43.112 64.197 61.074

20 40 60 80 100 120 140 160

T im e (se c.)

T10I4D100K,T100

37

GPU-FPM 無法正常運算,而後的數據將無法顯示。

圖 4-4 CSFPM 與 GPU-FPM 使用一張 GTX 580 於 T10I4DXK,T0.2%的比較

使用 OpenCL 不但可以於 ATI 的 GPU 中運算,也可利用 NVidia 的 GPU 中 提供相同運算功能。由以上各圖可知當需要運算的資料量較小時,GPU-FPM 及 CSFPM 都可以正常運算,但是 CSFPM 在以上的範例中都可以比 GPU-FPM 得到 較快的速度,並且 GPU-FPM 可運算的資料類型限制較多,以圖 4-4 為例,

GPU-FPM 只能夠運算至 200K 的資料量,而 CSFPM 卻可以正常地提供運算,因 此 CSFPM 更適合使用。

Size 100K

Size 200K

Size 300K

Size 400K

Size 500K

Size 600K

Size 700K

Size 800K

Size 900K

Size 1000K GPU-FPM 0.936 4.041

CSFPM 0.234 0.406 0.624 1.014 1.357 1.872 2.59 3.292 4.509 4.977 0

0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5

T im e (se c.)

T10I4DXK,T0.2%, Thread 16384

38

4.3Multi-GPU 運算效能分析

利用不同數量 GTX 580 進行加速,硬體及輸入資料如表 4-7。

表 4-7 T10I4D100K 門檻值 200 的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10

I 4

D 100,000 N 100,000 門檻值 200

圖 4-5 是使用三張 580 同時運算相同 Thread,可以看出一開始增加 Thread 數量時即可得到部分加速效能,但是當使用越來越多的 Thread 執行時間越長,

由於資料傳入 GPU 後需要等待到有閒置的核心才能進行運算,而越多的工作堆 積在 GPU 中反而增加了等待時間,因此適量的選擇 Thread 可以達到更好的加速 效果,由此圖可得知 T10I4D100KN100K 最佳的 Thread 數量為 16385。

Thread 4096

Thread 8192

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536

CSFPM 0.201 0.169 0.166 0.164 0.276 0.284 0.311

0.15 0.17 0.19 0.21 0.23 0.25 0.27 0.29 0.31 0.33

T im e (se c.)

T10I4D100K,T200

39

圖 4-5 T10I4D100K,門檻值 200,使用 3 張 GTX 580 的不同 Thread 運算時間

每張 GPU 使用的 Thread 數量為 16385,如圖 4-6 顯示,當增加第二張 GTX 580 時可以得到 25%加速比,而在增加第三張時可以得到 40%加速比,可見增加 GPU 可以得到有效的加速效果。

圖 4-6 T10I4D100K,門檻值 200,Thread 為 16385 時使用張數不等的 GTX 580 運算時間

利用相同的資料 T10I4D100K,門檻值 100,並且利用三張 GTX 580 為計算 平台,其硬體及輸入的資料格式如表 4-8。

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 0.23 0.184 0.164

0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24

T im e (se c.)

T10I4D100K,T200

40

表 4-8 T10I4D100K 門檻值 100 的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10

I 4

D 100,000 N 100,000 門檻值 100

由圖 4-7 可看出 3 張 GTX 580 Thread 數量為 8192 時運算效能最佳,因此利 用 Thread 數量為 8192 時運算 1~3 張不等的 GTX 580 作為運算數據如圖 4-8。

圖 4-7 T10I4D100K,門檻值 100,使用 3 張 GTX 580 的不同 Thread 運算時間

Thread 4096

Thread 8192

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536 CSFPM 26.895 19.5 21.716 21.528 31.012 29.749 52.806

15 20 25 30 35 40 45 50 55

T im e (se c.)

T10I4D100K,T100

41

利用 GTX 580 1~3 張進行相同數據的運算 T10I4D100K,如圖 4-8 可以看出 增加第二張 GTX 580 時可以得到 50%的加速比,當增加第三張 GTX 580 時卻可 以得到 89%的加速比。

圖 4-8 T10I4D100K,門檻值 100,Thread 為 8192 時使用張數不等的 GTX 580 運算時間

利用資料量更大的資料庫 T10I4D1000K 門檻值 2000 作為運算的資料庫,其 硬體及輸入資料的特性如表 4-9。

表 4-9 T10I4D1000K 門檻值 2000 的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10

I 4

D 1,000,000 N 1,000,000 門檻值 2000

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 36.925 24.086 19.5

15 20 25 30 35 40

T im e (se c.)

T10I4D100K,T100

42

圖 4-9 可以看出使用 3 張 GTX 580 運算不同的 Thread 數量時,於 Thread 數 量為 131072 時速度最快,因此圖 4-10 將使用 Thread 數量為 131072 運算不同的 GTX 580。增加為兩張 GTX 580 時可以得到 22%的加速比,增加到第 3 張 GTX 580 時,即可增加到 47%加速比

圖 4-9 T10I4D1000K,門檻值 2000,使用 3 張 GTX 580 的不同 Thread 運算時間

Thread 8192

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536

Thread 131072

Thread 262144 CSFPM 0.468 0.358 0.406 0.312 0.312 0.359 0.234 0.421

0.2 0.25 0.3 0.35 0.4 0.45 0.5

T im e (se c.)

T10I4D1000K,T2000

43

圖 4-10 T10I4D1000K,門檻值 2000,Thread 為 131072 時使用張數不等的 GTX 580 運算時間

門檻值縮小則超過門檻值得資料將會增加,因此運算量也會相對增加,此測 驗是將 T10I4D1000K 門檻值縮小至 1000 (0.1%),如表 4-10,並且測試最快速的 Thread 數量。

表 4-10 T10I4D1000K 門檻值 1000 的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10

I 4

D 1,000,000 N 1,000,000 門檻值 1000

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 0.344 0.281 0.234

0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36

T im e (se c.)

T10I4D1000K,T2000

44

如圖 4-11,使用 3 張 GTX 580 執行不同 Thread 數量,最佳的 Thread 數量為 32768,因此使用 32768 Thread 數量執行不同張數的 GTX 580 測試加速比,如圖 4-12,增加一張 GTX 580 可得 64%的加速比,如果再增加一張 GTX 580,則可 提升 1.11 的加速比,由於此運算量較多,GPU 可以得到更有效的加速,在三張 GTX 580 同時運算下已經可以得到 1 倍以上的加速比。

圖 4-11 T10I4D1000K,門檻值 1000,使用 3 張 GTX 580 的不同 Thread 運算時 間

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536

Thread 131072

Thread 262144 CSFPM 61.97 61.964 53.539 53.493 57.643 75.925 116.828

40 50 60 70 80 90 100 110 120

T im e (se c.)

T10I4D1000K,T1000

45

圖 4-12 T10I4D1000K,門檻值 1000,使用不同張數的 GTX 580 運算 Thread 32768

以上資料皆為 IBM 資料產生器所產生的資料庫,而後使用的 Retail 與 Chess 皆是真實資料。先是使用 Retail 作為輸入資料,其中資料庫與硬體架構如表 4-11,

並且利用不同 Thread 尋找最佳運算速度,最佳 Thread 數量為 131072,如圖 4-13。

表 4-11 Retail 門檻值 1%的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 10.3

D 88,162 N 16,469

門檻值 1%

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 112.82 68.749 53.368

40 50 60 70 80 90 100 110 120

T im e (se c.)

T10I4D1000K,T1000

46

圖 4-13 Retail,門檻值 1%,使用 3 張 GTX 580 的不同 Thread 運算時間 圖 4-14 是 Retail 門檻值 1% 並且使用數量不等的 GTX 580 於 Thread 數量 為 131072 時運算的結果,從圖上可得知,增加一張 GTX 580 可得 62% 加速比,

而增加到第三張時就可增加到 1.08 的加速比,即可縮短一倍的運算時間。

圖 4-14 Retail,門檻值 1%,使用不同張數的 GTX 580 運算 Thread 131072

Thread 4096

Thread 8192

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536

Thread 131072

Thread 262144 CSFPM 3.354 3.182 3.51 3.526 7.426 7.924 2.699 2.075 5.834

1 2 3 4 5 6 7 8

T im e (se c.)

Retail,T1%

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 4.335 2.672 2.081

2 2.5 3 3.5 4 4.5

T im e (se c.)

Retail,T1%

47

Chess 資料庫的資料特性為資料緊密,並且重複性高,當門檻值為 70%時已 經需要合併至第 13 階才為最終的高頻項目集,其資料庫特性如表 4-12,由圖 4-15 可得知 131072 為最佳 Thread 數量,由於再增加 Thread 數量會使系統開始出現 錯誤狀況,因此無法再增加 Thread 數量。

表 4-12 Chess 門檻值 70%的運算平台與資料特性 CPU Intel Core i7-3960X 3.3GHz

GPU NVidia GTX 580 1536MB GDDR5 記憶體

T 37

D 3,196

N 75

門檻值 70%

圖 4-15 Chess,門檻值 70%,使用 3 張 GTX 580 的不同 Thread 運算時間 利用 Thread 數量 131072 並且使用不同張數的 GPU GTX 580,計算 Chess 門檻值 70%,使用兩張 GTX 580 可以得到 65%的加速比,而使用三張 GTX 580

Thread 4096

Thread 8192

Thread 16384

Thread 16385

Thread 32767

Thread 32768

Thread 65536

Thread 131072 CSFPM 327.469 127.468 73.145 73.232 39.787 39.766 29.341 27.419

0 50 100 150 200 250 300 350

T im e (se c.)

Chess,T70%

48

就可以得到 1.1 倍的加速比,由於運算量很大,因此在 GPU 內部的時間很長,

故可以得到更好的加速比,如圖 4-16 所示。

圖 4-16 Chess,門檻值 70%,使用不同張數的 GTX 580 運算 Thread 131072

於 GPU-FPM 可運算的資料中,CSFPM 都有 1.2 以上的加速比,並且 GPU-FPM 於單一核心運算量過大時將會出現錯誤的狀況,而 CSFPM 利用 GPU 核心數量多的特點,減少一次 for 迴圈的使用,有效的減少了單一核心運算量的 問題,並且從以上各圖可顯示出當資料運算量大時,使用 3 張 GTX 580 的加速 比是很好的,但是由於 Thread 數量不固定,因此在使用前須估計 Thread 的數量,

並且可以從圖上可得知 Thread 越多不一定可以得到越快的運算速度,因為 Thread 數量越多,則一次傳入 GPU 記憶體的數量越大,但是等待 GPU Core 有空閒時 間時才能計算,因此延遲時間越長,但是使用多張 GPU(本實驗最多使用到 3 張) 是可以達到一定量的加速比,以 Chess 為例,三張 GTX580 可提升約兩倍的加速 比。不論資料量大小以及資料的特性,例如 T10I4D100K 門檻值 100 或 200,甚 至 T10I4D1000K 以及真實資料 Retail 及 Chess,由於 Retail 是屬於較稀疏的資料,

GTX580 X 1 GTX580 X 2 GTX580 X 3

CSFPM 57.692 34.928 27.415

25 30 35 40 45 50 55 60

T im e (se c.)

Chess,T70%

49

其運算的 Thread 較不固定,運算時間起伏較大,但是 Chess 則是較密集的資料,

使用不同的 Thread 運算時間較為平滑,也較為直覺。

50

第五章 結論與未來展望

頻繁樣式探勘是一個很重要的問題,而 Apriori 演算法因資料量增加,或是 門檻值過小,其運算時間將會增加很多,由於 GPU 是一種核心數量多的平行運 算裝置,但是演算法不能直接轉移,由於 GPU 不宜計算樹狀結構,因此並非所 有問題都可以使用 GPU 解決,但是 GPU 擁有大量的運算核心,使用 GPU 解決 適合 GPU 環境的問題即可得到較佳的加速比。

在本研究中提出了兩種方法,一為 CSFPM,二為 Multi-GPU CSFPM,CSFPM 結合三種演算法的優點,利用 Bitmap 的負載平衡概念計算,並利用 GPU-FPM 的儲存方式以節省不必要的空間,並且利用 MATI 的合併方式,解決檢查重複及 達到快速合併的演算法,因此 CSFPM 是一種較佳的演算法,並且提出 Multi-GPU 的運算方式,以解決單一 GPU 運算效能的限制,並且使用 OpenMP 達到控制 Multi-Core CPU 控制不同 GPU 的方式完成 Multi-GPU 的實作。

由於 CSFPM 是將候選項目切割成片狀,利用 GPU 的 SIMD 的運算方式,

每一切片都交由一 GPU Thread 計算,與 GPU-FPM 相比當使用 ATI Radeon HD5850,資料庫為 T10I4D100K 門檻值 200,加速比最高可得 2.6 倍,以 Mulit-GPU 而言,最高又可得 1 倍的加速比,由於每個 GPU Thread 運算項都減少,並且達 到較佳的負載平衡,並且 GPU-FPM 利用兩個 for 迴圈檢查候選項目的相同訂單 次數會使於單一核心運算量過大,例如門檻值 1000,則單一核心將至少需要執 行 1000 x 1000 次的檢查,當門檻值更高時,檢查次數將會更多,因此將會出現 無法運算的狀況。

由於目前的 Mulit-GPU 是使用相同的 GTX 580 三張,如果可以使用不同的 GPU,可能會遇到不同的 GPU 的運算效能不同,則會發生等待的狀況發生,因

在文檔中 中 華 大 學 (頁 44-65)

相關文件