【並行算法】知識點總結(一、二、三、九章)

第一章

1、並行計算的定義和主要目的
定義:並行計算是指同時對多個任務或多條指令、或對多個數據項進行處理。完成此項處理的計算機系統稱爲並行計算機系統,它是將多個處理器(可以幾個、幾十個、幾千個、幾萬個等)通過網絡連接以一定的方式有序地組織起來(一定的連接方式涉及網絡的互聯拓撲、通信協議等,而有序的組織則涉及操作系統、中間件軟件等)。
並行計算的主要目的:
一是爲了提供比傳統計算機快的計算速度;
二是解決傳統計算機無法解決的問題。
2、並行計算研究的主要內容
(1)並行計算機的設計
(2)有效算法的設計
(3)評價並行算法的方法
(4)並行計算機語言
(5)並行編程環境與工具
(6)並行程序的可移植性
(7)並行計算機的自動編程
3、並行計算機體系結構要素
結點、互聯網絡、內存
4、什麼是並行計算機、並行計算機的組成部分
並行計算機是由一組處理單元組成的,這組處理單元通過相互之間的通信與協作,以更快的速度共同完成一項大規模的計算任務。
並行計算機的組成部分:計算節點和節點間的通信與協作機制。

5、進程的定義、狀態和進程間的信息交流方式
(1)進程的定義:進程(process)可表示成四元組(P, C, D, S)
P是程序代碼
C是進程的控制狀態
D是進程的數據
S是進程的執行狀態
(2)進程的狀態:
非存在狀態:進程依賴的程序還沒有投入運行
就緒狀態:進程由其父進程調入並準備運行
運行狀態:進程佔有CPU和其它必須的計算資源,並執行指令
掛起狀態:由於CPU或其它必須的計算資源被其它進程佔有,或必須等待某類事件的發生,進程轉入掛起狀態
退出狀態:進程正常結束或因異常退出而被廢棄
(3)進程間的信息交流方式:
進程是操作系統資源調度的基本單位
各進程不能直接訪問其它進程的局部內存空間
多個進程之間相互交流信息 的三種形式 :
通信:進程間的數據傳遞稱爲進程間通信
同步:同步是使位於相同或不同處理機中的多個進程之間相互等待的操作
聚集:聚集將位於相同或不同處理機中的多個進程的局部結果綜合起來

6、並行計算機的分類Flynn(1966年)分類法

Flynn(1966年)分類法是根據系統的指令流和數據流對計算機系統進行分類的一種方法。

指令流:機器所執行的指令序列
數據流:指令流調用的數據序列(包括輸入數據和中間結果)

1)SISD:傳統的單處理機系統。由程序生成的一個單指令流,在任意時刻處理單獨的數據項。
2)SIMD:如:陣列處理機系統(Processor Arrays)。由一個控制器負責從存儲器中取出指令並將這些指令發送給各個處理器,每個處理器同步執行相同的指令,但操作不同的數據。
3)MISD:相當於在指令一級並行,而在被操作的數據級串行的情況,實際上這種模型是不能實現的。
4)MIMD:當今絕大多數並行計算機都屬於這一類。每個處理器擁有一個單獨的程序,每個程序爲每一個處理器生成一個指令流,每條指令對不同的數據進行操作。

第二章

