第五章 結論與建議
5.2 建議
1.
多核心處理器是目前電腦主流使用的,但近年新崛起的GPGPU(General-purpose computing on graphics processing units),也就 是利用電腦中顯示卡來做運算。利用顯示卡大量的核心做更龐大的運 算,但平行化的困難度比使用多核心 CPU 平行還難得許多,顯示卡記 憶體空間也比電腦記憶體來的小,因此控管顯示卡記憶體是編寫
GPGPU 程式一大學問。
2. 將來程式可以改用 Object-oriented programming (OOP)的方式編寫,可 以讓程式有更好的可讀性,方便未來配合使用者或硬體做修改或維 護。例如讓粒子群最佳化中粒子設為一個物件,物件中有𝑋𝑖,𝑗𝑘 、𝑃𝑖,𝑗𝑘、 和𝑉𝑖,𝑗𝑘等參數。
39
參考文獻
[1] "High Performance Computing Training,"
https://computing.llnl.gov/?set=training&page=index.
[5] J. L. Gustafson, "Reevaluating Amdahl's law," Communications of the
ACM, vol. 31, pp. 532-533, 1988.
[6] L. L. N. L. Blaise Barney, "OpenMP."
[7] J. Kennedy and R. Eberhart, "Particle swarm optimization," in Neural
Networks, 1995. Proceedings., IEEE International Conference on, 1995, pp.
1942-1948.
[8] J. F. Kennedy, J. Kennedy, and R. C. Eberhart, Swarm intelligence: Morgan Kaufmann Pub, 2001.
[9] Y. Shi, "Particle swarm optimization: developments, applications and resources," in Evolutionary Computation, 2001. Proceedings of the 2001
Congress on, 2001, pp. 81-86.
[10] 蘇維農, "JMC: 基於 OpenMP 3.0 平行程式設計模型, 實作支援 OpenMP 的 Java 語言編譯器及執行期間程式庫," 清華大學資訊工程學系 學位論文
, 2010.
[11] A. G. M. Michell, "LVIII. The limits of economy of material in
frame-40
structures," The London, Edinburgh, and Dublin Philosophical Magazine and
Journal of Science, vol. 8, pp. 589-597, 1904.
[12] L. A. Schmit and B. Farshi, "Some approximation concepts for structural synthesis," AIAA journal, vol. 12, pp. 692-699, 1974.
[13] L. Li, Z. Huang, F. Liu, and Q. Wu, "A heuristic particle swarm optimizer for optimization of pin connected structures," Computers & Structures, vol. 85, pp. 340-349, 2007.
[14] R. Perez and K. Behdinan, "Particle swarm approach for structural design optimization," Computers & Structures, vol. 85, pp. 1579-1588, 2007.
[15] A. Kaveh and S. Talatahari, "A hybrid particle swarm and ant colony optimization for design of truss structures," Asian J Civil Eng, vol. 9, pp. 329-48, 2008.
[16] A. Kaveh and S. Talatahari, "Particle swarm optimizer, ant colony strategy and harmony search scheme hybridized for optimization of truss structures,"
Computers & Structures, vol. 87, pp. 267-283, 2009.
[17] Flynn, Michael J. "Some computer organizations and their
effectiveness."Computers, IEEE Transactions on 100.9 (1972): 948-960.
[18] 張舒、祩絕利、趙開勇, "GPU 高性能運算之
CUDA,"
松崗出版社,
2011.[19] Erbatur, Fuat, et al. "Optimal design of planar and space structures with
genetic algorithms." Computers & Structures 75.2 (2000): 209-224.
[20] Aarts, Emile, and Jan Korst. "Simulated annealing and Boltzmann
machines." (1988).
[21] Glover, F., & Laguna, M. (1997). Tabu search (Vol. 22). Boston: Kluwer academic publishers.
41
42
表 2 OpenMP Directives
directive-name [clause, ...]
#pragma omp
parallel do for
非必要
例如:shared(x) (Enter)
表 3 矩陣乘法測試結果
矩陣列行大小(m*n) 循序 (秒) 平行(秒) 加速比 誤差
25
0.011 0.147 0.07483 0.050
0.056 0.037 1.513514 0.0100
0.462 0.16 2.817073 0.0200
3.711 1.169 3.174508 0.0400
35 10.783 3.24585 0.0800
396.67 115.92 3.421929 0.01600
4669.6 1216.67 3.838017 0.043
表 4 30 個變數的最小平方和最佳化執行時間與加速比
粒子總數 循序(秒) 平行(秒) 加速比
4
1.923 1.163 1.65348220
8.647 3.329 2.59747760
25.535 8.358 3.055157120
51.466 15.459 3.329193240
102.49 29.807 3.438454500
209.616 63.54 3.2989611000
422.97 125.87 3.36037210000
4231.897 1150.45 3.678471100000
41819.5 11395.7 3.669761200000
83466.2 22381.6 3.729233500000
207222 55882.2 3.70819344
45
表 6 修改平行程式後測試
粒子總數 修改前(秒) 修改後(秒) 相差(秒) 加速比差異
4
1.163 1.495 -0.332 -0.3671920
3.329 3.44 -0.11 -0.0801660
8.358 8.97 -0.612 -0.20845120
15.459 15.712 -0.253 -0.05361240
29.807 31.06 -1.253 -0.13871500
63.54 64.133 -0.593 -0.03051000
125.87 125.236 0.634 0.01701210000
1150.45 1147.19 3.26 0.010453100000
11395.7 11358.4 37.3 0.012051200000
22381.6 22336.2 45.399 0.00758500000
55882.2 55488 394.2 0.0263441000000
110270 109083 11870 0.040246
表 7 Beale's function 粒子數與加速比關係
粒子總數 循序(秒) 平行(秒) 加速比
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.921000
79.639 27.92 2.855000
393.07 125.341 3.1410000
782.09 237.309 3.3047
表 8 10 支桿件桁架斷面最佳化結果
斷面編號
PSO (in
2) PSO (Li[13]) (in
2)
A
1 31.50804 33.469A
2 0.152502 0.110A
3 25.29146 23.177A
4 14.25196 15.475A
5 0.11103 3.649A
6 0.326716 0.116A
7 7.062967 8.328A
8 18.94086 23.34A
9 24.01386 23.014A
10 0.108947 0.190總重(lb)
5131 5529.5048
表 9 10 支桿件最佳化執行時間與粒子總數關係
粒子總數 循序(秒) 平行(秒) 加速比
4
0.897 0.391 2.2920
4.195 1.605 2.6140
8.464 3.06 2.76100
24.328 8.415 2.89500
103.532 32.412 3.191000
207.76 63.445 3.275000
1017.89 296.806 3.4249
表 10 10 支桿件最佳化和迭代次數關係
迭代次數 循序執行(秒) 平行執行(秒) 加速比
20
2.199 1.491 1.4750
5.176 2.502 2.07100
10.601 4.477 2.37500
52.533 16.983 3.091000
103.133 32.499 3.175000
513.57 153.528 3.3510000
1017.89 296.806 3.4350000
5132.183 1498.93 3.4250
表 11 10 支桿件最佳化斷面後節點位移
節點編號
X 方向 (in) Y 方向 (in)
1
0.488 -1.752
-0.378 -1.803
0.423 -0.7414
-0.296 -0.7755
0 06
0 0註:
節點 5 和 6 為鉸支承 限制為 ±2 in
51
表 12 10 支桿件最佳化斷面後結構分析桿件應力
桿件編號 桿件應力 (ksi)
1
-7.292
0.813
8.004
7.035
-22.056
0.217
-17.828
7.159
-5.7310
-1.27註:
限制為 ±25 ksi
52
53
表 14 17 支桿件最佳化和粒子總數關係
粒子總數 循序執行(秒) 平行執行(秒) 加速比
4
0.948 0.465 2.0420
4.297 2.092 2.0540
8.78 3.94 2.23100
21.127 9.005 2.35500
106.939 35.042 3.051000
212.283 60.907 3.495000
1058.427 298.65 3.5454
表 15 17 支桁架結構最佳化斷面後節點位移
節點編號
X 方向 (in) Y 方向 (in)
1 0 0
2 0 0
3 -0.082 -0.278
4 0.089 -0.267
5 -0.173 -0.687
6 0.164 -0.637
7 -0.251 -1.217
8 0.242 -1.268
9 -0.313 -1.999
註:
節點 1 和 2 為鉸支承 限制為 ±2 in
55
56
57
表 18 26 支桁架結構最佳化和粒子總數關係
粒子總數 循序執行(秒) 平行執行(秒) 加速比
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.351000
556.545 160.861 3.465000
2832.562 779.182 3.6458
59
表 20 26 支桁架結構最佳化斷面後節點位移
節點編號
X 方向 (mm) Y 方向 (mm)
1 5.94 -50.79
2 3.65 -45.15
3 0.00 0.00
4 0.00 0.00
5 -3.65 -45.15
6 -5.94 -50.79
7 7.98 -50.17
8 -1.29 -24.72
9 1.78 -24.33
10 0.00 -11.72
11 -1.78 -24.33
12 1.29 -24.72
13 -7.98 -50.17
14 10.47 -14.27
15 -10.47 -14.27
60
表 21 26 支桁架結構最佳化斷面結果
斷面編號 斷面面積 (𝒎𝒎𝟐
)
𝑨𝟏 2810
𝑨𝟐 3057
𝑨𝟑 400
𝑨𝟒 481
𝑨𝟓 3521
𝑨𝟔 478
𝑨𝟕 3754
𝑨𝟖 3754
𝑨𝟗 478
𝑨𝟏𝟎 3521
𝑨𝟏𝟏 481
𝑨𝟏𝟐 400
𝑨𝟏𝟑 2810
𝑨𝟏𝟒 3057
𝑨𝟏𝟓 2913
𝑨𝟏𝟔 3957
61
𝑨𝟏𝟕 547
𝑨𝟏𝟖 3496
𝑨𝟏𝟗 504
𝑨𝟐𝟎 3033
𝑨𝟐𝟏 3496
𝑨𝟐𝟐 3033
𝑨𝟐𝟑 504
𝑨𝟐𝟒 3957
𝑨𝟐𝟓 2913
𝑨𝟐𝟔 547
總重 (KN)
24.262
附圖
待解問題
tN ‧‧‧ t2 t1 t0
處理器
指令集
圖 1 傳統連續處理
待解問題
tN ‧‧‧ t2 t1 t0
處理器
處理器
處理器
指令集
圖 2 平行處理
63
圖 3 平行層次圖[18]
圖 4 OpenMP 發展流程圖
叢集或分散式平行(Cluster/Distributed Parallel)
多處理器平行(Multi-Processor Parallel) 多核心平行(Multi-Core
Parallel) 單核心指令平行 (Instruction Level
Parallelism)
Fortran 1.0
•1997
C/C++ 1.0
•1998
OpenMP 2.5
•2005
OpenMP 3.0
•2008
OpenMP 3.1
•2011
64
圖 5 Fork/Join Model
Parallel region Fork
A
B
C
D
Master thread Join
Threads
圖 6 粒子群最佳化粒子速度和位置更新示意圖
65
開始
設定粒子群最佳化參數、目標函數、搜尋 範圍、和停止條件
初始化族群,隨機產生粒子初始位置𝑋𝑖,𝑗0 和初始速度𝑉𝑖,𝑗0,並將每 個初始位置存至個別粒子最佳位置𝑃𝑖,𝑗0
將初始位置代入目標函數計算目標函數值,並且將最佳位 置存入𝑃𝑔,𝑗0
是否滿足停止條件
計算目標函數值,並更新𝑃𝑔,𝑗k+1和𝑃𝑖,𝑗k+1
結束
否
是
利用(式 1)和(式 2)更新下一代粒子的 速度𝑉𝑖,𝑗k+1和位置𝑋𝑖,𝑗k+1
圖 7 粒子群最佳化流程圖
66
圖 8 簡易 OpenMP 程式
圖 9 簡易 OpenMP 程式執行結果
67
圖 10 簡易 OpenMP 程式示意圖
68
圖 11 矩陣乘法
圖 12 矩陣乘法使用 OpenMP
69
圖 13 競爭危害範例
圖 14 競爭危害輸出結果
70
圖 15 解決競爭危害
71
30: while(counter>limit) 31: 得最佳解:𝑃𝑔,𝑗𝑘
圖 16 粒子群最佳化虛擬碼
72
說明:
Q1 − Q4:局部座標中的內力 𝑢1 − 𝑢4:局被座標中的變形 F1 − F4:整體座標中的內力 𝑣1 − 𝑣4:整體座標中的變形
F1, 𝑣1
θ
Q3, 𝑢3
Q1, 𝑢1
Q2, u2
Q3, 𝑢3 F4, 𝑣4
F3, 𝑣3
圖 17 二維桁架桿件局部座標和整體座標 F2, 𝑣2
73
0 200 400 600 800 1000 1200 1400 1600 1800
加速比
74
圖 20 多執行緒同時存取同一個記憶體位置
A B C D E F G H
Thread 0
Thread 1
Thread 2
Thread 3
Data
75
PSO
1: for (i=0; i<Total_of_particle; i++) 2: for (j=0; j<dimension; j++)
3: initialize:𝑋𝑖,𝑗0 、𝑉𝑖,𝑗0、𝑃𝑖,𝑗0
4: calculate fitness function 5: end for
6: end for
7: for (i=0; i<Total_of_particle; i++) 8: if( 𝑓(𝑃𝑔0)>𝑓(𝑋𝑖0) )
17: for (i=0; i<Total_of_particle/4; i++) 18: (Kernel code)
19: end for
20: }
21: # pragma omp section
22: {
23: for (i= Total_of_particle /4; i<2*
Total_of_particle /4; i++) 24: (Kernel code)
25: end for
26: }
27: # pragma omp section
28: {
29: for (i=2* Total_of_particle /4; i<3*
Total_of_particle /4; i++) 30: (Kernel code)
31: end for
76
32: }
33: # pragma omp section
34: {
35: for (i=3* Total_of_particle /4; i<4*
Total_of_particle /4; i++) 36: (Kernel code)
44: while(counter>limit) 45: solution:𝑃𝑔,𝑗𝑘
77
圖 23 30 個變數的最小平方和粒子總數與加速比關係
3.73
0 0.5 1 1.5 2 2.5 3 3.5 4
0 1 2 3 4 5 6 7
加速比
log(粒子總數) 加速比與粒子數關係
78
圖 24 4.2.1 節最佳化收斂情形
圖 25 Beale’s function 繪製圖形
0.00 5000.00 10000.00 15000.00 20000.00 25000.00 30000.00
0 194 388 582 776 970 1164 1358 1552 1746 1940 2134 2328 2522 2716 2910 3104 3298 3492 3686 3880 4074 4268 4462 4656 4850 5044 5238 5432 5626 5820 6014 6208
目標函數值
迭代次數
79
0 77 154 231 308 385 462 539 616 693 770 847 924 1001 1078 1155 1232 1309 1386 1463 1540 1617 1694 1771 1848 1925
目標函數值
迭代次數
80
圖 28 10 支桿件桁架結構
81
圖 29 10 支桁架加速比與粒子總數關係
3.43
0 0.5 1 1.5 2 2.5 3 3.5 4
0 1 2 3 4
加速比
log(粒子總數) 加速比與粒子數關係
82
圖 30 10 支桿件桁架結構最佳化收斂過程
圖 31 17 支桁架結構
0.000 1000.000 2000.000 3000.000 4000.000 5000.000 6000.000 7000.000 8000.000
0 40 80 120 160 200 240 280 320 360 400 440 480 520 560 600 640 680 720 760 800 840 880 920 960
總重(lb)
迭代次數
83
0 157 314 471 628 785 942 1099 1256 1413 1570 1727 1884 2041 2198 2355 2512 2669 2826 2983 3140 3297 3454 3611 3768 3925 4082 4239 4396 4553 4710 4867
總重(lb)
迭代次數
84
圖 34 26 支桁架結構
圖 35 26 支桁架結構粒子總數與加速比關係
3.64
0 0.5 1 1.5 2 2.5 3 3.5 4
0 1 2 3 4
加速比
log(粒子總數) 粒子總數與加速比關係
85
圖 36 26 支桁架結構收斂情形
0 10 20 30 40 50 60 70 80
0 152 304 456 608 760 912 1064 1216 1368 1520 1672 1824 1976 2128 2280 2432 2584 2736 2888 3040 3192 3344 3496 3648 3800 3952 4104 4256 4408 4560 4712 4864
總重(KN)
迭代次數
最佳化收斂情形