| 書[0名0]: | 並行算[0法0]設計與性能[0優0]化[按需印刷]|4706195 |
| 圖書定價: | 59元 |
| 圖書作者: | 劉文誌 |
| 齣版社: | [1機1] 械工業齣版社 |
| 齣版日期: | 2015-05-01 0:00:00 |
| ISBN號: | 9787111501022 |
| 開本: | 16開 |
| 頁數: | 202 |
| 版次: | 1-1 |
| 作者簡介 |
| 劉文誌 花[0名0]風辰,畢業於中[0國0]科[0學0]院研究生院,聞[0名0]於並行計算江湖,尤善異構並行計算(X86、ARM、GPU、APU、PHI)和[0大0]規模集群計算相關技術,有7年相關經驗,涉及圖像處理、計算 [1機1] 視覺、數據挖掘和石油勘探。曾任英偉達並行計算工程師(協助建立英偉達北京CUDA團隊)、百度在綫高級研發工程師(協助建立百度深度[0學0]習實驗室異構計算團隊)。 |
| 內容簡介 |
| 本書是"並行計算與性能[0優0]化"係列的[0第0]1本,主要講解瞭並行計算的核心理論、算[0法0]設計和實踐,以及代碼的性能[0優0]化,[0第0]2本和[0第0]3本則涵蓋瞭並行編程方[0法0]與[0優0]化實踐、科[0學0]計算與企業級應用的並行[0優0]化等重要主題,這些內容被許多開發人員視為"不傳之秘"。本書作者是[0國0]內的並行計算專傢,曾任英偉達並行計算工程師和百度在綫高級研發工程師,在該[0領0]域的經驗和修為[0極0]為深厚,他毫不吝嗇地將自己多年的積纍呈現在這3本書中,得到瞭百度深度[0學0]習研究院"傑齣科[0學0]傢"吳韌的高度[0評0]價和強烈推薦。 本書結閤[0大0]量示例和僞代碼,詳細介紹瞭單核代碼的性能[0優0]化和嚮量化技術,在現代多核處理器上如何設計並行算[0法0],以及基於GPU和移動處理器(ARM)的代碼性能[0優0]化與並行化。 全書12章,邏輯上分為四[0大0]部分: ·並行計算理論基礎 主要介紹並行現狀、與並行計算緊密相關的現代處理器的技術與特點,算[0法0]與程序性能的度量和分析的新舊標準及實用工具,以及代碼依賴關係的分析和去除處理。 ·代碼[0優0]化 [0首0]先從係統、應用、算[0法0]、函數、循環、語句和指令7[0大0]維度講解瞭常見的串行代碼[0優0]化手段,然後講解瞭如何通過多種方式將現有的串行代碼嚮量化和並行化,以提高效率和利用率。 ·並行算[0法0]設計考量 主要講解瞭如何設計[0優0]良的並行算[0法0]以及將並行算[0法0]映射到具體硬件上,涵蓋常見的並行編程環境、並行算[0法0]設計方[0法0]、並行算[0法0]的缺陷、編程模式實踐、一般準則,等等。 ·遺留代碼的並行化 主要講解瞭如何找齣軟件的計算熱點,如何閤理地選擇部分並行或者整體並行,然後將實現後的代碼嵌入原軟件,以提高企業現有代碼的利用率,並以實例加以說明。 |
| 目錄 |
前言 [0第0]1章 緒論 1 1.1 並行和嚮量化的作用 2 1.2 為什麼要並行或嚮量化 3 1.3 為什麼嚮量化或並行難 4 1.4 並行的替代方[0法0] 9 1.5 進程、綫程與處理器 10 1.6 並行硬件平颱 13 1.7 嚮量化和多核技術不是萬能的 17 1.8 本章小結 18 [0第0]2章 現代處理器特性 19 2.1 指令級並行 20 2.1.1 指令流水綫 20 2.1.2 亂序執行 22 2.1.3 指令多發射 22 2.1.4 分支預測 23 2.1.5 VLIW 23 2.2 嚮量化並行 24 2.2.1 SIMD 24 2.2.2 SIMT 25 2.3 綫程級並行 25 2.3.1 內核綫程和用戶綫程 26 2.3.2 多綫程編程庫 26 2.3.3 多核上多綫程並行要注意的問題 27 2.3.4 多綫程程序在多核和單核上運行的不同 28 2.4 緩存 28 2.4.1 緩存層次結構 29 2.4.2 緩存一緻性 30 2.4.3 緩衝不命中 31 2.4.4 寫緩存 32 2.4.5 越過緩存 33 2.4.6 硬件預取 34 2.4.7 緩存結構 34 2.4.8 映射策略 35 2.5 虛擬存儲器和TLB 36 2.6 NUMA技術 37 2.7 本章小結 39 [0第0]3章 算[0法0]性能和程序性能的度量與分析 40 3.1 算[0法0]分析的性能度量標準 40 3.1.1 時間復雜度與空間復雜度 41 3.1.2 實現復雜度 43 3.2 程序和指令的性能度量標準 47 3.3 程序性能[0優0]化的度量標準 52 3.3.1 加速比與並行效率 52 3.3.2 Amdahl定律和Gustafson定律 53 3.4 程序性能分析實用工具 54 3.5 本章小結 60 [0第0]4章 串行代碼性能[0優0]化 61 4.1 係統級彆 62 4.2 應用級彆 65 4.3 算[0法0]級彆 68 4.4 函數級彆 71 4.4.1 函數調用參數 71 4.4.2 內聯小函數 72 4.5 循環級彆 72 4.5.1 循環展開 72 4.5.2 循環纍積 73 4.5.3 循環閤並 74 4.5.4 循環拆分 74 4.6 語句級彆 75 4.6.1 減少內存讀寫 75 4.6.2 選用盡量小的數據類型 76 4.6.3 結構體對齊 77 4.6.4 錶達式移除 78 4.6.5 分支[0優0]化 78 4.6.6 [0優0]化交換性能 82 4.7 指令級彆 83 4.8 本章小結 84 [0第0]5章 依賴分析 86 5.1 指令級依賴 87 5.1.1 結構化依賴 87 5.1.2 數據依賴 88 5.1.3 控製依賴 89 5.2 循環級依賴 90 5.2.1 循環數據依賴 90 5.2.2 循環控製依賴 92 5.3 寄存器重命[0名0] 93 5.4 本章小結 94 [0第0]6章 並行編程模型及環境 95 6.1 並行編程模型 95 6.1.1 指令級並行 96 6.1.2 嚮量化並行 97 6.1.3 易並行 98 6.1.4 任務並行 99 6.1.5 數據並行 100 6.1.6 循環並行化 101 6.1.7 流水綫並行 102 6.1.8 區域分解並行 103 6.1.9 隱式和顯式並行化 104 6.1.10 SPMD 104 6.1.11 共享存儲器並行 105 6.1.12 分布式存儲器並行 105 6.2 常見並行編程環境 105 6.2.1 MPI 106 6.2.2 OpenMP 108 6.2.3 fork/pthread 108 6.2.4 CUDA 109 6.2.5 OpenCL 109 6.2.6 OpenACC 110 6.2.7 NEON內置函數 111 6.2.8 SSE/AVX內置函數 111 6.3 本章小結 111 [0第0]7章 並行算[0法0]設計方[0法0] 114 7.1 劃分 114 7.1.1 分而治之 115 7.1.2 劃分原則 116 7.1.3 常見劃分方[0法0] 116 7.1.4 並行性和局部性 117 7.2 通信 118 7.2.1 操作的原子性 119 7.2.2 結果的可見性 120 7.2.3 順序一緻性 121 7.2.4 函數的可重入與綫程安全 122 7.2.5 volatile關鍵字 122 7.2.6 鎖 123 7.2.7 臨界區 126 7.2.8 原子操作 127 7.2.9 柵欄 128 7.3 結果歸並 129 7.4 負載均衡 129 7.4.1 靜態負載均衡 130 7.4.2 動態負載均衡 130 7.4.3 動態負載均衡算[0法0]的一般步驟 131 7.5 本章小結 133 [0第0]8章 並行算[0法0]缺陷 134 8.1 啓動結束時間 134 8.2 負載均衡 135 8.3 競寫 136 8.4 鎖 136 8.4.1 死鎖 137 8.4.2 活鎖 139 8.5 餓死 140 8.6 僞共享 140 8.7 原子操作 141 8.8 存儲器柵欄 142 8.9 緩存一緻性 142 8.10 順序一緻性 143 8.11 volatile同步錯誤 143 8.12 本章小結 144 [0第0]9章 並行編程模式實踐 146 9.1 map模式 147 9.2 reduce模式 149 9.3 結閤map和reduce模式 152 9.4 scan模式 155 9.5 zip/unzip 模式 156 9.6 流水綫模式 159 9.7 本章小結 161 [0第0]10章 如何並行遺留代碼 162 10.1 找齣軟件的計算熱點 163 10.2 判斷是否並行化熱點 164 10.3 設計算[0法0]並實現 166 10.3.1 選擇何種工具進行嚮量化或並行化 166 10.3.2 重構熱點代碼 167 10.3.3 依據硬件實現算[0法0] 168 10.4 將實現後的代碼嵌入原軟件 169 10.4.1 混閤編譯 169 10.4.2 動態鏈接庫 170 10.5 示例:如何並行化word2vec 171 10.6 本章小結 174 [0第0]11章 [0超0]級並行 176 11.1 [0超0]級並行方式編程 176 11.1.1 進程+綫程 177 11.1.2 進程+GPU綫程 178 11.1.3 綫程+GPU綫程 181 11.1.4 綫程+嚮量指令 181 11.1.5 進程+綫程+嚮量指令 182 11.1.6 進程+綫程+GPU綫程 183 11.2 矩陣乘[0法0] 184 11.2.1 多 [1機1] CPU矩陣乘[0法0] 184 11.2.2 單 [1機1] 多GPU矩陣乘[0法0] 187 11.2.3 多 [1機1] 多GPU矩陣乘[0法0] 188 11.3 本章小結 189 [0第0]12章 並行算[0法0]設計的一般準則 190 12.1 並行算[0法0]設計14準則 190 12.2 本章小結 194 附錄A 整型數據與浮點數據 195 |
| 編輯推薦 |
| 並行計算[0領0]域著[0名0]專傢撰寫,百度深度[0學0]習研究院"傑齣科[0學0]傢"吳韌鼎力推薦 結閤[0大0]量示例和僞代碼,全麵講解如何通過並行算[0法0]設計實現單核/多核處理器、GPU和移動處理器的性能[0優0]化及相關的並行化秘技,並[0首0]次提齣實現復雜度的全新性能度量標準 |
我一直對並行計算的效率瓶頸和優化策略抱有極大的好奇心,尤其是在多核處理器和大規模分布式係統日益普及的今天,如何榨乾每一分計算潛力是工程界的難題。這本書在處理性能分析的部分,展現齣瞭驚人的洞察力。它沒有停留在理論層麵的討論,而是深入剖析瞭現代硬件架構(比如緩存一緻性、內存訪問延遲)如何影響並行程序的實際運行效率。書中給齣的性能評估工具和測試方法非常實用,都是業界常用的標準,這讓書中的結論具有極高的可驗證性。我嘗試用書中介紹的一種新的同步機製來重構我正在進行的一個項目中的一個性能熱點,結果程序的吞吐量果然有瞭肉眼可見的提升。這本書的價值在於,它不僅教你“怎麼做”,更讓你理解“為什麼這麼做會快(或慢)”,這種知其然並知其所以然的深度,是極品技術書的標誌。
評分我最近迷上瞭關於數據結構與算法的深入研究,希望能找到一本能係統梳理復雜係統設計思路的寶典。這本新購入的讀物,其敘事方式簡直是教科書級彆的典範。作者在引入每一個核心概念時,不是直接拋齣復雜的公式或代碼,而是先用一個非常貼近現實世界的比喻來打比方,讓我這個非科班齣身的“半路齣傢”的學習者也能迅速領會其精髓。隨後的理論推導部分,邏輯鏈條極其嚴密,每一步的過渡都自然流暢,絕不含糊帶過那些容易産生歧義的關鍵步驟。更難得的是,書中對不同算法的適用場景和局限性進行瞭深入剖析,讓我明白“沒有最好的算法,隻有最閤適的算法”這一鐵律。讀完一個章節,我感覺自己不僅掌握瞭知識點,更重要的是,建立起瞭一套分析和解決問題的思維框架,這種底層邏輯的構建,遠比單純記憶幾個算法要寶貴得多。
評分說實話,市麵上很多號稱“深入”的技術書籍,讀起來就像是把一堆冷冰冰的API文檔堆砌在一起,枯燥乏味到讓人昏昏欲睡。然而,這本書的章節安排簡直就像一場精心設計的馬拉鬆賽跑,節奏感把握得極佳。開篇的理論基礎鋪墊得非常平穩,如同慢跑前的熱身;到瞭中間部分,難度陡然上升,開始接觸到一些需要反復推敲的復雜模型,但作者巧妙地穿插瞭若乾小型案例分析,如同賽程中的補給站,讓你在精神疲憊時能快速恢復狀態。最精彩的是最後幾章,它將前麵所有看似分散的知識點匯聚一堂,構建起一個宏大且完整的應用藍圖。整個閱讀過程是漸進式的、充滿挑戰但又不至於讓人産生挫敗感,讀完後有一種酣暢淋灕的成就感,仿佛自己真的跟隨著作者完成瞭一次高難度的技術攀登。
評分這本書的裝幀設計真是讓人眼前一亮,封麵選用的那種啞光質感配上簡潔的字體排版,透露齣一種專業而又不失格調的氣息。內頁的紙張選擇也十分考究,印刷清晰,字跡飽滿,即便是長時間閱讀,眼睛也不會感到明顯的疲勞,這對於一本技術類的書籍來說至關重要。裝訂上非常紮實,書脊的處理很到位,無論你怎麼翻閱,都不會齣現散頁的擔憂,看得齣齣版方在製作工藝上的用心。特彆是章節標題和重要概念的標注,采用瞭不同的字體或加粗處理,邏輯層次感非常清晰,讓人在快速瀏覽時也能迅速抓住重點。整體而言,這本書拿在手裏沉甸甸的,給人一種“乾貨滿滿”的信賴感,光是這外在的精緻感,就已經為閱讀體驗打下瞭堅實的基礎,比很多粗製濫造的技術書強太多瞭。
評分這本書在內容組織上的靈活度,簡直是為自學者量身定做的。我發現自己可以完全跳過已經掌握的基礎章節,直接切入我最感興趣的“異構計算加速”部分,而不會感到任何閱讀上的障礙,這得益於其清晰的模塊化結構。更讓我驚喜的是,書中對不同編程模型(如CUDA、OpenMP)的對比分析異常客觀和細緻,沒有錶現齣對任何單一技術的偏愛,而是基於性能和可移植性的角度進行權衡。作者在解釋那些晦澀難懂的同步原語時,甚至附帶瞭大量的圖形化流程圖輔助理解,這對於習慣於視覺化學習的人來說,簡直是救星。對於我這種需要快速掌握新技術並應用到實際項目中的工程師而言,這種高度的實用性和清晰的指引,遠比一篇篇晦澀的論文集來得直接有效,絕對是一本可以常年放在手邊,隨時翻閱查閱的工具書。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有