Slide

73
CPU 平平平平平平平平平平平平平平平平平平平 平平平 平平平平 平平平 平平 平平 平平平 1

Transcript of Slide

1

CPU 平行粒子群最佳化應用於平面桁架結構最佳化設計

指導老師:洪士林 教授學生:洪銘澤

2

背景平行運算

動機 目的 方法 測試案例 結論

大綱

3

循序程式

平行程式

平行運算

待解問題

tN ‧‧‧ ‧‧‧ t2 t1 t0

處理器

指令待

解問

tN ‧‧‧ ‧‧‧ t2 t1 t0

處理器

處理器

處理器

4國道一號泰山收費站

5

節省時間利用更多核心減少運算時間

解決大計算量的問題結構最佳化、模擬流體、或氣象。

更有效率地運用硬體CPU 核心數增加

平行運算優點

6

背景 動機

最佳化 目的 方法 測試案例 結論

大綱

7

在給定限制條件中,使某些指標達到最佳。

數學表示式;尋找一

< 或 >

最佳化在許多領域中應用數學、科學、工程、經濟、和統計等

最佳化

8

最佳化早期使用梯度作為搜尋方向的根據缺點:容易掉入局部最佳解

最佳化

搜尋初始點示意圖

9

常見仿生最佳化理論粒子群最佳化 (PSO)基因演算法 (GA)蟻群演算法 (ACO)模擬退火眼算法 (SA)調和搜尋演算法 (HS)禁制搜尋法 (TS)

仿生最佳化理論

10

1995 年由學者 Eberhart 和 Kennedy 提出粒子群最佳化 (Particle Swarm Optimization, PSO)

模擬動物群體行為的最佳化演算法

粒子群最佳化

11

最佳化演算法比較

粒子群最佳化 梯度搜尋法

優點 全域搜尋 收斂快、計算量小

缺點 收斂慢、計算量大 易搜尋區域最佳解

12

背景 動機 目的 方法 測試案例 結論

大綱

13

以 OpenMP 運算環境為基礎,開發一多 CPU 平台之平行化運算粒子群最佳化程式於平面桁架最佳化設計問題。

善用多核心 CPU利用多執行緒達到平行運算效果

減少最佳化運算時間測試不同計算量的目標函數

目的

14

背景 動機 目的 方法

OpenMP粒子群最佳化平行運算粒子群最佳化

測試案例

大綱

15

Open specification for Multi-Processing 應用程式介面 (API)

多執行緒共享記憶體

適用性C/C++ 和 Fortran

Fork-Join 模型 編譯器指導指令基礎 (compiler directive

based)#pragma omp ……

OpenMP

16

Fork-Join 模型

A B C A B C D A B

A

B

C

D

A

B

C

A

B

循序程式

平行程式

17

兩陣列相加循序執行 利用 OpenMP compiler directive 平行

Fork-Join 範例

……int A[10], B[10], C[10];for (int i=0; i<10; i++) A[i] = B[i] + C[i];end for……

#include <omp.h>……int A[10], B[10], C[10];// Fork#pragma omp parallel for num_threads(4){

for (int i=0; i<10; i++) A[i] = B[i] + C[i];

end for} // join ……

18

C/C++ 格式

範例:#pragma omp parallel default(none) private(x, y)

OpenMP Directives

#pragma omp

directive-name

[clause, ...]

newline

必須 必須parallel,do,for, ……

非必須 必須

directive-nameclause clause

19

競爭危害 (Race Condition)

競爭危害範例

20

競爭危害 (Race Condition)

競爭危害輸出結果

i j

21

0 1 2 3

0 1 2 3

i

j

執行緒

tid=0 tid=2tid=1 tid=3

j=4tid=2

tid=0

tid=1

tid=3

22

0 1 2 3i

執行緒

tid=0 tid=2tid=1 tid=3

tid=2

tid=0

tid=1

tid=3

0 1 2 3j

0 1 2 3j

0 1 2 3j

0 1 2 3j

23

for Directives

矩陣乘法在 C/C++ 循序執行

24

for Directives

矩陣乘法在 C/C++ 平行執行

