• 沒有找到結果。

第五章 結論與建議

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.0

50

0.056 0.037 1.513514 0.0

100

0.462 0.16 2.817073 0.0

200

3.711 1.169 3.174508 0.0

400

35 10.783 3.24585 0.0

800

396.67 115.92 3.421929 0.0

1600

4669.6 1216.67 3.838017 0.0

43

表 4 30 個變數的最小平方和最佳化執行時間與加速比

粒子總數 循序(秒) 平行(秒) 加速比

4

1.923 1.163 1.653482

20

8.647 3.329 2.597477

60

25.535 8.358 3.055157

120

51.466 15.459 3.329193

240

102.49 29.807 3.438454

500

209.616 63.54 3.298961

1000

422.97 125.87 3.360372

10000

4231.897 1150.45 3.678471

100000

41819.5 11395.7 3.669761

200000

83466.2 22381.6 3.729233

500000

207222 55882.2 3.708193

44

45

表 6 修改平行程式後測試

粒子總數 修改前(秒) 修改後(秒) 相差(秒) 加速比差異

4

1.163 1.495 -0.332 -0.36719

20

3.329 3.44 -0.11 -0.08016

60

8.358 8.97 -0.612 -0.20845

120

15.459 15.712 -0.253 -0.05361

240

29.807 31.06 -1.253 -0.13871

500

63.54 64.133 -0.593 -0.0305

1000

125.87 125.236 0.634 0.017012

10000

1150.45 1147.19 3.26 0.010453

100000

11395.7 11358.4 37.3 0.012051

200000

22381.6 22336.2 45.399 0.00758

500000

55882.2 55488 394.2 0.026344

1000000

110270 109083 11870 0.0402

46

表 7 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

47

表 8 10 支桿件桁架斷面最佳化結果

斷面編號

PSO (in

2

) PSO (Li[13]) (in

2

)

A

1 31.50804 33.469

A

2 0.152502 0.110

A

3 25.29146 23.177

A

4 14.25196 15.475

A

5 0.11103 3.649

A

6 0.326716 0.116

A

7 7.062967 8.328

A

8 18.94086 23.34

A

9 24.01386 23.014

A

10 0.108947 0.190

總重(lb)

5131 5529.50

48

表 9 10 支桿件最佳化執行時間與粒子總數關係

粒子總數 循序(秒) 平行(秒) 加速比

4

0.897 0.391 2.29

20

4.195 1.605 2.61

40

8.464 3.06 2.76

100

24.328 8.415 2.89

500

103.532 32.412 3.19

1000

207.76 63.445 3.27

5000

1017.89 296.806 3.42

49

表 10 10 支桿件最佳化和迭代次數關係

迭代次數 循序執行(秒) 平行執行(秒) 加速比

20

2.199 1.491 1.47

50

5.176 2.502 2.07

100

10.601 4.477 2.37

500

52.533 16.983 3.09

1000

103.133 32.499 3.17

5000

513.57 153.528 3.35

10000

1017.89 296.806 3.43

50000

5132.183 1498.93 3.42

50

表 11 10 支桿件最佳化斷面後節點位移

節點編號

X 方向 (in) Y 方向 (in)

1

0.488 -1.75

2

-0.378 -1.80

3

0.423 -0.741

4

-0.296 -0.775

5

0 0

6

0 0

註:

節點 5 和 6 為鉸支承 限制為 ±2 in

51

表 12 10 支桿件最佳化斷面後結構分析桿件應力

桿件編號 桿件應力 (ksi)

1

-7.29

2

0.81

3

8.00

4

7.03

5

-22.05

6

0.21

7

-17.82

8

7.15

9

-5.73

10

-1.27

註:

限制為 ±25 ksi

52

53

表 14 17 支桿件最佳化和粒子總數關係

粒子總數 循序執行(秒) 平行執行(秒) 加速比

4

0.948 0.465 2.04

20

4.297 2.092 2.05

40

8.78 3.94 2.23

100

21.127 9.005 2.35

500

106.939 35.042 3.05

1000

212.283 60.907 3.49

5000

1058.427 298.65 3.54

54

表 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.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

58

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.2

62

附圖

待解問題

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)

迭代次數

最佳化收斂情形

相關文件