Intel Xeon Phi 協處理器高性能編程指南 (Intel Xeon Phi Coprocessor High Performance Programming) Intel Xeon Phi协处理器高性能编程指南

傑弗斯 (Jim Jeffers), 仁達敬 (James Reinders)

  • 出版商: 人民郵電
  • 出版日期: 2014-04-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 319
  • 裝訂: 平裝
  • ISBN: 7115347840
  • ISBN-13: 9787115347848
  • 無法訂購

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

商品描述

<內容簡介>

《Intel Xeon Phi協處理器高性能編程指南》由英特爾的技術專家傑弗斯、仁達敬撰寫,是目前為止最全面、最系統地講解在英特爾至強處理器和至強融核協處理器上進行並行應用開發的專著。
    本書從賽車與至強融核協處理器之間的相似性入手,抽絲剝繭、層層深入,探討實際案例指導編程應用,並對協處理器向量化、協處理器分載模式、協處理器架構及Linux系統、數學庫,以及協處理器採樣、計時與優化等進行了詳細的解析,是一本詳盡的至強融核協處理器使用參考指南。特別是,本書所採用的方法兼容了對未來編程模式的展望和支持,書中所闡述的統一、標準和靈活的編程模式,對於未來作為獨立處理器使用的MIC眾核產品同樣適用。
    《Intel Xeon Phi協處理器高性能編程指南》適用於想要系統學習英特爾至強融核協處理器編程的讀者,無需借助其他參考書,即可循序漸進、全面掌握。

<目錄>

第1章  緒論
  1.1  更加並行化
  1.2  為什麼需要Intel Xeon Phi協處理器
  1.3  協處理器平臺
  1.4  第一款Intel Xeon Phi協處理器
  1.5  控制「Ninja鴻溝」於一定範圍
  1.6  移植與優化的雙重優勢
  1.7  何時使用Intel Xeon Phi協處理器
  1.8  實現處理器性能最優
  1.9  為何擴展超過100個線程如此重要
  1.10  最大化並行程序性能
  1.11  評估高度並行執行的能力
  1.12  對於GPU是怎麼樣的
  1.13  易於移植,也易於提升性能
  1.14  性能移植
  1.15  超線程與多線程
  1.16  協處理器主要使用模型:MPI和Offload
  1.17  編譯器和編程模型
  1.18  緩存優化
  1.19  案例和細節
  1.20  更多信息
第2章  高性能封閉追蹤測試驅動
  2.1  揭開引擎蓋:協處理器詳解
  2.2  發動汽車:與協處理器溝通
  2.3  輕鬆上路:首次運行代碼
  2.4  開始加速:多線程運行代碼
  2.5  全速行駛:使用所有核心
  2.6  輕鬆過彎:訪存帶寬
  2.7  高速漂移:內存帶寬最大化
  2.8  總結
第3章  一場鄉間公路友誼賽
  3.1  賽前準備:本章重點
  3.2  初識賽道:9點模板演算法
  3.3  起跑線上:9點模板基準程序
  3.4  路在前方:運行基準模板代碼
  3.5  石子路上:向量化而未擴展
  3.6  全力比賽:向量化加上規模擴展
  3.7  扳手和潤滑油:代碼微調
  3.7.1  基準校正
  3.7.2  使用流存儲
  3.7.3  使用2MB大型存儲頁
  3.8  總結
  3.9  更多信息
第4章  都市暢遊:實際代碼優化案例
  4.1  選擇方向:基本的擴散演算法
  4.2  到達路口:計算邊界效應
  4.3  尋找林蔭大道:代碼擴展化
  4.4  雷霆之路:保證向量化
  4.5  剝離:從最內層循環開始
  4.6  嘗試辛烷含量更高的燃料:利用數據局部性與切片分塊提升速度
  4.7  高速駕駛認證:高速旅行的總結
第5章  大數據(向量)
  5.1  為什麼向量化
  5.2  如何向量化
  5.3  實現向量化的五種方法
  5.4  六步向量化方法論
  5.5  通過Cache流:佈局、對齊、預取數據
  5.5.1  為什麼數據佈局影響向量化性能
  5.5.2  數據校準
  5.5.3  預取
  5.5.4  流存儲
  5.6  編譯器技巧
  5.6.1  避免手動展開循環
  5.6.2  循環向量化的要求(英特爾編譯器)
  5.6.3  內聯的重要性,簡單性能分析的乾擾
  5.7  編譯器選項
  5.8  編譯器指導指令
  5.8.1  SIMD指令
  5.8.2  VECTOR與NOVECTOR指令
  5.8.3  IVDEP指令
  5.8.4  隨機數函數向量化
  5.8.5  充分向量化
  5.8.6  -opt-assume-safe-padding選項
  5.8.7  數據對齊
  5.8.8  在數組表示法(Array Notation)中權衡向量長度
  5.9  使用數組段(Array Section)支持向量化
  5.9.1  Fortran數組段
  5.9.2  Cilk Plus數組段和元素函數
  5.10  查看編譯器生成:彙編代碼檢測
  5.10.1  如何找到彙編代碼
  5.10.2  快速查看彙編代碼
  5.11  向量化數值結果差異
  5.12  總結
  5.13  更多信息