25

粒子搜尋公式

粒子群最佳化

26

粒子搜尋公式

粒子群最佳化

流程圖初始化族群給定每個粒子

隨機位置和速度

計算每個粒子的目標函數值

是否滿足停止條件

更新每個粒子的位置和速度

計算每個粒子的目標函數值

最佳化結果

28

目標函數

:搜尋下界:搜尋上界:變數維度

範例

粒子群最佳化

29

粒子群最佳化演算法

粒子群最佳化循序演算法

30

平行運算粒子群最佳化初始化族群給定每個粒子

隨機位置和速度

計算每個粒子的目標函數值

是否滿足停止條件

更新每個粒子的位置和速度

計算每個粒子的目標函數值

最佳化結果

粒子群最佳化流程圖

31

平行運算粒子群最佳化

粒子群最佳化平行化演算法

p :核心數

32

程式加速比: :核心數:單執行緒所執行的時間:使用個核心平行運算所執行的時間

線性加速比 (Linear speedup) : 理論最大加速值

加速比

核心數

一般情形

理論值加

速比

33

背景 動機 目的 方法 測試案例

矩陣乘法數值最佳化平面桁架結構最佳化

結論

大綱

34

中央處理器 (CPU) intel i5-2400 (6M Cache, up to 3.40 GHz) 四核

心 記憶體 (RAM)

8G 作業系統 (OS)

Windows 7 ultimate 開發平台 (IDE)

Microsoft Visual Studio 2012

測試環境

35

矩陣大小測測、、、、、、和

矩陣元素數值為隨機值 驗證方式

同一程式執行循序運算和平行運算後元素相減平方和 重複計算次數

100 次

矩陣乘法

36

矩陣乘法

宣告四矩陣為: ArrA, ArrB, ArrC, ArrD

給予 ArrA, ArrB 每個矩陣元素隨機浮點數

循序: ArrA 與 ArrB 相乘存至 ArrC

平行: ArrA 與 ArrB 相乘存至 ArrD

加總 ArrC 和 ArrD 矩陣元素相減平方和

矩陣乘法演算法流程圖

37

矩陣列行大小 (m*m) 循序 ( 秒 ) 平行 ( 秒 ) 加速比25 0.011 0.147 0.0750 0.056 0.037 1.51100 0.462 0.16 2.82200 3.711 1.169 3.17400 35 10.783 3.25800 396.67 115.92 3.42

1600 4669.6 1216.67 3.84

矩陣乘法

矩陣乘法測試結果 循序計算: 77.82 分鐘平行計算: 20.27 分鐘相差: 57.54 分鐘

38

矩陣乘法

0 200 400 600 800 1000 1200 1400 1600 18000

0.5

1

1.5

2

2.5

3

3.5

4

4.5

3.84

矩陣列行值 m*m

加速

加速比與矩陣大小關係

39

目標函數

最佳值

搜尋範圍 ,

粒子群最佳化參數

迭代次數:

30 個變數平方和之最小值

40

粒子總數 循序 ( 秒 ) 平行 ( 秒 ) 加速比4 1.923 1.163 1.6520 8.647 3.329 2.6060 25.535 8.358 3.06500 209.62 63.54 3.30

1,000 422.97 125.87 3.3610,000 4231.9 1150.5 3.68100,000 41819.5 11395.7 3.67200,000 83466 22382 3.73500,000 207222 55882 3.71

30 個變數平方和之最小值

循序運算: 23.2 小時平行運算: 6.2 小時相差: 17 小時

粒子總數與加速比關係

41

30 個變數平方和之最小值

0 1 2 3 4 5 6 70

0.5

1

1.5

2

2.5

3

3.5

43.73

加速比與粒子數關係

log( 粒子總數 )

加速

42

30 個變數平方和之最小值

5 603 1201179923972995359341914789538759850.00

5000.00

10000.00

15000.00

20000.00

25000.00

30000.00

最佳化收斂情形

迭代次數

目標

函數

目標函數值: 0.868

43

Beale's function 目標函數

最佳值

搜尋範圍

粒子群最佳化參數

