Four weddings and a funeral! Mike Newell 1994獲得 澳洲電影金像獎最佳外國片 並且獲得奧斯卡最佳的影片 及最佳劇本的提名 (( 妳是我今生的新娘
CPU平行粒子群最佳化應用於平面桁架結構最佳化設計
-
Upload
jay-hung -
Category
Technology
-
view
299 -
download
3
Transcript of CPU平行粒子群最佳化應用於平面桁架結構最佳化設計
CPU平行粒子群最佳化應用於
平面桁架結構最佳化設計
指導老師:洪士林 教授
學生:洪銘澤1
背景
平行運算
動機
目的
方法
測試案例
結論
大綱
2
循序程式
平行程式
平行運算
3
待解問題
tN ‧‧‧ ‧‧‧ t2 t1 t0
處理器
指令待
解問
題
tN ‧‧‧ ‧‧‧ t2 t1 t0
處理器
處理器
處理器
4國道一號泰山收費站
節省時間
利用更多核心減少運算時間
解決大計算量的問題
結構最佳化、模擬流體、或氣象。
更有效率地運用硬體
核心數增加
平行運算優點
5
背景
動機
最佳化
目的
方法
測試案例
結論
大綱
6
最佳化
7
最佳化早期使用梯度作為搜尋方向的根據
優點:收斂快、計算量小
缺點:容易掉入局部最佳解
最佳化
8
搜尋初始點示意圖
又稱仿生最佳化
常見非傳統最佳化
粒子群最佳化(PSO)
基因演算法(GA)
蟻群演算法(ACO)
模擬退火眼算法(SA)
調和搜尋演算法(HS)
禁制搜尋法(TS)
非傳統最佳化
9
1995年由學者Eberhart和Kennedy提出粒子群最
佳化(Particle Swarm Optimization, PSO)
模擬動物群體行為的最佳化演算法
粒子群最佳化
10
粒子群最佳化
大量迭代次數
大量粒子搜尋
目標函數
本身計算量
多個局部最佳解
最佳化演算法缺點
11
背景
動機
目的
方法
測試案例
結論
大綱
12
妥善利用電腦硬體
利用多執行緒達到平行運算效果
減少最佳化運算時間
測試不同計算量的目標函數
目的
13
背景
動機
目的
方法
OpenMP
粒子群最佳化
平行運算粒子群最佳化
測試案例
大綱
14
Open specification for Multi-Processing
應用程式介面(API)
多執行緒
共享記憶體
適用性
C/C++和Fortran
Fork-Join模型
編譯器指導指令基礎(compiler directive based)
OpenMP
15
Fork-Join 模型
16
A B C A B C D A B
A
B
C
D
A
B
C
A
B
循序程式
平行程式
兩陣列相加循序執行
利用OpenMP compiler directive平行
Fork-Join範例
17
……
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
……
C/C++ 格式
範例:
#pragma omp parallel default(none) private(x, y)
OpenMP Directives
18
#pragma omp directive-name [clause, ...] newline
必須 必須
parallel,
do,
for, ……
非必須 必須
directive-nameclause clause
競爭危害(Race Condition)
19
競爭危害範例
競爭危害(Race Condition)
20
競爭危害輸出結果
for Directives
21
矩陣乘法在C/C++循序執行
for Directives
22
矩陣乘法在C/C++平行執行
粒子群最佳化
23
粒子群最佳化
24
流程圖
初始化族群給定每個粒子
隨機位置和速度
計算每個粒子的目標函數值
是否滿足停止條件
更新每個粒子的位置和速度
計算每個粒子的目標函數值
最佳化結果
是
否
粒子群最佳化
26
粒子群最佳化演算法
27
粒子群最佳化循序演算法
平行運算粒子群最佳化
28
初始化族群給定每個粒子
隨機位置和速度
計算每個粒子的目標函數值
是否滿足停止條件
更新每個粒子的位置和速度
計算每個粒子的目標函數值
最佳化結果
粒子群最佳化流程圖
平行運算粒子群最佳化
29
粒子群最佳化平行化演算法
平行運算粒子群最佳化
30粒子群最佳化平行化演算法示意圖
是否滿足停止條件
更新每個粒子的位置和速度
計算每個粒子的目標函數值
0 → 1/4 1/4 → 2/4 2/4 → 3/4 3/4 → 4/4
加速比
31核心數
一般情形
理論值加
速比
背景
動機
目的
方法
測試案例
矩陣乘法
數值最佳化
平面桁架結構最佳化
結論
大綱
32
中央處理器(CPU)
intel i5-2400 (6M Cache, up to 3.40 GHz) 四核心
記憶體(RAM)
8G
作業系統(OS)
Windows 7 ultimate
開發平台(IDE)
Microsoft Visual Studio 2012
測試環境
33
矩陣乘法
34
矩陣乘法
35
宣告四矩陣為:ArrA, ArrB, ArrC, ArrD
給予ArrA, ArrB每個矩陣元素隨機浮點數
循序:ArrA與ArrB相乘存至ArrC
平行:ArrA與ArrB相乘存至ArrD
加總ArrC和ArrD矩陣元素相減平方和
矩陣列行大小(m*n) 循序 (秒) 平行(秒) 加速比
25 0.011 0.147 0.07
50 0.056 0.037 1.51
100 0.462 0.16 2.82
200 3.711 1.169 3.17
400 35 10.783 3.25
800 396.67 115.92 3.42
1600 4669.6 1216.67 3.84
矩陣乘法
36
矩陣乘法測試結果循序計算:77.82分鐘
平行計算:20.27分鐘
相差:57.54 分鐘
矩陣乘法
37
3.84
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
0 500 1000 1500 2000
加速
比
矩陣列行值m*m
加速比與矩陣大小關係
30個變數平方和之最小值
38
粒子總數 循序(秒) 平行(秒) 加速比
4 1.923 1.163 1.65
20 8.647 3.329 2.60
60 25.535 8.358 3.06
500 209.62 63.54 3.30
1,000 422.97 125.87 3.36
10,000 4231.9 1150.5 3.68
100,000 41819.5 11395.7 3.67
200,000 83466 22382 3.73
500,000 207222 55882 3.71
30個變數平方和之最小值
39
循序運算:23.2小時
平行運算:6.2小時
相差:17小時
粒子總數與加速比關係
30個變數平方和之最小值
40
3.73
0
0.5
1
1.5
2
2.5
3
3.5
4
0 1 2 3 4 5 6 7
加速
比
log(粒子總數)
加速比與粒子數關係
30個變數平方和之最小值
41
0.00
5000.00
10000.00
15000.00
20000.00
25000.00
30000.00
02
29
45
86
87
91
611
45
13
74
16
03
18
32
20
61
22
90
25
19
27
48
29
77
32
06
34
35
3664
38
93
41
22
43
51
45
80
48
09
50
38
52
67
54
96
57
25
59
54
6183
目標
函數
值
迭代次數
最佳化收斂情形
目標函數值:0.868
Beale's function
42
Beale's function
43
Beale’s function 繪製圖形
粒子總數 循序(秒) 平行(秒) 加速比
20 1.884 1.31 1.43
60 5.023 2.525 1.99
120 9.879 4.105 2.41
240 19.61 7.073 2.77
500 39.998 13.691 2.92
1000 79.639 27.92 2.85
5000 393.07 125.341 3.14
10000 782.09 237.309 3.30
Beale's function
44
粒子總數與加速比關係
循序運算:13.03 分鐘
平行運算:3.96 分鐘
相差:9.07分鐘
Beale's function
45
3.30
0.00
0.50
1.00
1.50
2.00
2.50
3.00
3.50
0 1 2 3 4 5
加速
比
log(粒子總數)
加速比與粒子數關係
Beale's function
46
0
0.005
0.01
0.015
0.02
0.025
0.03
0.0350
69
13
82
07
27
63
45
41
44
83
55
26
21
690
75
98
28
89
79
66
10
35
110
4117
31
24
213
11
13
80
14
49
15
18
15
87
16
56
17
25
17
94
1863
19
32
目標
函數
值
迭代次數
最佳化收斂情形
目標函數值:0.000
平面桁架結構斷面最佳化
47
10支桿件平面桁架結構
案例一分析
48
案例一分析
49
粒子總數 循序(秒) 平行(秒) 加速比
4 0.897 0.391 2.29
20 4.195 1.605 2.61
40 8.46 3.06 2.76
100 24.33 8.42 2.89
500 103.53 32.41 3.19
1000 207.76 63.45 3.27
5000 1017.89 296.81 3.42
案例一分析
50
粒子總數與加速比關係
循序運算:16.96 分鐘
平行運算:4.94 分鐘
相差:12.02分鐘
案例一分析
51
3.43
0
0.5
1
1.5
2
2.5
3
3.5
4
0 0.5 1 1.5 2 2.5 3 3.5 4
加速
比
log(粒子總數)
加速比與粒子數關係
案例一分析
52
0
1000
2000
3000
4000
5000
6000
7000
80000
16
73
34
50
16
68
83
51
00
2116
91
33
61
50
31
67
01
83
72
00
42
17
12
33
82
50
52
67
22
83
93
00
63
17
33
34
03
50
73
67
43
84
14
00
84
17
54
34
24
50
94676
48
43
總重
(lb)
迭代次數
最佳化收斂情形
斷面編號 PSO (in2) PSO (Li) (in2)
A1 31.51 33.47
A2 0.15 0.11
A3 25.29 23.18
A4 14.25 15.48
A5 0.11 3.65
A6 0.33 0.12
A7 7.06 8.33
A8 18.94 23.34
A9 24.01 23.01
A10 0.11 0.19
總重(lb) 5131.0 5529.5
案例一分析
53
斷面最佳化結果
398.5 lb (-13.9%)
迭代次數 循序(秒) 平行(秒) 加速比
20 2.20 1.49 1.47
50 5.18 2.50 2.07
100 10.60 4.48 2.37
500 52.53 16.98 3.09
1000 103.13 32.50 3.17
5000 513.57 153.53 3.35
10000 1017.89 296.81 3.43
50000 5132.18 1498.93 3.42
案例一分析
54
迭代次數與加速比關係
粒子總數:5000
17支桿件平面桁架
案例二分析
55
案例二分析
56
粒子總數 循序(秒) 平行(秒) 加速比
4 0.948 0.465 2.04
20 4.297 2.092 2.05
40 8.78 3.94 2.23
100 21.13 9.01 2.35
500 106.94 35.04 3.05
1000 212.28 60.91 3.49
5000 1058.43 298.65 3.54
案例二分析
57
粒子總數與加速比關係
循序運算:17.64 分鐘
平行運算: 4.98 分鐘
相差:12.66分鐘
案例二分析
58
3.54
0
0.5
1
1.5
2
2.5
3
3.5
4
0 0.5 1 1.5 2 2.5 3 3.5 4
加速
比
log(粒子總數)
加速比與粒子數關係
案例二分析
59
0
1000
2000
3000
4000
5000
60000
17
33
46
51
96
92
86
51
03
81211
13
84
1557
17
30
19
03
20
76
22
49
24
22
25
95
27
68
29
41
3114
32
87
34
60
36
33
3806
39
79
41
52
43
25
44
98
46
71
48
44
總重
(lb
)
迭代次數
最佳化收斂情形
斷面編號 PSO (in2) PSO (Li) (in2)A1 14.024 15.766
A2 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
案例二分析
60-54.14 lb (-1.99%)
26支桿件平面桁架
案例三分析
61
案例三分析
62
粒子總數 循序(秒) 平行(秒) 加速比
4 2.344 0.795 2.95
20 11.506 3.666 3.14
40 22.945 7.151 3.21
100 56.192 17.553 3.20
500 281.287 84.064 3.35
1000 556.545 160.861 3.46
5000 2832.562 779.182 3.64
案例三分析
63
粒子總數與加速比關係
循序運算:47.20 分鐘
平行運算:12.98 分鐘
相差:34.22分鐘
案例三分析
64
3.64
0
0.5
1
1.5
2
2.5
3
3.5
4
0 0.5 1 1.5 2 2.5 3 3.5 4
加速
比
log(粒子總數)
粒子總數與加速比關係
案例三分析
65
0
2000
4000
6000
8000
10000
12000
14000
160000
17
33
46
51
96
92
865
10
38
12
11
13
84
15
57
17
30
19
03
20
76
22
49
24
22
25
95
27
68
29
41
3114
32
87
34
60
36
33
3806
39
79
41
52
43
25
44
98
46
71
48
44
總重
(lb)
迭代次數
最佳化收斂情形
最佳化結果:5451.02 lb
背景
動機
目的
方法
測試案例
結論
大綱
66
妥善利用多核心平行運算可減短計算時間
經過案例測試粒子群最佳化很適合平行運算
主要影響平行粒子群最佳化因素
粒子總數
迭代次數
目標函數維度
結論
67
GPGPU
General-purpose computing on graphics processing
units
顯示卡記憶體
OOP
Object-oriented programming
可讀性
維護和修改
建議與未來展望
68
背景
平行運算
動機
最佳化簡介、粒子群最佳化
目的
利用多核心平行運算
方法
平行矩陣乘法演算法、平行粒子群最佳化演算法
測試案例
矩陣乘法、數值最佳化案例、桁架結構最佳化案例
結論
簡報回顧
69