內容簡介
本書係統介紹瞭三代並行計算模型,包括共享存儲並行計算模型、分布式存儲並行計算模型和存儲層次並行計算模型,並介紹瞭大量針對並行計算模型的算法。此外,本書還介紹瞭並行程序性能模型以及並發和分布式算法。書中算法和語言力求精簡明確,部分章節後配備習題,並有注釋和大量參考文獻。
目錄
前言
第1章緒論1
1.1模型1
1.1.1白盒模型1
1.1.2黑盒模型2
1.2計算模型3
1.2.1計算能力模型3
1.2.2算法設計模型7
1.3並行計算模型8
1.3.1基本度量參數9
1.3.2基本並行計算模型11
1.4相關概念13
1.4.1係統結構模型13
1.4.2並行編程模型18
1.4.3並行編程模式22
1.4.4基準測試程序23
1.4.5數據一緻性模型25
1.4.6並行、並發與分布式27
1.5並行算法設計30
1.5.1並行算法錶示30
1.5.2算法復雜度31
1.5.3問題31
1.6小結33
第2章固定結構並行計算模型34
2.1邏輯電路35
2.1.1定義35
2.1.2加法器35
2.2比較器電路39
2.2.1定義39
2.2.2歸並39
2.2.3排序44
2.2.4選擇46
2.3代數電路48
2.3.1定義48
2.3.2FFT48
2.3.3前綴和51
2.4綫性陣列53
2.4.1定義53
2.4.2排序54
2.4.3三角矩陣求解57
2.5混洗連接59
2.5.1定義59
2.5.2排序60
2.5.3FFT62
2.5.4矩陣轉置62
2.6網格64
2.6.1定義64
2.6.2歸並64
2.6.3排序66
2.6.4矩陣乘68
2.6.5迭代法70
2.7樹形71
2.7.1定義71
2.7.2排序73
2.7.3前綴和74
2.7.4圖的連通分量75
2.8超立方76
2.8.1定義76
2.8.2排序77
2.8.3通信78
2.9小結79
2.10習題80
第3章共享存儲並行計算模型(計算復雜度)83
3.1PRAM模型83
3.1.1定義83
3.1.2模型的能力84
3.1.3算法設計技術85
3.1.4問題下界85
3.2PRAM變體86
3.2.1APRAM86
3.2.2分相PRAM87
3.3選擇88
3.3.1EREW上的成本最優算法88
3.3.2CRCW上的常數時間算法89
3.3.3縮減處理器90
3.3.4算法級聯91
3.3.5下界92
3.4歸並93
3.4.1CREW上的常數時間算法93
3.4.2縮減處理器94
3.5查找95
3.5.1CREW上的最優時間算法95
3.5.2下界95
3.6排序95
3.6.1枚舉排序96
3.6.2Preparata排序96
3.6.3下界97
3.7前綴和98
3.7.1倍增法98
3.7.2算法級聯98
3.8圖算法99
3.8.1分層倍增法99
3.8.2歐拉迴路101
3.8.3Ear分解103
3.8.4破對稱方法104
3.9小結105
3.10習題106
第4章分布式存儲並行計算模型(通信復雜度)107
4.1通信復雜度模型107
4.1.1LPRAM模型107
4.1.2Yao模型109
4.2延遲帶寬模型110
4.2.1LogP模型110
4.2.2Postal模型111
4.2.3LogGP模型115
4.3其他模型116
4.3.1BSP116
4.3.2QSM116
4.3.3BPRAM模型117
4.4小結117
第5章存儲層次並行計算模型(存儲復雜度)118
5.1單層存儲層次118
5.2兩層存儲層次121
5.2.1紅藍卵石模型121
5.2.2分塊傳輸模型124
5.3多層存儲層次126
5.3.1多層卵石模型127
5.3.2HMM128
5.3.3分塊HMM131
5.3.4RAM(h)模型132
5.4緩存無關模型133
5.4.1串行模型134
5.4.2並行模型136
5.5小結138
5.6習題139
第6章並行程序性能模型141
6.1性能模型與計算模型141
6.2加速比模型142
6.2.1Amdahl模型142
6.2.2Gustafson模型142
6.2.3Karp-Flatt模型144
6.2.4Sun-Ni模型145
6.2.5等效率模型145
6.2.6DAG模型146
6.3訪存序列模型147
6.3.1缺失率147
6.3.2重用距離148
6.3.3平均足跡149
6.3.4多進程模型150
6.4軟硬協同模型151
6.4.1計算密集度151
6.4.2串行平衡模型152
6.4.3並行平衡模型152
6.4.4Hill-Marty模型153
6.5算法優化模型154
6.5.1算法級聯154
6.5.2參數優化155
6.6小結156
第7章並發與分布式算法157
7.1互斥算法157
7.1.1共享存儲算法157
7.1.2分布式存儲算法164
7.1.3基於硬件操作170
7.1.4基於信號量操作172
7.2鎖算法174
7.2.1自鏇鎖174
7.2.2讀寫鎖177
7.3同步算法179
7.3.1分布式存儲算法179
7.3.2共享存儲算法181
7.4隊列算法183
7.4.1有界隊列184
7.4.2無界隊列185
7.5廣播算法188
7.5.1洪水算法188
7.5.2生成樹算法188
7.6小結189
7.7習題189
參考文獻191
前言/序言
處理器是計算機係統的核心。由於摩爾定律的作用,對於體係結構的設計可以利用更多數量的晶體管來開發並行性,這使得處理器性能在2005年之前一直保持指數級增長,並且程序無須改變即可享用“免費的午餐”。但是,首先,時鍾頻率的提升已逼近物理極限,無法像以前一樣從升級的高頻單核處理器中獲得免費的性能提升;其次,指令級並行,例如超標量發射和流水綫技術對性能提升的潛力已基本發揮到極緻,多年來沒有更為顯著的技術突破;後,數據級並行,例如處理器的單指令多數據(SIMD)指令集,可以在一定程度上繼續增加處理器的絕對峰值性能,但受限於帶寬和片上硬件的資源,以及算法和編譯的軟件優化難度。總之,多核、眾核處理器等利用綫程級並行繼續提升片上計算能力的方法已成為硬件發展的唯一道路。
算法是計算機科學的核心。由上所述,處理器體係結構的趨勢是更多地利用綫程級並行性,這一轉變使得程序員必須設計過去隻有在大型並行係統上纔用到的並行算法,纔能充分利用硬件計算能力。串行算法教科書通常使用RAM作為串行計算模型,並多以具體問題(排序、圖算法、字符串等)或算法設計技巧(分而治之、動態規劃、隨機方法等)來組織內容。但並行算法的設計與底層並行機製緊密相關,因此我們以並行計算模型組織本書內容。首先,不同的模型適用於不同的問題;其次,對於同一問題在不同模型下從不同角度研究算法特徵。
好算法不言自明,這是撰寫本書時的核心思想。Knuth認為計算機程序設計是一門藝術而非科學,因此每個好算法都是一件精美的藝術品。相比於文字解釋,作者相信使用精緻優美的僞碼錶述的算法能進行自我說明,是藝術品原始、真實的展現。我們鼓勵讀者以算法僞碼為中心閱讀本書,而將文字看作對僞碼的簡要說明。然而,限於作者水平,加之時間倉促,書中定有不少欠妥和錯誤之處,懇請讀者批評指正。
並行計算:模型與算法 epub pdf mobi txt 電子書 下載 2024
並行計算:模型與算法 下載 epub mobi pdf txt 電子書