注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語(yǔ)言/工具多核應(yīng)用編程實(shí)戰(zhàn)

多核應(yīng)用編程實(shí)戰(zhàn)

多核應(yīng)用編程實(shí)戰(zhàn)

定 價(jià):¥79.00

作 者: (美)戈夫 著,郭晴霞 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 程序設(shè)計(jì) 計(jì)算機(jī)/網(wǎng)絡(luò)

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115317506 出版時(shí)間: 2013-06-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 345 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《多核應(yīng)用編程實(shí)戰(zhàn)》是一本全面實(shí)用的多核應(yīng)用編程指南,旨在介紹如何編寫(xiě)功能正確、性能優(yōu)越且適合擴(kuò)展為在多個(gè)CPU核心的系統(tǒng)運(yùn)行的應(yīng)用程序。《多核應(yīng)用編程實(shí)戰(zhàn)》面向多種操作系統(tǒng)和處理器類(lèi)型引用程序示例,內(nèi)容涵蓋類(lèi)UNIX操作系統(tǒng)(Linux、OracleSolaris、OSX)和Windows系統(tǒng)上多核應(yīng)用的編寫(xiě)方法、多核的硬件實(shí)現(xiàn)對(duì)應(yīng)用程序的性能影響、編寫(xiě)并行應(yīng)用程序時(shí)要避免的潛在問(wèn)題,以及如何編寫(xiě)可擴(kuò)展至大量并行線程的應(yīng)用程序?!抖嗪藨?yīng)用編程實(shí)戰(zhàn)》適合所有C程序員學(xué)習(xí)參考。

作者簡(jiǎn)介

  Darryl Gove是Oracle SolarisStudio編譯團(tuán)隊(duì)的首席高級(jí)軟件工程師,負(fù)責(zé)對(duì)應(yīng)用程序以及基準(zhǔn)測(cè)試程序進(jìn)行分析、并行化和優(yōu)化。Darryl獲得了英國(guó)南安普頓大學(xué)的運(yùn)籌學(xué)碩士和博士學(xué)位,其著作包括SolarisApplication Programming(Prentice Hall,2008)、The Developer'sEdge(Sun Microsystems,2009)和OpenSPARCInternals(lulu.com,2008,合著)。此外,他經(jīng)常在個(gè)人博客www.darrylgove.com上發(fā)表關(guān)于優(yōu)化和編碼的文章。

圖書(shū)目錄

第1章 硬件、進(jìn)程和線程
1.1 計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)
1.2 多核處理器的緣起
1.2.1 在單芯片上支持多線程
1.2.2 通過(guò)處理器核心流水線作業(yè)提高指令發(fā)出率
1.2.3 使用緩存保存最近使用的數(shù)據(jù)
1.2.4 用虛擬內(nèi)存存儲(chǔ)數(shù)據(jù)
1.2.5 從虛擬地址轉(zhuǎn)換到物理地址
1.3 多處理器系統(tǒng)的特征
1.4 源代碼到匯編語(yǔ)言的轉(zhuǎn)換
1.4.1 32位與64位代碼的性能
1.4.2 確保內(nèi)存操作的正確順序
1.4.3 進(jìn)程和線程的差異
1.5 小結(jié)

第2章 高性能編碼
2.1 定義性能
2.2 了解算法復(fù)雜度
2.2.1 算法復(fù)雜度的示例
2.2.2 算法復(fù)雜度的重要性
2.2.3 謹(jǐn)慎運(yùn)用算法復(fù)雜度
2.3 結(jié)構(gòu)如何影響性能
2.3.1 在源代碼和生成結(jié)構(gòu)上權(quán)衡性能和便利性
2.3.2 利用庫(kù)結(jié)構(gòu)化應(yīng)用程序
2.3.3 數(shù)據(jù)結(jié)構(gòu)對(duì)性能的影響
2.4 編譯器的作用
2.4.1 兩種編譯器優(yōu)化
2.4.2 選擇合適的編譯器選項(xiàng)
2.4.3 如何用跨文件優(yōu)化提高性能
2.4.4 使用配置文件反饋
2.4.5 潛在的指針別名會(huì)如何抑制編譯器優(yōu)化
2.5 通過(guò)分析確定占用時(shí)間的地方
2.6 怎樣避免手動(dòng)優(yōu)化
2.7 從設(shè)計(jì)角度看性能
2.8 小結(jié)

