| 書[0名0]: | 多核與GPU編程:工具、方[0法0]及實踐|5206918 |
| 圖書定價: | 129元 |
| 圖書作者: | (阿聯酋)傑拉西莫斯·巴拉斯(Gerassimos Barlas) |
| 齣版社: | 機械工業齣版社 |
| 齣版日期: | 2017/2/1 0:00:00 |
| ISBN號: | 9787111557685 |
| 開本: | 16開 |
| 頁數: | 0 |
| 版次: | 1-1 |
| 作者簡介 |
| Gerassimos Barlas 沙迦美[0國0][0大0][0學0]計算機科[0學0]與工程係教授。他的研究興趣包括並行算[0法0]、開發、分析,以及負載平衡的建模框架,分布式視頻點播。Barlas教授講授並行編程課程已有12年時間,早在20世紀90年代,他就開始研究並行計算,並積[0極0]參與並行和分布式係統可分負載理論這一新[0領0]域的研究工作。 |
| 內容簡介 |
| 本書從並行軟件的實現、調試、[0優0]化和剖析四個方麵,詳細討論瞭[0當0]前主要的並行計算關鍵技術,主要內容包括:多核和並行程序設計、共享內存編程中的綫程與OpenMP、分布式內存編程、GPU編程、Thrust模闆庫、負載均衡等。本書結閤具體的代碼和案例分析,揭示瞭如何使用庫或者指令創建多核應用,如何使用MPI開發分布式應用程序,如何使用CUDA開發高性能GPU程序,如何實現負載均衡,以及如何針對目標多核平颱進行程序剖析和調試等。本書可供從事高性能計算技術研究的專業人員參考,也可作為高校相關專業的教[0學0]用書。 |
| 目錄 |
譯者序 前 言 [0第0]1章 概述 1 1.1 多核計算機時代 1 1.2 並行計算機的分類 3 1.3 現代計算機概覽 4 1.3.1 Cell BE處理器 5 1.3.2 NVIDIA Kepler 6 1.3.3 AMD APU 9 1.3.4 從多核到眾核:Tilera TILE-Gx8072和Intel Xeon Phi 10 1.4 性能指標 12 1.5 並行程序性能的預測與測量 16 1.5.1 Amdahl定律 18 1.5.2 Gustafson-Barsis定律 20 [0第0]2章 多核和並行程序設計 23 2.1 引言 23 2.2 PCAM方[0法0][0學0] 24 2.3 分解模式 26 2.3.1 任務並行 27 2.3.2 分而治之分解 28 2.3.3 幾何分解 30 2.3.4 遞歸數據分解 32 2.3.5 流水綫分解 35 2.3.6 基於事件的閤作分解 39 2.4 程序結構模式 39 2.4.1 單程序多數據 40 2.4.2 多程序多數據 40 2.4.3 主/從 41 2.4.4 map-reduce 41 2.4.5 fork/join 42 2.4.6 循環並行 44 2.5 匹配分解模式和程序結構模式 44 [0第0]3章 共享內存編程:綫程 46 3.1 引言 46 3.2 綫程 48 3.2.1 綫程的定義 48 3.2.2 綫程的作用 49 3.2.3 綫程的生成和初始化 49 3.2.4 在綫程間共享數據 55 3.3 設計考慮 57 3.4 信號量 58 3.5 經典問題中的信號量 62 3.5.1 生産者–消費者 63 3.5.2 終止處理 66 3.5.3 理發師問題:引入公平性 75 3.5.4 讀者–寫者問題 80 3.6 monitor 84 3.6.1 設計方[0法0]1:monitor內部的關鍵區 87 3.6.2 設計方[0法0]2:monitor控製關鍵區的入口 87 3.7 經典問題中的monitor 91 3.7.1 重新考慮生産者–消費者問題 91 3.7.2 重新考慮讀者–寫者問題 95 3.8 動態綫程管理與靜態綫程管理 102 3.8.1 Qt綫程池 102 3.8.2 綫程池的創建和管理 103 3.9 調試多綫程應用 111 3.10 高層次結構:無須顯式利用綫程的多綫程編程 115 3.10.1 並發map 116 3.10.2 map-reduce 118 3.10.3 並發過濾 120 3.10.4 filter-reduce 121 3.10.5 案例研究:多綫程存儲 122 3.10.6 案例研究:多綫程圖像匹配 131 [0第0]4章 共享內存編程:OpenMP 140 4.1 引言 140 4.2 個OpenMP程序 141 4.3 變量作用域 144 4.3.1 定積分OpenMP版本V.0:人工劃分 146 4.3.2 定積分OpenMP版本 V.1:無競爭條件的人工劃分 147 4.3.3 定積分OpenMP V.2:基於鎖的隱式劃分 148 4.3.4 定積分OpenMP V.3:基於歸約的隱式劃分 150 4.3.5 變量作用域總結 151 4.4 循環級並行 152 4.4.1 數據依賴 154 4.4.2 嵌套循環 162 4.4.3 調度 162 4.5 任務並行 166 4.5.1 sections指令 166 4.5.2 task指令 171 4.6 同步結構 177 4.7 正確性與[0優0]化問題 183 4.7.1 綫程安全 183 4.7.2 假共享 187 4.8 案例研究:OpenMP中的排序算[0法0] 192 4.8.1 自下而上歸並排序算[0法0]的OpenMP實現 192 4.8.2 自上而下歸並排序算[0法0]的OpenMP實現 195 4.8.3 性能[0評0]估 200 [0第0]5章 分布式內存編程 203 5.1 通信進程 203 5.2 MPI 204 5.3 核心概念 205 5.4 你的個MPI程序 206 5.5 程序體係結構 208 5.5.1 SPMD 208 5.5.2 MPMD 209 5.6 點對點通信 210 5.7 可選的點對點通信模式 214 5.8 非阻塞通信 216 5.9 點對點通信小結 220 5.10 錯誤報告與處理 220 5.11 集閤通信簡介 222 5.11.1 分發 226 5.11.2 收集 231 5.11.3 歸約 233 5.11.4 多對多收集 237 5.11.5 多對多分發 240 5.11.6 多對多歸約 245 5.11.7 全局同步 245 5.12 通信對象 245 5.12.1 派生數據類型 246 5.12.2 打包/解包 253 5.13 節點管理:通信器和組 254 5.13.1 創建組 255 5.13.2 建立內部通信器 257 5.14 單邊通信 259 5.14.1 RMA通信函數 261 5.14.2 RMA同步函數 262 5.15 I/O注意事項 270 5.16 MPI多進程和多綫程混閤編程 276 5.17 時序和性能測量 279 5.18 調試和分析MPI程序 279 5.19 Boost.MPI庫 283 5.19.1 阻塞和非阻塞通信 285 5.19.2數據序列化 289 5.19.3集閤通信 292 5.20 案例研究:有限擴散聚閤模型 295 5.21 案例研究:暴力加密破解 300 5.21.1 版本1:“基本型”MPI 300 5.21.2 版本2:MPI與OpenMP的結閤 305 5.22 案例研究:主/從式並行模型的MPI實現 308 5.22.1 簡單主/從式設置 309 5.22.2 多綫程主/從式設置 316 [0第0]6章 GPU編程 333 6.1 GPU編程簡介 333 6.2 CUDA編程模型:綫程、綫程塊、綫程網格 335 6.3 CUDA執行模型:流多處理器和warp 340 6.4 CUDA程序編譯過程 344 6.5 構建CUDA項目 347 6.6 內存層次結構 349 6.6.1 本地內存/寄存器 355 6.6.2 共享內存 356 6.6.3 常量內存 363 6.6.4 texture和surface內存 368 6.7 [0優0]化技術 369 6.7.1 綫程組織設計 369 6.7.2 kernel結構 378 6.7.3 共享內存訪問 382 6.7.4 全局內存訪問 388 6.7.5 page-locked與zero-copy內存 392 6.7.6 統一內存 394 6.7.7 異步執行和流 397 6.8 動態並行 403 6.9 CUDA程序的調試 407 6.10 CUDA程序剖析 410 6.11 CUDA和MPI 412 6.12 案例研究 417 6.12.1 分形集閤計算 417 6.12.2 塊加密算[0法0] 426 [0第0]7章 Thrust模闆庫 452 7.1 引言 452 7.2 使用Thrust的步 453 7.3 Thrust數據類型 456 7.4 Thrust算[0法0] 459 7.4.1 變換算[0法0] 460 7.4.2 排序與查詢 463 7.4.3 歸約 468 7.4.4 scan /前綴和 471 7.4.5 數據管理與處理 472 7.5 花式迭代器 475 7.6 交換設備後端 480 7.7 案例研究 481 7.7.1 濛特卡洛積分 481 7.7.2 DNA序列比對 485 [0第0]8章 負載均衡 493 8.1 引言 493 8.2 動態負載均衡:Linda的遺贈 494 8.3 靜態負載均衡:可分負載理論方[0法0] 495 8.3.1 建模開銷 496 8.3.2 通信設置 502 8.3.3 分析 503 8.3.4 總結:簡短的文獻綜述 510 8.4 DLTlib:分割工作負載的庫 513 8.5 案例研究 516 8.5.1 Mandelbrot集“電影”的混閤計算:動態負載均衡案例研究 516 8.5.2 分布式塊加密:靜態負載均衡案例研究 526 在綫資源 附錄A 編譯Qt程序 附錄B 運行MPI程序:準備與配置步驟 附錄C 測量時間 附錄D Boost.MPI 附錄E CUDA環境搭建 附錄F DLTlib 術語錶 參考文獻 |
最近剛入手一本叫做《多核與GPU編程:工具、方法及實踐》的書,本來對這類技術書籍總是抱持著一種“能學到一點是一點”的心態,沒想到這本書給我帶來瞭巨大的驚喜。它不像我之前看過的很多編程書籍那樣,充斥著枯燥的理論公式或者晦澀的算法描述。這本書的語言非常流暢,而且充滿瞭實際的例子和場景。作者似乎非常瞭解讀者在實際開發中會遇到哪些睏惑,並且有針對性地給齣瞭解決方案。 我特彆喜歡書中關於“工具”和“實踐”的部分。它不僅僅是教你如何寫代碼,更重要的是告訴你如何選擇閤適的工具,以及如何在真實的項目中應用這些技術。比如,在介紹調試並行程序時,書中列舉瞭多種常用的調試器和性能分析工具,並提供瞭詳細的使用指南和注意事項。我之前在處理一些復雜的並行bug時,總是抓耳撓腮,效率低下,看完這部分內容後,我感覺自己仿佛掌握瞭“神器”。而且,書中提到的許多實踐案例,都是非常貼近實際工作場景的,比如圖像處理、科學計算等領域的優化方案,讓我能夠立刻聯想到自己正在進行的開發任務,並從中獲得靈感。這種“學以緻用”的感覺,是其他很多書籍無法給予的。
評分讀《多核與GPU編程:工具、方法及實踐》這本書,我真是感受良多。作為一名在高性能計算領域摸爬滾打多年的工程師,我一直以來都在尋找能夠真正指導我如何高效利用現代硬件並行能力的實踐性書籍。這本書恰恰填補瞭我的一個重要空白。它並沒有像許多理論書籍那樣,僅僅羅列各種並行模型和算法,而是深入淺齣地講解瞭多核CPU和GPU在架構上的差異,以及如何根據這些差異來設計和優化並行程序。 尤其令我印象深刻的是,書中對各種常用編程模型的介紹,比如OpenMP、MPI、CUDA和OpenCL。作者並沒有停留在API的講解,而是花瞭大量篇幅去闡述這些模型背後的設計哲學和適用場景。例如,在討論OpenMP時,書中非常細緻地分析瞭其基於共享內存模型的特點,以及如何通過私有化、同步等機製來處理數據競爭。而在介紹CUDA時,則清晰地描繪瞭其基於SIMT(Single Instruction, Multiple Threads)的模型,並結閤大量實例展示瞭如何充分利用GPU的並行計算能力。我尤其喜歡書中關於內存層次結構和緩存一緻性問題的討論,這對於寫齣高性能並行代碼至關重要。很多時候,性能瓶頸並非源於計算本身,而是隱藏在內存訪問的效率低下上。書中提供的調優技巧和案例分析,讓我茅塞頓開,找到瞭不少之前難以解決的性能問題。
評分讀完《多核與GPU編程:工具、方法及實踐》這本書,我的第一感受是它非常“接地氣”。我是一個偏嚮於實際應用型開發者,對於那些過於抽象的理論知識,總是有點消化不良。這本書則完全不同,它從一開始就將我帶入瞭實際編程的場景中,讓我能夠立刻感受到並行編程的魅力和挑戰。 我最喜歡的部分是書中關於“工具”的介紹。作者花瞭很多篇幅去講解各種常用的並行編程工具,比如編譯器選項、調試器、性能分析器等等。這些工具在實際開發中扮演著至關重要的角色,而很多時候,我們隻是知道它們的存在,卻不瞭解如何有效地使用它們。這本書則詳細地介紹瞭這些工具的使用方法和技巧,並且提供瞭大量的實例,讓我能夠快速上手。我尤其喜歡書中關於“性能剖析”的章節,讓我能夠看到程序在運行時的具體錶現,從而找到性能瓶頸,並進行針對性的優化。此外,書中關於“跨平颱開發”和“移植性”的討論,也為我提供瞭很多寶貴的經驗。
評分最近接觸到一本名為《多核與GPU編程:工具、方法及實踐》的書,不得不說,這本書的視角非常獨特。它不像市麵上很多同類書籍那樣,僅僅停留在技術細節的堆砌,而是從一種更加宏觀和戰略性的角度來審視多核與GPU編程。作者似乎非常注重開發者在實際工作中所麵臨的挑戰,並且試圖提供一種更具指導意義的解決方案。 我尤其欣賞書中對於“實踐”部分的著墨。它並沒有止步於理論的講解,而是提供瞭大量真實世界的案例研究,並對這些案例進行瞭深入的分析。我從中學習到瞭如何在不同的應用場景下,選擇最閤適的並行化策略,以及如何有效地管理和協調大量的並行綫程。書中關於“內存管理”和“同步機製”的講解,也極具參考價值,這對於避免常見的並行編程錯誤,提高程序的穩定性和效率至關重要。我之前在開發過程中,經常因為對這些細節處理不當而導緻一些難以捉摸的bug。這本書就像一本“武功秘籍”,讓我掌握瞭許多“內功心法”,能夠從根源上解決問題。
評分我最近翻閱瞭一本關於《多核與GPU編程:工具、方法及實踐》的書,這本書的整體風格非常務實,而且內容深度也相當不錯。作為一名一直對並行計算感興趣,但又苦於缺乏係統指導的開發者來說,這本書就像給我指明瞭方嚮。它並沒有一開始就拋齣復雜的概念,而是循序漸進地引導讀者進入多核和GPU編程的世界。 書中對並行編程的“方法”的闡述,是我覺得最寶貴的部分。它不僅介紹瞭各種常用的並行編程模型,更重要的是,它深入剖析瞭這些模型的設計理念、優缺點以及適用範圍。我特彆喜歡書中關於“數據並行”和“任務並行”的討論,這讓我對如何分解問題,將計算任務有效地分配到不同的處理單元有瞭更清晰的認識。此外,書中關於“性能優化”的章節,也給我留下瞭深刻的印象。作者詳細講解瞭如何識彆性能瓶頸,如何進行代碼優化,以及如何利用各種分析工具來評估程序的性能。書中提供的具體案例分析,讓我能夠直觀地理解這些優化技巧的實際效果。我之前對某些性能問題一直很睏惑,看完書中的分析,感覺豁然開朗。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有