中山大學分散式系統課程期末複習大綱
分散式系統複習大綱
Author:胡子昂
Date:2018年6月4日 星期一 下午7:06
總體概述:
- 本學期學到的章節關係如下:
我將所有章節分為了三個部分:
- 並行演算法執行平臺學習
- 並行演算法前置知識學習
- 並行演算法學習
他們的具體關係如下圖。接下來,我將根據這三個部分依次進行總結:
Part 1 並行演算法執行平臺學習
Chap 2 並行程式設計平臺
2.1 處理器內並行
微處理器體系結構發展:
流水線(pipeline):等同於作業系統流水線。
超標量執行:有多個流水線,同時執行多條相同流水線階段的指令。
2.2 記憶體系統性能的極限
- 延遲:記憶體收到一條記憶體字請求,在lus的延遲後,返回資料。則延遲為lus。
- 頻寬:程式每秒鐘通過請求記憶體可獲得的最大位元組數。
- 躲避延遲方法:
- 預取:預先取更多的資料。
- 多執行緒:一個執行緒等待時切換到另一個執行緒。
2.3 平行計算平臺剖析
平行計算平臺控制結構:
- SIMD和MIMD:
SIMD是單指令多資料流,只有一個控制單元,該控制單元將單個指令交給不同處理器執行,機器內部需要進行同步。(並行演算法主要研究SIMD)
MIMD是多指令多資料流,每個處理器有一個控制單元,每個控制單元將指令交給對應的處理器執行,機器內部不需要進行同步
平行計算平臺通訊模型:
- SIMD通訊模型:共享地址空間平臺(PRAM,即共享記憶體機器)和訊息傳遞平臺。
共享記憶體一般用於單一計算機內通訊。
訊息傳遞一般用於計算機之間通過網路通訊。
2.4 並行平臺的物理組織
並行平臺物理組織:
- PRAM的四小類:
- EREW:序列讀,序列寫。
- CREW:並行讀,序列寫。
- ERCW:序列讀,並行寫。
- CRCW:並行讀,並行寫。
- CRCW(僅限於CW)的四種協議:
- 共有:如果處理器寫的值相同,則寫入。
- 任意:當一個處理器寫時,其他不能寫。(等同於EW)
- 優先順序:處理器按優先順序排序,最高優先順序的寫,其他不能寫。(有優先的EW)
- 求和:所有量的總和被寫入。類似於O(1)的規約。
- PRAM的四小類:
網路拓撲結構:
- 基於匯流排:所有處理器通過匯流排進行通訊和訪問記憶體。
交叉開關網路:n個處理器和m個記憶體儲存地址,用一個n*m矩陣S訪問。例如:當S[i][j]開啟時,代表第i個處理器正在訪問第j個記憶體儲存地址。
多級網路:多級網路的每個節點開和關代表兩種連線,一種是直通式(a),一種是跨接式(b)。
多級網路的一種連線例子:omega網路。
通過切換每個節點的開關,可以將左邊8個節點(代表處理器)通過不同方式對映到右邊八個節點上(記憶體)。
Q:如何通過控制開關將左邊節點對映到右邊節點?例如如何控制節點將S(010)對映到T(111)。
A:先求出s⊕t = 101,1代表交叉,0代表平行。因此s->t途徑的三個節點分別是交叉平行交叉(101)。
全連線網路和星型網路:太簡單了,略。
線性網路:連一條線,分為有環和無環。
2維格網:2維線性網路,分為有環和無環。
k-d格網:有d維,每一維有k個節點。其中,個數為p的線性網路是1-p格網或者p-1格網。
超立方體:看圖,和計算機類似的一種多級網路。
樹網路:同資料結構的樹,可分為靜態樹,動態樹,胖樹。
靜態樹:非葉節點是處理器。
動態樹:非葉節點是開關節點。
胖樹:在動態樹的基礎上,樹層級越高邊數越高。
靜態網際網路絡評價:
評價引數:
直徑:網路任意兩個節點之前的最長距離。
- 弧連通性:等同於找出網路中任意一個節點,該節點的邊數量最小,這個值就是連通性值。
- 對分寬度:如果要將網路等分,最少需要切多少條邊。
成本:網路中總共有多少條邊。
評價圖:
動態網際網路絡評價:
評價引數:除成本都一樣。
成本:網路中總共有多少個開關。
評價圖:
2.5 平行計算機的通訊成本
平行計算機的訊息傳遞成本:
評價引數:
啟動時間:傳送節點和接受節點處理訊息所花的時間,一條訊息只有一次。
- 每站時間:訊息在節點之間傳輸時間。(非常小,基本沒用過)
每字傳輸時間:節點接收一個位元組所花的時間。
儲存轉發(store-forward)時間:(l條鏈路邊,資料大小為m)
(PS:忽略。)
- 直通路由(cut-through)時間:(l條鏈路邊,資料大小為m)
(PS:忽略。)
Chap 4 基本通訊操作
PS:基本通訊操作一般都是建立在cut-through上。store-forward則只用看直徑即可。
PS2:有一種簡單的判斷T的方法。ts前面的引數是總共進行的步數,tw前面的引數是0節點(首節點)在這個過程中的資料量總和
例如:對一對多廣播環形陳列,假設有p個處理器,則步數為logp,首節點每步傳遞的資料固定為m,總共有logp次,則時間為:T = ts logp + tw m logp
4.1 一對多廣播和多對一規約
PS:多對一規約就是一對多廣播的逆方向
PS2:每一步需要的時間見2.5
環形或線性陳列:假設有p個處理器,對收到資料的節點i,分別向i + p/2,i + p/4,i + p/8…傳遞資料直到所有資料傳遞完畢。總共需要logp步。
廣播和規約如下圖:
矩陣和向量乘法:n*n矩陣S和n*1向量V的乘法,假設有n*n個處理器。
Step1:n個處理器將向量中的每個元素廣播到矩陣中的相應列中,例如將V[i]廣播到S的第i列中。
Step2:每個處理器負責一個節點,程序乘法計算。
Step3:每行的n個處理器進行規約,規約到一個處理器中,得到n*1結果向量。
格網:橫著來一次線性廣播,接著豎著來一次線性廣播。假設有p個處理器,則總共需要2log√p步,即logp步。
超立方體:看作n維格網,由於每增加一維增加相同節點數,因此每傳遞一維需要一步。假設有p個處理器,則總共需要logp步,即維數。
平衡二叉樹:做法等同於線性陳列廣播。
總結:無論哪種情況,廣播和規約的時間都為:
4.2 多對多廣播和規約
PS:多對多規約與其說是多對多廣播的逆方向,不如說是在多對多廣播傳遞資料的基礎上,加上資料處理(求和之類的)
環形或線性陳列:假設有p個處理器。
Step1:將自己的資料傳遞給下一個節點。
Step2 -> (p-1):收到上個節點傳遞過來的資料後,儲存該資料,同時把該資料傳遞給下一個節點。
通過p-1步後,每個節點都有所有的資料了。
由於每次只需要傳遞m大小的資料,因此所花時間為:
格網:橫著來一次線性廣播,接著豎著來一次線性廣播。假設有p個處理器,則總共需要2(√p - 1)步。
第一次廣播傳遞的資料量為m,通訊時間為。
第二次廣播傳遞的資料量為√pm,通訊時間為。
兩個時間加到一起,總時間為:
超立方體:與一對多廣播相同,區別是每次節點發送的資料加倍。假設有p個處理器,則總共需要logp步,即維數。
在第i步中,交換資訊的長度為,花費的時間為。
將所有時間相加(等比數列求和),總時間為:
三者tw相同(廢話),ts根據通訊結構不同。
4.3 字首和(感覺沒什麼重要的)
每個節點求字首和的時候,根據自己的節點數選擇是否加接收到的資料。
例如:當節點3(011)在計算字首和的時候,加第一次(2)和第二次(0 + 1)接收到的資料,最後加上自己即可。
4.4 散發和收集
PS:散發傳送不同的資料,廣播發送相同的資料。
散發方法類似於一對多廣播,區別是每次傳送的資料不同(減半)
總共時間(三種結構相同):