• 沒有找到結果。

第一章 緒論

1.1 背景與動機

隨著電腦的中央處理器(CPU),時脈(Hz)上升速度逐漸趨緩,然而核 心(core)已經從單核心變成多核心,甚至手機的處理器也是多核心。 在一 般在撰寫程式都以單核心做運算。如圖 1 所示,而其他核心則處於閒置 (idle)狀態,因此盡可能地將程式平行化才能將硬體有效利用,如圖 2 所 示。

平行電腦架構一般分為分享記憶體(Shared Memory Multiprocessor)、

分散記憶體(Distributed Memory Multicomputer)、和混合式(Hybrid Distributed-Shared Memory)。本研究以分享記憶體(Shared Memory Multiprocessor)為主,利用應用程式『OpenMP』開發平行程式[1]。

撰寫平行程式時必須先考量程式中哪些程序可以平行,例如矩陣相乘 因為在相乘時每個元素均是獨立的個體並不會互相影響。若沒有處理平行 程式容易造成競爭危害(race condition)或鎖死(dead locked)等情形可能造成 效能不佳,甚至造成資料錯誤。

2

平行程式最大的優點可以縮短計算時間解決問題或解決更大的問題

因此本研究以計算量大的最佳化(Optimization)為主,而最佳化是指在許多 限制與條件中,尋找最佳答案的過程,而最佳答案代表最好的妥協。而平 行化則可得到更好的“最好的妥協”,例如時間條件或答案限制。最佳化 在早期多以梯度做為搜尋方向,當求解極值問題有很好的效率。因此當初 始點位在全域最佳解梯度附近維持一致處可以快速搜尋到全域最佳值。反 之若位在區域最佳解附近梯度維持一致處則會掉入區域最佳解[2]。因此許 多學者為了改善傳統梯度法容易掉入區域最佳解缺點而開發出不需要利用 梯度的最佳化演算法,即非傳統最佳化演算法。其中包含:粒子群最佳化 (Particle Swarm Optimization) [7]、蟻群演算法(Ant Colony Optimization) [15]、模擬退火演算法(Simulated Annealing) [20]、調和搜尋演算法

(Harmony Search) [16]、和禁制搜尋法(Tabu Search)[21],上述方法都改善 了傳統梯度搜尋法的缺點擁有更好的全域搜尋能力。

桁架結構是在土木工程常見的結構系統之一,桁架在理論中只以軸力 傳遞,因此在做結構分析時只需考慮軸力即可。在做結構分析時,桁架結 構較其他結構系統簡單。桁架最佳化一般分為三種,最佳桿件斷面尺寸設 計(Size optimization)、最佳結構配置(Configuration optimization)、和最佳拓

3

樸設計(Topology optimization)。最佳桿件斷面尺寸設計最為普遍使用[3]。

1.2 研究目的

平行程式最大的優點可以縮短計算時間解決問題或解決更大的問題。

由於粒子群最佳化在搜尋最佳解以全域搜尋需要大量的迭代次數和大量的 粒子數增加其搜尋能力,因此粒子群最佳化耗費大量的計算資源。

本研究目的希望利用現今平行運算技術(OpenMP)及硬體架構發展一套 有效的演算法。粒子群最佳化中粒子分別獨立之特性將此最佳化程式中計 算粒子適應性函數時平行化減少計算時間。最佳化測試案例分別有:

 minF(x0, x1, …, x29, x30)= x02+x12+…x292+x302

 桁架斷面最佳化

1.3 研究流程

本研究使用 OpenMP 平行處理粒子群最佳化桿件斷面尺寸設計 流程一共分為以下步驟:

4

第一步驟:

蒐集粒子群最佳化相關文獻並且了解粒子群最佳化理論和搜尋最佳化 方法。蒐集 OpenMP 相關教學自我學習。了解多執行緒運作方式和如 何使用共享記憶體。

第二步驟:

參考網路教學文章編寫平行程式矩陣乘法,並且計算運算時間得到程 式加速比。

第三步驟:

參考文獻[7]編寫粒子群最佳化程式。利用簡單數學最佳化方程式驗證 演算法是否正確。

第四步驟:

編寫結構分析程式。桁架結構桿件應力和節點位移作為設計依據。

第五步驟:

將第三步驟和第四步驟兩程式結合。第四步驟為目標函數並且當不符 合設計限制時增加懲罰函數,分析結束後回傳桁架結構總重。

第六步驟:

將 OpenMP 指令加入第五步驟程式中,並且增加計算所需資料副本,

確保多執行緒可以同時運算。

5

第七步驟:

改變粒子總數、迭代次數、和不同目標函數分別計算程式加速比。

第八步驟:

平行粒子群最佳化程式開發完成,並提出建議與未來展望。

1.4 研究架構

本研究論文共分五個章節:

第一章緒論:說明研究背景、動機、目的、和研究流程。

第二章文獻回顧:首先介紹多核心架構和歷史,架構所對應的編譯語

相關文件