-
>
闖進數學世界――探秘歷史名題
-
>
中醫基礎理論
-
>
當代中國政府與政治(新編21世紀公共管理系列教材)
-
>
高校軍事課教程
-
>
思想道德與法治(2021年版)
-
>
毛澤東思想和中國特色社會主義理論體系概論(2021年版)
-
>
中醫內科學·全國中醫藥行業高等教育“十四五”規劃教材
軟件優化技術 版權信息
- ISBN:9787111742456
- 條形碼:9787111742456 ; 978-7-111-74245-6
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
軟件優化技術 本書特色
本書闡明了底層技術對軟件性能的主要影響,介紹了豐富的軟件優化方法和技巧,可以幫助軟件工程師提升編程水平,充分發揮現代CPU、GPU、I/O、操作系統、編譯器等底層系統的潛力。
軟件優化技術 內容簡介
本書介紹了在現代計算機系統上充分利用微處理器計算能力以提高軟件性能的主要優化方法,共分為七章。
軟件優化技術 目錄
第 1 章 引言 1
1.1 軟件優化概述 1
1.1.1 軟件優化的主要方法 1
1.1.2 軟件性能工程 3
1.1.3 關于軟件優化的一些觀點 4
1.2 評價軟件性能的指標和方法 6
1.2.1 延遲和吞吐率 6
1.2.2 加速比和效率 7
1.2.3 Amdahl 定理 8
1.2.4 M/M/k 模型 9
1.3 常用軟件工具和時間測量方法 10
1.3.1 常用軟件工具 10
1.3.2 時間測量 13
1.4 一個程序性能分析的實例 15
1.5 擴展閱讀 16
1.6 習題 17
1.7 實驗題 18
參考文獻 20
第 2 章 CPU 上的基本優化方法 21
2.1 計算機體系結構基礎 21
2.1.1 指令集體系結構 21
2.1.2 指令鐵律 24
2.1.3 流水線及其相關性 26
2.1.4 超標量和亂序執行 27
2.1.5 典型微處理器的微結構 29
2.2 針對算術邏輯指令的優化 31
2.2.1 現代微處理器的算術邏輯指令延遲與吞吐率 31
2.2.2 選擇合適的數據類型 32
2.2.3 使用簡單指令代替復雜指令 33
2.2.4 使用特殊指令 34
2.2.5 查表法 35
2.3 針對條件分支指令的優化 36
2.3.1 分支預測 36
2.3.2 消除分支 38
2.3.3 組合多個分支以提高分支預測的準確度 38
2.3.4 使用條件執行指令 39
2.3.5 合理使用 switch 語句40
2.4 針對 Cache 的優化 41
2.4.1 現代微處理器的Cache 41
2.4.2 數據對齊 43
2.4.3 SoA 的結構組織方式 44
2.4.4 數據分塊以提升 Cache命中率 45
2.4.5 Cache 預取 46
2.5 針對循環結構的優化 47
2.5.1 消除循環 47
2.5.2 循環展開 47
2.6 綜合實例 49
2.6.1 Linux 內核中的 ECC 計算 49
2.6.2 Hash 表的構建 53
2.7 擴展閱讀 55
2.8 習題 56
2.9 實驗題 57
參考文獻 59
第 3 章 基于 SIMD 指令系統的優化方法 61
3.1 SIMD 指令系統簡介 61
3.1.1 SIMD 指令系統概況 61
3.1.2 軟件系統使用 SIMD 指令的方法 63
3.2 SIMD 內嵌原語 64
3.2.1 內嵌原語的數據類型 64
3.2.2 向量設置操作 65
3.2.3 計算操作 66
3.2.4 比較操作 68
3.2.5 訪存操作 69
3.2.6 數據排列操作 71
3.3 基于內嵌原語的 SIMD 程序設計 72
3.3.1 數據對齊和數據寬度 73
3.3.2 SoA 結構 74
3.3.3 數據比較 76
3.3.4 特殊指令 77
3.3.5 寄存器數量 79
3.4 SIMD 程序實例 81
3.4.1 使用 SSE 指令去除空格 81
3.4.2 基于 SIMD 指令的雙調排序和歸并排序 82
3.4.3 fftw 的可移植設計 84
3.5 擴展閱讀 88
3.6 習題 88
3.7 實驗題 88
參考文獻 90
第 4 章 基于多線程的優化方法 94
4.1 多核處理器體系結構 94
4.1.1 多線程處理器 94
4.1.2 多核處理器系統 96
4.1.3 Cache 一致性協議 98
4.2 操作系統級線程調用 100
4.2.1 線程 100
4.2.2 線程基本 API 102
4.2.3 Linux 的線程同步和互斥 105
4.2.4 Windows 的線程同步和互斥 110
4.3 OpenMP 113
4.3.1 for 編譯制導語句 114
4.3.2 共享變量和私有變量 115
4.3.3 歸約子句 116
4.3.4 nowait 子句 117
4.3.5 single 制導指令 118
4.3.6 critical 子句 119
4.3.7 barrier 子句 119
4.3.8 其他子句 120
4.4 多線程程序的一些問題 120
4.4.1 臨界區 120
4.4.2 Cache 偽共享 123
4.4.3 多線程的并行化設計方法 124
4.5 多線程并行化實例 125
4.5.1 Horner算法的并行化 125
4.5.2 構建 Hash 表 126
4.5.3 歸并排序 127
4.6 擴展閱讀 129
4.7 習題 130
4.8 實驗題 131
參考文獻 133
第 5 章 GPU 的優化方法 135
5.1 GPU 體系結構 135
5.1.1 面向吞吐率優化的異構
計算 135
5.1.2 GPU 總體結構 136
5.1.3 SIMT 機制 136
5.1.4 存儲器結構 139
5.2 GPU 基本編程方法 139
5.2.1 線程的組織結構 139
5.2.2 GPU 函數說明 140
5.2.3 存儲器管理以及與主機的數據交換 141
5.2.4 GPU 上線程之間的同步 143
5.2.5 OpenCL 的程序對象和內核對象 144
5.2.6 程序實例 145
5.3 GPU 程序優化方法 148
5.3.1 指令吞吐率 148
5.3.2 資源利用率 149
5.3.3 共享存儲器 150
5.3.4 全局存儲器 152
5.3.5 掩蓋主機和 GPU 之間的數據傳輸延遲 152
5.3.6 動態并行機制 154
5.4 GPU 程序實例 155
5.4.1 矩陣乘法 155
5.4.2 LU 分解 157
5.5 擴展閱讀 159
5.6 習題 159
5.7 實驗題 160
參考文獻 160
第 6 章 面向對象程序設計語言的優化方法 162
6.1 C 的性能優化 162
6.1.1 C 實現簡介 162
6.1.2 STL 167
6.2 Java 的性能優化 168
6.2.1 Java 虛擬機簡介 168
6.2.2 Java 字節碼的執行機制 170
6.2.3 Java 本地接口 172
6.2.4 Java 的多線程機制 174
6.3 垃圾回收 176
6.3.1 垃圾回收基本技術 176
6.3.2 HotSpot JVM 中的垃圾回收 181
6.4 擴展閱讀 183
6.5 習題 184
6.6 實驗題 184
參考文獻 186
第 7 章 系統級軟件優化 188
7.1 硬盤系統與文件系統的性能優
化 189
7.1.1 硬盤系統 189
7.1.2 文件系統 191
7.1.3 性能優化方法 193
7.1.4 實例:外排序 194
7.2 網絡連接的性能優化 196
7.2.1 網絡連接硬件 196
7.2.2 網絡編程簡介 197
7.2.3 性能優化方法 200
7.2.4 實例:Web 服務器的結構 204
7.3 軟件總體結構的設計考慮 207
7.3.1 用戶友好性設計 207
7.3.2 可移植性設計 208
7.3.3 錯誤處理設計 209
7.3.4 系統可維護性設計 210
7.4 擴展閱讀 211
7.5 習題 212
7.6 實驗題 212
參考文獻 213
軟件優化技術 作者簡介
陳 虎
華南理工大學軟件學院副教授,長期從事軟件優化設計的科研和教學工作,承擔了國家重點研發計劃、國家自然科學基金重點項目等多項國家、省部級課題。具有超過十五年的專用高性能計算軟件開發經驗,研制的高性能計算軟件已應用于國內主要超級計算機系統。多次擔任“國產CPU并行應用挑戰賽”等軟件優化比賽評委。
湯德佑
華南理工大學軟件學院副教授,長期致力于提升數據庫引擎和生物信息學軟件性能。深入優化ARM和Intel平臺上數據庫基礎算子性能,并提交至開源社區;針對Intel高性能計算平臺開發基因組數據分析軟件、HBV病毒整合位點分析等專業生物信息學軟件。
黃 敏
華南理工大學軟件學院副院長、副教授,主要研究軟件體系結構和軟件性能優化技術。近年來承擔和參與國家自然科學基金、廣東省科技攻關、廣東省自然科學基金、產學合作協同育人、廣東省高等教育改革等多項國家和省部級課題。發表SCI/EI收錄的高水平研究論文60余篇,并擔任多個國際期刊的編輯和審稿人。
- >
推拿
- >
新文學天穹兩巨星--魯迅與胡適/紅燭學術叢書(紅燭學術叢書)
- >
【精裝繪本】畫給孩子的中國神話
- >
名家帶你讀魯迅:朝花夕拾
- >
詩經-先民的歌唱
- >
自卑與超越
- >
月亮與六便士
- >
我從未如此眷戀人間