高性能並行珠璣:多核和眾核編程方法 (High performaace parallelism pearls: multicore and many-core programming approaches) 高性能并行珠玑:多核和众核编程方法

James Reinders,Jim Jeffers

買這商品的人也買了...

商品描述

本書由Intel的技術專家撰寫,系統地講解在IntelXeon處理器和IntelXeonPhi協處理器上進行並行處理和編程的方法和技術,展示了更好地利用Intel處理器或其他多核處理器的系統計算潛力的有效方法。全書包括大量來自多個行業和不同領域的並行編程例子。每章既詳細講述所採用的編程技術,同時展示了其在IntelXeonPhi協處理器和多核處理器上的高性能結果。幾十個新的例子和案例顯示的“成功經驗”不但展現了這些強大系統的主要特徵,而且展示出如何在這些異構系統上保持並行化。

作者簡介

James Reinders

英特爾軟件總監,首席技術佈道師。參與多個旨在加強並行編程在工業界應用的工程研究和教育項目。他對多個項目做出了貢獻,包括世界上首例Teraflop級超級計算機(ASCI Red)和世界上首例Teraflop級微處理器(Intel Xeon Phi協處理器)。

Jim Jeffers

英特爾MIC(集成眾核)架構專家和首席工程師,對至強融核協處理器有著較為深入與全面的研究。

目錄大綱


出版者的話
譯者序
推薦序
前言
作者簡介

第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總結