第6章  多任務(非多線程)
  6.1  OpenMP、Fortran2008、Intel TBB、Intel Cilk Plus、Intel MKL
  6.1.1  需在協處理器上創建任務
  6.1.2  線程池的重要性
  6.2  OpenMP
  6.2.1  並行處理模型
  6.2.2  指導性語句
  6.2.3  OpenMP上的有效控制
  6.2.4  嵌套
  6.3  Fortran 2008
  6.3.1  DO CONCURRENT
  6.3.2  DO CONCURRENT以及數據競爭
  6.3.3  DO CONCURRENT定義
  6.3.4  DO CONCURRENT對比FOR ALL
  6.3.5  DO CONCURRENT對比OpenMP「Parallel」
  6.4  Intel TBB
  6.4.1  發展歷史
  6.4.2  使用TBB
  6.4.3  parallel_for
  6.4.4  blocked_range
  6.4.5  Partitioners
  6.4.6  Parallel_reduce
  6.4.7  Parallel_invoke
  6.4.8  C + +11相關
  6.4.9  TBB總結
  6.5  Cilk Plus
  6.5.1  發展歷史
  6.5.2  從TBB借用組件
  6.5.3  向TBB提供組件
  6.5.4  關鍵字拼寫
  6.5.5  cilk_for
  6.5.6  cilk_spawn與cilk_sync
  6.5.7  Reducers(超對象)
  6.5.8  數組表示法與基本函數
  6.5.9  Cilk Plus總結
  6.6  總結
  6.7  更多信息
第7章  分載(Offload)
  7.1  兩種分載模式
  7.2  分載執行與本地執行
  7.2.1  非共享內存模式:使用分載編譯器指導指令(Pragma)
  7.2.2  共享虛擬內存模式:通過共享虛擬內存使用分載
  7.2.3  Intel數學函數庫(Intel MKL)自動分載
  7.3  分載的語言擴展支持
  7.3.1  分載的編譯器選項和環境變量
  7.3.2  分載的共享環境變量
  7.3.3  針對多個協處理器分載
  7.4  使用編譯器指導指令分載
  7.4.1  設置協處理器上的變量與函數
  7.4.2  指針變量的內存分配與管理
  7.4.3  時間優化:堅持分配的另外一個原因
  7.4.4  對C/C++目標代碼使用編譯器指導指令
  7.4.5  對Fortran語言中的目標代碼使用指導指令
  7.4.6  執行單一處理器時不創建代碼
  7.4.7  英特爾MIC架構預定義宏
  7.4.8  Fortran數組
  7.4.9  為部分C/C++數組分配內存
  7.4.10  為部分Fortran數組分配內存
  7.4.11  兩變量間的數據轉移
  7.4.12  分載代碼指令使用的限制條件
  7.5  在共享虛擬存儲器上使用分載
  7.5.1  使用共享內存及共享變量
  7.5.2  關於共享函數
  7.5.3  共享內存管理函數
  7.5.4  同步函數執行與異步函數執行:_Cilk_offload
  7.5.5  共享變量和函數:_Cilk_shared
  7.5.6  _Cilk_shared和Cilk_offload的使用規則
  7.5.7  處理器與目標之間的內存同步
  7.5.8  使用_Cilk_offload寫入具體目標代碼
  7.5.9  使用虛擬內存分載代碼的限制因素
  7.5.10  使用共享虛擬內存時定義持久性數據
  7.5.11  使用共享虛擬內存持久性數據的C++聲明
  7.6  關於異步計算
  7.7  關於異步數據轉移
  7.8  應用目標屬性至多個聲明
  7.8.1  分載使用的vec-report可選項
  7.8.2  測量分載區域的時間與數據
  7.8.3  _Offload_report
  7.8.4  在分載代碼中使用庫
  7.8.5  關於使用xiar和xild創建分載程序庫
  7.9  在協處理器上執行I/O文件
  7.10  從分載代碼中記錄stdout和stderr
  7.11  總結
  7.12  更多信息
第8章  協處理器架構
  8.1  Intel Xeon Phi協處理器產品家族
  8.2  協處理器卡的設計
  8.3  Intel Xeon Phi協處理器芯片概述
  8.4  協處理器核架構
  8.5  指令集和多線程處理
  8.6  緩存組織和內存訪問
  8.7  預取
  8.8  向量處理單元架構
  8.9  協處理器PCI-E系統接口和DMA
  8.10  協處理器電源管理
  8.11  可靠性、可用性和可維護性(RAS)
  8.12  協處理器系統管理控制器(SMC)
  8.12.1  傳感器
  8.12.2  散熱設計監控和控制
  8.12.3  風扇控制
  8.12.4  潛在應用影響
  8.13  基準測試
  8.14  總結
  8.15  更多信息
