• 沒有找到結果。

使用GPU於演化式影像雜訊濾波器設計之平行化計算

N/A
N/A
Protected

Academic year: 2021

Share "使用GPU於演化式影像雜訊濾波器設計之平行化計算"

Copied!
90
0
0

加載中.... (立即查看全文)

全文

(1)國立高雄大學電機工程學系 計算機組 碩士論文. 使用 GPU 於演化式影像雜訊濾波器設計之 平行化計算 The Parallelism of Design of Image Filters for Evolvable Hardware Using GPU. 研究生 : 江錦源 撰 指導教授 : 吳志宏. 中華民國一百零二年七月.

(2) 使用 GPU 於演化式影像雜訊濾波器設計之 平行化計算 指導教授 : 吳志宏 博士 學生 : 江錦源 國立高雄大學電機工程學系. 摘要 演化式硬體影像濾波器是一種以演化計算為基礎 , 用來設計可實現在硬體上的影像 過濾方法 , 對不同雜訊具有適應性與強韌性的優點 。 然而 , 因為設計演化式硬體影像濾 波器的求解空間非常龐大 , 以軟體形式進行外部式演化的設計過程非常耗時 , 也使得有 限時間下所求得的過濾器設計效果受到限制 。 本論文以圖形顯示處理器為平台 , 設計平 行運算演算法來加速 演化式硬體影像濾波器進行外部式演化的過程 , 以降低設計時間 , 並可以在相對時間內求得更多過濾器設計的解 。 本論文考慮圖形顯示處理器中的有限的 記憶體空間與執行緒數量 的限制 , 將演化式硬體影像濾波器設計所使用的 CGP (Cartesian genetic programming, CGP) 演算法 , 將大量資料與運算工作切割成可以獨立並平. 行運算的子工作 , 並設計調整圖形顯示處理器處理執行緒的運算效能 , 將 CGP 的運算 速度加以提升 。 實驗結果顯示此方法的可以大幅提升演化式硬體影像濾波器的計算效率 至原來的 240 倍 。 同時 , 因為此方法可以在有限時間內執行更多世代的演化 , 可以獲得比 以前更多影像濾波器的解 。 關鍵字 : 平行化 、 圖形處理器 、 演化式計算 、 演化式硬體 、 直角坐標系基因規劃 、 影像 濾波器 。. i.

(3) The Parallelism of Design of Image Filters for Evolvable Hardware Using GPU Advisor: Dr. WU, CHIH-HUNG Student: CHIANG, CHIN-YUAN Department of Electrical Engineering, National University of Kaohsiung. ABSTRACT Evolvable Hardware (EHW) is a combination of evolutionary algorithm and reconfigurable hardware devices. Due to its flexible and adaptive ability, EHW-based solutions receive a lot of attention in industrial applications. One of the obstacles to realize an EHW-based method is its very long training time. This study deals with the parallelism of EHW-based design of image filters using graphic processing units (GPUs). The design process is analyzed and decomposed into some smaller processes that can run in parallel. Pixel-based data for training and verifying EHW solutions are partitioned according to the architecture of GPU. Several strategies for deploying parallel processes are developed and implemented. With the proposed method, significant improvements on the efficiency of training EHW models are gained. Using a GPU with 240 cores, a speedup of 240 times is obtained. This paper evaluates more generations to get more solutions. Keywords: parallelism, graphics processing units (GPU), evolutionary design, evolvable hardware, Cartesian genetic programming, image filter.. ii.

(4) 目錄 摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. i. ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ii. 目錄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. iii. 圖目錄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. v. 表目錄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vii. 緒論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 1. 2. 1.1. 研究背景與動機. .......................................... 1. 1.2. 研究目的與方法. .......................................... 5. 1.3. 研究流程與架構. .......................................... 7. 文獻探討 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2.1. 可重組式硬體. 2.2. 直角座標式基因規劃. 2.3. 3. 4. 9. ........................................... 9. ........................................ 10. 2.2.1. 直角座標式基因規劃的基因編碼. .............................. 11. 2.2.2. 直角座標式基因規劃的演化機制. .............................. 12. 2.2.3. 直角座標式基因規劃的演化流程. .............................. 16. ............................................ 18. 圖形處理器. 2.3.1. 硬體基本架構. ...................................... 18. 2.3.2. 軟體執行方式. ...................................... 20. 2.4 CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 21. 2.4.1. CUDA. 程式架構. .................................. 22. 2.4.2. CUDA. 執行模式. .................................. 24. 問題定義與分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3.1. 影像過濾方式. 3.2. 演化式硬體影像濾波器設計與其搜尋空間分析. 研究方法與設計. 4.1. 4.2. 29. ........................................... 29. ............................. 30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 平行化策略與分析. 35. ......................................... 35. 4.1.1. 任務切割. ........................................ 35. 4.1.2. 資料切割. ........................................ 37. 4.1.3. 演化式硬體影像濾波器平行化架構. ............................. 37. ......................................... 39. 圖形處理器的限制. iii.

(5) 4.3. 5. 6. 4.2.1. 計算效率限制. 4.2.2. 記憶體間傳輸時間與記憶體空間限制. 實做方法. ...................................... 40. ............................ 41. ............................................. 42. ................................... 42. .................................... 44. ....................................... 45. 4.3.1. 問題所需記憶體空間. 4.3.2. 最佳運算效率設計. 4.3.3. 實作流程圖. 實驗與結果分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5.1. 實驗環境與架構. 5.2. 實驗. A-. 5.3. 實驗. B - GPU. 參數對執行效率的結果與分析. 5.4. 實驗. C - CPU. 與. 5.5. 實驗. D - EHW. 5.6. 實驗. E-. 5.7. 實驗結論. 結論與未來展望. 6.1. 結論. 6.2. 未來展望. 47. .......................................... 47. ............................. 48. ........................... 49. .......................... 55. ........................... 61. ...................................... 62. ............................................. 73. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 75. 演化式硬體濾波器執行時間與分析. GPU. 的實驗結果與分析. 參數對濾波器的結果與分析. 增加演化代數. ............................................... 75. ............................................. 76. 參考文獻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. iv. 77.

(6) 圖目錄 1.1. 演化式硬體的處理流程[2]. 1.2. 研究進行流程圖. 2.1. 可重組式邏輯區塊. 2.2 FPGA. ..................................... 3. .......................................... 8. ......................................... 10. ........................................ 10. ..................................... 12. CGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. 基本架構. 2.3. 直角座標式基因規劃示意圖. 2.4. 影像雜訊結合. 2.5. 交配與突變示意圖. ......................................... 15. 2.6. 演化式計算流程圖. ......................................... 17. 2.7. 演化式硬體示意圖. ......................................... 18. ........................................... 19. ......................................... 22. 2.10 SIMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 23. 2.11 SIMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 23. 2.12. ........................................... 24. .................................. 26. 2.8 GPU. 架構. 2.9 CUDA. 架構. 程式流程範例. 2.13 Thread. 在硬體上執行的方式. 2.14 Warp. 間的文本切換. ...................................... 26. 2.15 Block. 間的文本切換. ...................................... 27. 3.1. 影像過濾方法示意圖. ........................................ 30. 3.2. 影像過濾方法示意圖. ........................................ 31. 4.1. 演化式硬體影像濾波器過濾簡圖. ................................... 35. 4.2. 任務切割. ............................................. 36. 4.3. 資料切割. ............................................. 38. 4.4. 演化式硬體影像濾波器平行化架構. .................................. 38. 4.5. 遮罩取值重複的部分. ........................................ 43. 4.6. 影像擴展. ............................................. 44. 4.7. 一個. 4.8. 演化式硬體影像濾波器平行化計算流程. 5.1 5.2. thread. ............................. 44. ................................ 46. 雜訊影像. ............................................. 48. 測試影像. ............................................. 48. 占用共享記憶體所需的空間. v.