1、並行處理技術的核心
核心:增加同一時間間隔的操作數
2、並行算法的定義
並行算法:適合於並行操作的一類算法的總稱。
並行算法是指在各種並行計算機上求解問題和處理數據的算法,其本質是把多個任務映射到多個處理器中執行。並行算法的實現強烈依賴於計算機硬件環境和軟件環境。
3、並行算法的分類
按運算對象分類
數值算法、非數值算法;
按進程間程序執行的順序關係分類
同步算法、異步算法;獨立並行算法;
(分佈式算法)
按處理機承擔的計算任務粒度分類
細粒度並行算法、中粒度並行算法、
大粒度並行算法
4、並行算法運行時的相關時間定義
並行算法運行時間:並行算法在具體並行計算機上求解一個問題所需時間。一般用Tp表示。
如果並行算法的不同任務進程不能同時開始或同時結束,並行算法運行的時間定義爲:第一個任務進程開始執行的時間算起到最後一個任務進程執行完畢所需的時間。
5、並行機的規模
並行計算機的規模指某一具體並行計算機所具有的最大計算性能,包括處理機臺數、單機性能、網絡帶寬、整體內存大小與輸入輸出能力等硬件指標;還涉及操作系統、並行程序設計環境等軟件指標。
6、問題的規模和分類
問題規模:指問題求解的規模或問題求解的大小。問題規模是衡量並行計算機性能的一個重要參數。可以將問題規模大致分爲:輸入輸出規模、計算規模、內存需求規模和通信(同步)規模。
應用問題的分類:
根據算法實現的難易程度、通信方式,將問題分爲:同步問題(鬆散同步問題、非規則鬆散同步問題)、異步問題、獨立並行問題。
7、並行算法的度量指標
除運行時間、並行機規模和問題規模,對於並行算法的度量指標還包括
1)並行度:算法中可並行執行的單位操作數
操作是計算的基本單位,一般指加減乘除等基本算術運算,也可以指某一任務級的作業。
2)粒度:粒度是一個相對的概念,與算法固有的內在並行度和具體的並行機相關。大粒度以爲着並行執行的是大任務。
3)成本:運行時間與處理機個數的乘積
4)加速比:在單處理機上的運行時間除以多處理機上運行的時間
8、絕對加速比和相對加速比的定義
絕對加速比:將最好的串行算法與並行算法相比較.
定義一(與具體機器有關)將最好的串行算法在一臺上的運行時間與並行算法在N臺運行的時間相比。
定義二(與具體機器無關)將最好的串行算法在最快的順序機上的執行時間與並行算法在並行機上的運行時間相比。
在這裏插入圖片描述
相對加速比:同一並行算法在單節點上運行時間與在多個相同節點構成的處理機系統上的運行時間之比。
這種定義側重於描述算法和並行計算機本身的可擴展性。
在這裏插入圖片描述
9、可擴展性的直觀定義、研究目的和度量方法
直觀定義:對任意數量(n)的處理機和任意規模(s)的問題,若所有算法的系統效率 E =1, 則系統是可擴展的。
可擴展性的研究目的:
1)確定某類問題的何種並行算法與何種並行系統的組合,可有效的利用系統大量處理機
2)有算法在小規模並行機上的運行性能來預測起移植到大規模並行機上後的運行性能
3)對一固定規模的問題,能確定起運行在某類並行系統上時,所需的最有處理機臺數和獲得的最大加速比
4)指導並行算法和並行機體系結構的改進
度量方法:
等效率可擴展性度量方法:揭示問題規模與系統規模的關係(1987);
等速度可擴展性度量方法:揭示並行算法-機器組合的關係(1996)
等時間/通信開銷比的可擴展性度量方法:等計算時間/通信開銷比(1999)
可擴展性度量方法的基本要求:
1)能提供並行系統規模的變化如何影響起性能的信息;2)能描述並行算法與並行機組合的函數;3)可評估、可比較的定性性能度量方法。

第三章

1、並行計算模型的定義和作用

定義: 並行計算模型:從並行算法的設計和分析出發,將各種並行計算機(至少是某一類)的基本特徵抽象出來,形成一個抽象的並行計算模型。
並行計算模型的作用
1)是並行算法實現的基礎
2)給並行算法設計與分析提供了一個簡單方便的框架
3)使並行算法的設計具有一定的生命力

2、PRAM模型定義、優缺點
定義:PRAM(Parallel Random Access Machine)模型是單指令流多數據流(SIMD)並行機中的一種具有共享存儲的模型。它假設有一個無限大容量的共享存儲器,並且有多個功能相同的處理器,在任意時刻處理器可以訪問共享存儲單元。
優缺點:
優點
適合並行算法表示和複雜性分析,易於使用,隱藏了並行機的通訊、同步等細節。
缺點
不適合MIMD並行機,忽略了SM的競爭、通訊延遲等因素
不現實,首先容量無限大的存儲器是不存在的,而且由於各方面的原因,全局訪存通常要比預想的慢。其次,他忽略了通信帶寬的影響。

