整體同步並行計算模型
一個BSP超級步驟。程序缺乏線性次序並且可以按任何方式對映到處理器。
整體同步並行計算模型（Bulk Synchronous Parallel Computing Model），又名大同步模型或BSP模型，由哈佛大學萊斯利·瓦利安特提出，他希望像馮·諾伊曼體系結構那樣，架起計算機程式語言和體系結構間的橋樑，故又稱其為橋接模型（Bridging Model）。
歷史
BSP是哈佛大學電腦科學家Leslie Valiant在1980年代開發的，決定性文章發表于1990年。
在1990年至1992年間，Leslie Valiant在普林斯頓和哈佛，與牛津大學的Bill McColl致力於分佈式記憶體BSP程式設計模型的工作。在1992年至1997年間，McColl在牛津領導了一個大型研究組開發了各種BSP程式設計庫、語言和工具，還有多種大規模並行BSP演算法。隨著興趣和勢頭的增長，McColl接著領導了源自牛津、哈佛、佛羅里達、普利斯頓、貝爾實驗室、哥倫比亞和烏特勒支的一個組織為BSP程式設計開發並在1996年出版了BSPlib標準。
Valiant在2000年代開發了BSP模型的一個擴充套件，在2011年出版為Multi-BSP模型。
在2017年，McColl開發了BSP模型的一個主要新擴充套件，提供了在AI、分析和HPC的大規模並行中的錯誤容忍和tail容忍。
模型
BSP計算構成自：
* 部件（component）：例如處理器，它們勝任處理And/or區域性記憶體事務，
* 網路：它在成對的這種部件之間路由訊息，
* 屏障（barrier）：它是允許所有或子集的部件進行同步化的硬體設施。
這通常解釋為可以跟進不同的計算執行緒的一組處理器，每個處理器配備了快速區域性記憶體並用通訊網路互連起來。BSP演算法嚴重依賴第三個特徵；計算是在一系列的全域性「超級步驟」中行進的，它由三部份構成：
* 併發計算：所有參與處理器可以進行本地計算，就是說每個處理器只能利用在這個處理器的快速本地記憶體記憶體儲的數值。計算與所有其他計算非同步發生但可以經由通訊搭接（overlap）。
* 通訊：處理器相互之間交換數據來促成遠端數據儲存能力。
* 同步：當一個處理器到達一個屏障點的時候，它一直等待到所有其他處理器也到達同樣這個屏障。
計算和通訊活動不必須在時間上依次安排。通訊典型的採用單邊的「put」和「get」直接遠端記憶體訪問（DRMA）呼叫的形式，而不用成對的雙邊「send」和「receive」訊息傳遞呼叫。屏障同步化終結超級步驟：它確保所有單邊通訊都正確終結。基於雙邊通訊的系統于每次訊息發送中隱式包含了這種同步化代價。屏障同步的方法依賴於BSP計算機的硬體設施。在Valiant的最初論文中，這個設施週期的檢查目前超級步驟的末端是否被全域性性的到達了。這個檢查的週期指示為。
這個模型展示在右側的示意圖中。程序不被當作有特定的線性次序（從左至右或反之），並可以按任何方式對映到處理器。
BSP模型通過對問題的超額分解和對處理器的超額認訂，還非常適合於對分佈式記憶體計算啟用自動記憶體管理。計算被分開進入比實有的物理處理器更多的邏輯程序中，並且程序隨機的被指派到處理器。這種策略在統計上可以證實會導致最佳的負載平衡，對於工作和通訊二者都是如此。
通訊
在很多並行程式設計系統中，通訊被認為是在個體行動的層面：發送和接收一個訊息，記憶體到記憶體傳送等。這是難於共事的，因為在並行程式設計中會有很多同時通訊行動，而它們的互動典型的是複雜的。特別是，難於說出任何單一通訊行動要完成到底要得花多少時間。
BSP模型認為通訊行動是全體性的。這樣做的效果是可以給出一組數據通信要花費的時間的上限。BSP把一個超級步驟的所有通訊行動認作一個單元，並假定所有個體資訊發送作為由固定大小的這個單元的一部份。
超級步驟的到來和外出資訊的最大數目指示為。通訊網路遞送數據的能力通過參數來捕獲，定義一個處理器花費時間來遞送大小為1的個訊息。
發送長度的訊息顯然要比大小為1的訊息用時更長。但是，BSP模型不區分長度的1個訊息和長度1的 個訊息。在二者情況下代價都計為。
參數依賴於下列因素：
* 在通訊網路內用來互動的協議。
* 處理器和通訊網路二者所做的緩衝區管理。
* 在網路中使用的路由策略。
* BSP執行時系統。
實際上，對於每個並行計算機的確定都是經驗性的。注意不是規格化（normalise）的單字遞送時間，而是在連續交通條件下的單字遞送時間。
屏障
BSP模型的單邊通訊要求屏障同步。屏障是潛在的有代價的，但是避免了死鎖或活鎖的可能性，因為不能建立循環的數據依賴。檢測並處理它們的工具是不需要的。
屏障同步的代價受到幾個要素的影響：
* 參與進來的並行計算的完成時間上的變化所施加的代價。舉例來說，除了一個之外的所有程序都完成了它們在這個超級步驟內的工作，並等待最後的那個程序，而它仍有很多工作要完成。一個實現能做的最好的事情是確保所有程序工作在大致相同的問題大小上。
* 所有處理器達到全域性一致性狀態的代價。這依賴於通訊網路，但也依賴於是否有專門硬體用於同步化，並依賴於處理器處理中斷的方式。
屏障同步的代價指示為。注意如果BSP計算機的同步化機制是Valiant建議的那樣，則。實際上，值的確定是經驗性的。
屏障在大型的計算機上是代價高昂的，並隨著更大的規模而逐漸增大。已有關於從現存演算法中去除同步點的大量文獻，包括在BSP計算和此外的語境下。例如，很多演算法允許對超級步驟的全域性結束的區域性檢測，簡單的通過將區域性資訊比較於已經收到了的訊息的數目。相較於最小的要求的通訊延遲，這驅使全域性同步的代價可計為零。然而對將來的超級計算機架構和網路互連，這個最小延遲預期還會進一步增加；BSP模型，與其他並行計算模型一起，需要適應應對這種趨勢。Multi-BSP是基於BSP的一種解決方案。
BSP演算法的代價
超級步驟的代價確定自三項之和：最長的執行的區域性計算的代價，在處理器之間全域性通訊的代價，和在超級步驟結束處屏障同步的代價。個處理器的超級步驟的代價是：
，
這裡的是程序中區域性計算的代價，而是程序發送或接收的訊息的數目。注意這裡假定了同構處理器。更常見的表達式寫為：
，
這裡的和取了最大值。演算法的代價是每個超級步驟的代價的總和：
，
這裡的是超級步驟的數目。、和通常建模為函式，隨著問題大小而變化。BSP演算法的這三個特徵通常採用漸進符號，比如。
其他特點
* 如果一個處理器至多可以接收/發送訊息的數目是h條，那麼該模型就是「h-Relation」的。如果一個超級步中某個處理器的計算沒有完成，那麼下一個超級步就被分給該處理器繼續進行。
* 所有PRAM上的演算法均可在BSP上模擬，每個BSP處理器所能模擬的PRAM數目即成為並行寬鬆度（Slackness）。
* BSP放棄了程式區域性性原理，從而簡化的程式與實現的設計。這一點在並行計算中往往是一個好的特點，注意到一個大規模的計算中可能需要很多處理器，但實際上我們卻不可能提供那麼多處理器，於是一個處理器可能會被對映到多個虛擬程序，此時，附帶的程式區域性性原理反而會束縛處理器對儲存器的訪問。
* 選路器使用P2P的方式進行通訊，從而有效的避免了網路擁塞。
擴充套件和使用
對BSP的興趣近年來有所飆升，Google通過Pregel這樣的技術，將它接受為大規模的圖分析的主要技術。還有就是新一代的Apache Hadoop將MapReduce模型與Hadoop下部構造的餘下部份拆解開來，現有活躍的開源專案在Hadoop頂上增加顯式的BSP程式設計，以及其他高效能並行程式設計模型，例如Apache Hama和Apache Giraph。
BSP已經被很多作者擴充套件來致力解決BSP在建模特定架構或計算范型上的不適合性。其中一個例子是可分解BSP模型。這個模型已經用於一些新建的程式語言和介面中，比如整體同步並行ML（BSML）、BSPLib 、Apache Hama和Pregel。
BSPLib標準的著名實現，是Paderborn大學BSP庫，和Jonathan Hill的牛津BSP Toolset。現代實現包括：在訊息傳遞介面頂上模擬BSP的BSPonMPI，和以現代共享記憶體架構為目標的MulticoreBSP。C語言版MulticoreBSP，特別知名於它的開啟巢狀BSP執行的能力，從而允許顯式的Multi-BSP程式設計。
參閱
* 並行程式設計模型
* 同步屏障