(7) 5.3. 一般執行下演化式硬體濾波器各步驟執行時間. ............................. 49. 5.4. 計算時間. (秒) (遮罩大小為. 3 × 3). ................................ 52. 5.5. 計算時間. (秒) (遮罩大小為. 5 × 5). ................................ 54. 5.6. 椒鹽雜訊-Cameraman-過濾結果. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . .. 56. 5.7. 椒鹽雜訊-Cameraman-各種影像雜訊過濾結果. 5.8. 椒鹽雜訊-Goldhill-過濾結果. 5.9. 椒鹽雜訊-Goldhill-各種影像雜訊過濾結果. 5.10. 椒鹽雜訊-Lena-過濾結果. 5.11. 椒鹽雜訊-Lena-各種影像雜訊過濾結果. 5.12. 脈衝雜訊-Cameraman-過濾結果. 5.13. 脈衝雜訊-Cameraman-各種影像雜訊過濾結果. 5.14. 脈衝雜訊-Goldhill-過濾結果. 5.15. 脈衝雜訊-Goldhill-各種影像雜訊過濾結果. 5.16. 脈衝雜訊-Lena-過濾結果. 5.17. 脈衝雜訊-Lena-各種影像雜訊過濾結果. 5.18. 椒鹽雜訊-Cameraman-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.19. 椒鹽雜訊-Goldhill-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.20. 椒鹽雜訊-Lena-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.21. 椒鹽雜訊-Cameraman-遮罩大小 5 × 5下各種影像雜訊過濾結果. 5.22. 椒鹽雜訊-Goldhill-遮罩大小 5 × 5下各種影像雜訊過濾結果. 5.23. 椒鹽雜訊-Lena-遮罩大小 5 × 5下各種影像雜訊過濾結果. 5.24. 脈衝雜訊-Cameraman-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.25. 脈衝雜訊-Goldhill-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.26. 脈衝雜訊-Lena-遮罩大小 3 × 3下各種影像雜訊過濾結果. 5.27. 脈衝雜訊-Cameraman-遮罩大小 5 × 5下各種影像雜訊過濾結果. 5.28. 脈衝雜訊-Goldhill-遮罩大小 5 × 5下各種影像雜訊過濾結果. 5.29. 脈衝雜訊-Lena-遮罩大小 5 × 5下各種影像雜訊過濾結果. (影像圖) . . . . . . . . . . . . . . . . . . . .. 57. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 57. (影像圖) . . . . . . . . . . . . . . . . . . . . . . .. 58. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 58. (影像圖) . . . . . . . . . . . . . . . . . . . . . . . . .. 59. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . .. 59. (影像圖) . . . . . . . . . . . . . . . . . . . .. 59. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . . . . .. 60. (影像圖) . . . . . . . . . . . . . . . . . . . . . . .. 60. (PSNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 60. (影像圖) . . . . . . . . . . . . . . . . . . . . . . . . .. vi. 61. (影像圖) . . . . . . . . . . . .. 69. (影像圖) . . . . . . . . . . . . . . .. 69. (影像圖) . . . . . . . . . . . . . . . . .. 70. (影像圖) . . . . . . . . . . . .. 70. (影像圖) . . . . . . . . . . . . . . .. 71. (影像圖) . . . . . . . . . . . . . . . . .. 71. (影像圖) . . . . . . . . . . . .. 72. (影像圖) . . . . . . . . . . . . . . .. 72. (影像圖) . . . . . . . . . . . . . . . . .. 72. (影像圖) . . . . . . . . . . . .. 72. (影像圖) . . . . . . . . . . . . . . .. 73. (影像圖) . . . . . . . . . . . . . . . . .. 73.

(8) 表目錄 2.1. 功能模組表. 3.1 CGP. ............................................ 13. ........................................ 32. 濾波器參數. 4.1 GPU Tesla C1060 5.1. 實驗. B - CGP. ................................. 39. .................................... 50. 參數表. 參數表 .. 5.2 GPU. 參數分析. (遮罩大小為. 3 × 3). ............................... 52. 5.3 GPU. 參數分析. (遮罩大小為. 5 × 5). ............................... 53. 5.4. 實驗. C - CGP. 參數表. .................................... 56. 5.5. 實驗. D - CGP. 參數表. .................................... 62. 5.6. 各種胡椒鹽雜訊比例下遮罩大小為 3 × 3 的過濾結果. (PSNR 值) . . . . . . . . . . . . . . . . .. 63. 5.7. 各種胡椒鹽雜訊比例下遮罩大小為 5 × 5 的過濾結果. (PSNR 值) . . . . . . . . . . . . . . . . .. 64. 5.8. 各種脈衝雜訊比例下遮罩大小為 3 × 3 的過濾結果. (PSNR 值) . . . . . . . . . . . . . . . . . .. 65. 5.9. 各種脈衝雜訊比例下遮罩大小為 5 × 5 的過濾結果. (PSNR 值) . . . . . . . . . . . . . . . . . .. 66. 5.10. 實驗. ..................................... 67. 5.11. 實驗結果. ............................................. 68. E - CGP. 參數表. vii.

(9) 第1章 緒論 1.1. 研究背景與動機 演化式硬體 (evolvable hardware, EHW) [1, 2, 3] 是演化式演算法 (evolution-. ary algorithm, EA)[4]和可重組式硬體 (reconfigurable hardware)[5]結合的應用 。 演. 化式演算法仿效生物界中 「物競天擇 、 優勝劣敗」[6]的自然進化法則 , 把個體視為一個解 答 , 個體的演化代表著解答的改變 , 每一代的演化都歷經挑選 、 交配 、 突變 、 淘汰等過 程 , 當族群中誕生出最好的個體時 , 也就代表著最佳解的產生 。 可重組式硬體保有出廠 後可改變硬體線路的優點 , 具備重複規劃 、 燒錄及配置硬體架構的能力 。 常見的平台如 FPGA (field programmable gate array)[7]或 CPLD (complex programmable logic device)[8] , 擁有數個連接單元 , 讓邏輯區塊彼此之間擁有彈性的連結 , 使整體結構擁有. 更靈活的編輯性 。 因此 , 演化式硬體[9, 10]賦予硬體使用演化機制來重覆規劃自己的架 構 , 再以燒錄的方式改變硬體線路 , 以因應工作需求的改變或是工作環境的變化 。 近年來 , 有學者將演化式硬體的概念應用在影像濾波器上[11] , 以演化式計算取得最 佳影像濾波器設計 。 演化式硬體的概念請參考圖1.1 , 其實現方式可分為兩種[12] : • 內在演化 (intrinsic)[13, 14] : 直接於可重組式硬體內 , 透過演化機制改變本體結. 構 , 再燒錄至硬體以完成優劣評估 , 使用平行化或者管線化 (pipeline) 的方式加速 硬體運算以快速取得最佳解 。. 1.

(10) • 外在演化 (extrinsic)[15] : 使用軟體模擬演化式硬體 , 再將得到的最佳解實現至硬. 體上 。 內在演化的實現如學者 Zden˘ek等人[16]以 FPGA 為平台 , 設計內在演化的演化式硬體影 像濾波器 , 實現對受到脈衝雜訊污染影像的濾波器 。 然而演化式計算往往需要經過數百 次甚至數千次的演化 , 才能夠得到一個不錯的硬體線路設計 。 但數百次甚至數千次的演 化也代表著同等的評估次數與電路燒錄次數 , 對硬體的負擔與損耗都非常的高 , 因此一 般都以外在演化的方式實現演化式計算 。 外在演化的實現如學者 Zden˘ek等人[17, 18]針 對受到脈衝雜訊污染的影像 , 以外在演化的概念設計出演化式硬體影像濾波器 。 此優點 可以減少硬體的負擔與損耗 , 但缺點是無法使用硬體的優點 , 只能透過逐步執行的方式 完成計算 。 在需要經過數百次甚至數千次的演化及評估的運算量下 , 最佳解的取得將耗 費比硬體執行更多的時間花費 。 如文獻[19]使用 Intel Xeon 系列運算處理器 , 將演化式 硬體的概念應用在影像濾波器上 , 需要耗費 16 小時才能取得最佳解 。 改善的方法如此文 獻[16]使用 100 台個人電腦 , 以分散式處理的方式將軟體模擬所需要的時間壓縮在 6 小 時 。 即使如此 , 時間耗費也是相當的多 。 雖然演化式計算可能可以取代人為設計[20] , 但 在如此高的時間花費下 , 如果還想嘗試其他種設計組合將窒礙難行 。 為了減少軟體模擬所需要的運算時間 , 最常見的方式為提升演化式計算搜尋到最佳 解的能力 , 又或者使用大量的處理器以平行化計算減少時間花費 , 方法介紹如下 : • 提升演化式計算搜尋到最佳解的能力如 : – 重置策略 : 當族群演化的過程趨於穩定時使用 , 以便增加得到更好解的機會 。. 2.

(11) Chromosomes. Evolutionary Algorithm. 10110011010 01110101101. Genetic search on a population of Chromosomes 1. Select the best designs from a population 2. Reproduce them with some variation 3. Iterate until the performance goal is reached. Conversion to a circuit description. Extrinsic evolution. Control bitstrings Simulator (e.g., SPICE). Circuit Responses Target response. Intrinsic evolution. Response evaluation & fitness assessment. Reconfigurable Hardware. 圖 1.1: 演化式硬體的處理流程[2] – 正交交配 : 在交配時 , 將某幾條染色體的全部基因以正交運算 (orthogonal). 的方式得到新的染色體 , 由於正交產生的染色體與原染色體完全不同 , 因此可 以搜尋到不同區域的解 , 藉此提升搜尋廣度以得到更好的解 。 – 區域搜尋 : 以一個個體為中心 , 每次演化時只搜尋與自己相近的解 , 並從中找. 出最佳解 。 若族群的個體很多 , 則每次演化中 , 每個個體都只搜尋與自己相近 的解 , 可提升搜尋範圍的深度 , 並且降低搜尋到相同解的機率 , 可在相同的搜 尋時間下更有機會得到最佳解 。 • 使用大量的處理器實作平行化計算如 : – OpenMP[21, 22] : 對目前的中央處理器 (Central Processing Unit, CPU). 而言 , CPU內已有多個核心以分工完成各種運算任務 , 因此可使用 OpenMP 內的 API , 讓程式可以使用 CPU 內全部核心工作以減少運算時間 。 但一般 的 CPU 核心數不會太多 , 因此雖有一定的加速效果 , 但可減少的運算時間有 限[23] 。 3.

(12) – MPI (Message Passing Interface)[24] : 在 CPU 核心數不多的情況下 , 增加. 運算機器數量也是一種可行的方法 。 MPI為一種資訊交換的技術 , 可讓不同 的運算機器互相溝通 , 因此可用來分配任務 。 實作上 , 先將運算資料透過 MPI 的溝通下傳遞給各個運算機器 , 待各自完成計算後 , 再以 MPI 的溝通回傳運 算結果 。 不過 , 當運算資料不夠巨量時 , 時間將耗費在資料溝通上 。 而當資 料量夠多時 , 所需要的運算機器也越多 , 並保證資料在傳輸時不會失敗 , 才能 發揮其優勢 , 實行不易 。 – OpenMP搭配 MPI[25, 26] : 以 OpenMP 搭配 MPI 來實作平行計算也是. 一種常見的方法 。 以多核心運算單元搭配多台運算機器 , 以提升平行化計算 的效能 。 雖然上述的方法都可以縮短得到最佳解的時間 , 不過 , 加速搜尋最佳解的方法還是有一 定的機率無法縮短得到最佳解的時間 。 而在增加運算核心數量以加快運算的方法下 , 雖 然有一定的加速效果 , 但在運算核心數量最多不會超過百個以上的情況下 , 加速效果有 限。 近年來 , 由於圖形處理器 (graphics processing units, GPU)[27, 28]的製程技術提 升 , 使得圖形處理器內的核心數量越來越多 , 從圖形處理器型號 9600 GSO 的 96 顆核 心到型號 Tesla C1060[29]的240 顆核心 。 每個圖形處理器內的核心有別於中央處理器 , 只包含簡單的計算函式 , 並使用獨特的指令 SIMD (single instruction multiple data) 達成平行化計算 , 以處理器的數量提升整體運算效能藉此減少時間花費 , 因此有越來越 多的平行化計算是以 GPU 來實現[30, 31] 。 圖形處理器的優點為 :. 4.

(13) • 擁有大量的計算核心 • 比起為了大量的計算核心而使用多台運算機器下相對容易取得 • 計算資料以主機板內部傳輸可降低傳輸失敗的風險. 以圖形處理器實做平行化計算如此文獻[32] , 文中分析出在平行化計算中各參數對效 能的影響 , 並以處理影像的方法如JPEG200 編碼 、 多視點立體匹配 (multi-view stereo matching) 等為例 。 另有學者也以圖形處理器為主要平台 , 設計出平行化同態濾波器[33] 、. 平行化高斯影像濾波器[34]以及平行化模糊分群濾波器[35] 。 以圖形處理器實現演化式計 算的文獻如[36] 。 本研究以圖形處理器實做演化式硬體影像雜訊濾波器 , 研究的動機為 : • 解決演化式計算為了在龐大的搜尋空間中得到最佳解而花費大量時間的問題 • 減少計算時間以嘗試更多其他演化參數組合並藉此找到更好的最佳解. 1.2. 研究目的與方法. 由於找出演化式硬體影像雜訊濾波器的最佳解所花費的時間過多 , 因此本研究的研 究目的為在最少的運算時間下達成 : • 以演化式計算取得最佳硬體影像雜訊濾波器設計 • 讓設計者可以更容易地嘗試其他種演化參數組合 • 增加演化代數以取得更適合的硬體影像雜訊濾波器設計. 5.

(14) 為了達成上述目的 , 本研究以圖形處理器為平台 , 設計出能在該平台上運作的演化 式硬體影像雜訊濾波器 。 因而分析演化式硬體影像雜訊濾波器的架構及圖形處理器的運 作特性 , 以發揮圖形處理器對此問題的最佳運算效能 。 因此本研究的研究方法為 : • 以 CPU 處理演化機制 • 以 GPU 分配計算任務並以平行化的方式計算評估值. 在實作上 , 為了找出最佳解 , 產生各種組合的濾波器並進行評估是必要的 。 我們將此問 題分解為兩步驟 , 1. 產生各組濾波器 : 此步驟由 CPU 處理 。 將問題的解答 (濾波器) 以基因的方式編. 碼 , 並將一長串的基因當作一個個體的染色體 , 當問題越複雜時 , 個體所擁有的基 因數量就越多 。 為了提升演算法的搜尋效率 , 產生出大於一條染色體所擁有的基因 數量的個體是有必要的 。 2. 評估產生後的濾波器 : 由於各個個體在評估其好壞時不受其他個體影響 , 因此可以. 平行處理的方式評估全部的個體 。 此步驟由 GPU 處理 , 發揮 GPU 在硬體架構上 以多核心處理器與內部處理器的設計 , 所以評估的方法可再細分為兩個步驟 : (a) 分配待評估的濾波器 : 將評估一個濾波器的好壞當作一個任務 , 並將評估所有. 的濾波器好壞以平行化處理的方式進行 。 由於處理器的個數難與任務數量相 同 , 因此需要進行任務分配 。 (b) 評估濾波器 : 過濾時 , 待過濾的影像需要經過許多遮罩的過濾後才算完成 。 但. 是遮罩間的影像過濾計算並不會受到其他遮罩的影響 , 因此此步驟可平化計 算完成影像過濾 , 藉此得知該濾波器的好壞 。 6.

(15) 為了減少運算時間 , 以 GPU 為平台重新設計演化式硬體影像濾波器 , 使用平行計 算的方式達成目的 。 實作方法為使用 CPU 控制每代演化的過程 , 並讓 GPU 處理大量 卻相同性質工作的資料 , 讓擁有大量的 GPU 核心數量發揮平行計算的優勢 。 相較於需 要準備多台計算機器才能擁有大量 CPU 核心以完成平行計算下 , 圖形處理器在取得方 便與成本相較低廉將是很大的優勢 。. 1.3. 研究流程與架構. 本論文的研究流程主要分為研究動機 、 相關文獻蒐集與探討 、 程式撰寫 、 實驗結果 分析與結論等部分 。 研究進行流程圖請參考圖1.2 。 • 研究動機 : 包含相關的研究背景 、 問題之範圍及定義 , 本研究的動機為使用演化式. 硬體影像濾波器找出最佳解並縮短其運算時間 , 著重於如何在圖形處理器的限制中 得到對該問題而言最好的運算效能 , 及如何使用演化式演算法取代人工設計而得到 最佳解 。 • 相關文獻蒐集與探討 : 蒐集與本研究相關之技術文獻 , 包含演化式演算法 、 直角座. 標式基因規劃 、 影像濾波器設計 、 圖形處理器架構等 , 深入了解相關技術應用與優 劣性 。 • 程式撰寫 : 撰寫以圖形處理器實現演化式硬體影像濾波器設計 , 以最佳運算效能與. 影像過濾效果為主要目的 。 • 實驗結果分析與結論 : 比較不同實驗參數下的結果並分析 。. 7.

(16) ࣴ‫୏ز‬ᐒ. ࣬ᜢЎ᝘ ᇆ໣ᆶ௖૸. යтǵፕЎ Ϸਜᝤ. •ቹႽᘠ‫ݢ‬ᏔำԄ • •‫فޔ‬০኱Ԅ୷ӢೕჄำԄ •კ‫׎‬ೀ౛ᏔำԄ೛ी. ำԄኗቪ. ჴᡍ่݀ ϩ‫݋‬ᆶ่ፕ. 圖 1.2: 研究進行流程圖 本論文之架構分為五章節 , 其簡述如下 : 第一章 『緒論』 , 說明本研究背景與動機 ; 第二章 『文獻探討』 , 簡述演化式硬體如何尋找最佳解及圖形處理器的運作概念 ; 第三章 『問題定義與分析』 , 分析演化式硬體影像濾波器的結構 , 並探討時間複雜度 ; 第四章 研 究方法與設計』 , 制定平行化策略 , 探討如何在圖形處理器中有限的記憶體空間與計算效 率取得平衡 , 最後設計出該問題下所能發揮圖形處理器最大效能的實作方法 。 第五章 『實 驗與結果分析』 , 實驗分三部分 , 第一部分以運算時間為主 , 針對圖形處理器架構而設計 參數 , 並分析對運算效率的影響 ; 第二部分繼承第一部分 , 以最佳的運算效能參數實做 演化式計算 , 並設計演化式計算相關參數 , 以取得影像過濾效果 ; 第三部分同樣使用最 佳的運算效能參數實做演化式計算 , 但增加演化代數以提升得到最佳影像濾波器解的機 率 。 第六章 『結論與未來展望』 , 總結本研究遇到的問題及方法 , 並相對提出未來可以研 究及更深入的方向與構想 。. 8.

(17) 第2章 文獻探討 本章簡述研究應用之相關技術 , 可重組式硬體 、 直角座標式基因規劃 (Cartesian genetic programming, CGP) 、 圖形處理器與 CUDA (compute unified device architecture) 及相關文獻探討 。. 2.1. 可重組式硬體. 可重組式硬體[5]如 FPGA[7]或 CPLD[8] , 具有許多現成的邏輯閘組合 , 可讓設計 者快速合成出電路 , 並在電路燒錄後直接驗證 。 透過反覆的設計 、 燒錄 、 驗證與修改 , 可 重組式硬體得以讓設計者快速驗證各種電路設計以降低開發與測試成本 。 可重組式硬體 以可重組式邏輯區塊 (configurable logic block, CLB) 為基礎元件 , 提供設計者自由設 計各個 CLB 的相互連結 , 並控制 CLB 以合成電路的硬體 。 CLB 架構如圖2.1 , 主要以一個邏輯閘對兩個輸入的運算並給予結果 。 兩個輸入來. 源由多工器控制 , 分別與其他邏輯元件互相連結 。 而可使用的邏輯閘則內建於函式區塊 (function block, FB) 中 , 也以多工器控制 。 因此設計者只要改變三個多工器的輸入 , 即. 可控制整個 CLB 的運算結果 , 而三個多工器的輸入可由外部送入電器訊號控制 , 因此電 路在設計完成後依舊保有靈活的編輯性 。 FPGA 以 CLB 為主要元件 , 並以連結單元將 各個 CLB 互相連結 , 組合出完整的電路 。 FPGA 的基本架構如圖2.2所示 。. 9.

(18) 8 F0 …Fn FB. 8 8. 8. 8. Output data. 8. …. In-1. 8 8 8. …. I0 I1 I2 ……….. Input data. Configurable Logic Block (CLB). CLB1 CLB2 CLB3. 圖 2.1: 可重組式邏輯區塊. ᙅጕ೽ϩ CLB. CLB. CLB. CLB. CLB. CLB. CLB. CLB. CLB. ёำԄϯ࿯ᗺ. ၡҗҬඤᏔ. ဂ໣ᡄᒠ୔༧. 圖 2.2: FPGA 基本架構. 2.2. 直角座標式基因規劃. 演化式硬體的概念可由直角座標式基因規劃[37]實現 。 此方法由學者 Julian F. Miller 與Peter Thomson 在 2000 年提出 , 是演化式演算法的一種 。 同樣具有以演化結果改變 自身設計的能力[38] 。 但有別於一般演化式計算以一維數列編碼方式 , CGP 以二維方式 編碼如圖2.3 。 先設定計算結點的二維座標後 , 再依其座標位置加以編碼 , 如果限制電路 的描述方式為平面式 , 則整個電路結構可視為一個直角座標體系 , 因此可利用直角座標 式基因規劃進行電路編碼 。. 10.

(19) 2.2.1. 直角座標式基因規劃的基因編碼. 設計直角座標式基因規劃進行電路編碼時 , 需先決定 CGP 的欄數與列數 , 以圖 2.3為 例代表2 欄 2 列 。 在 CGP 中有階層的概念 , 每一欄代表一個階層 , 每一階層內一個節點 代表一個 CLB , 在此每一階層內的 CLB 個數為 2 。 輸入端也是一個階層 , 輸入端的輸 入也會有數筆資料 , 在此設計為只有 2 筆輸入資料 。 所以對輸出端而言共有三個階層 (輸 入層 、 第一層 、 第二層) 。 每一階層的輸入可由前一階層的輸出 , 又或者是前兩階層的輸 出等來貢獻 , 此方式稱為 level back 。 因此 , 一個 CGP 的輸出 (output) 由輸出端決 定 , 而輸出端的值從輸出端之前的階層中 , 直接取某個節點的輸出值 。 而輸出端之前的 階層的輸入再由更前面的階層而來 , 往前取值直到輸入層為止 。 藉由不斷的往前一個階 層的方式取值 , 當階層數以及每一階層內的節點數夠多時 , 電路將會變得複雜許多 。 而 且 , 當取值的方式不再受限於只往前一階層取值的方式也能增加電路複雜度 , 讓原本使 用簡單元件的電路也可以具有更複雜的數學運算 。 直角座標式基因規劃以 CLB 為結點 , 假設每個 CLB 擁有 AND, OR, NOT, XOR共 四種邏輯電路功能 , 對四種邏輯電路功能加以編號 , 例如以 0 為 AND 、 1 為 NOT 、 2 為 XOR 、 3 為 OR , 其中每個結點都有 2 個輸入 1 個輸出 。 其編碼順序由上至下 、 由左 至右 , 每三個數字表示成一個 2-by-1 的結點 。 0, 1, 0 表示位置 (0,0) 的輸入為線路 0 、 線 路 1 , 並以 AND(0)連接後輸出至線路位置 2 ; 0, 0, 2 表示位置 (0,1) 的輸入為線路 0 、 線路 0 , 並以 XOR(2)連接後輸出至線路位置 3 ; 2, 2, 3 表示位置 (1,0) 的輸入為線路 2 、 線路 3 , 並以 OR(3)連接後輸出至線路位置 4 ; 0, 3, 2 表示位置 (1,1) 的輸入為線路 0 、 線路 3 , 並以 XOR(2)連接後輸出至線路位置 5 , 代表此位置以 level back 的方式取得. 11.

(20) (0, 0). (1, 0). 0 0 1. 2 0. 1. 3. 2. 3. (0, 1). 4 (1, 1). 0. 0 2. 0. 4. 2. 3. 3. 5. 0, 1, 0. 0, 0, 2. 2, 3, 3. 0, 3, 2. (0, 0). (0, 1). (1, 0). (1, 1). 4 Output. 圖 2.3: 直角座標式基因規劃示意圖 前兩階層的輸入值 。 虛線及顏色較淡的結點則表示該結點未作用 , 如位置 (1,1) 的 XOR 閘 。 則 CGP 的輸出為 : OUT (4) = (IN(0)ANDIN(1))OR(IN(0)XORIN(0)) 。 因此 , 若想設計一個以 CGP 為主的影像雜訊濾波器 , 則輸入值為影像上的像素點 , 輸出則是經 CGP 計算後的結果 , 中間的電路結構則是過濾雜訊的方法 。 圖2.4為使用 CGP 過濾影像的示意圖 , 整個座標空間可以容納4 × 6 = 24個 CLB , 功能模組表 (function table) 如表2.1所示 , 其中淡色位置表示該結點對於過濾結果並無影響 。 電路經過編碼後. 為 (底線為使用的函式代號) : 016, 232, 454, 6710, 0105, 9111, 10129, 1287, 1397, 131111, 11153, 16160, 13175, 171911, 11163, 20168, 21174, 18235, 18206, 24161, 21220, 26276, 22284, 24288, 1 , 此編碼亦可視為是染色體 , 也可以是一個問題的解答 。. 2.2.2. 直角座標式基因規劃的演化機制. 直角座標式基因規劃的演化機制中 , 以交配的機制產生下一代 , 我們以單點交配 (singlepoint crossover) 為例說明此機制 。 在單點交配下 , 從兩條不同的染色體中 , 隨機取其中. 一個基因為斷點 , 互相交換此斷點以後的基因片段 。 舉例來說 , 有兩條染色體 C1 和 C2 , 在經過單點交配後 , 兩段染色體互相交換斷點後半段的基因 , 變成 C1’和 C2’ , 示意圖為 12.

(21) 0 (m0). 6. 1 (m1). 5. 2 (m2). 7. 5. 4. 11. 11. 5. 6. 3. 3. 6. 4. 0. 8. 1. 8. 13. 3 (m3). 2. 10. 1. 4. 11. 9. 11. 18. 0. Output for pixel (x,y). 26. 4 (m4). 5 (m5) 6 (m6). M3(x,y). 16. 12. 7 (m7). 23. 15. 10. 7. 8 (m8). 圖 2.4: 影像雜訊結合 CGP 表 2.1: 功能模組表 No. Function. Description. 0. 255. Constant. 1. i1. Identity. 2. 255 − i1. Inversion. 3. i1 ∨ i2. OR. 4. (∼ i1 ) ∨ i2. (∼ i1 ) OR i2. 5. i1 ∧ i2. AND. 6. NAND. 7. ∼ (i1 ∧ i2 ) L i1 i2. 8. i1 ≫ 1. Right shift by 1. 9. i1 ≫ 2. Right shift by 2. 10. Swap(i1 , i2 ). Swap nibbles. 11. i1 + i2. +(Addition). 12. i1 + Si2. +(Addition with saturation). 13. (i1 + i2 ) ≫ 1. Average. 14. Max(i1 , i2 ). Maximum. 15. Min(i1 , i2 ). Minimum. XOR. 13.

(22) 圖 2.5(a) 。 而交配前後 C1 和 C1’的電路變化如圖2.5(b) 所示 , 左邊的電路代表由 C1 的 數字編碼而來 , 右邊的電路代表由 C1’的數字編碼而來 。 可以發現第一階層的電路完全 一樣 , 但第二階層的電路就不同了 。 突變方面 , 在染色體上以隨機的方式決定要突變的基因 , 並以隨機的方式決定新的 基因內容 , 我們以圖2.5(c) 說明突變方式 。 C1’為圖2.5(b) 交配後的染色體 , 我們將此染 色體經過兩個點的突變後變成 C1” 。 電路的變化將從圖2.5(b) 的右邊電路 , 改變成圖2.5(c) 右邊的電路 。 可以發現第一階層的第三個 CLB 的第二個輸入由 3 變成 8 , 第二階層的第 四個 CLB 的函式由 6 變成 5 。. 14.

(23) Chromosome -1: C1 2. 5. 1. 2. 3. 2. 5. 3. 2. 5. 4. 3. 3. 12. 1. 2. 2. 10. 3. 12. 1. 11. 4. 6. 2. 2. 5. 5. 2. 7. 4. 3. 4. 0. 5. 1. 5. 10. 2. 11. 7. 11. 4. 6. 1. 2. 5. 3. 2. 5. 4. 3. 4. 0. 5. 1. 5. 10. 2. 11. 7. 11. 4. 6. 1. 2. 5. 5. 2. 7. 4. 3. 3. 12. 1. 2. 2. 10. 3. 12. 1. 11. 4. 6. 2. Chromosome -2: C2 2. 5. 1. 1. 3. Chromosome -1’: C1’ 2. 5. 1. 2. 3. Chromosome- 2’: C2’ 2. 5. 1. 1. 3. (a) 單點交配前後基因變化示意圖 Chromosome -1: C1 2 3. 5. 1. 12. 2. 3. 1. 2. 2. 2. 5. 3. 10. 2 3. 5 12. 4 1. M4. M2. 3 11. 4. 6. 1. M5. 2. 5. M0. M3. M2. M1. M2. 1. 1. M5. 2. M3. M2. M5. 10. M2. 2. M3. M2. 10. M2. M5. 2. M3 M5. 7. M3. 1. 2. M3. M5. 3. M4. 6. M4. Chromosome -1’: C1’. M5. 3. M4. M4. 2. 6. 5. 4. 1 0. 2 5. 3. 2. 1. 5. 5. 3. 10. 2 2. 5 11. 4 7. 3 11. 4. 6. (b) 單點交配前後電路變化示意圖 Chromosome -1’: C1’ 2 4. 5. 1. 0. 2 5. 1. M3. M2. 3. 2 5. 5 10. 3 2. 2. 5. 4. 11. 7. 11. 3 4. M5 6. 1. 1. 1. M2 M3. M2. 2. M5 M8. M2. 10. M3. 2. 1. Chromosome -1’’: C1’’ 2 4. 5 0. 1. 2 5. 3 1. 2 5. 5 10. 8 2. 2. 5. 4. 11. 7. 11. M5. 3 4. 5. 1. M4. (c) 突變後的電路變化示意圖. 圖 2.5: 交配與突變示意圖 15. 3. M4. 5. 1.

(24) 2.2.3. 直角座標式基因規劃的演化流程. CGP 以演化式演算法的概念 , 透過編碼 、 初始化 、 評估 、 挑選 、 交配 、 突變 、 淘. 汰等步驟 , 依據 「適者生存 、 不適者淘汰」 (survival of the fittest) 的法則 , 演化出一代 比一代適合的解答 。 流程如圖2.6所示 , 說明如下 : • 編碼 : 將問題的解答編碼成計算機可以處理的資料型態 , 通常以一長串數字或是字. 元所組成的序列來表示 , 此序列亦稱為染色體 。 • 初始化 : 隨機產生一定數量的個體 , 有時候設計者也可以干預隨機產生的過程 , 讓. 第一代的族群就擁有著部份優化的個體 。 • 適應度評估 : 將個體經由適應性函式 (fitness function) 的評估 , 以區別個體的好. 壞 , 而適應性函式為設計者自行設定 。 • 終止條件的判斷 : 終止的條件主要有三種 : 第一種 , 適應值達到特定標準 。 第二種 ,. 演化到一定代數 。 第三種條件 , 族群演化達到收斂的穩定狀態 。 滿足以上其中一種 條件即終止演化 , 若尚未滿足則繼續演化直到滿足條件為止 。 • 挑選 : 透過適應性函式評估新的個體 , 再從中挑選出好的個體進行繁衍 , 並淘汰弱. 勢的個體以組成新的世代 。 常見挑選的方式有輪盤式 (roulette wheel selection) 、 競爭式 (tournament selection) 及隨機式 。 • 交配 : 交配是從族群之中 , 經由挑選機制所選出來的個體作為親代 , 並互相交換部. 分基因片段以產生出新的個體 , 而新的個體稱之為子代 。. 16.

(25) ࢉՅᡏጓዸ. ߃‫ۈ‬ϯ. ፾ᔈࡋຑ՗ ࡷᒧ ց ಖЗ చҹ. Ҭଛ ँᡂ. ࢂ. Π΋ж ᒡрന٫ှ. 圖 2.6: 演化式計算流程圖 • 突變 : 突變的操作是從子代中 , 隨機挑選一個或數個基因 , 以隨機亂數的方式變更. 基因內容 。 突變的策略可以增加族群的多樣性 。 演化式硬體的實作概念可參考圖2.7 。 在演化式演算法部分 , 先以數字編碼代表硬體 電路設計 , 並以此數字燒錄至硬體合成電路 。 在硬體部分 , 將合成後的電路以實機測試 後將結果回傳 。 演化式演化法再以此結果評估該電路的好壞後 , 再決定是否為最佳解 , 若 否則進行演化機制產生出新的數字編碼 (電路) , 經過逐代演化而得到最佳解 。. 17.

(26) Configuration bit. EA process. Configuration bit. EA process. 0101100001. Reproduction. 0010101010. Reproduction. Evaluation. Reconfigurable device. 0110101010. Selection. Selection Download. Configuration bit. Download. Evaluation. Download. Reconfigurable device. Reconfigurable device. 圖 2.7: 演化式硬體示意圖. 圖形處理器. 2.3. 圖形處理器專門處理影像顯示 , 使用大量核心以平行化計算的方式來處理影像顯示 所需要的幾何運算 。 以下將說明 GPU 的硬體基本架構與軟體執行方式 。. 2.3.1. 硬體基本架構. 一個典型的圖形處理器由圖形處理器專用的記憶體及大量的多核心處理器組成 , 由 於各種型號的圖形處理器構造盡不相同 , 因此以下只介紹本研究使用的圖形處理器 Tesla C1060 的硬體架構 。 架構如圖2.8所示 , 在記憶體部分 , 其分為全域記憶體 (global memory) 、 常數記憶體 (constant memory) 和紋理記憶體 (texture memory) 三種 : • 全域記憶體 : 此為顯示卡的主要記憶體 , 以做為儲存大量資料使用 , 存放須由圖形. 處理器計算的資料 , 並當作與主要記憶體交換資料的平台 。 • 常數記憶體 : 此記憶體只存放唯讀屬性的資料 , 只能由主要記憶體更新 , 提供給顯. 示卡中的多核心處理器做為計算用 。. 18.

(27) GPU Card SM (Stream Multiprocessor) 30 ……….. SM 2 SM 1. Shared Memory Register. Register. Stream Processor (SP1). SP8. Local Memory. Super Function Unit (SFU). Double Precision Unit. Global Memory. Device Memory. Local Memory. ........ Super Function Unit (SFU). Constant Memory Texture Memory. 圖 2.8: GPU 架構 • 紋理記憶體 : 存放在此處的資料可直接使用顯示卡提供的紋理函式 , 可省去處理紋. 理的繁瑣過程 , 通常此處存放圖片或影片資訊 。 在圖形處理器的執行單元部分 , 將多核心處理器稱為流多處理器 (stream multiprocessor, STMP) , 共有 30 個 , 而一個 STMP 內有 8 個流處理器 (stream processing, SP) 。 而 STMP 擁有自己的記憶體稱為共享記憶體 (shared memory) , 做為底下所有流. 處理器的共同記憶體 , 可做為流處理器之間溝通資料的橋梁 。 一個 STMP 內有兩個 super function unit (SFU) 和一個 double precision unit , 做為計算單精準度及雙精準度. 浮點數的數學運算 , 此為所有流處理器共用 。 而每個流處理器都有自己的暫存器及本地 記憶體 (loacl memory) , 兩者差別在容量大小及存取的速度 , 暫存器容量小但速度快 , 所以會優先使用 , 如果容量不夠才會用到本地記憶體 。. 19.

(28) 2.3.2. 軟體執行方式. 在早期當繪圖卡還是非常昂貴的年代 , 繪圖的計算大部分還是交由 CPU 完成 , 電 腦繪圖 API 可由 1997 年提出的 OpenGL (open graphics library)[39]談起 。 OpenGL 為一跨平台語言 , 只要該型號的繪圖卡擁有其協定 , 不論其硬體架構為何 , 即可以軟體 的方式提供硬體支援 , 達到繪圖效果 。 而另一套擁有繪圖功能的 API 為 Microsoft 提 出的 DirectX[40, 41] , 但只支援 Microsoft 作業系統 。 現今技術下 , 螢幕上圖形的呈現大部分以繪圖卡實現 , 而螢幕顯示的圖形將由設計 者以軟體的方式定義 , 再交由繪圖卡將此圖形設計轉換為像素呈現至螢幕上 , 而繪圖的 步驟以 OpenGL 的 rendering pipeline 為例說明 : 1. 頂點處理 (vertex processing) : 解讀設計者的圖形定義並產生頂點以表示物體表面. 並給予三維座標 。 再以 vertex shader 函式完成將物體的三維座標轉換至螢幕的二 維座標 。 2. 幾何處理 (primitive assembly) : 將頂點與頂點之間以點 、 線及面來呈現 , 並以 geometry shader 函式組合成 3D 幾何圖形 。 3. 光柵化 (rasterization) : 由於 2D 螢幕無法顯示真實 3D 物件 , 因此以圖形學中二. 維平面描述三維座標的方式 , 將 3D 幾何圖形轉換成 2D 螢幕可顯示的圖形 。 4. 影像區塊處理 (fragment processing) : 將光柵化後的 2D 影像以 fragment shader. 函式處理 , 將之切割成各個圖像區塊後再填上顏色 、 亮度等參數 。 5. 輸出至 frame buffer : 將每個影像區塊轉為像素後成像至螢幕上 。 20.

(29) 近年來 , 隨著繪圖卡的普及與技術提升 , 繪圖卡內的處理器個數已經超越 CPU , 因 此使用繪圖卡當作資料計算的想法開始萌芽 。 然而 , 使用 OpenGL 或者 DirectX , 即使 只為了數值相加 , 該 API 還是會計算與繪圖有關的函式如紋理計算 、 頂點著色與像素著 色等 。 因此 , 為了讓繪圖卡只執行一般計算 , 提出了 OpenCL (open computing language)[42, 43] 。 OpenCL 可在異質性裝置進行平行化運算 , 如 CPU 對圖形處理器 , 並且可在擁有 OpenCL 協定的所有種類與型號的圖形處理器上執行 , 提供兩種平行化模式– task parallelism 和 data parallelism , 但目前的圖形處理器主要以 data parallelism 為主 。 假設. 只為了數值相加 , 則不需要上敘所有和影像呈現有關的步驟 , 只需要 : 1. 載入 : 將待運算資料由主記憶體放入 GPU 的記憶體上 。 2. 調動運算核心 : 驅動 GPU 上的運算核心 , 並給予每個運算核心的工作內容 , 以大. 量的運算核心數量執行平行計算 。 3. 回傳 : 將運算結果傳回主記憶體 。. 2.4. CUDA. 為了讓圖形處理器可以處理非圖形數據 , NVIDIA 在 2007 年提出一套程式架構語 言 CUDA[44, 45] , 優點為由於 CUDA 語言與 C/C++ 相容 , 對程式開發者而言相對 好學習 , 因此以 CUDA 為主的相關應用及研究便開始出現[46, 47] , 但缺點為 CUDA 只 能於 NVIDIA 發行的圖形處理器上執行 , 以下介紹 CUDA 架構與其執行模式 。. 21.

(30) Grid Block(0,0). Block(1,0). Shared Memory. Shared Memory. Registers. Registers. Registers. Registers. thread(0,0). thread(1,0). thread(0,0). thread(1,0). Local memory. Local memory. Local memory. Local memory. Global Memory Host Memory. Constant Memory Texture Memory. 圖 2.9: CUDA 架構. 2.4.1. CUDA 程式架構. CUDA 程式架構如圖2.9所示 , 在執行單元上 , CUDA 分為三個階層 : grid 、 block 、 thread 。 代表著一個 grid 由數個 block 組成 , 而一個 block 由數個 thread 組成 。 在現. 行的硬體架構下 , 一張顯示卡一次只能處理一個 grid 。 意味著若有 N 種 grid 設定並執 行在一張顯示卡上時 , 則該顯示卡需要執行 N 次 。 此時若有多張顯示卡則可分工進行 , 但須注意不同型號的顯示卡在 block 與 thread 的限制不同 。 因此以下只針對 block 與 thread 作說明 。 Block 擁有一塊自己的共享記憶體 (shared memory, SM) , 以供該 block 底下所有. 的 thread 使用 。 可做為各 thread 在資料上的溝通 。 thread 為執行的最小單位 , 擁有 自己的暫存器和本地記憶體 , 並可存取所有 thread 都可用的全域記憶體 , 以及只能讀取 的常數記憶體和紋理記憶體 。 其運作概念同於 CPU 的執行緒 , 擁有自己的程式碼片段 、 22.

(31) SIMD. Opcode. Vector_D. Vector_S1. Vector_S2. 8-bits. 8-bits. 8-bits. 8-bits. 圖 2.10: SIMD SIMT. ………………………….…. Opcode. Tn. T0. 圖 2.11: SIMT PC (program counter) 、 stack 和暫存器 , 與 CPU 不同的地方為圖形處理器擁有大量. 的 thread , 並可自由的將若干個 thread 為一組 (稱之為 block) 以便於程式撰寫 , 以及 可自行定義每次執行的 thread 數量 。 在執行上 , CUDA 使用 SIMT(single instruction multiple thread) 為執行模型 , 讓 block 與 thread 執行同樣的函式 。 而 SIMT 是對 SIMD(single instruction multiple data) 的一種改進 。 SIMD 為向量指令 , 由一個 opcode 及固定筆數的向量資料組成 , 代. 表在執行前需先將若干筆的向量資料合成一組 SIMD 指令後方可執行 。 以圖2.10為例 , 此向量指令將 Vector S1 和 Vector S2 運算後放入 Vector D , 代表此指令一次只能固 定運算兩筆資料 , 但在 CUDA 中設計者可自由設定每次使用的 thread 數量 , 因此如 SIMD 指令須固定資料筆數的作法將無法實現 。 而且 , 若該 SIMD 指令長度為 32-bits , opcode 與每筆向量資料皆使用 8-bits 時 , 將會限制向量資料的數值範圍 。 也因此 , NVIDIA. 的圖形處理器被設計成可執行 SIMT 指令的架構 , 如圖2.11所示 , 以單一 opcode 驅動 各個 thread 執行程式內容 , 此 opcode 可為資料抓取 、 運算或分支等任務 。 另一個可由設計者自行定義的項目為 block 與 thread 的維度 , 為了方便各種維度 資料的計算 , 尤其是二維或三維圖形資料 , 設計者可於程式碼中宣告 block 與 thread 的. 23.

(32) C code Kernel. Grid0 Block(0,0). Block(1,0). Block(2,0). Block(3,0). Block(0,1). Block(1,1). Block(2,1). Block(3,1). thread(0,0). thread(1,0). …. thread(0,1). thread(1,1). …. …. 圖 2.12: 程式流程範例 維度 , 分別有一維 、 二維以及三維可以宣告 。 例如三維的宣告法如 BlockIdx(Bx ,By ,Bz ) 和 ThreadIdx(Tx ,Ty ,Tz ) , 表示將 Tx × Ty × Tz 為一組 , 共有 Bx × By × Bz 組 。 這也代 表著該程式在執行上所動用的總執行緒數量為 Bx × By × Bz × (Tx × Ty × Tz ) 。 以本研究使用的圖形處理器為例 , 一個 grid 以三維的方式宣告 , 最大可宣告的 block 數量為 512 × 512 × 64 , 若改為二維則最大可宣告的 block 數量為 65535 × 65535 × 1 。 而一個 block 不論在一維 、 二維和三維的情況下 , 總數最多只能有 512 個 thread 。. 2.4.2. CUDA 執行模式. CUDA 將呼叫圖形處理器執行程序的方式稱為 kernel , 以便和主機端的執行程序. 做分離 。 執行時 , 若程式撰寫的順序如圖2.12 , 則會先執行 C 的程式碼直到 kernel 之 前 。 在執行 kernel 時 , CPU 呼叫圖形處理器執行 kernel 內部程式 , 此時會將 block 與 thread 的宣告一併傳給圖形處理器 , 之後 CPU 可等待 kernel 完成工作後再執行 , 又或. 者直接往下執行而不等待 。 24.

(33) CUDA 在執行上 , 一次只能執行一個 kernel 。 而執行 kernel 的步驟可粗分為 : 1. 載入 : 將待運算資料由主記憶體放入 GPU 的全域記憶體上 。 2. 調動運算核心 : 以宣告 BlockIdx 與 ThreadIdx 的函式決定該 kernel 可以使用的. 運算量 。 若宣告為 BlockIdx(Bx ,By ) = (256,1) , ThreadIdx(Tx ,Ty ) = (256,1) 。 代表總調動 256 × 256個運算量 。 3. 執行概念 : 以 SIMT 的方式 , 一次只對1 個 block 內的全部 thread 以平行運算的. 方式執行 , 而每個 thread 以逐步執行程式碼的方式將 kernel 內的程式執行完畢 。 當第一個 block 內的 thread 執行完 kernel 內的程式後 , 再切換至第二個 block 執行直到全部的 block 執行完畢為止 。 4. 回傳 : 將運算結果從 GPU 的全域記憶體傳回主記憶體 。. 軟體的執行方式如上一小節描述 , 但若考慮執行效率 , 則需要了解硬體在上敘執行 概念下的執行方式 , 以下講解 warp 與 occupancy : • Warp : 在 SIMT 的執行概念下 , 一個 STMP 一次可處理數個 thread , 而在本研. 究使用的圖形處理器下 , 一個 STMP 一次可處理的 thread 數量為 32 , 因此將 32 個 thread 分為一組稱為 warp 。 執行時 , 如圖2.13所示 , 一個 STMP 內有 8 個流 處理器 , 每個流處理器一次處理一條 thread , 因此共需 4 個 clock cycle 才能完成 一個 warp 。 雖然軟體宣告一個 kernel 在執行上使用的 block 和 thread 數量 , 但 在硬體上卻是由 block 與 warp 為單位執行 。 • Occupancy : 又稱佔有率 , 用來評估減少延遲的能力 , 評估方式為設計者能放入流 25.

(34) Warp Opcode. 4 clock cycles 8 threads parallelism. SM S P. S P. S P. S P. S P. S P. S P. S P. 圖 2.13: Thread 在硬體上執行的方式 Warp1 ………. Warp2 ..…… ..… 0. 1. 2. 3. 4. 6. 5. 7. 8. 9. 10. Time ……….. 圖 2.14: Warp 間的文本切換 多處理器內的 warp 數與最大可放入的 warp 數的比值 , 越高的比值代表減少延遲 的效果越好 。 但若計算所花費的時間不長時 , 即使 occupancy 很高也無法有效減 少延遲 。 而減少延遲的概念說明如下 : – Warp 間的文本切換 : 在硬體執行上 , 為了減少到記憶體取值的時間浪費 , STMP. 會以文本切換 (context switch) 的方式執行 。 即當某個 warp 因取值而須等 待時 , STMP 會直接切換至下一個 warp 來執行運算以減少因等待所造成的 時間浪費 , 如圖2.14所示 。 – block 間的文本切換 : 為了避免 warp 數量不夠導致等待的時間花費 , 因此. 26.

(35) MP Warp1 Block1. Warp1 Warp2. Warp2 Warp3. Warp3. ………. Warp1. Warp1 Warp2. Block2. Warp2 Warp3. Warp3. ……… ….. Time. 圖 2.15: Block 間的文本切換 CUDA 也將 block 做文本切換 。 示意圖如圖2.15 , 若 STMP 中有兩個 block ,. 一個 block 內有三個 warp , 當第一個 block 內的 3 個 warp 都在等待資料 時 , STMP 將會切換至第二個 block , 並從第二個 block 內的 warp1 開始執 行直到完成或者需要等待 , 再切換至下一個 warp (warp2) 。 – 限制 : 雖然將 block 和 warp 以文本切換的方式執行以減少等待時間 , 但一. 個 STMP 底下可放入的 block 與 warp 數量因硬體限制而有最大值 , 在本研 究使用的圖形處理器中 , 一個 STMP 底下最多只能放到 8 個 block 或者 32 個 warp , 一個 block 最多可以放入 16 個 warp 。 以本研究使用的圖形處理器共有 30 個 STMP , 每個 STMP 有 8 個流處理器 。 若宣 告為 BlockIdx(Bx ,By ) = (256,1) , ThreadIdx(Tx ,Ty ) = (256,1) 。 代表一個 block 有 8 個 warp , 由於一個 STMP 使用 8 個 block 會有 8 × 8 = 64個 warp 超過上限值 32 ,. 因此一個 STMP 最多只能擁有 4 個 block 。 • 需要 256/4 = 64個 STMP , 但 STMP 數量不足 , 因此每個 STMP 需要至少兩. 次 、 最多三次的執行 。 • 一個 STMP 共有 4 個 block , 每個 block 共有 8 個 warp 作文本切換 , occupancy 27.

(36) 則為 32/32 = 100% 。 代表可以減少較多的延遲 。. 28.

(37) 第3章 問題定義與分析 演化式硬體影像濾波器設計以演化式計算為方法 , 搜尋最佳的濾波器設計 , 將問題 的解 (在此為濾波器設計) 視為一個個體 , 將以數個個體組成一個族群並讓此族群經過多 個世代演化 , 透過物競天擇以得到最佳解 。 此問題可分成兩階段處理 : 第一階段將染色 體所代表的濾波器進行世代演化 , 第二階段負責計算各個染色體所代表的濾波器的適性 值 。 以下說明影像過濾方法與演化式硬體影像濾波器設計之搜尋空間分析 。. 3.1. 影像過濾方式. 影像濾波器是一種專門處理影像雜訊的系統 , 用來去除雜訊 、 移除雜訊或是降低雜 訊 , 藉此將雜訊還原成原本的像素並具備其原有的資訊 。 影像是由一個二維陣列組成 , 所 以可以用空間域的影像過濾方式來處理影像上的雜訊 , 其數學式表示如下 。 I ′ (x, y) = f [I(x, y)]. (3.1). 在上式之中 , 令過濾後圖片為 I ′ , 原始圖片為 I , I ′ (x, y)表示過濾後圖片中的其中一點 , I(x, y)表示原始圖片中的其中一點 。 f 為作用於I 的運算子亦稱為過濾雜訊的方法 。 過濾. 時 , 以影像上每個座標 I(x, y)為中心點 , 向外擴張至 m × m個像素 , 以此當作一個遮 罩 , 並利用此遮罩內的像素進行函式 f 的計算並輸出結果 。 在此以遮罩大小 3 × 3為例 , 影像過濾的過程如圖3.1所示 。 將待過濾的影像以遮罩大小為一個過濾單位 , 將遮罩由左 而右後再由上而下 , 每次只朝一個方向移動一個像素 , 而每移動一次即可過濾出一個點 。 待遮罩由影像的左上方移動到右下方時 , 代表完成一張影像的過濾 。 29.

(38) Lena ቹႽ. X. ፿࿽ελ 3Ø3 I(x-1,y-1). I(x-1,y). I(x,y-1) I(x+1,y-1). I(x,y). I(x+1,y). I(x-1,y+1) I(x,y+1) I(x+1,y+1). Y. 圖 3.1: 影像過濾方法示意圖 評估濾波器好壞的方法 , 我們將過濾後的影像與原始影像以點對點的方式互相比較 。 若針對影像大小為 k ×K 的灰階影像 (8bits) 而設計評估公式 , 則評估公式 PSNR (Peak Signal to Noise Ratio) 為 :. P SNR = 10 log10. 3.2. 1 k2. 2552 ′ 2 x,y (I (x, y) − I(x, y)). P. (3.2). 演化式硬體影像濾波器設計與其搜尋空間分析. 以演化式硬體的概念實現影像濾波器 , 其實作概念圖如圖3.2所示 。 影像過濾的方法 如上節所敘以遮罩為單位進行過濾 , 從影像左上角讓遮罩依序移動至右下角 , 使用相同 的 CGP 設計過濾 , 每過濾一個遮罩都會得到一個像素 , 最後將含有雜訊的影像還原 。 過 濾的函式則由直角座標式基因規劃產生 , 並透過演化機制來取得最佳解 。 演化式硬體影像濾波器所需的參數如表3.1所示 , 在此設計中的搜尋空間分析如下 , 假設濾波器過濾影像大小為 k × k , 遮罩大小為 m × m , 共有 (k − m + 1)2 個遮罩需 要過濾 。 將 CGP 大小設為為 c × r , 代表有 c個階層 , 每個階層共有 r個 CLB , 並加入 30.

(39) I(1,1) f[I(1,1)] Lena ቹႽ X. Output pixel. (m0). 12. 14. 7. 15. 13. 9. 5. 8. 1. 13. 14. 13. 2. 12. 5. 11. 14. 14. 1. 14. 14. 10. 0. 10. 12. 5. 12. 14. 13. 12. 7. 2. (m1) (m2) (m3). (m4). I’(1,1). (m5). Y. M3(x,y). (m6) (m7) (m8). 4ǘ ǘ8 nodes in grid. ………… ……. I(254,254). f[I(254,254)] X. (m0). Output pixel. 12. 14. 7. 15. 13. 9. 5. 8. 1. 13. 14. 13. 2. 12. 5. 11. 14. 14. 1. 14. 14. 10. 0. 10. 12. 5. 12. 14. 13. 12. 7. 2. (m1) (m2) (m3). (m4). I’(254,254). (m5). M3(x,y). (m6) (m7) (m8). 4ǘ ǘ8 nodes in grid. 圖 3.2: 影像過濾方法示意圖 level back 機制 。 過濾時 , 每個遮罩皆由相同設計架構下的 CGP 過濾 , 因此分析單一遮. 罩的搜尋空間計算量並將其分為三部分 : • CGP 第一階層的搜尋空間計算量 : 第一階層的輸入為遮罩資料共有 m2 筆 , 我們. 以 LV1 代表第一層的計算量 , 計算量如下 : LV1 = [(m2 )2 × nf ]r. (3.3). • CGP 第二階層及之後的搜尋空間計算量 : 第二階層開始 , 每一階層的輸入選擇共. 有r個 , 但因 level back 的機制 , 因此有機會取到輸入層的遮罩資料 。 所以再細分 為兩部分 : – 會取到遮罩資料的階層 , 我們以 LV2 masklv 代表此層的計算量 。 LV2 masklv = [(m2 + (lv − 1) × r)2 × nf ]r 31. (3.4).

(40) 表 3.1: CGP 濾波器參數 Parameters. Value. Image size (k × k). 256 × 256. Mask size (m × m). 3×3. CGP grid size (c × r). 8×4. Level back (Lb). 2. Number of function (nf ). 16. Stopping criteria (G). 5000 generations. Population size (P ). 100. Probability of crossover (C). 0.4 ∼ 0.8. Probability of mutation (M). 0.4 ∼ 0.8. Restart Threshold (R). 0∼1. 其中 lv 為自己的階層編號 。 – 不會取到遮罩資料的階層 , 我們以 LV2 nonmask 代表此層的計算量 。 LV2 nonmask = [(Lb × r)2 × nf ]r. (3.5). • CGP 的輸出選擇 : CGP 的輸出將其中一個 CLB 的輸出值當作最終的輸出 , 輸出. 的選擇方面同樣有 level back 機制 , 我們以 LVoutput 表示此層的計算量 , 計算量為. LVoutput = (Lb × r). (3.6). 因此 , 加入 level back 機制的整體搜尋空間為公式 (3.7) , CGP 共有 c層 , lv 編號 將從 1 到 c , 公式將分成五個部分計算 , 第一部分為訓練影像所切割出來的遮罩的數量共 (k − m + 1)2 ; 第二部分為第一層的計算量如公式 (3.3) ; 第三部分為第一層之後會取到 32.

(41) 遮罩資料層 , lv 編號從 2 到 Lb ; 第四部分為第一層之後不會取到遮罩資料層 , lv 編號從 Lb到 c ; 最後是 CGP 輸出的計算量 。 (k − m + 1)2 × LV1 ×. Lb Y. LV2 masklv ×. (3.7). lv=2 c Y. LV2 nonmask × LVoutput. i=Lb+1. 若以表 3.1的數值為例 , 則搜尋空間的計算量為 : (256 − 3 + 1)2 × ((32 )2 × 16)4 × ((32 + 4)2 × 16)4 ×. (3.8). (((2 × 4)2 × 16)4 )8−2 × (2 × 4).. 公式 (3.8) 分成五個部分 , 第一部分為訓練影像所切割出來的遮罩的數量共 2542 個 ; 第 二部分為 CGP 第一層的搜尋空間計算量如公式 (3.3) ; 第三部分為公式 (3.4) , 因為 level back 為 2 , 在第二層的 CLB 可以取得第一層 CLB 的輸出值及輸入層的資料 ; 第四部. 分為公式 (3.5) , 由於第三層往前兩層取值無法取得輸入層的資料 ; 第五部分則為 CGP 的輸出選擇 , 如公式 (3.6) 。 而公式 (3.8) 的結果遠大於 1080 。 在如此龐大的搜尋空間中 找尋最佳解極其不易 , 故以演化式演算法的方式來搜尋最佳解 。 以演化式演算法完成演化式硬體影像濾波器的最佳解找尋 , 需要對每代產生的個體 做評估 。 評估一個個體的好壞需要經過 (k − m + 1)2 個遮罩過濾 , 每過濾一個遮罩所需 的計算量由 CGP 的 CLB 數量決定為 c×r , 代表完成一個個體評估的計算量為 (k−m+ 1)2 × (c × r) 。 若族群內共有 P 個個體須演化 G個世代 , 完成演化式硬體影像濾波器的最. 佳解搜尋所需要的整體計算量為 G×P ×(k−m+1)2 ×(c×r) 。 若以表 3.1的數值為例 , 評 估一個濾波器的好壞所需要的計算量為 (256−2+1)2×(8×4) ≃ 2×106 , 而得到一個最佳 的演化式硬體影像濾波器需要經過 5000×100×(256−2+1)2×(8×4) ≃ 1012 。 如此龐大 33.

(42) 的計算量卻只能評估 5 ×105 個個體 , 表示在搜尋空間中只測試 5 ×105 種解答 , 與上段敘 述的搜尋空間遠大於 1080 相比相差甚遠 。 為了增加搜尋範圍必須提升演化代數或族群數 , 但過多的演化代數或族群數意味著計算量的增加 , 而龐大的計算量將耗費大量運算時間 , 使得增加搜尋範圍形成阻礙 。. 34.

(43) 第4章 研究方法與設計 4.1. 平行化策略與分析. 由上一章可知演化式硬體影像濾波器最花時間的地方為染色體的評估 , 計算量高達 5000 × 100 × (256 − 2 + 1)2 × (8 × 4) ≃ 1012 卻只能評估 5 × 105 個個體 , 因此 , 本研究. 為了縮短計算時間 , 分析演化式硬體影像濾波器架構 (如圖3.2) , 將其以任務切割 (task decomposition) 和資料切割 (data decomposition) 的方式 , 使整體架構修改為平行化. 計算 。 為了方便以下小節說明 , 我們將圖3.2簡化成圖4.1 。 I0. F1. I0. I3. F5. I1. I0. F1. I0. I3. F5. …. I23. I20. F9. I30. …. I23. I20. F9. I30. ………. I1. 圖 4.1: 演化式硬體影像濾波器過濾簡圖. 4.1.1. 任務切割. 演化式硬體影像濾波器透過演化機制 , 在每代的演化中評估所有個體並留下最好的 直到演化結束 。 在一個世代中假設共有 P 個個體 , 且假設完成評估該個體所需要的時間 為 Tc 。 在演化 G個世代後 , 若以單一運算核心且逐步執行的架構下 , 所需要的時間為 G × P × Tc 。 當演化的世代或者族群數增加時 , 所需要的時間皆以倍數增加 。. 為了以平行計算的方式減少計算時間 , 以下對 G 、 P 、 Tc 作分析 。. 35.

(44) ᄽϯᐒ‫ڋ‬. ၩΕቹႽ. ౢғࢉՅᡏ. I 1 I0. F1. …. F1. I30. F1. …. I30. F1. …. I30. C1. I 1 I0. ………………... . … I1 I0. …. I30. F1. …. I30. Cn-x+1. …. I30. ........ PEn1. PE12. ........ PEn2. PE13. ........ PEn3. Cx. ............... Cp. F1. …. I30. F1. …. I30. . …. . … I1 I0. I1 I0. ………. F1. PE11. I1 I0. PE1n. ........ ....................... ………… F1. I30. ᒡрന٫ှ. ....................... Cx+1. …………………………….... I1 I0. …. .… .…………………... I1 I0. …. F1. ࢂ. . …. . … I1 I0. I1 I0. ………. ಖЗ చҹ. ೴΋ෳ၂ࢉՅᡏ. I30. ց. PEnn. 圖 4.2: 任務切割 • 演化代數 (G) 的分析 : 由於子代的產生由父代而來 , 子代與父代具有相依性 , 因此. 此部分無法進行平行化計算 。 • 族群數 (P ) 的分析 : 對族群中某一個體評估好壞並不影響其他個體的評估 , 代表. 著此部分可以平行的方式處理各個個體的評估 。 如圖4.2所示 , 若將評估一個個體 當作一個任務 , 假設處理器個數從編號 11到 nn共有 N 個 , 我們將各個任務分配 到各個處理器 , 由於各個處理器可分開計算 , 因此計算所需要的時間減少為 G × ⌈P/N⌉ × Tc 。 • 評估單一個體的時間 (Tc ) 的分析 : 評估個體的步驟為影像資料的讀取 、 逐個遮罩. 過濾和取得優劣的評估值 , 由於各個處理器負責各自的任務計算 , 沒有多餘的運算 核心可供平行化計算 , 因此此部分為逐步計算 。 評估個體的好壞所花的計算時間最多 , 經過分析後可以改為平行的方式處理 , 不過 , 假如 N 的數量超過 P 時 , N 只能以 P 計算 , 因為一個任務無法由兩個處理器同時處理 , 36.

(45) 這代表切割的方式過於粗糙 (coarse-grained parallelism) , 難以發揮大量處理器的優勢 。 當 N 的數量小於 P 時 , 則每個處理器至少需要處理兩個任務或以上 。 而當 N 的數量小於 P 且不是 P 的倍數時 , 任務的分配則要考慮剩餘任務的平行化計算問題 。. 4.1.2. 資料切割. 在上一節的評估單一個體中提到 , 由於沒有多餘的運算核心因此以逐步計算完成 , 不過任一個遮罩的過濾並不影響其他遮罩的過濾 , 因此此步驟還是可以平行計算完成 。 假設一張影像大小為 k × k , 由遮罩大小 m × m切割共有 (k − m + 1)2 個 , 假設濾 波器過濾一個遮罩並得到評估值的運算時間為Tm , 所需要的時間為(k − m + 1)2 × Tm 。 當影像大小增加或者遮罩尺寸改變時 , 所需要的運算時間會以 Tm 的倍數增加 。 參考圖4.3 , 以某個個體 (Px ) 的評估為例 。 評估時 , 一個影像將會拆解成多個遮罩 以執行過濾 (Mx,1 ...Mx,n ) 。 假設處理器個數從編號 11到 nn共有 n個 , 若一個處理器處 理一個遮罩的過濾計算 , 則計算所需要的時間可減少為 ⌈. (k − m + 1)2 × Tm 。 ⌉ 當影像 n. 大小夠大時 , n的數量將小於 (k − m + 1)2 , 代表此切割方式較為細緻 (fine-grained parallelism) , 較能發揮大量處理器的優勢 。 但若 n不是 (k − m + 1)2 的倍數時 , 剩餘資料. 的處理也需考慮 。. 4.1.3. 演化式硬體影像濾波器平行化架構. 本研究以圖形處理器計算演化式硬體影像濾波器 , 其示意圖如圖4.4 。 我們將整個演 化過程中最花時間的部分交由圖形處理器計算 , 以平行化計算的方式來減少運算時間 。 由 於圖形處理器擁有多個多核心處理器 , 而一個多核心處理器內建數個處理器 , 因此 , 將 待評估的個體視為任務並將其分配給各個多核心處理器 , 以完成任務切割 。 而評估個體 37.

(46) I1 I0. …. I30. F1. …. I30. . …. F1. I1 I 0. I1. I0. F1. …. F1. …. .............. I30. Mx,1. I1. I0. F1. ................................ I30. Mx,x+1. I0. F1. …. ............... I30. I1. I0. Mx,x. F1. ........ PEn1. PE12. ........ PEn2. PE13. ........ PEn3. ............... Mx,(k-m+1)2 …. I30. ........ PE1n. ....................... I1. Mx, ,(k-m+1)2-x+1. I30. PE11. ....................... .................. ...................................................... …. ...... ............................ I1. I0. Cx. PEnn. 圖 4.3: 資料切割 MP11. MP11. C1 I1 I0. …. PE11. I30. M1,1 I0. F1. …. I30. .... F1. …. PE11. I30. PE1n. ...... ...... PEn1. PE11. ...... …. I30. PE1n. ...... PEnn. PE1n. PEn1. PE11. MP11 I1 I0. F1. …. PE11. I30. Mx,1 I0. F1. …. I30. ....... ............. ..... PE1n. ...... PEnn. ...... PEn1. ............. PE1n. ...... ...... I30. ..... ............... I1. .... ...... …. ...... ............. F1. PEnn. MP11. ...... . … I1 I0. ...... ...... ............ ............ ....... ............. ..... ...... F1. PEn1. ............. .... ...... M2,1 I0. ...... I30. I1. PEnn. MP11. ...... …. ..... ಖЗ చҹ. ᒡрന٫ှ. F1. ......................... Cx. PEnn. ............. . … I1 I0. ᄽϯ ᐒ‫ڋ‬. ...... MP11. C2 I1 I0. ࢂ. PE1n. PEn1. ....... ............. ..... ...... ............. .... ...... I30. I1. PE11. ...... …. ...... F1. ౢғࢉՅᡏ. ೴΋ෳ၂ ࢉՅᡏ. PEn1. ...... I1 I0. ...... ............. . …. ၩΕቹႽ. F1. PEnn. GPU Card. 圖 4.4: 演化式硬體影像濾波器平行化架構 中需要計算各個遮罩的部分 , 由於一個多核心處理器內建數個處理器 , 可以資料切割的 方式 , 將各個遮罩視為資料來平行計算 。 假設多核心處理器的數量為 MP , 一個多核心處理器內的處理器數量為 P E 個 , 則 計算時間將縮短為 (G × ⌈P/MP ⌉) × (⌈. (k − m + 1)2 × Tm , ⌉) 假設該運算式可整除 , PE. 則可縮短 MP × P E 倍的時間 。. 38.

(47) 表 4.1: GPU Tesla C1060 參數表 Parameters. Value. Number of Multiprocessors. 30. Number of CUDA Cores per Multiprocessors. 8. Number of Threads per Warp. 32. Number of Warps per Multiprocessor. 32. Maximum Number of Thread Blocks per Multiprocessor. 8. Maximum Number of Thread per Block. 512. Maximum Number of Thread per Multiprocessor. 1024. Total amount of Global Memory (Mbytes). 4096. Max Shared Memory per Multiprocessor (bytes). 16384. Total Number of 32-bit registers per Multiprocessor. 16384. Allocation Granularity. Block. 以多核心處理器做為任務的處理單位的好處在於 , 多核心處理器的數量通常少於內 建於多核心處理器內部處理器的數量 , 剛好克服切割過於粗糙下 , 運算效能無法提升的 難題 。 而以多核心處理器內部的處理器計算資料 , 由於處理器的數量夠多 , 因此可以發 揮細緻切割的優點 。. 4.2. 圖形處理器的限制 程式在執行時 , 受限於軟體設計與硬體架構 , 通常難以發揮最大運算效能 , 而圖形. 處理器在執行上也有此問題 。 以下分兩部分討論圖形處理器對最大計算量的限制 , 分別 為計算效率限制以及記憶體間傳輸時間與記憶體空間限制 。 由於各個圖形處理器的限制 不同 , 以本研究所使用的圖形處理器 Teala C1060 如表4.1為例說明 。 39.

(48) 4.2.1. 計算效率限制. 在表4.1中 , 對計算效率最有影響的是一個 warp 由 32 個 thread 組成 。 其原因為設 計者只能在程式中宣告 thread 和 block 的使用個數 , 但硬體執行卻是以 warp 為單位 , 並分成兩次執行 , 每次執行 half-warp 個數的運算 。 因此 , 呼叫 thread 計算資料的個數 最好為 32 或 16 的倍數 , 以免在硬體執行上造成運算資源浪費 。 程式於硬體中執行時會發生延遲 , 其中以存取記憶體的延遲最為嚴重 , 因此圖形處 理器以文本切換的方式隱藏延遲以增進計算效率 。 在表4.1中 , 與隱藏延遲有關的參數為 一個多核心處理器內最多可有 32 個 warp 或者 8 個 block 。 每個 block 皆由數個 warp 組成 , 一個 block 最多只能擁有 16 個 warp , block 內的 warp 數過少將無法有效隱藏 延遲 。 然而 , block 內的 warp 數不是 32 的倍數時 , 將無法塞滿整個多核心處理器可以 切換的文本個數 , 因此 , 在程式設計上盡量讓一個多核心處理器放入最大數量的 warp 達 到隱藏延遲的效果 , 避免硬體將時間花在等待上 。 程式撰寫上以 thread 為單位 , 但是執行上以 warp 為單位 , 為了有效隱藏延遲 , 必 須注意一個多核心處理器內所放入的 block 與 warp 個數 , 因此一個多核心處理器中的 計算效率將受到以下三點的數量限制 : • 每個 warp 內 thread 的數量是否恰為 16 或 32 的倍數 , 或者接近 32 的倍數 • 一個多核心處理器放入的 block 數量 • 一個多核心處理器放入的 warp 數量. 40.

(49) 4.2.2. 記憶體間傳輸時間與記憶體空間限制. 在各種記憶體的傳輸上 , 由於圖形處理器的運算為多核心處理器內的處理器負責 , 因此以處理器的角度來討論各種記憶體溝通的時間 。 在存取上的延遲與各記憶體頻寬為 : • 全域記憶體 : 延遲 400 到 600 個 clock , 頻寬為 100GB/s • 共享記憶體 : 延遲 4 到 6 個 clock , 頻寬為 200GB/s • 暫存器 : 即時 • 本地記憶體 : 延遲 400 到 600 個 clock , 頻寬為 100GB/s. 由於全域記憶體和本地記憶體的延遲都非常高 , 因此 , 經常存取的資料可以先放到共享 記憶體或者暫存器中 , 以減少不必要的時間花費 。 當中央處理器呼叫圖形處理器執行運算時 , 會先把需要的資料放入圖形處理器內的 全域記憶體 , 因此 , 全域記憶體的大小限制了一次圖形處理器所能運算的最大量 。 運算 時 , 為了減少記憶體傳輸的延遲時間 , 各個多核心處理器會將資料從全域記憶體搬至共 享記憶體 , 但是共享記憶體的空間又比全域記憶體少 , 再次限制多核心處理器一次可計 算的量 。 而多核心處理器內的處理器擁有自己的暫存器 , 即時存取但空間更少 , 又限制 了處理器一次可以計算的量 。 當依附於各種處理器上的快取空間不夠時 , 只能減少一次 可行的運算資料量或者將資料放入空間更大但延遲時間更長的記憶體中 。 因此圖形處理 器的最大計算量受限於以下三種記憶體空間限制 : • 全域記憶體大小 • 共享記憶體大小 41.

(50) • 單一處理暫存器大小. 以表4.1的記憶體空間數值舉例說明 , 若以一顆多核心處理器可以使用的全部 thread 共 1024 個來計算 , 單一 thread 可以使用的暫存器為 16 個 、 共享記憶體空間 16bytes 、 全域記憶體空間約 137KBytes , 但在程式執行時 , 程式碼文本會放在共享記憶體中 , 此 一設計將減少共享記憶體的空間 。 而程式內使用到的變數會放置於暫存器內 , 但暫存器 數量有限 , 勢必存到共享記憶體內 , 因此更進一步地減少共享記憶體可使用的空間 。 過 小的記憶體空間意味著難以使用全部的 thread 進行計算 , 但是過少的 thread 代表計算 效能的低落 。 如何讓 thread 個數和記憶體存取之間取得平衡 , 將是得到最大運算效能的 關鍵 。. 4.3. 實做方法. 為了在有限的計算能力與記憶體空間中得到最佳運算效率 , 本研究先分析演化式硬 體影像濾波器設計所需的記憶體空間後 , 在 GPU 的條件限制下 , 進行最佳運算效率的 設計 。. 4.3.1. 問題所需記憶體空間. 本研究以 CPU 與 GPU 分工來完成演化式硬體影像濾波器設計 , CPU 端運算與 GPU 端運算的溝通使用 PCI-E2.0 (傳輸速度為 16GB/s) 。 CPU 負責演化機制 , GPU. 則以平行計算的方式評估各條染色體的好壞 , 並將結果回傳至 CPU 。 而評估各條染色體 的好壞所需要的資料與記憶體空間為 : (下列使用到的符號請參考表 3.1) • 影像類 : 42.

(51) 圖 4.5: 遮罩取值重複的部分 – 原始影像圖 : (k − m + 1)2 – 訓練所需要的雜訊圖 : (k − m + 1)2 × m2 – 過濾後影像的空間保留 : P × (k − m + 1)2 • 全部染色體數量所需的空間 : P × (c × r × 3 + 1)bytes • 一條染色體在直角座標式基因規劃所需的空間 : m2 + c × rbytes. 由於影像類的空間只需要分配一次即可使用到演化完成 , 即使影像檔案過大 , 傳輸所佔 據的時間對整體而言是可以忽略的 。 而在 PCI-E2.0 的傳輸速度下 , 每次演化後傳輸全部 染色體至 GPU 的時間也將微乎其微 , 而評估結果以 PSNR 值為基準 , 此資料量也非常 的少 , 因此本研究不考慮 CPU 對 GPU 傳輸時間的問題 。 由於過濾時各遮罩彼此間會取到共同的像素點 , 如圖4.5中紅色和綠色遮罩重疊的灰 色部分 。 為了避免在取值時有機會取到重疊部分而需要等待 , 因此將訓練所需要的雜訊 圖以遮罩大小為單位重新處理 。 如圖4.6 , 若一張影像分為 16 等份且由遮罩大小 3 × 3過 濾 , 則會過濾 4 次 , 因此可事先先將影像分成 4 個子影像 , 每個影像大小為 3 × 3 , 雖然 增加影像的容量 , 但是取值時可保證不需等待 。. 43.

參考文獻

相關文件

Selcuk Candan, ”GMP: Distributed Geographic Multicast Routing in Wireless Sensor Networks,” IEEE International Conference on Distributed Computing Systems,

Godsill, “Detection of abrupt spectral changes using support vector machines: an application to audio signal segmentation,” Proceedings of the IEEE International Conference

Shih and W.-C.Wang “A 3D Model Retrieval Approach based on The Principal Plane Descriptor” , Proceedings of The 10 Second International Conference on Innovative

Harma, “Automatic identification of bird species based on sinusoidal modeling of syllables,” in Proceedings of IEEE International Conference on Acoustics, Speech,

Chen, “Adjustable gamma correction circuit for TFT LCD,” IEEE International Symposium on Circuits and Systems, vol. Kan, “Implementation of the Gamma (γ) Line System Similar

Li, The application of Bayesian optimization and classifier systems in nurse scheduling, in: Proceedings of the 8th International Conference on Parallel Problem Solving

[3] Ke Xiaolong, “Study on Software and Hardware Control of High-precision Measurement Platform for Optical Aspheric Surface”, 2009 IEEE International Conference on

Sun, “The Application of Role-Based Access Control in Workflow Management Systems”, Proceedings of IEEE International Conference on System, Man and Cybemetics, vol.6, pp.