# バリア同期 ## 定義 バリア同期は、コード中の 1 点をバリアに指定し、全プロセッサがそこへ到達するまで、どのプロセッサもそれを越えられないようにする同期である。[[Connection Machine CM-5]] は、これを制御網のハードウェアで提供した。共有セマフォによる実装が抱える性能問題を避け、同期されない MIMD 機で利用者が手作りしがちな複雑なプロトコルも不要にする。(Source: [[@1992__SPAA__The Network Architecture of the Connection Machine CM-5]]) **分割相バリア**は、バリアを入口と出口を持つコード領域とする。プロセッサは入口で入力メッセージを出力 FIFO へ送り、他の全員が送った直後に対応する入力 FIFO から結果を受け取って、全員が入口に達したと推論する。通常のバリアと違い、待つ間に他のコードを実行できるため、RISC の遅延分岐が分岐遅延を補うのと同様に、同期の遅延を隠せる。CM-5 の制御網では、同期 OR や各種コンバイニング操作を使って実装する。(Source: [[@1992__SPAA__The Network Architecture of the Connection Machine CM-5]]) CM-5 は **router-done** という特殊なリダクションで、バリア同期とデータ網の配送完了検査を結合した。ネットワークインターフェースが網に入ったメッセージ数と出た数を数え、全プロセッサが送信を終えて両者の差がゼロになれば、全員へ完了を通知する。これで、送信側が全員終わるまで受信側が受信をやめない、というデータ並列演算の要請を満たす。(Source: [[@1992__SPAA__The Network Architecture of the Connection Machine CM-5]]) ## 未解決の問い - 分割相バリアの遅延隠蔽は、現代の非同期集団通信(通信と計算の重ね合わせ)とどう対応づくか。 ## 未編纂の観察 - [定義] 「京」は、集合通信を速める高機能バリアインタフェースを、FX1 の高機能スイッチの機能として Tofu 上に実装した。768 プロセスでソフトウェア実装に比べバリア同期が 6.7 倍、縮約演算が 7.5 倍に速く、通信制御のオフロードでプロセッサ負荷も減らす。1 ノード内では、VISIMPACT のコア間バリアが 8 コアで約 0.1μs で、ソフトウェア実装の約 2μs の 1/20 である。CM-5 が制御網でバリアを提供したのと同様、同期をハードウェアで支える系譜に位置づく(Source: [[@2011__応用物理__次世代スパコン「京」のコアテクノロジ]] §3.2、§3.3、図 3) - 「京」では高機能バリアが OS ジッタ対策の協調スケジューリングの実現手段にもなる。OS ノイズの発生源が一斉に動くと、並列数 N への影響を減らせると述べる(Source: [[@2011__応用物理__次世代スパコン「京」のコアテクノロジ]] §3.4) - [定義] TBI は 8 本のバリアチャネル(1 本はシステム予約、7 本が通信ライブラリ用)を持ち、複数のバリア同期を並行して実行できる。バリアゲートは各ノード 64 個で、使うゲート数に応じて送受信回数の異なるアルゴリズムを選ぶ。CM-5 の制御網が同期を専用網で担ったのに対し、TBI は ICC チップ内の専用ハードウェアモジュールであることが明記される。ただしその通信が Tofu リンク上を通るか別の同期網かは、本稿にも記述が無い(Source: [[@2012__FUJITSU Sci Tech J__Tofu - Interconnect for the K computer]] §5.2) ## 関連 - 概念: [[並列プレフィックス演算]] / [[データ並列プログラミング]] / [[集合通信]] / [[相互結合網]] / [[OSジッタ]] - ソース: [[@1992__SPAA__The Network Architecture of the Connection Machine CM-5]] / [[@2011__応用物理__次世代スパコン「京」のコアテクノロジ]] - エンティティ: [[Connection Machine CM-5]] / [[K computer]] / [[Tofu Interconnect]] ## 出典 - [[@1992__SPAA__The Network Architecture of the Connection Machine CM-5]] - [[@2011__応用物理__次世代スパコン「京」のコアテクノロジ]](高機能バリアインタフェースの性能とコア間バリア) - [[@2012__FUJITSU Sci Tech J__Tofu - Interconnect for the K computer]](TBI のバリアチャネルとゲート(5.2 節))