第3章 識(shí)別并行機(jī)會(huì)
3.1 使用多進(jìn)程提高系統(tǒng)工作效率
3.2 多用戶使用一個(gè)系統(tǒng)
3.3 通過(guò)整合提高機(jī)器工作效率
3.3.1 用容器隔離共享一個(gè)系統(tǒng)的應(yīng)用程序
3.3.2 使用虛擬機(jī)監(jiān)控程序托管多個(gè)操作系統(tǒng)
3.4 采用并行機(jī)制提高單個(gè)任務(wù)的性能
3.4.1 理解并行應(yīng)用程序
3.4.2 并行如何影響算法的選擇
3.4.3 Amdahl定律
3.4.4 確定最大實(shí)際線程數(shù)
3.4.5 同步成本怎樣降低擴(kuò)展性
3.5 并行模式
3.5.1 使用SIMD指令的數(shù)據(jù)并行
3.5.2 通過(guò)進(jìn)程或線程實(shí)現(xiàn)并行化
3.5.3 多個(gè)獨(dú)立任務(wù)
3.5.4 多個(gè)松散耦合的任務(wù)
3.5.5 相同任務(wù)的多個(gè)副本
3.5.6 單個(gè)任務(wù)拆分到多個(gè)線程
3.5.7 使用流水線任務(wù)完成某個(gè)事項(xiàng)
3.5.8 將工作分配給客戶端和服務(wù)器
3.5.9 將責(zé)任劃分給生產(chǎn)者和消費(fèi)者
3.5.10 結(jié)合多種并行化策略
3.6 依賴關(guān)系對(duì)并行運(yùn)行代碼能力的影響
3.6.1 反依賴和輸出依賴
3.6.2 通過(guò)推測(cè)打破依賴
3.6.3 關(guān)鍵路徑
3.7 發(fā)現(xiàn)并行機(jī)會(huì)
3.8 小結(jié)

第4章 同步和數(shù)據(jù)共享
4.1 數(shù)據(jù)爭(zhēng)用
4.1.1 使用工具檢測(cè)數(shù)據(jù)爭(zhēng)用
4.1.2 避免數(shù)據(jù)爭(zhēng)用
4.2 同步原語(yǔ)
4.2.1 互斥量和臨界區(qū)
4.2.2 自旋鎖
4.2.3 信號(hào)量
4.2.4 讀寫(xiě)鎖
4.2.5 屏障
4.2.6 原子操作和無(wú)鎖代碼
4.3 死鎖和活鎖
4.4 線程和進(jìn)程間的通信
4.4.1 內(nèi)存、共享內(nèi)存和內(nèi)存映射文件
4.4.2 條件變量
4.4.3 信號(hào)和事件
4.4.4 消息隊(duì)列
4.4.5 命名管道
4.4.6 通過(guò)網(wǎng)絡(luò)棧進(jìn)行通信
4.4.7 線程之間共享數(shù)據(jù)的其他方法
4.5 存儲(chǔ)線程私有數(shù)據(jù)
4.6 小結(jié)

第5章 使用POSIX線程
5.1 創(chuàng)建線程
5.1.1 線程終止
5.1.2 用子線程接收和傳遞數(shù)據(jù)
5.1.3 分離線程
5.1.4 設(shè)置pthread的屬性
5.2 編譯多線程代碼
5.3 進(jìn)程終止
5.4 線程之間共享數(shù)據(jù)
5.4.1 使用互斥鎖保護(hù)訪問(wèn)
5.4.2 互斥鎖屬性
5.4.3 使用自旋鎖
5.4.4 讀寫(xiě)鎖
5.4.5 屏障
5.4.6 信號(hào)量
5.4.7 條件變量
5.5 變量和內(nèi)存
5.6 多進(jìn)程編程
5.6.1 在進(jìn)程之間共享內(nèi)存
5.6.2 在進(jìn)程之間共享信號(hào)量
5.6.3 消息隊(duì)列
5.6.4 管道和命名管道
5.6.5 使用信號(hào)與進(jìn)程通信
5.7 套接字
5.8 可重入代碼和編譯器標(biāo)志
5.9 小結(jié)

第6章 Windows線程
6.1 創(chuàng)建Windows本機(jī)線程
6.1.1 終止線程
6.1.2 創(chuàng)建和重新啟動(dòng)掛起的線程
6.1.3 使用內(nèi)核資源的句柄
6.2 同步和資源共享的方式
6.2.1 線程間需要同步的一個(gè)例子
6.2.2 保護(hù)對(duì)臨界區(qū)代碼的訪問(wèn)
6.2.3 用互斥量保護(hù)代碼段
6.2.4 輕量級(jí)讀寫(xiě)鎖
6.2.5 信號(hào)量
6.2.6 條件變量
6.2.7 向其他線程或進(jìn)程發(fā)出事件完成的信號(hào)
6.3 Windows中的寬字符串處理
6.4 創(chuàng)建進(jìn)程
6.4.1 在進(jìn)程之間共享內(nèi)存
6.4.2 在子進(jìn)程中繼承句柄
6.4.3 互斥量命名及其在進(jìn)程間的共享
6.4.4 用管道通信
6.4.5 用套接字進(jìn)行通信
6.5 變量的原子更新
6.6 分配線程本地存儲(chǔ)
6.7 設(shè)置線程的優(yōu)先級(jí)
6.8 小結(jié)

