資料中有效率地汲取有意義的資訊,才是現今研究人員們面臨的挑戰。在雲端運算(Cloud Computing)之巨量資料(Big Data)分析下,企業對於平行運算人才的導入與培育,是當前的重要課題。例如Google與Apple的地圖之爭,正是大量資料分析的競賽,平行運算在這場比賽中舉足輕重。本書從OpenMP、OpenCL與MPI的簡介、至平行運算導入現實問題之解決,讓讀者能夠親自體會平行運算所帶來的高效能運算改變。
資料中有效率地汲取有意義的資訊,才是現今研究人員們面臨的挑戰。在雲端運算(Cloud Computing)之巨量資料(Big Data)分析下,企業對於平行運算人才的導入與培育,是當前的重要課題。例如Google與Apple的地圖之爭,正是大量資料分析的競賽,平行運算在這場比賽中舉足輕重。本書從OpenMP、OpenCL與MPI的簡介、至平行運算導入現實問題之解決,讓讀者能夠親自體會平行運算所帶來的高效能運算改變。 李哲榮教授 1996年清華大學資訊工程系學士,2007年美國馬里蘭大學資訊科學博士。目前任教清華大學資訊工程系,並擔任清華大學CUDACenter of Excellence中心主任。李教授主要研究領域包括平行分散式運算,雲端運算,數值方法,以及科學計算。在清華大學開雲端運算及GPU程式設計相關課程。李教授是IEEE 及SIAM 會員。李政崑教授 1984年台灣大學資訊工程系學士,1992年美國印第安那大學電腦科學博士。目前任教於清華大學資訊工程系,在清華大學開授編譯器相關課程。李教授主要研究領域包括平行化編譯器、稀鬆矩陣編譯器、編譯器、compilers for embedded systems。曾獲經濟部大學產業經濟貢獻獎「產業深耕獎」(2010)以及清華大學九十九學年度產學合作績效獎。洪哲倫助理教授 2010年國立清華大學博士。曾在國家衛生研究院與工業技術研究院雲端運算行動應用科技中心任職。目前任教靜宜大學資訊傳播工程系,並擔任靜宜大學基因體研究中心雲端運算組組長。洪教授主要研究領域包括生物資訊,平行分散式運算以及雲端運算。在靜宜大學開設生物資訊,雲端運算及圖形處理器平行程式設計等相關課程。洪教授是IEEE會員。張榮貴副教授 1991、1993年中興大學應用數系學士、碩士,2000年清華大學資訊工程博士。目前任教於中正大學資訊工程系,並擔任中正大學電算中心系統支援組組長。他目前主要研究領域包含嵌入式系統軟體和編譯器設計,在中正開授計算機結構以及嵌入式系統相關課程。陳鵬升副教授 1995年清華大學資訊科學系學士,1997年成功大學資訊工程研究所碩士,2005年清華大學資訊工程學系博士。目前任教於中正大學資訊工程學系。陳副教授主要的研究領域包括編譯器設計、程式平行化、以及程式分析與最佳化等議題。在中正大學開授組合語言、編譯器設計、軟體分析與最佳化等課程。陳教授是IEEE及ACM會員。楊武教授 1989年美國威斯康辛大學電腦科學系碩士、博士,之前為台灣大學資訊工程學系學士。目前任教國立交通大學資訊工程學系。楊教授主要研究領域包括編譯器設計、程式語言、嵌入式系統、計算機系統程式等。在交通大學開授編譯器設計、程式語言、正規語言、離散數學等課程。楊教授與他指導的學生曾獲得校內外數項獎項。楊教授是IEEE 會員。楊朝棟教授 1990年東海大學資訊科學系學士,1992年與1996年分別獲得交通大學資訊科學系碩士與博士。目前任教東海大學資訊工程學系,並擔任東海大學電子計算機中心主任。楊教授主要研究領域包括平行暨分散式運算,雲端運算,以及多核心系統。在東海大學開授雲端運算與服務、編譯器、計算機組織等課程,並連續三年獲得校方推薦為國科會補助大專校院獎勵特殊優秀人才。楊教授是IEEE及ACM會員。劉邦鋒教授 1985年台灣大學資訊工程系學士,1994年美國耶魯大學資訊科學博士。目前任教台灣大學資訊工程系,並擔任台灣大學雲端趨勢學程副主任。劉教授主要研究領域包括平行分散式運算,雲端運算,程式動態轉換,以及演算法。在台灣大學開雲端運算及平行程式設計相關課程,並多次獲得台灣大學教學優良獎。劉教授是IEEE及ACM會員。蔣宗哲助理教授1999年臺灣師範大學資訊教育系學士,2008年臺灣大學資訊工程博士。目前任教於臺灣師範大學資訊工程系。主要研究領域為演化式計算與最佳化應用。謝仁偉副教授1999年、2001年與2006年分別獲得台灣大學資訊工程系學士、碩士與博士,目前任教台灣科技大學資訊工程學系。謝副教授主要研究領域包括快閃記憶體儲存系統與即時系統。在台灣科技大學開授資料結構、高等計算機結構、即時排程理論等課程。謝副教授曾指導學生獲中華民國資訊學會碩士最佳論文獎佳作及台灣資訊儲存技術協會台灣資訊學生論文獎,並曾獲國科會優秀年輕學者三年期研究計畫獎勵。謝副教授是IEEE及ACM會員。 作者簡歷編者序推薦序Chapter 1 OpenMP介紹11.1 OpenMP程式的執行概念. . . . . . . . . . . . . . . . . . . . . 11.2 任務分攤結構. . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3 工作分配結構. . . . . . . . . . . . . . . . . . . . . . . . . . . 201.4 其他事項. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.5 總結. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Chapter 2 MPI 介紹332.1 與其他平行化方法比較. . . . . . . . . . . . . . . . . . . . . . 342.2 MPI基本用法. . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3 點對點通訊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.4 群組通訊. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Chapter 3 OpenCL介紹573.1 OpenCL 的架構. . . . . . . . . . . . . . . . . . . . . . . . . . . 583.2 OpenCL Runtime 支援. . . . . . . . . . . . . . . . . . . . . . . 613.3 OpenCL C 程式設計規範. . . . . . . . . . . . . . . . . . . . . 71Chapter 4 固態硬碟使用壽命的模擬評估814.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Chapter 5 OpenMP平行演化式演算法955.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Chapter 6 以OpenMP平行疾病傳染模擬1156.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Chapter 7 HPCC 效能評估程式實測與結果1357.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Chapter 8 OpenMP模擬社會財富分配1638.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1638.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1658.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1698.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1828.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Chapter 9 生物資訊平行運算1939.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1999.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2009.4 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2009.5 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Chapter 10 以OpenCL加速人臉辨識21710.1 背景知識. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21710.2 實驗目的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21810.3 實驗器材. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21910.4 實驗準備. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22210.5 實驗步驟. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22410.6 實驗結果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Bibliography 233Index 237