Slide
Transcript of Slide
13
以 OpenMP 運算環境為基礎,開發一多 CPU 平台之平行化運算粒子群最佳化程式於平面桁架最佳化設計問題。
善用多核心 CPU利用多執行緒達到平行運算效果
減少最佳化運算時間測試不同計算量的目標函數
目的
15
Open specification for Multi-Processing 應用程式介面 (API)
多執行緒共享記憶體
適用性C/C++ 和 Fortran
Fork-Join 模型 編譯器指導指令基礎 (compiler directive
based)#pragma omp ……
OpenMP
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
34
中央處理器 (CPU) intel i5-2400 (6M Cache, up to 3.40 GHz) 四核
心 記憶體 (RAM)
8G 作業系統 (OS)
Windows 7 ultimate 開發平台 (IDE)
Microsoft Visual Studio 2012
測試環境
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
加速
比
加速比與矩陣大小關係
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 小時
粒子總數與加速比關係
42
30 個變數平方和之最小值
5 603 1201179923972995359341914789538759850.00
5000.00
10000.00
15000.00
20000.00
25000.00
30000.00
最佳化收斂情形
迭代次數
目標
函數
值
目標函數值: 0.868
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
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 分鐘
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
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 分鐘
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%)
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 分鐘
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
案例三分析最佳化斷面後分析節點位移
71
結論 以 OpenMP 運算環境為基礎,開發一多 CPU 平
台之平行化運算粒子群最佳化程式完成,經數值最佳化驗證本平行演算法可行。
編寫平行程式使用共享記憶體須注意競爭危害
主要影響平行粒子群最佳化效能因素粒子總數迭代次數目標函數維度
72
GPGPUGeneral-purpose computing on graphics
processing units顯示卡記憶體
OOPObject-oriented programming可讀性維護和修改
3D 桁架結構最佳化
建議與未來展望