第9章  協處理器系統軟件
  9.1  協處理器軟件體系架構概述
  9.1.1  對稱性
  9.1.2  Ring級別:用戶態和內核態
  9.2  協處理器編程模型和選項
  9.2.1  寬度與深度
  9.2.2  MPI編程模型
  9.3  協處理器軟件體系架構組件
  9.4  英特爾眾核平臺軟件棧
  9.4.1  MYO: Mine Yours Ours
  9.4.2  COI:Coprocessor Offload Infrastructure
  9.4.3  SCIF:Symmetric Communications Interface
  9.4.4  Virtual networking(NetDev)、TCP/IP及sockets
  9.4.5  協處理器系統管理
  9.4.6  面向MPI應用程序的協處理器組件
  9.5  Linux對Intel Xeon Phi協處理器的支持
  9.6  優化內存分配的性能
  9.6.1  控制2MB內存頁的數量
  9.6.2  監控協處理器上2MB內存頁的數量
  9.6.3  分配2MB內存頁的方法示例
  9.7  總結
  9.8  更多信息
第10章  協處理器的Linux系統
  10.1  協處理器Linux基礎
  10.2  協處理器Linux系統的啟動和配置簡介
  10.3  協處理器Linux系統的默認配置
  10.4  修改協處理器配置
  10.4.1  可配置的組件
  10.4.2  配置文件
  10.4.3  配置啟動參數
  10.4.4  協處理器根文件系統
  10.5  micctrl工具
  10.5.1  協處理器狀態控制
  10.5.2  啟動協處理器
  10.5.3  關閉協處理器
  10.5.4  重新啟動協處理器
  10.5.5  重置協處理器
  10.5.6  協處理器配置初始化和信息傳播
  10.5.7  配置參數的輔助功能
  10.5.8  其他文件系統相關的幫助功能
  10.6  添加軟件
  10.6.1  文件系統創建流程
  10.6.2  添加文件到根文件系統
  10.6.3  示例:添加一組全局訪問文件
  10.7  Linux系統在協處理器上的啟動過程
  10.8  Linux機群中的協處理器
  10.8.1  Intel Cluster Ready
  10.8.2  如何使用Intel Cluster Checker
  10.8.3  Intel Cluster Checker對協處理器的支持
  10.9  總結
  10.10  更多信息
第11章  數學庫
  11.1  英特爾數學核心函數庫綜述
  11.2  英特爾數學核心函數庫與英特爾編譯器
  11.3  協處理器支持綜述
  11.3.1  自動分載控制函數
  11.3.2  設置環境變量
  11.4  在本地模式下使用協處理器
  11.5  使用自動分載模式
  11.5.1  如何開啟自動分載
  11.5.2  控製作業劃分
  11.5.3  有效使用自動分載技巧
  11.5.4  有、無分載情況下高效使用英特爾MKL的技巧
  11.6  使用編譯器輔助分載
  11.7  精度選擇和變化
  11.7.1  快速超越函數和數學演算法
  11.7.2  理解幾種可能的浮點演算法實現變種
  11.8  總結
  11.9  更多信息
第12章  MPI
  12.1  MPI總覽
  12.2  在Intel Xeon Phi上運行MPI
  12.3  預備工作
  12.4  從MPI進程中分載
  12.4.1  Hello World
  12.4.2  梯形積分演算法
  12.5  協處理器本地使用MPI
  12.5.1  Hello World(再次)
  12.5.2  梯形積分演算法(回顧)
  12.6  總結
  12.7  更多信息
第13章  採樣和計時
  13.1  協處理器事件監視寄存器
  13.2  效率指標
  13.2.1  CPI
  13.2.2  計算與數據訪問比率(Compute to Data Access Ratio)
  13.3  潛在性能問題
  13.3.1  通用緩存使用率(General Cache Usage)
  13.3.2  TLB失效
  13.3.3  VPU使用率
  13.3.4  內存帶寬
  13.4  Intel VTune Amplifier XE產品
  13.5  性能應用編程接口
  13.6  MPI分析:英特爾追蹤分析器與收集器
  13.6.1  生成跟蹤文件:面向只在協處理器上運行的應用
  13.6.2  生成跟蹤文件:面向同時在處理器和協處理器上運行的應用
  13.7  計時
  13.7.1  協處理器上的時鐘源
  13.7.2  MIC運行時間計數器(micetc)
  13.7.3  時間戳計數器(tsc)
  13.7.4  設置時鐘源
  13.7.5  時間結構
  13.7.6  時間懲罰
  13.7.7  在分載區(offload region)測量時間和數據
  13.8  總結
  13.9  更多信息
第14章  總結
  14.1  建議
  14.2  附加資源
  14.3  將推出另一本書
  14.4  感謝讀者反饋
術語表