內容簡介
本書由Intel的技術專傢撰寫,係統地講解在IntelXeon處理器和IntelXeonPhi協處理器上進行並行處理和編程的方法和技術,展示瞭更好地利用Intel處理器或其他多核處理器的係統計算潛力的有效方法。全書包括大量來自多個行業和不同領域的並行編程例子。每章既詳細講述所采用的編程技術,同時展示瞭其在IntelXeonPhi協處理器和多核處理器上的高性能結果。幾十個新的例子和案例顯示的“成功經驗”不但展現瞭這些強大係統的主要特徵,而且展示齣如何在這些異構係統上保持並行化。
作者簡介
James Reinders,英特爾軟件總監,首席技術布道師。參與多個旨在加強並行編程在工業界應用的工程研究和教育項目。他對多個項目做齣瞭貢獻,包括世界上首例 Teraflop 級超級計算機(ASCI Red)和世界上首例 Teraflop 級微處理器(Intel Xeon Phi協處理器)。
Jim Jeffers,英特爾MIC(集成眾核)架構專傢和首席工程師,對至強融核協處理器有著較為深入與全麵的研究。
目錄
High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches
齣版者的話
譯者序
推薦序
前 言
作者簡介
第1章 引言 1
1.1 學習成功經驗 1
1.2 代碼現代化 1
1.3 並發算法現代化 1
1.4 嚮量化和數據局部性現代化 2
1.5 理解功耗使用 2
1.6 ISPC和OpenCL 2
1.7 Intel Xeon Phi協處理器特性 2
1.8 眾核和新異構係統 2
1.9 書名中沒有Xeon Phi與新異構架構編程 3
1.10 眾核的未來 3
1.11 下載 3
1.12 更多信息 4
第2章從正確到正確&高效:Godunov
格式的Hydro2D案例學習 5
2.1 現代計算機上的科學計算 5
2.1.1 現代計算環境 6
2.1.2 CEA的Hydro2D 6
2.2 衝擊流體動力學的一種數值方法 7
2.2.1 歐拉方程 7
2.2.2 Godunov方法 7
2.2.3 哪裏需要優化 9
2.3 現代計算機架構的特徵 9
2.3.1 麵嚮性能的架構 9
2.3.2 編程工具和運行時 10
2.3.3 計算環境 11
2.4 通嚮高性能的路 11
2.4.1 運行Hydro2D 11
2.4.2 Hydro2D的結構 12
2.4.3 優化 15
2.4.4 內存使用 16
2.4.5 綫程級並行 17
2.4.6 算術效率和指令級並行 24
2.4.7 數據級並行 26
2.5 總結 32
2.5.1 協處理器與處理器 32
2.5.2 水漲船高 32
2.5.3 性能策略 33
2.6 更多信息 34
第3章HBM上的SIMD與並發優化 36
3.1應用程序:HIROMB-BOOS-MODEL 36
3.2 關鍵應用:DMI 36
3.3 HBM執行配置文件 37
3.4 HBM優化綜述 38
3.5 數據結構:準確定位位置 38
3.6 HBM上的綫程並行 41
3.7 數據並行:SIMD嚮量化 45
3.7.1 零散的可優化部分 46
3.7.2 過早抽象是萬惡之源 48
3.8 結果 50
3.9 詳情分析 51
3.10 處理器與協處理器可擴展性對比 52
3.11 CONTIGUOUS屬性 53
3.12 總結 54
3.13 參考文獻 54
3.14 更多信息 55
第4章 流體動力學方程優化 56
4.1 開始 56
4.2 1.0版本:基礎版本 57
4.3 2.0版本:綫程盒 59
4.4 3.0版本:棧內存 63
4.5 4.0版本:分塊 63
4.6 5.0版本:嚮量化 64
4.7Intel Xeon Phi協處理器上的運行結果 68
4.8 總結 69
4.9 更多信息 70
第5章 分階段準同步柵欄 71
5.1 如何改善代碼 74
5.2 如何進一步改善代碼 74
5.3 超綫程方陣 74
5.4關於該方案哪些地方不是最優的 75
5.5 超綫程方陣編碼 76
5.5.1如何確定內核間兄弟綫程和內核內HT綫程 77
5.5.2 超綫程方陣手動分區方法 77
5.5.3 吸取教訓 79
5.6 迴到工作 80
5.7 數據對齊 81
5.7.1 盡可能使用對齊的數據 81
5.7.2 冗餘未必是件壞事 81
5.8 深入討論分階段準同步柵欄 84
5.9 如何節省時間 86
5.10 幾個留給讀者的優化思考 90
5.11類似Xeon Phi協處理器的Xeon主機性能優化 91
5.12 總結 92
5.13 更多信息 92
第6章 故障樹錶達式並行求解 93
6.1 動機和背景 93
6.1.1 錶達式 93
6.1.2 錶達式選擇:故障樹 93
6.1.3 程序實例中的故障樹:基本模擬 93
6.2 實例實現 94
6.3 其他因素 101
6.4 總結 101
6.5 更多信息 101
第7章 深度學習的數值優化 102
7.1 擬閤目標函數 102
7.2 目標函數與主成分分析 105
7.3 軟件及樣例數據 106
7.4 訓練數據 109
7.5 運行時間 109
7.6 擴展結果 111
7.7 總結 111
7.8 更多信息 112
第8章 優化聚集/分散模式 113
8.1 聚集/分散在Intel架構下的說明 114
8.2 聚集/分散模式在分子動力學中的應用 115
8.3 優化聚集/分散模式 117
8.3.1 提高時間和空間的局部性 117
8.3.2 選擇一種適當的數據布局:AoS與SoA 118
8.3.3 AoS和SoA之間的動態轉換 119
8.3.4 分攤聚集/分散和轉換的開銷 122
8.4 總結 123
8.5 更多信息 123
第9章N體問題直接法的眾核實現 125
9.1 N體模擬 125
9.2 初始解決方案 125
9.3 理論極限 126
9.4 降低開銷和對齊數據 128
9.5 優化存儲層次 131
9.6 改進分塊 133
9.7 主機端的優化 135
9.8 總結 136
9.9 更多信息 136
第10章 N體方法 137
10.1 快速N體方法和直接N體內核 137
10.2 N體方法的應用 138
10.3 直接N體代碼 138
10.4 性能結果 141
10.5 總結 142
10.6 更多信息 142
第11章 使用OpenMP 4.0實現動態負載均衡 144
11.1 最大化硬件利用率 144
11.2 N體內核 146
11.3 卸載版本 149
11.4 第一個處理器與協處理器協作版本 150
11.5 多協處理器版本 152
11.6 更多信息 155
第12章 並發內核卸載 156
12.1 設定上下文 156
12.1.1 粒子動力學 156
12.1.2 本章結構 157
12.2 協處理器上的並發內核 158
12.2.1 協處理器設備劃分和綫程關聯 158
12.2.2 並發數據傳輸 163
12.3 在PD中使用並發內核卸載進行作用力計算 166
12.3.1 使用牛頓第三定律並行評估作用力 166
12.3.2 實現作用力並發計算 167
12.3.3 性能評估:之前與之後 171
12.4 總結
前言/序言
High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches本書囊括瞭69位作者的Intel Xeon Phi協處理器並行編程經驗,他們將處理器和協處理器的性能發揮得淋灕盡緻。其中討論瞭並行編程中許多關鍵的挑戰和技術,並給齣瞭令人激動的成果。大多數章節展示如何良好地進行擴展和嚮量化,這將有利於在多核處理器和眾核Intel Xeon Phi協處理器上獲得更好的性能。其他章節揭示如何在提供瞭通用編程模型的係統下利用由Intel Xeon處理器和Intel Xeon Phi協處理器組成的新異構係統。書中還提供瞭關於部署、管理、監控與運行這些新異構係統和集群的專傢建議。
來自61個內核的靈感:編程新紀元對我們來說,比Intel Xeon Phi協處理器的成功更引人矚目的是Intel Xeon Phi協處理器對並行編程的激勵。這個協處理器開啓瞭編程的新篇章。而在多達61個內核上的並行編程似乎遠比在4個或者8個內核上的並行編程更有吸引力。它激發瞭人們將並行編程技術首次應用於一些應用程序以及改進已有的並行應用程序的興趣。它激勵人們研究真正可擴展的並行編程,而不僅僅是在隻有少量並行(比如四核處理器上)時取得的尚可(有時甚至微小)的性能提高。
Intel Xeon Phi協處理器為並行化帶來瞭變革,為在其中探索的人們帶瞭巨大的機遇。在這個過程中,我們不需要新的編程模型、新的語言或者新的工具。本書提供的並行編程工作和思想,描述瞭如何將舊的技術應用到新的異構編程平颱上。這將幫助我們挖掘這一平颱的巨大潛力。
我們非常感謝各位作者。各章的作者緻力於在這個令人鼓舞的強大設備上編程。工作之餘,他們為我們詳述自己的工作,以便使我們學習他們的成功經驗。我們希望你能夠從中受益,並在這個並行計算的新時代獲得成功。
緻謝本書的完成首先要感謝為此付齣努力的軟件開發工程師們,他們在工作之餘與我們分享經驗。本書濃縮瞭各位作者的成果。他們的名字列在其所寫章節的開頭,“作者簡介”中有關於他們的簡要介紹。我們要感謝所有作者堅持不懈的努力與理解。
感謝我們共同的朋友Sverre Jarp在“推薦序”中分享他獨特的見解,感謝Joe Curley鼓勵我們完成這件幾乎不可能完成的事情。
James Reinders感謝妻子Susan Meredith,她的支持對於本書的完成至關重要。同時,James也感謝女兒Katie和兒子Andrew一直以來的大力支持。最後,James要感謝閤著者和朋友Jim Jeffers,感謝他又一次成為完美搭檔。
Jim Jeffers感謝妻子Laura一如既往的支持和鼓勵。Jim感謝孩子(包括孩子們的配偶)Tim、Patrick、Colleen、Sarah、Jon,尤其是剛齣生的孫女Hannah,他們無時無刻不在鼓舞著他。最後,Jim非常感謝閤著者和朋友James Reinders,感謝他的專業技能和指導,感謝他堅定地恪守承諾使這本書從概念變成現實。
感謝Joe Curley、Bob Burroughs、Herb Hinstorff、Rob Farber和Nathan Schultz提供的支持、指導和反饋。
感謝整個Morgan Kaufmann團隊的辛勤工作,包括與我們直接閤作的三個人:Todd Green、Lindsay Lawrence和Priya Kumaraguruparan。
許多同事提供瞭信息、建議和想法。當然,還有很多人直接或間接地提供瞭幫助,對此我們深錶感激。感謝所有幫助過我們的人,並對我們忘記提到名字的所有人錶示歉意。
感謝所有人。
——Jim JeffersJames ReindersIntel公司2014年11月
高性能並行珠璣:多核和眾核編程方法 下載 mobi epub pdf txt 電子書