3、APRAM模型定義、優缺點
定義:
又稱分相(Phase)PRAM或MIMD-SM。每個處理器有其局部存儲器、局部時鐘、局部程序;無全局時鐘,各處理器異步執行;處理器通過SM進行通訊;處理器間依賴關係,需在並行程序中顯式地加入同步(路)障(Synchronization Barrier)。
優缺點
易編程和分析算法的複雜度,但與現實相差較遠,其上並行算法非常有限,也不適合MIMD-DM模型。
4、LogP模型的參數表示意義、優缺點
參數表示意義:
L(Latency):源處理機與目標處理機之間進行消息通信(一個或幾個字)所需等待的延遲時間的上限。
o(overhead):處理機用於發送或者接受每個消息的時間開銷。
g(gap):一臺處理機連續進行消息發送或接收時的最小時間間隔。
P(Processor):處理機或處理模塊的數量
LogP模型是異步的,假設所有消息都很短。
優缺點:
捕捉了MPC的通訊瓶頸,隱藏了並行機的網絡拓撲、路由、協議,可以應用到共享存儲、消息傳遞、數據並行的編程模型中;但難以進行算法描述、設計和分析。
5、BSP模型中參數的意義
BSP模型以三個參數描述分佈式存儲的多計算模型。三個參數:
處理機(P)
處理機之間的點對點通信的選路器(g)
執行以時間間隔L爲週期的路障同步器(L)
6、LogP模型與BSP模型之間的關係
BSP vs. LogP
BSPLogP:BSP塊同步BSP子集同步BSP進程對同步=LogP
BSP可以常數因子模擬LogP,LogP可以對數因子模擬BSP
BSP=LogP+Barriers-Overhead
BSP提供了更方便的程設環境,LogP更好地利用了機器資源
BSP似乎更簡單、方便和符合結構化編程
7、並行算法設計的常用手段
設計算法經常採用以下三種手段:
1)將現有的串行算法中固有的並行性直接並行化;
2)從問題本身出發設計一個新的算法;
3)修改已有的並行算法,使其可以求解相似問題
8、並行算法常用的設計技術
目前普遍使用的並行算法的設計技術:
1).流水線技術
將任務分割成許多子任務,每個處理器完成其中一個,且第一個處理器完成第一個子任務後,第二個處理器可以開始完成第二個子任務…
2).分治策略
將原問題分成若干個特徵相同的子問題,分別處理。
常見的分治策略:任務分割;數據分割
3).平衡樹方法
將輸入元素作爲葉子節點構造二叉平衡樹。
4).倍增技術(指針跳躍技術)
適合處理鏈表、有向圖等數據結構;經常應用於通信系統中。
5).加速級聯策略
將最優算法(計算速度慢)和最快算法(不是最優)級聯起來。
9、並行程序設計的主要方式
並行程序的設計有多種方式,主要分爲:
共享變量方法;消息傳遞方法;數據並行程序設計;面向對象的並行程序設計;函數程序設計方法;邏輯程序設計方法。

第九章

1、消息傳遞模型的原理和優缺點
原理:消息傳遞模型中,計算由一個或多個進程組成,進程間的通信通過調用庫函數發送和接收消息來完成。
優點:
1)具有高度的可移植性。
2)允許用戶顯式地控制控制並行並行程序的存儲,特別可以控制每個進程所使用的內存。(需要編程人員對內存分配,需要考慮通信順序等細節問題)
缺點:消息傳遞接口的不同對程序性能將產生重要影響,主要因素有:實際消息傳遞的帶寬、延遲和計算與通信的重疊。

2、什麼是MPI?
MPI一個信息傳遞接口的標準,用來開發基於信息傳遞的並行程序,它的目的是爲用戶提供功能強、可移植和靈活的信息傳遞接口庫。(注:MPI是一個庫而不是一種語言)
3、MPI中6個常用函數的基本功能
MPI_INIT 初始化MPI
MPI_FINALIZE 終止MPI
MPI_COMM_SIZE 確定進程的數目
MPI_COMM_RANK 確定進程的序號
MPI_SEND 發送一條信息
MPI_RECV 就收一條信息

補充部分

1、Matlab並行循環執行的前提條件
對於次數確定的循環(for循環),如果循環的‘計數模塊’對於單次循環是獨立的(計算結果與循環體的執行順序無關),那麼理論上可以將整個循環拆分成幾個子循環,然後將子循環的結果合併。
2、簡約操作及其滿足條件
只有當循環的操作題相互獨立時纔可以用parfor關鍵字進行並行。但是有一類特殊的循環操作不受這個條件限制,這類操作我們稱爲簡約操作。
簡約操作所對應的循環體並不獨立,但是執行結果與執行順序無關。

簡約變量在parfor中應該滿足一些要求
1.簡約變量只能出現在簡約賦值操作的表達式中
簡約操作可以由上面給的各種操作符引導,也可以自己定義。
2.在同一parfor中,對簡約變量的操作必須一致。
3.如果簡約變量的操作是‘*’或者‘[]’,x在操作符前面或者後面都可以,但是位置必須恆定。
4.簡約變量賦值應滿足結合律和交換律

3、在parfor循環中,Matlab變量主要分類
循環變量(loop variable)
分段變量(sliced variable)
廣播變量(broadcast variable)
簡約變量(reduction variable)
臨時變量(temporary variable)

4、SPMD並行結構的優勢
SPMD並行結構給用戶提供了更大的自由度,用戶可以控制更多的並行計算的細節。

5、SPMD結構中可以使用的三種數據對象
數據集分割方式:
1)通過數據文件的方式將大的數據集分割到各個計算節點;
2)通過composite對象(Matlab特有結構);
3)通過分佈式數值陣列(Matlab特有結構)。
6、一般並行程序的數據類型
1)同體變量2)異體變量3)獨有變量4)分佈式變量
7、常用兩種通用並行程序設計的方式
Matlab並行程序一般由三種方式實現:
1)利用Matlab內置的並行結構;
2)利用Matlab提高的通用並行程序設計;
3)Matlab和其他語言混合編程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章