整體同步並行（Bulk Synchronous Parallel）抽象機器，是用來設計並行演算法的計算模型，由哈佛大學萊斯利瓦利安特提出，他希望像馮諾伊曼體系結構那樣，架起計算機程式語言和體系結構間的橋樑，故又稱其為橋接模型（Bridging Model）。 歷史 BSP 是哈佛大學計算機科學家 Leslie Valiant 在 1980 年代開發的，決定性文章發表於 1990 年 Leslie G Valiant A bridging model for parallel computation Communications of the ACM Volume 33 Issue 8 Aug 1990 。 在 1990 年至 1992 年間，Leslie Valiant 在普林斯頓和哈佛，與牛津大學的 Bill McColl 致力於分散式記憶體 BSP 程式設計模型的工作。在 1992 年至 1997 年間，McColl 在牛津領導了一個大型研究組開發了各種 BSP 程式設計庫、語言和工具，還有多種大規模並行 BSP 演算法。隨著興趣和勢頭的增長，McColl 接著領導了源自牛津、哈佛、佛羅里達、普利斯頓、貝爾實驗室、哥倫比亞和烏特勒支的一個組織為 BSP 程式設計開發並在 1996 年出版了 BSPlib 標準。 Valiant 在 2000 年代開發了 BSP 模型的一個擴充套件，在 2011 年出版為 MultiBSP 模型 Valiant L G 2011 A bridging model for multicore computing Journal of Computer and System Sciences 77 1 154166 。 在 2017 年，McColl 開發了 BSP 模型的一個主要新擴充套件，提供了在 AI、分析和 HPC 的大規模並行中的錯誤容忍和 tail 容忍 A Bridging Model for High Performance Cloud Computing by Bill McColl in 18th SIAM Conference on Parallel Processing for Scientific Computing 2018 httpmeetingssiamorgsessdsp_talkcfmp88973 。 模型 BSP 計算機構成自： 部件（component）：例如處理器，它們勝任處理區域性記憶體事務， 網路：它在成對的這種部件之間路由訊息， 同步設施：它是允許所有或子集的部件進行同步化的硬體設施。 這通常解釋為可以跟進不同的計算執行緒的一組處理器，每個處理器配備了快速區域性記憶體並用通訊網路互連起來。BSP 演算法嚴重依賴第三個特徵；計算是在一系列的全域性 超級步驟 中行進的，它由三部份構成： 併發計算：所有參與處理器可以進行本地計算，就是說每個處理器只能利用在這個處理器的快速本地記憶體記憶體儲的數值。計算與所有其他計算非同步發生但可以經由通訊搭接（overlap）。 通訊：處理器相互之間交換資料來促成遠端資料儲存能力。 屏障同步：當一個處理器到達一個屏障點的時候，它一直等待到所有其他處理器也到達同樣這個屏障。 計算和通訊活動不必須在時間上依次安排。通訊典型的採用單邊的 put 和 get 直接遠端記憶體訪問（DRMA）呼叫的形式，而不用成對的雙邊 send 和 receive 訊息傳遞呼叫。屏障同步化終結超級步驟：它確保所有單邊通訊都正確終結。基於雙邊通訊的系統於每次訊息傳送中隱式包含了這種同步化代價。屏障同步的方法依賴於 BSP 計算機的硬體設施。在 Valiant 的最初論文中，這個設施週期的檢查當前超級步驟的末端是否被全域性性的到達了。這個檢查的週期指示為 L。 這個模型展示在右側的示意圖中。程序不被當作有特定的線性次序（從左至右或反之），並可以按任何方式對映到處理器。 BSP 模型透過對問題的超額分解和對處理器的超額認訂，還非常適合於對分散式記憶體計算啟用自動記憶體管理。計算被分開進入比實有的物理處理器更多的邏輯程序中，並且程序隨機的被指派到處理器。這種策略在統計上可以證實會導致最佳的負載平衡，對於工作和通訊二者都是如此。 通訊 在很多並行程式設計系統中，通訊被認為是在個體行動的層面：傳送和接收一個訊息，記憶體到記憶體傳送等。這是難於共事的，因為在並行程式設計中會有很多同時通訊行動，而它們的互動典型的是複雜的。特別是，難於說出任何單一通訊行動要完成到底要得花多少時間。 BSP 模型認為通訊行動是全體性的。這樣做的效果是可以給出一組資料通訊要花費的時間的上限。BSP 把一個超級步驟的所有通訊行動認作一個單元，並假定所有個體資訊傳送作為由固定大小的這個單元的一部份。 超級步驟的到來和外出資訊的最大數目指示為 h。通訊網路遞送資料的能力透過引數 g 來捕獲，定義一個處理器花費時間 hg 來遞送大小為 1 的 h 個訊息。 傳送長度 m 的訊息顯然要比大小為 1 的訊息用時更長。但是，BSP 模型不區分長度 m 的 1 個訊息和長度 1 的 m 個訊息。在二者情況下代價都計為 mg。 引數 g 依賴於下列因素： 在通訊網路內用來互動的協議。 處理器和通訊網路二者所做的緩衝區管理。 在網路中使用的路由策略。 BSP 執行時系統。 實際上，對於每個平行計算機 g 的確定都是經驗性的。注意 g 不是規格化（normalise）的單字遞送時間，而是在連續交通條件下的單字遞送時間。 屏障 BSP 模型的單邊通訊要求屏障同步。屏障是潛在的有代價的，但是避免了死鎖或活鎖的可能性，因為不能建立迴圈的資料依賴。檢測並處理它們的工具是不需要的。 屏障同步的代價受到幾個要素的影響： 參與進來的平行計算的完成時間上的變化所施加的代價。舉例來說，除了一個之外的所有程序都完成了它們在這個超級步驟內的工作，並等待最後的那個程序，而它仍有很多工作要完成。一個實現能做的最好的事情是確保所有程序工作在大致相同的問題大小上。 所有處理器達到全域性一致性狀態的代價。這依賴於通訊網路，但也依賴於是否有專門硬體用於同步化，並依賴於處理器處理中斷的方式。 屏障同步的代價指示為 l。注意如果 BSP 計算機的同步化機制是 Valiant 建議的那樣，則 lL。實際上，l 值的確定是經驗性的。 屏障在大型的計算機上是代價高昂的，並隨著更大的規模而逐漸增大。已有關於從現存演算法中去除同步點的大量文獻，包括在 BSP 計算和此外的語境下。例如，很多演算法允許對超級步驟的全域性結束的區域性檢測，簡單的透過將區域性資訊比較於已經收到了的訊息的數目。相較於最小的要求的通訊延遲，這驅使全域性同步的代價可計為零 Alpert R Philbin J 1997 cBSP Zerocost synchronization in a modified BSP model NEC Research Institute 4 Independence Way Princeton NJ 8540 。然而對將來的超級計算機架構和網路互連，這個最小延遲預期還會進一步增加；BSP 模型，與其他平行計算模型一起，需要適應應對這種趨勢。MultiBSP 是基於 BSP 的一種解決方案。 BSP 演算法的代價 超級步驟的代價確定自三項之和：最長的執行的區域性計算的代價，在處理器之間全域性通訊的代價，和在超級步驟結束處屏障同步的代價。p 個處理器的超級步驟的代價是： max_i 1pw_i max_i1ph_i g l ， 這裡的 w_i 是程序 i 中區域性計算的代價，而 h_i 是程序 i 傳送或接收的訊息的數目。注意這裡假定了同構處理器。更常見的表示式寫為： w hg l， 這裡的 w 和 h 取了最大值。演算法的代價是每個超級步驟的代價的總和： W Hg Sl sum_s1S w_s g sum_s1S h_s Sl ， 這裡的 S 是超級步驟的數目。W、H 和 S 通常建模為函式，隨著問題大小而變化。BSP 演算法的這三個特徵通常採用漸進符號，比如 H in O np。 其他特點 如果一個處理器至多可以接收 傳送訊息的數目是 h 條，那麼該模型就是 hRelation 的。如果一個超級步中某個處理器的計算沒有完成，那麼下一個超級步就被分給該處理器繼續進行。 所有 PRAM 上的演算法均可在 BSP 上模擬，每個 BSP 處理器所能模擬的 PRAM 數目即成為並行寬鬆度（Slackness）。 BSP 放棄了程式區域性性原理，從而簡化的程式與實現的設計。這一點在平行計算中往往是一個好的特點，注意到一個大規模的計算中可能需要很多處理器，但實際上我們卻不可能提供那麼多處理器，於是一個處理器可能會被對映到多個虛擬程序，此時，附帶的程式區域性性原理反而會束縛處理器對儲存器的訪問。 選路器使用 P2P 的方式進行通訊，從而有效的避免了網路擁塞。 擴充套件和使用 對 BSP 的興趣近年來有所飆升，Google 透過 Pregel 這樣的技術，將它接受為大規模的圖分析的主要技術。還有就是新一代的 Apache Hadoop 將 MapReduce 模型與 Hadoop 下部構造的餘下部份拆解開來，現有活躍的開源專案在 Hadoop 頂上增加顯式的 BSP 程式設計，以及其他高效能並行程式設計模型，例如和 Apache Giraph。 BSP 已經被很多作者擴充套件來致力解決 BSP 在建模特定架構或計算範型上的不適合性。其中一個例子是可分解 BSP 模型。這個模型已經用於一些新建的程式語言和介面中，比如整體同步並行 ML（BSML）、BSPLib 、Apache Hama 和 Pregel。 BSPLib 標準的著名實現，是 Paderborn 大學 BSP 庫 The Paderborn University BSP PUB Library Design Implementation and Performance Heinz Nixdorf Institute Departement of Computer Science University of Paderborn Germany technical report ，和 Jonathan Hill 的牛津 BSP ToolsetJonathan Hill The Oxford BSP Toolset 1998。現代實現包括：在訊息傳遞介面頂上模擬 BSP 的 BSPonMPIWijnand J Suijlen BSPonMPI 2006，和以現代共享記憶體架構為目標的 MulticoreBSPMulticoreBSP for C a highperformance library for sharedmemory parallel programming by A N Yzelman R H Bisseling D Roose and K Meerbergen in International Journal of Parallel Programming in press 2013 doi101109TPDS201331An ObjectOriented Bulk Synchronous Parallel Library for Multicore Programming by A N Yzelman Rob H Bisseling in Concurrency and Computation Practice and Experience 24 5 pp 533553 2012 doi101002cpe1843。C 語言版 MulticoreBSP，特別知名於它的開啟巢狀 BSP 執行的能力，從而允許顯式的 MultiBSP 程式設計。 參閱 並行程式設計模型 同步屏障 引用 外部連結 BSP Worldwide BSP related papers BSML official website Paderborn University BSP library BSPonMPI MulticoreBSP Category 平行計算 Category 計算模型