平行計算模型通常指從並行演算法
的設計和分析出發,將各種並行計算機(至少某一類並行計算機)的基本特徵抽象出來,形成乙個抽象的計算模型。從更廣的意義上說,平行計算模型為平行計算提供了硬體和軟體介面
,在該介面的約定下,並行系統硬體設計者和軟體設計
者可以開發對並行性
的支援機制,從而提高系統的效能。
有幾種有價值的參考模型:
pram(parallel random access machine,隨機訪問
並行機器)模型,也稱為共享儲存的simd模型,由fortune和wyllie2023年提出,又稱為simd-sm,是一種抽象的平行計算模型,它是從序列的ram模型直接發展起來的。在這種模型中,有乙個集中的共享儲存器和乙個指令控制器,通過共享儲存器的r/w交換資料,隱式同步計算。結構圖如下:(pram中有乙個同步時鐘,所有操作都是同步進行的)
根據處理器對共享儲存單元
同時讀、同時寫的限制,pram模型可以分為下面3種:p
ram-erew、pram
-crew、
pram-crcw。c表示允許併發操作,e表示不允許。
顯然,允許同時寫是不現實的,於是又對pram-crcw模型做了進一步約定,於是形成了下面幾種模型:
• 只允許所有的處理器同時寫相同的數,此時稱為公共(common)的pram-crcw,簡稱為cpram-crcw;
• 只允許最優先的處理器先寫,此時稱為優先(priority)的pram-crcw,簡稱為ppram-crcw;
• 允許任意處理器自由寫,此時稱為任意(arbitrary)的pram-crcw,簡稱為apram-crcw。
• 往儲存器中寫的實際內容是所有處理器寫的數的和,此時稱為求和(sum)的pram-crce,將稱為spram-crcw。
pram模型特別適合於並行演算法
的表達、分析和比較,使用簡單,很多關於並行計算機的底層細節,比如處理器間通訊、儲存系統管理和程序同步
都被隱含在模型中;易於設計演算法和稍加修改便可以執行在不同的並行計算機系統上;根據需要,可以在pram模型中加入一些諸如同步和通訊等需要考慮的內容。
模型中使用了乙個全域性共享儲存器
,且局存容量較小,不足以描述分布主存多處理機
的效能瓶頸,而且共享單一儲存器的假定,顯然不適合於分布
儲存結構的mimd機器;
pram模型是同步的,這就意味著所有的指令都按照鎖步的方式操作,使用者雖然感覺不到同步的存在,但同步的存在的確很耗費時間,而且不能反映現實中很多系統的非同步性;
pram模型假設了每個處理器可在單位時間訪問共享
儲存器的任一單元,因此要求
處理機間通訊無延遲、無限
頻寬和無開銷,假定每個處理器均可以在單位時間內訪問任何儲存單元而略去了實際存在的,合理的細節,比如資源競爭和有限頻寬,這是不現實的; 假設
處理機有限或無限,對並行任務的增大無開銷;
未能描述所執行緒技術和流水線預取技術,而這兩種技術又是當今並行體系結構用的最普遍的技術。
由valiiant(1990)年提出,「塊」同步模型,是一種非同步mimd-dm模型,支援訊息傳遞系統,塊內非同步並行,塊間顯式同步。
•採用障礙同步的方式以硬體實現的全域性同步是在可控的粗粒度級,從而提供了執行緊耦合同步式
並行演算法
的有效方式,而程式設計師並無過分的負擔;
• 它將處理器和路由器
分開,強調了計算任務和通訊任務的分開,而路由器僅僅完成點到點的訊息傳遞,不提供組合、複製和廣播等功能,這樣做既掩蓋具體的互連網路拓撲,又簡化了通訊協議;
• 在分析bsp模型
的效能時,假定區域性操作可以在乙個時間步內完成,而在每乙個超級步
中,乙個處理器至多傳送或接收h條訊息(稱為h-relation)。假定s是傳輸建立時間,所以傳送h條訊息的時間為gh+s,如果 ,則l至少應該大於等於gh。很清楚,硬體可以將l設定盡量小(例如使用流水線或大的通訊頻寬使g盡量小),而軟體可以設定l的上限(因為l越大,並行粒度越大)。在實際使用中,g可以定義為每秒處理器所能完成的區域性計算數目與每秒路由器所能傳輸的資料量之比。如果能夠合適的平衡計算和通訊,則bsp模型
在可程式設計性方面具有主要的優點,而直接在bsp模型上執行演算法(不是自動的編譯它們),這個優點將隨著g的增加而更加明顯;
• 為pram模型
所設計的演算法,都可以採用在每個bsp處理器上模擬一些pram處理器的方法來實現。理論分析證明,這種模擬在常數因子範圍內是最佳的,只要並行寬鬆度
(parallel slackness),即每個bsp處理器所能模擬的pram處理器的數目足夠大。在併發情況下,多個處理器同時訪問分布式的儲存器
會引起一些問題,但使用雜湊方法可以使程式均勻的訪問分布式儲存器。在pram-erew情況下,如果所選用的雜湊函式足夠有效,則l至少是對數的,於是模擬可以達到最佳,這是因為我們想在p個物理處理器的bsp模型
上,模擬個虛擬處理器,可將個虛擬處理器分配個每個物理處理器。在乙個超級步
內,v次訪問請求可以均勻分布,每個處理器大約v/p次,因此計算機執行本次超級步的最佳時間為o(v/p),且概率是高的。同樣,在v個處理器的pram-crcw模型中,能夠在p個處理器(如果 ),和的bsp模型
上用o(v/p)的時間也可以達到最佳模擬。
優缺點:
強調了計算和通訊的分離,提供了乙個程式設計環境,易於程式複雜性分析。但需要顯式同步機制,限制至多h條訊息的傳遞等。
bsp(整體大同步)簡化了演算法的設計和分析,犧牲了執行時間,因為延遲通訊意味著所有程序必須等待最慢者。一種改進是採用子集同步,將所有程序按照快慢程度分成若干個子集。如果子集小,其中只包含成對的收發者,則它就變成了非同步的個體同步,即logp模型。
根據技術發展的趨勢,20世紀90年代末和未來的並行計算機發展的主流之一是巨量並行機,即mpc(massively parallel computers),它由成千個功能強大的處理器/
儲存器 節點,通過具有有限頻寬的和相當大的延遲的
互連網路
構成。logp
模型是一種分布儲存的、點到點通訊的
多處理機
模型,其中通訊網路由4個主要引數來描述:
(1)l(latency) 表示源
處理機與目的處理機進行訊息(乙個或幾個字)通訊所需要的等待或延遲時間的上限,表示網路中訊息的延遲。
(2)o(overhead)表示
處理機準備傳送或接收每個訊息的時間開銷(包括作業系統核心開銷和
網路軟體
開銷),在這段時間裡處理不能執行其它操作。
(3)g(gap)表示一台
處理機連續兩次傳送或接收訊息時的最小時間間隔,其倒數即微處理機的通訊頻寬。
(4)p(processor)
處理機/儲存器模組個數
假定乙個週期完成一次區域性操作,並定義為乙個時間單位,那麼,l,o和g都可以表示成處理器週期的整數倍。
(1)抓住了網路與
處理機之間的效能瓶頸。g反映了通訊
頻寬,單位時間內最多有l/g個訊息能進行
處理機間傳送。
(2)處理機之間非同步工作,並通過處理機間的
訊息傳送來完成同步。
(3)對
多執行緒技術有一定反映。每個物理
處理機可以模擬多個虛擬處理機(vp),當某個vp有訪問請求時,計算不會終止,但vp的個數受限於通訊頻寬和上下文交換的開銷。vp受限於
網路容量,至多有l/g個vp。
(4)訊息延遲不確定,但延遲不大於l。訊息經歷的等待時間是不可**的,但在沒有阻塞的情況下,最大不超過l。
(5)logp模型鼓勵程式設計人員採用一些好的策略,如作業分配,計算與通訊重疊以及平衡的通訊模式等。
(6)可以預估演算法的實際執行時間。
(1)對網路中的通訊模式描述的不夠深入。如重發訊息可能佔滿頻寬、中間路由器快取飽和等未加描述。
(2)logp模型主要適用於訊息傳遞演算法設計,對於共享儲存模式,則簡單地認為遠地讀操作相當於兩次訊息傳遞,未考慮流水線預取技術、cache引起的
資料不一致性以及cache命中率對計算的影響。
(3)未考慮
多執行緒技術的上下文開銷。
(4)logp模型假設用
點對點訊息
路由器進行通訊,這增加了程式設計者考慮路由器上相關通訊操作的負擔。
平行計算模型
平行計算指的在同一時刻存在多於乙個計算任務被執行。由於cpu主頻提高的上限,使用多核心處理器進行平行計算早已成為主流。gpu也是乙個多核心的處理器,但它的平行計算模型與多核的cpu有很大區別。我們有必要了解gpu的並計算模型。對平行計算模式進行分類是了解cpu和gpu平行計算區別的有效方式。一種分類...
python平行計算 python平行計算
0.基礎並行 發 multiprocessing threading 1.concurrent 2.併發 asynico 3.ipython下的平行計算 使用ipyparallel庫的ipython提供了前所未有的能力,將科學python的探索能力與幾乎即時訪問多個計算核心相結合。系統可以直觀地與本...
xgboost平行計算
boosting不是一種序列的結構嗎?xgboost怎麼可以實現並行的?xgboost的並行不是tree粒度的並行,xgboost也是一次迭代完才能進行下一次迭代的 第t次迭代的代價函式裡包含了前面t 1次迭代的 值 xgboost的並行是在特徵粒度上的。我們知道,決策樹的學習最耗時的乙個步驟就是對...