第7章 自動(dòng)并行化和OpenMP
7.1 使用自動(dòng)并行化產(chǎn)生并行代碼
7.1.1 識(shí)別和并行約簡(jiǎn)
7.1.2 對(duì)包含調(diào)用的代碼進(jìn)行自動(dòng)并行化
7.1.3 協(xié)助編譯器實(shí)現(xiàn)代碼的自動(dòng)并行化
7.2 使用OpenMP生成并行應(yīng)用程序
7.2.1 使用OpenMP并行化循環(huán)
7.2.2 OpenMP應(yīng)用程序的運(yùn)行時(shí)行為
7.2.3 OpenMP并行區(qū)域中的變量作用域
7.2.4 使用OpenMP并行化約簡(jiǎn)
7.2.5 在并行區(qū)域外訪問(wèn)私有數(shù)據(jù)
7.2.6 使用調(diào)度改進(jìn)工作分配
7.2.7 用并行段完成獨(dú)立工作
7.2.8 嵌套并行
7.2.9 使用OpenMP動(dòng)態(tài)定義并行任務(wù)
7.2.10 保持?jǐn)?shù)據(jù)對(duì)線程私有
7.2.11 控制OpenMP運(yùn)行時(shí)環(huán)境
7.2.12 等待工作完成
7.2.13 限制執(zhí)行代碼區(qū)域的線程
7.3 確保并行區(qū)域的代碼按順序執(zhí)行
7.4 折疊循環(huán)改進(jìn)工作負(fù)荷均衡
7.5 強(qiáng)制實(shí)現(xiàn)內(nèi)存一致性
7.6 并行化示例
7.7 小結(jié)

第8章 手工編碼的同步和共享
8.1 原子操作
8.1.1 用比較和交換指令構(gòu)成更復(fù)雜的原子操作
8.1.2 強(qiáng)制實(shí)現(xiàn)內(nèi)存排序以確保正確操作
8.1.3 編譯器對(duì)內(nèi)存排序指令的支持
8.1.4 編譯器對(duì)操作的重新排序
8.1.5 易失變量
8.2 操作系統(tǒng)提供的原子操作
8.3 無(wú)鎖算法
8.3.1 Dekker算法
8.3.2 帶循環(huán)緩存的生產(chǎn)者/消費(fèi)者
8.3.3 擴(kuò)展到多個(gè)消費(fèi)者或生產(chǎn)者
8.3.4 將生產(chǎn)者/消費(fèi)者擴(kuò)展到多個(gè)線程
8.3.5 更改生產(chǎn)者/消費(fèi)者代碼為使用原子操作
8.3.6 ABA問(wèn)題
8.4 小結(jié)

第9章 基于多核處理器的擴(kuò)展
9.1 對(duì)應(yīng)用程序擴(kuò)展的限制
9.1.1 串行代碼對(duì)性能的限制
9.1.2 超線性擴(kuò)展
9.1.3 工作負(fù)荷不均衡
9.1.4 熱鎖
9.1.5 庫(kù)代碼擴(kuò)展
9.1.6 工作量不足
9.1.7 算法限制
9.2 擴(kuò)展的硬件限制
9.2.1 核心之間的帶寬共享
9.2.2 偽共享
9.2.3 緩存沖突和容量
9.2.4 流水線資源匱乏
9.3 操作系統(tǒng)對(duì)擴(kuò)展性的限制
9.3.1 過(guò)度訂閱
9.3.2 使用處理器綁定改善內(nèi)存局部性
9.3.3 優(yōu)先級(jí)反轉(zhuǎn)
9.4 多核處理器和擴(kuò)展
9.5 小結(jié)

第10章 其他并行技術(shù)
10.1 基于GPU的運(yùn)算
10.2 語(yǔ)言擴(kuò)展
10.2.1 線程構(gòu)建模塊
10.2.2 Cilk++
10.2.3 GrandCentralDispatch
10.2.4 為未來(lái)C和C++標(biāo)準(zhǔn)提議的可能功能
10.2.5 微軟的C++/CLI
10.3 其他語(yǔ)言
10.4 集群技術(shù)
10.4.1 MPI
10.4.2 以MapReduce作為擴(kuò)展策略
10.4.3 網(wǎng)格
10.5 事務(wù)性內(nèi)存
10.6 向量化
10.7 小結(jié)

第11章 結(jié)束語(yǔ)
11.1 編寫(xiě)并行應(yīng)用程序
11.1.1 識(shí)別任務(wù)
11.1.2 估算性能提升
11.1.3 確定依賴關(guān)系
11.1.4 數(shù)據(jù)爭(zhēng)用和互斥鎖擴(kuò)展限制
11.1.5 鎖的粒度
11.2 多核處理器上的并行代碼
11.3 并行化的未來(lái)

參考文獻(xiàn)
索引

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)