迭代次數:

44

Beale's function

Beale’s function 繪製圖形

45

粒子總數 循序 ( 秒 ) 平行 ( 秒 ) 加速比20 1.884 1.31 1.4360 5.023 2.525 1.99120 9.879 4.105 2.41240 19.61 7.073 2.77500 39.998 13.691 2.92

1000 79.639 27.92 2.855000 393.07 125.341 3.1410000 782.09 237.309 3.30

Beale's function

粒子總數與加速比關係

循序運算: 13.03 分鐘平行運算: 3.96 分鐘相差: 9.07 分鐘

46

Beale's function

1 1.5 2 2.5 3 3.5 4 4.50.00

0.50

1.00

1.50

2.00

2.50

3.00

3.50 3.30

加速比與粒子數關係

log( 粒子總數 )

加速

47

Beale's function

1 156 311 466 621 776 931 1086124113961551170618610

0.005

0.01

0.015

0.02

0.025

0.03

0.035

最佳化收斂情形

迭代次數

目標

函數

目標函數值: 0.000

48

目標函數::設計斷面下界:設計斷面上界:第根桿件的斷面積:第根桿件的密度:第根桿件的長度

:第個自由度的位移:桿件總數 :自由度總數

平面桁架結構斷面最佳化

49

10 支桿件平面桁架結構

案例一分析

50

設計條件位移限制:應力限制:

材料參數彈性模數:材料密度:

粒子群最佳化參數

迭代次數:搜尋範圍:

案例一分析

51

粒子總數 循序 ( 秒 ) 平行 ( 秒 ) 加速比4 0.897 0.391 2.2920 4.195 1.605 2.6140 8.46 3.06 2.76100 24.33 8.42 2.89500 103.53 32.41 3.19

1000 207.76 63.45 3.275000 1017.89 296.81 3.43

案例一分析

粒子總數與加速比關係

循序運算: 16.96 分鐘平行運算: 4.94 分鐘相差: 12.02 分鐘

52

案例一分析

0 0.5 1 1.5 2 2.5 3 3.5 40

0.5

1

1.5

2

2.5

3

3.5

4

3.43

加速比與粒子數關係

log( 粒子總數 )

加速

53

案例一分析

4 284 564 844 112414041684196422442524280430843364364439244204448447640

1000

2000

3000

4000

5000

6000

7000

8000

最佳化收斂情形

迭代次數

總重

(lb)

54

斷面編號 PSO (in2) PSO (Li) (in2)A1 31.51 33.47A2 0.15 0.11A3 25.29 23.18A4 14.25 15.48A5 0.11 3.65A6 0.33 0.12A7 7.06 8.33A8 18.94 23.34A9 24.01 23.01A10 0.11 0.19

總重 (lb) 5131.0 5529.5

案例一分析

斷面最佳化結果

398.5 lb (-13.9%)

55

迭代次數 循序 ( 秒 ) 平行 ( 秒 ) 加速比20 2.20 1.49 1.4750 5.18 2.50 2.07100 10.60 4.48 2.37500 52.53 16.98 3.09

1000 103.13 32.50 3.175000 513.57 153.53 3.3510000 1017.89 296.81 3.4350000 5132.18 1498.93 3.42

案例一分析

迭代次數與加速比關係

粒子總數: 5000

56

17 支桿件平面桁架

案例二分析

57

設計條件位移限制:應力限制:

材料參數彈性模數:材料密度:

粒子群最佳化參數

迭代次數: 5000搜尋範圍:

案例二分析

58

粒子總數 循序 ( 秒 ) 平行 ( 秒 ) 加速比4 0.948 0.465 2.0420 4.297 2.092 2.0540 8.78 3.94 2.23100 21.13 9.01 2.35500 106.94 35.04 3.05

1000 212.28 60.91 3.495000 1058.43 298.65 3.54

案例二分析

粒子總數與加速比關係

循序運算: 17.64 分鐘平行運算: 4.98 分鐘相差: 12.66 分鐘

59

案例二分析

0 0.5 1 1.5 2 2.5 3 3.5 40

0.5

1

1.5

2

2.5

3

3.5

43.54

加速比與粒子數關係

log( 粒子總數 )

加速

60

案例二分析

4 394 784 11741564195423442734312435143904429446840

1000

2000

3000

4000

5000

6000

最佳化收斂情形

迭代次數

總重

(lb

)

61

斷面編號 PSO (in2) PSO (Li) (in2)A1 14.024 15.766A2 1.200 2.263

A3 13.217 13.854

A4 0.222 0.106

A5 10.037 11.356

A6 4.448 3.915

A7 10.025 8.071

A8 1.536 0.100

A9 8.397 5.850

A10 0.160 2.294

A11 4.412 6.313

A12 0.185 3.375

A13 5.339 5.434

A14 5.373 3.918

A15 3.978 3.534

A16 2.158 2.314

A17 5.537 3.542

總重 (lb) 2670.23 2724.37

案例二分析

-54.14 lb (-1.99%)

62

26 支桿件平面桁架

案例三分析

63

設計條件位移限制:應力限制:

材料參數彈性模數:材料密度:

粒子群最佳化參數

迭代次數: 5000搜尋範圍:

案例三分析

64

粒子總數 循序 ( 秒 ) 平行 ( 秒 ) 加速比4 2.344 0.795 2.9520 11.506 3.666 3.1440 22.945 7.151 3.21100 56.192 17.553 3.20500 281.287 84.064 3.35

1000 556.545 160.861 3.465000 2832.562 779.182 3.64

案例三分析

粒子總數與加速比關係

循序運算: 47.20 分鐘平行運算: 12.98 分鐘相差: 34.22 分鐘

65

案例三分析

0 0.5 1 1.5 2 2.5 3 3.5 40

0.5

1

1.5

2

2.5

3

3.5

43.64

粒子總數與加速比關係

log( 粒子總數 )

加速

66

案例三分析

4 394 784 11741564195423442734312435143904429446840

2000

4000

6000

8000

10000

12000

14000

16000

最佳化收斂情形

迭代次數

總重

(lb)

最佳化結果: 5451.02 lb

67

案例三分析

桿件編號 桿件應力 (ksi)1 -4.64 2 4.77 3 -29.19 4 27.16 5 -7.41 6 -48.89 7 -10.43 8 -10.43 9 -48.89 10 -7.41 11 27.16 12 -29.19 13 -4.64

最佳化斷面後分析桿件應力

68

桿件編號 桿件應力 (ksi)14 4.77 15 7.01 16 6.64 17 23.88 18 9.18 19 -23.19 20 -8.61 21 9.18 22 -8.61 23 -23.19 24 6.64 25 7.01 26 23.88

案例三分析最佳化斷面後分析桿件應力

69

節點編號 X 方向 (in) Y 方向 (in)1 0.234 -2.000 2 0.144 -1.778 3 0.000 0.000 4 0.000 0.000 5 -0.144 -1.778 6 -0.234 -2.000 7 0.314 -1.975 8 -0.051 -0.973 9 0.070 -0.958 10 0.000 -0.461 11 -0.070 -0.958 12 0.051 -0.973 13 -0.314 -1.975 14 0.412 -0.562 15 -0.412 -0.562

案例三分析最佳化斷面後分析節點位移

70

背景 動機 目的 方法 測試案例 結論

大綱

71

結論 以 OpenMP 運算環境為基礎,開發一多 CPU 平

台之平行化運算粒子群最佳化程式完成,經數值最佳化驗證本平行演算法可行。

編寫平行程式使用共享記憶體須注意競爭危害

主要影響平行粒子群最佳化效能因素粒子總數迭代次數目標函數維度

72

GPGPUGeneral-purpose computing on graphics

processing units顯示卡記憶體

OOPObject-oriented programming可讀性維護和修改

3D 桁架結構最佳化

建議與未來展望

73

背景平行運算

動機最佳化簡介、粒子群最佳化

目的利用多核心平行運算

方法平行矩陣乘法演算法、平行粒子群最佳化演算法

測試案例矩陣乘法、數值最佳化案例、桁架結構最佳化案例

結論

簡報回顧