JP5974703B2 - 情報処理装置およびバリア同期方法 - Google Patents
情報処理装置およびバリア同期方法 Download PDFInfo
- Publication number
- JP5974703B2 JP5974703B2 JP2012161392A JP2012161392A JP5974703B2 JP 5974703 B2 JP5974703 B2 JP 5974703B2 JP 2012161392 A JP2012161392 A JP 2012161392A JP 2012161392 A JP2012161392 A JP 2012161392A JP 5974703 B2 JP5974703 B2 JP 5974703B2
- Authority
- JP
- Japan
- Prior art keywords
- barrier
- synchronization
- completion
- counter
- barrier synchronization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004888 barrier function Effects 0.000 title claims description 807
- 238000000034 method Methods 0.000 title claims description 21
- 230000010365 information processing Effects 0.000 title claims description 7
- 230000007246 mechanism Effects 0.000 claims description 219
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 16
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
コンピュータにおける「並列処理」は、複数のプロセサコアで1つのタスクを動作させることである。問題を解く過程はより小さなタスクに分割できることが多いという事実を利用して処理効率の向上を図る手法である。
図1Aは初期状態、図1Bは同期中、図1Cは同期完了を示す。
最小のバリア同期の範囲であるバリアバンク1001には、プロセッサコア1002−a(a=1〜4)およびバリア同期機構1003が設けられている。バリアバンク1001は、Central Processing Unit(CPU)内に設けられている。
バリア状態1005は、バリア同期の制御に用いられる情報である。バリア状態1005の値は、“0”または“1”である。
各ハードウェアスレッド1004でスレッドが実行され、図1Bにおいて、ハードウェアスレッド1004−1−1、1004−3−1、1004−4−2がバリア同期ポイントに到着したものとする。
集中型バリア同期管理機構は、バリア同期を行うスレッド数が増大すると、バリア同期管理機構の複雑度が増大し、機構実現度が下がり、また同時に処理する要求数が増え、処理時間が長くなるという問題がある。
前記複数のバリアバンクの各バリアバンクは、スレッドを実行する一つ以上のハードウェアスレッドと、前記複数のバリアバンクのバリア同期を行うバリア同期機構と、を備える。
前記トップ部は、前記未着カウンタが0となったとき、前記バリア状態を同期完了を示す値とする。
図2は、実施の形態に係るサーバの構成図である。
サーバ101は、システムボード201−i(i=1〜4)およびスイッチ301を備える。サーバ101は、情報処理装置(コンピュータ)の一例である。サーバ101の構成は、以下の各実施の形態において共通である。
システムボード201−iは、CPU401−i−j(j=1〜4)を備える。
CPU401は1つ以上のプロセッサコアを有し、プロセッサコアは1つ以上のハードウェアスレッドを有する。
第1の実施の形態では、2階層のバリアバンク間の同期について説明する。
図3は、第1の実施の形態に係るCPUの構成図である。
CPU501は、プロセッサコア521−a(a=1〜4)およびバリア同期機構531を備える。また、プロセッサコア521−aおよびバリア同期機構531は、バリアバンク同期の最小単位であるバリアバンク511に含まれている。プロセッサコア521−aおよびバリア同期機構531は、バスにより接続されている。
バリア同期機構531は、ボトム部541およびトップ部551を備える。
ボトム部バリア状態542は、バリア同期の制御に用いられる情報である。ボトム部バリア状態は、“0”または“1”である。
トップ部バリア状態552は、バリア同期の制御に用いられる情報である。トップ部バリア状態552は、バリア同期対象の全バリアバンクの同期が完了しているか否かを示す。トップ部バリア状態552は、“0”または“1”である。図3において、トップ部バリア状態552は、“0”となっている。
トップ部551は、トップ部未着カウンタ553をチェックし、トップ部未着カウンタ553が“0”であることを検出すると、トップ部バリア状態552の値を反転させる。
図4Aは初期状態、図4Bは同期中、図4Cは同期完了を示す。
図4では、4つのバリアバンクのバリアバンク間同期の処理について説明する。
図4の4つのバリア同期機構531−i(i=1〜4)は、それぞれ異なるバリアバンクに属している。また、各バリアバンクは、同一のCPU内にあっても良いし、異なるCPUにあっても良い。
ボトム部541−iは、ボトム部バリア状態542−iおよびビットマップ群543−iを備える。
図4Bにおいて、ビットマップ群543−1のすべてのビットマップが“1”となったとする。
第1の実施の形態に係るバリア同期機構によれば、各バリア同期機構は、自身が属するバリアバンク内のハードウェアスレッドの同期完了と他のバリアバンク同期機構のバリア同期完了の通知を処理するので、従来の集中型バリア同期管理機構に比べて負荷が低くなり処理時間を短くできる。
第1の実施の形態に係るバリア同期機構によれば、トップ部にカウンタを用いているので、同期させるバリアバンクの数が増大しても、資源の増加を抑えることができる。
第2の実施の形態では、3階層のバリアバンク間の同期について説明する。
図5は、第2の実施の形態に係るCPUの構成図である。
CPU601は、プロセッサコア621−a(a=1〜4)およびバリア同期機構631を備える。また、プロセッサコア621−aおよびバリア同期機構631は、バリアバンク同期の最小単位であるバリアバンク611に含まれている。プロセッサコア621−aおよびバリア同期機構631は、バスにより接続されている。
バリア同期機構631は、シェア部641、ボトム部651、ミドル部661、およびトップ部671を備える。
シェア部バリア状態642は、バリア同期の制御に用いられる情報である。シェア部バリア状態642は、バリア同期対象の全バリアバンクの同期が完了しているか否かを示す情報である。シェア部バリア状態642は、“0”または“1”である。
SYNCID644は、バリア同期機構631が属するグループを識別する識別子(ID)である。
ボトム部バリア状態652は、バリア同期の制御に用いられる情報である。ボトム部バリア状態652は、“0”または“1”である。
ボトム部ターゲットマスク655は、ボトム部ターゲットID654に対してドントケアビット(don't care bit)の位置を指定する情報である。すなわち、ボトム部ターゲットマスク655は、ボトム部ターゲットID654の任意の値をとることが可能なビットの位置を示す。
ミドル部未着カウンタ662は、ミドル部661がバリア同期をチェックするバリア同期機構のうち、ボトム部バリア同期完了を送信していないバリア同期機構の数をカウントし、カウントした値を保持する。ミドル部未着カウンタ662は、ボトム部バリア同期完了を受信すると、ミドル部未着カウンタ662の値を1減算する。
ミドル部ターゲットID664は、ミドル部661がバリア同期完了をブロードキャストするバリア同期機構を示す情報である。
トップ部未着カウンタ672は、トップ部671がバリア同期をチェックするバリア同期機構のうち、ミドル部バリア同期完了を送信していないバリア同期機構の数をカウントし、カウントした値を保持する。トップ部未着カウンタ672は、ミドル部バリア同期完了を受信すると、トップ部未着カウンタ672の値を1減算する。
トップ部期待カウンタ673は、トップ部671がバリア同期をチェックするバリア同期機構の数を示す情報を設定し保持する。
図6A、6Bにおいて、32個のバリア同期機構0xk(k=00〜1f)がある。
バリア同期機構0xkのそれぞれのBANKIDは0xkである。例えば、バリア同期機構0x00のBANKIDは、0x00である。尚、”0x”は、16進数表記であることを示す。例えば、0x00を2進数表記で表すと、0000_0000となる。
バリア同期機構0x00は、バリア同期完了をターゲットIDおよびターゲットマスクで指定されるバリア同期機構にブロードキャストする。
ターゲットID0x00を2進数表記であらわすと0000_0000である。
バリア同期機構0x00は、バリア同期完了をブロードキャストするバリア同期機構(ブロードキャスト範囲)のBANKIDをターゲットIDおよびターゲットマスクを用いて算出する。
すなわち、バリア同期完了がブロードキャストされるバリア同期機構は、バリア同期機構0x00、0x04、0x10、0x14である。
バリア同期完了を通知する宛先のIDをリストを用いて管理すると、通知するバリアバンクが増大すると必要な資源数も増大してしまう。上記のようにターゲットIDとターゲットマスクを用いることで、資源数の増大を抑えることができる。
この方法では、2^m(0<=m<=n)個のバリア同期機構をブロードキャスト範囲として指定できるが、任意のバリアバンク集合を構成することができない。
図6Bにおいて、バリア同期機構0x04がバリア同期完了をブロードキャストする場合について説明する。
バリア同期機構0x04には、ターゲットIDが0x04、ターゲットマスクが0x0bとして設定されているとする。
ターゲットマスク0x0bを2進数表記であらわすと0000_1011である。すなわち、ターゲットIDの上位から5ビット目、7ビット目、および8ビット目が任意の値を取ることができることを示す。
よって、バリア同期機構0x04は、バリア同期機構0x04、0x05、0x06、0x07、0x0c、0x0d、0x0e、0x0fにSYNCIDとして0x11を付加したバリア同期完了をブロードキャストする。
図7Aは初期状態、図7B〜7Dは同期中、図7Eは同期完了を示す。
図7では、16個のバリアバンクのバリアバンク間同期の処理について説明する。
図7の16個のバリア同期機構631−m(m=00〜0f)は、それぞれ異なるバリアバンクに属している。また、各バリアバンクは、同一のCPU内にあっても良いし、異なるCPUにあっても良い。
シェア部641−mは、シェア部バリア状態642−m、BANKID643−m、およびSYNCID644−mを有する。
BANKID643−mは、それぞれ0xmと設定されている。
また、SYNCID644−mは、未設定である。
ビットマップ群653−mの各ビットマップは、0である。
ボトム部ターゲットID654−mは0x00であり、ボトム部ターゲットマスク655−mは0x0cである。
ミドル部未着カウンタ662−01〜662−03、662−05〜662−07、662−09〜662−0b、662−0d〜662−0fは、未設定である。
ミドル部期待カウンタ663−01〜663−03、663−05〜663−07、663−09〜663−0b、663−0d〜663−0fは、未設定である。
ミドル部ターゲットID664−01〜664−03、664−05〜664−07、664−09〜664−0b、664−0d〜664−0fは、未設定である。
ミドル部ターゲットマスク665−01〜665−03、665−05〜665−07、665−09〜665−0b、665−0d〜665−0fは、未設定である。
トップ部期待カウンタ673−mは、1である。
ミドル部未着カウンタ662、ミドル部期待カウンタ663、ミドル部ターゲットID664、およびミドル部ターゲットマスク665が設定されているバリア同期機構631は、ミドル部有効バリアバンクと呼ぶ。
最初にビットマップ群653−01のすべてのビットマップが“1”となったとする。すなわち、バリア同期機構631−01と接続するすべてのハードウェアスレッドがバリア同期ポイントに到着したものとする。ボトム部651−01は、ボトム部バリア状態652−01の値を反転、すなわち“1”にする。
バリア同期機構631−mと接続するハードウェアスレッドは、シェア部バリア状態642−mがビットマップに書き込んだ値(1)と同じとなったことを確認し、次のバリア同期ポイントまで処理を行う。
従来の集中型バリア同期管理機構では、バリア同期行うプロセサコア数が増大すると、ネットワークを通過する通信数が増え、ネットワークの輻輳が発生する。
(第3の実施の形態)
第3の実施の形態では、4階層のバリアバンク間の同期について説明する。
CPU701は、図2のCPU401に対応する。
CPU701は、プロセッサコア721−a(a=1〜4)およびバリア同期機構731を備える。また、プロセッサコア721−aおよびバリア同期機構731は、バリアバンク同期の最小単位であるバリアバンク711に含まれている。プロセッサコア721−aおよびバリア同期機構731は、バスにより接続されている。
ハードウェアスレッド722は、図5のハードウェアスレッド622と同様の機能を有するため説明は省略する。
バリア同期機構731は、シェア部741、ボトム部751、ミドル部761、およびトップ部771を備える。
シェア部バリア状態742、BANKID743、およびSYNCID744は、図5のシェア部バリア状態642、BANKID643、およびSYNCID644とそれぞれ同様の機能を有するため説明は省略する。
ボトム部751、ボトム部バリア状態752、ビットマップ群753、ボトム部ターゲットID754、およびボトム部ターゲットマスク755は、図5のボトム部バリア状態652、ビットマップ群653、ボトム部ターゲットID654、およびボトム部ターゲットマスク655とそれぞれ同様の機能を有するため説明は省略する。
ミドル部ターゲットID764は、ミドル部761がバリア同期完了をブロードキャストするバリア同期機構を示す情報である。
トップ部771は、トップ部未着カウンタ772、およびトップ部期待カウンタ773を有する。
トップ部771は、トップ部未着カウンタ772が“0”となった場合、シェア部バリア状態742の値を反転する。また、トップ部771は、トップ部未着カウンタ772が“0”となった場合、トップ部未着カウンタ772の値をトップ部期待カウンタ773の値に再設定する。
図9Aは初期状態、図9B〜9Dは同期中、図9Eは同期完了を示す。
図9では、64個のバリアバンクのバリアバンク間同期の処理について説明する。
図9では、16個のバリアバンクごとに4つの第2階層グループが設定されている。また、8個のバリアバンクごとに8つの第3階層グループが設定されている。
図10A〜Cに示すバリア同期機構は、図9A示す初期状態のバリア同期機構である。
図10Aは、バリア同期機構731−p(p=01〜03、05〜0b、0d〜0f、11〜13、15〜1b、1d〜1f、21〜23、25〜2b、2d〜2f、31〜33、35〜3b、3d〜3f)の構成を示す。
シェア部741−pは、シェア部バリア状態742−p、BANKID743−p、SYNCID744−pを有する。
シェア部バリア状態742−p、BANKID743−p、SYNCID744−p、ボトム部バリア状態752−p、ビットマップ群753−p、ボトム部ターゲットID754−p、ボトム部ターゲットマスク755−p、ミドル部未着カウンタ762−p、ミドル部期待カウンタ763−p、ミドル部ターゲットID764−p、ミドル部ターゲットマスク765−p、ミドル部宛先階層766−p、トップ部未着カウンタ772−p、およびトップ部期待カウンタ773−pは、図8のシェア部バリア状態742、BANKID743、SYNCID744、ボトム部バリア状態752、ビットマップ群753、ボトム部ターゲットID754、ボトム部ターゲットマスク755、ミドル部未着カウンタ762、ミドル部期待カウンタ763、ミドル部ターゲットID764、ミドル部ターゲットマスク765、ミドル部宛先階層766、トップ部未着カウンタ772、およびトップ部期待カウンタ773にそれぞれ対応する。
BANKID743−pは、それぞれ0xpと設定されている。バリア同期機構731−pが有するBANKID743−p(=0xp)を自IDとも呼ぶ。
ボトム部バリア状態752−pは、0である。
ビットマップ群753−pの各ビットマップは、0である。
ミドル部期待カウンタ763−pは、未設定である。
ミドル部ターゲットID764−pは、未設定である。
ミドル部宛先階層766−pは、未設定である。
トップ部未着カウンタ672−pは、1である。
ミドル部未着カウンタ762−p、ミドル部期待カウンタ763−p、ミドル部ターゲットID764−p、ミドル部ターゲットマスク765−p、およびミドル部宛先階層766−pが未設定であるバリア同期機構731−pは、ミドル部無効バリアバンクと呼ぶ。
バリア同期機構731−qは、シェア部741−q、ボトム部751−q、ミドル部761−q、およびトップ部771−qを備える。
ボトム部751−qは、ボトム部バリア状態752−q、ビットマップ群753−q、ボトム部ターゲットID754−q、およびボトム部ターゲットマスク755−qを有する。
シェア部バリア状態742−q、BANKID743−q、SYNCID744−q、ボトム部バリア状態752−q、ビットマップ群753−q、ボトム部ターゲットID754−q、ボトム部ターゲットマスク755−q、ミドル部未着カウンタ762−q、ミドル部期待カウンタ763−q、ミドル部ターゲットID764−q、ミドル部ターゲットマスク765−q、ミドル部宛先階層766−q、トップ部未着カウンタ772−q、およびトップ部期待カウンタ773−qは、図8のシェア部バリア状態742、BANKID743、SYNCID744、ボトム部バリア状態752、ビットマップ群753、ボトム部ターゲットID754、ボトム部ターゲットマスク755、ミドル部未着カウンタ762、ミドル部期待カウンタ763、ミドル部ターゲットID764、ミドル部ターゲットマスク765、ミドル部宛先階層766、トップ部未着カウンタ772、およびトップ部期待カウンタ773にそれぞれ対応する。
BANKID743−qは、それぞれ0xqと設定されている。バリア同期機構731−qが有するBANKID743−q(=0xq)を自IDとも呼ぶ。
ボトム部バリア状態752−qは、0である。
ビットマップ群753−qの各ビットマップは、0である。
ミドル部未着カウンタ762−qは、16である。
ミドル部ターゲットID764−qは、0x04である。
ミドル部ターゲットマスク765−qは、0x38である。
トップ部未着カウンタ672−qは、1である。
トップ部期待カウンタ673−qは、1である。
バリア同期機構731−rは、シェア部741−r、ボトム部751−r、ミドル部761−r、およびトップ部771−rを備える。
ボトム部751−rは、ボトム部バリア状態752−r、ビットマップ群753−r、ボトム部ターゲットID754−r、およびボトム部ターゲットマスク755−rを有する。
トップ部771−rは、トップ部未着カウンタ772−r、およびトップ部期待カウンタ773−rを有する。
BANKID743−rは、それぞれ0xrと設定されている。バリア同期機構731−rが有するBANKID743−r(=0xr)を自IDとも呼ぶ。
ボトム部バリア状態752−rは、0である。
ビットマップ群753−rの各ビットマップは、0である。
ミドル部未着カウンタ762−rは、4である。
ミドル部ターゲットID764−rは、0xrである。すなわち、BANKID743−rと同じ値である。
ミドル部宛先階層766−rは、0である。
トップ部未着カウンタ672−rは、1である。
先ず、図9Aの初期状態において、各バリアバンクのハードウェアスレッドにおいて処理が開始される。
ボトム部バリア同期完了を受信したミドル部未着カウンタ762−00は、ミドル部未着カウンタ762−00を1減算する。
ミドル部未着カウンタ762−00は、ボトム部バリア同期完了を受信する度にミドル部未着カウンタ762−00を1減算する。
ボトム部バリア同期完了を受信したミドル部未着カウンタ762−00は、ミドル部未着カウンタ762−00を1減算する。これにより、ミドル部未着カウンタ762−00の値は“0”となる。
TO_MIDDLE=1が付加されたミドル部同期完了を受信したミドル部761−rは、ミドル部未着カウンタ762−rを1減算する。
ボトム部751−20〜751−2fは、ボトム部バリア同期完了をバリア同期機構731−20に通知する。
ミドル部未着カウンタ762−10、762−20、カウンタ762−30は、それぞれボトム部バリア同期完了を受信する度にミドル部未着カウンタ762−10、762−20、762−30を1減算する。
TO_MIDDLE=1が付加されたミドル部同期完了を受信したミドル部761−rは、ミドル部未着カウンタ762−rを1減算する。これにより、ミドル部未着カウンタ762−rは、“0”となる。
ミドル部761−0cは、ミドル部同期完了をバリア同期機構731−08〜731−0fにブロードキャストする。
ミドル部761−1cは、ミドル部同期完了をバリア同期機構731−18〜731−1fにブロードキャストする。
ミドル部761−2cは、ミドル部同期完了をバリア同期機構731−28〜731−2fにブロードキャストする。
ミドル部761−3cは、ミドル部同期完了をバリア同期機構731−38〜731−3fにブロードキャストする。
TO_MIDDLE=0が付加されたミドル部同期完了を受信したトップ部771−sは、トップ部未着カウンタ772−sを1減算する。これにより、トップ部未着カウンタ772−sは、“0”となる。
上述のように第1の実施の形態の2階層のバリア同期では、n=全バリアバンク数とすると、n^2の通信が発生し、第2の実施の形態の3階層のバリア同期の通信数は、m2=第2階層のバリアバンクグループ数とすると、n*(m2+1)のである。
第3の実施の形態のバリア同期によれば、4階層のバリアバンク同期を行うことでさらに通信数を削減でき、ネットワークの輻輳を防止できる。
図11は、第4の実施の形態に係るCPUの構成図である。
CPU801は、図2のCPU401に対応する。
CPU801は、プロセッサコア821−a(a=1〜4)およびバリア同期機構831を備える。また、プロセッサコア821−aおよびバリア同期機構831は、バリアバンク同期の最小単位であるバリアバンク811に含まれている。プロセッサコア821−aおよびバリア同期機構831は、バスにより接続されている。
ハードウェアスレッド822は、図5のハードウェアスレッド622と同様の機能を有するため説明は省略する。
バリア同期機構831は、シェア部841、ボトム部851、ミドル部861、およびトップ部871を備える。
シェア部バリア状態842、BANKID843、およびSYNCID844は、図5のシェア部バリア状態642、BANKID643、およびSYNCID644とそれぞれ同様の機能を有するため説明は省略する。
(1)バリアタイプ845が“バンク内”の場合
ボトム部851は、シェア部バリア状態842の値を反転させる。すなわち、シェア部バリア状態842とボトム部バリア状態852の値が同じとなる。
(2)バリアタイプ845が“バンク間”の場合
ボトム部851は、ボトム部ターゲットID854およびボトム部ターゲットマスク855で指定されたバリア同期機構にボトム部バリア同期完了をブロードキャストする。尚、SYNCID844が設定されている場合、ボトム部851は、ボトム部バリア同期完了にSYNCID844を付加してブロードキャストする。さらに、ボトム部851は、ボトム部バリア同期完了にボトム部宛先階層856の値を付加する。例えば、ボトム部851は、ボトム部宛先階層856が“1”の場合、TO_MIDDLE=1をボトム部バリア同期完了に付加し、ミドル部宛先階層856が“0”の場合、TO_MIDDLE=0をボトム部バリア同期完了に付加する。
ミドル部ターゲットID864は、ミドル部861がバリア同期完了をブロードキャストするバリア同期機構を示す情報である。
尚、ミドル部861は、バリアタイプ845が“バンク内”である場合、無効となっており、バリア同期完了を受信しても動作しない。また、ミドル部861は、バリアタイプ845が“バンク間”且つボトム部宛先階層856が“0”の場合、無効となっており、バリア同期完了を受信しても動作しない。 トップ部871は、トップ部未着カウンタ872、およびトップ部期待カウンタ873を有する。
トップ部871は、トップ部未着カウンタ872が“0”となった場合、シェア部バリア状態842の値を反転する。また、トップ部871は、トップ部未着カウンタ872が“0”となった場合、トップ部未着カウンタ872の値をトップ部期待カウンタ873の値に再設定する。
第4の実施の形態に係るバリアバンク機構によれば、設定により、従来のバリアバンク内同期や第1〜3の実施の形態に係るバリアバンク間同期のいずれも実現できる。
次に、第4の実施の形態に係るバリア同期機構831において、バリアタイプ845、ボトム部宛先階層856、ミドル部宛先階層866の設定例とバリア同期機構831の動作について、複数の例を示す。
第1の設定例は、バリアバンク内同期を行う場合に用いられる。
第1の設定例において、バリアタイプ845は“バンク内”である。
また、バリアタイプ845が“バンク内”なので、ミドル部861およびトップ部871は、無効となっている。
第1の設定例を用いることにより、背景技術で述べたバリアバンク内のバリア同期を実現できる。
第2の設定例は、2階層のバリアバンク間同期を行う場合に用いられる。
第2の設定例において、バリアタイプ845は“バンク間”である。
また、BANKID843、SYNCID844、ボトム部ターゲットID854、ボトム部ターゲットマスク855、トップ部未着カウンタ872、およびトップ部期待カウンタ873は、バリア同期機構831に応じた適切な値が設定されているものとする。
ボトム部851は、ビットマップ群853のすべてのビットマップが同じ値且つボトム部バリア状態852と異なる値となった場合、ボトム部バリア状態852の値を反転させる。
第3の設定例は、3階層のバリアバンク間同期を行う場合に用いられる。
第3の設定例において、バリアタイプ845は“バンク間”である。
ミドル部宛先階層866は、“0”である。
また、BANKID843、SYNCID844、ボトム部ターゲットID854、ボトム部ターゲットマスク855、ミドル部未着カウンタ862、ミドル部期待カウンタ863、ミドル部ターゲットID864、ミドル部ターゲットマスク865、トップ部未着カウンタ872、およびトップ部期待カウンタ873は、バリア同期機構831に応じた適切な値が設定されているものとする。
また、ミドル部861は、ミドル部未着カウンタ862が“0”となった場合、ミドル部未着カウンタ862の値をミドル部期待カウンタ863の値に再設定する。
図13において、CPU401−i−jは、それぞれ2つのバリアバンクを有する。
尚、CPUのことをチップとも呼ぶ。
・例1)1バリアバンク内のバリア同期
例1では、バリアバンク411−1−1−1内でバリア同期を行う。この場合、バリアバンク411−1−1−1外への通信は発生しない。
例2では、バリアバンク411−2−1−1とバリアバンク411−2−1−2とでバリアバンク間同期を行う。この場合、CPU401−2−1内でバリア同期可能となる。
したがって、CPU401−2−1外への通信は発生しない。
・例3)2チップのバリア同期(4バリアバンク)
例3では、CPU401−1−1内の2つのバリアバンクとCPU401−1−2内の2つのバリアバンクとでバリアバンク間同期を行う。すなわち、4つのバリアバンクのバリア同期を行う。
4つのバリアバンクのバリア同期を2階層のバリア同期で実施すると、CPU401−1−1とCPU401−1−2間以外の通信は発生しない。
例4では、システムボード201−2内の8つのバリアバンクのバリア同期を行う。ここで、2階層のバリア同期を行う。
2階層バリア同期では、一度のバリア同期のために発行される総信号数は各バリアバンクからのブロードキャスト数の合計となる。
したがって、一度のバリア同期のために発行される総信号数は8*8=64となる。
・例5)サーバ全体のバリア同期(32バリアバンク)
例5では、サーバ101全体でバリア同期を行う。
2階層バリア同期でサーバ101全体のバリア同期を行うと、一度のバリア同期のために発行される総信号数は各バリアバンクからのブロードキャスト数となる。
したがって、一度のバリア同期のために発行される総信号数は32*32=1024となる。また、発行される信号のうち、スイッチ301経由で送信される信号数は 32*24=768となる。
多数のバリアバンクでバリア同期する場合には、上記例5の3階層バリア同期のように階層を追加することで、システム全体で発行されるバリア同期信号数を削減できる。これは上記スイッチ等の共通通信経路が性能ボトルネックとなる場合に有効に働く。
201 システムボード
301 スイッチ
401 CPU
501 CPU
511 バリアバンク
521 プロセッサコア
522 ハードウェアスレッド
531 バリア同期機構
541 ボトム部
542 ボトム部バリア状態
543 ビットマップ群
551 トップ部
552 トップ部バリア状態
553 トップ部未着カウンタ
554 トップ部期待カウンタ
601、701、801 CPU
611、711、811 バリアバンク
621、721、821 プロセッサコア
622、722、822 ハードウェアスレッド
631、731、831 バリア同期機構
641、741、841 シェア部
642、742、842 シェア部バリア状態
643、743、843 BANKID
644、744、844 SYNCID
651、751、851 ボトム部
652、752、852 ボトム部バリア状態
653、753、753 ビットマップ群
654、754、854 ミドル部ターゲットID
655、755、855 ミドル部ターゲットマスク
661、761、861 ミドル部
662、762、862 ミドル部未着カウンタ
663、763、863 トップ部期待カウンタ
664、764、764 トップ部ターゲットID
665、765、865 トップ部ターゲットマスク
671、771、871 トップ部
672、772、872 トップ部未着カウンタ
673、773、873 トップ部期待カウンタ
766、866 ミドル部宛先階層
856 ボトム部宛先階層
Claims (2)
- 複数のバリアバンクを有し、前記複数のバリアバンクの同期を行う情報処理装置であって、
前記複数のバリアバンクの各バリアバンクは、
スレッドを実行する一つ以上のハードウェアスレッドと、
前記複数のバリアバンクのバリア同期を行うバリア同期機構と、
を備え、
前記バリア同期機構は、
同期完了しているか否かを示すバリア状態と、
前記一つ以上のハードウェアスレッドの同期ポイントへの到着を示すビットマップおよびボトム部同期完了の通知先を示すボトム部ターゲット情報を備えるボトム部と、
ボトム部同期完了を送信していないバリアバンクの数を示すミドル部未着カウンタおよびミドル部同期完了の通知先を示すミドル部ターゲット情報を備えるミドル部と、
ミドル部同期完了を送信していないバリアバンクの数を示すトップ部未着カウンタを備えるトップ部と、
を備え、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、ボトム部同期完了を前記ボトム部ターゲット情報で指定されるバリアバンクに通知し、
前記ミドル部未着カウンタは、前記ボトム部同期完了を受信すると、前記ミドル部未着カウンタを1減算し、
前記ミドル部は、前記ミドル部未着カウンタが0となったとき、ミドル部同期完了を前記ミドル部ターゲット情報で指定されるバリアバンクに通知し、
前記トップ部未着カウンタは、前記ミドル部同期完了を受信すると、前記トップ部未着カウンタを1減算し、
前記トップ部は、前記トップ部未着カウンタが0となったとき、前記バリア状態を同期完了を示す値とし、
前記ミドル部は、前記ミドル部同期完了に対する処理を行う処理部を示す第1の処理部フラグをさらに備え、
前記バリア同期機構は、前記バリア同期機構が行うバリア同期の種類を示すバリアタイプをさらに備え、
前記ボトム部は、前記ボトム部同期完了に対する処理を行う処理部を示す第2の処理部フラグをさらに備え、
前記バリアタイプがバリアバンク内の同期を示す場合、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、前記バリア状態を同期完了を示す値とし、
前記バリアタイプがバリアバンク間の同期を示す場合、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、ボトム部同期完了を前記ボトム部ターゲット情報で指定されるバリアバンクに前記第2の処理部フラグを付加して通知し、
前記ミドル部未着カウンタは、前記ミドル部を示す前記第2の処理部フラグが付加されたボトム部同期完了、または前記ミドル部を示す前記第1の処理部フラグが付加されたミドル部同期完了を受信すると、前記ミドル部未着カウンタを1減算し、
前記ミドル部は、前記ミドル部未着カウンタが0となったとき、ミドル部同期完了を前記ミドル部ターゲット情報で指定されるバリアバンクに前記第1の処理部フラグを付加して通知し、
前記トップ部未着カウンタは、前記トップ部を示す前記第2の処理部フラグが付加されたボトム部同期完了、または前記トップ部を示す前記第1の処理部フラグが付加された前記ミドル部同期完了を受信すると、前記トップ部未着カウンタを1減算することを特徴とする情報処理装置。 - 複数のバリアバンクを有し、前記複数のバリアバンクの同期を行う情報処理装置が実行するバリア同期方法であって、前記複数のバリアバンクの各バリアバンクは、スレッドを実行する一つ以上のハードウェアスレッドと、前記複数のバリアバンクのバリア同期を行うバリア同期機構と、を備え、前記バリア同期機構は、前記一つ以上のハードウェアスレッドの同期ポイントへの到着を示すビットマップおよびボトム部同期完了の通知先を示すボトム部ターゲット情報を備えるボトム部と、ボトム部同期完了を送信していないバリアバンクの数を示すミドル部未着カウンタおよびミドル部同期完了の通知先を示すミドル部ターゲット情報を備えるミドル部と、ミドル部同期完了を送信していないバリアバンクの数を示すトップ部未着カウンタを備えるトップ部と、を備え、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、ボトム部同期完了を前記ボトム部ターゲット情報で指定されるバリアバンクに通知し、
前記ミドル部未着カウンタは、前記ボトム部同期完了を受信すると、前記ミドル部未着カウンタを1減算し、
前記ミドル部は、前記ミドル部未着カウンタが0となったとき、ミドル部同期完了を前記ミドル部ターゲット情報で指定されるバリアバンクに通知し、
前記トップ部未着カウンタは、前記ミドル部同期完了を受信すると、前記トップ部未着カウンタを1減算し、
前記トップ部は、前記トップ部未着カウンタが0となったとき、同期完了しているか否かを示すバリア状態を同期完了を示す値とし、
前記ミドル部は、前記ミドル部同期完了に対する処理を行う処理部を示す第1の処理部フラグをさらに備え、
前記バリア同期機構は、前記バリア同期機構が行うバリア同期の種類を示すバリアタイプをさらに備え、
前記ボトム部は、前記ボトム部同期完了に対する処理を行う処理部を示す第2の処理部フラグをさらに備え、
前記バリアタイプがバリアバンク内の同期を示す場合、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、前記バリア状態を同期完了を示す値とし、
前記バリアタイプがバリアバンク間の同期を示す場合、
前記ボトム部は、前記ビットマップをチェックし、前記一つ以上のハードウェアスレッドがすべてバリア同期ポイントに到着した場合、ボトム部同期完了を前記ボトム部ターゲット情報で指定されるバリアバンクに前記第2の処理部フラグを付加して通知し、
前記ミドル部未着カウンタは、前記ミドル部を示す前記第2の処理部フラグが付加されたボトム部同期完了、または前記ミドル部を示す前記第1の処理部フラグが付加されたミドル部同期完了を受信すると、前記ミドル部未着カウンタを1減算し、
前記ミドル部は、前記ミドル部未着カウンタが0となったとき、ミドル部同期完了を前記ミドル部ターゲット情報で指定されるバリアバンクに前記第1の処理部フラグを付加して通知し、
前記トップ部未着カウンタは、前記トップ部を示す前記第2の処理部フラグが付加されたボトム部同期完了、または前記トップ部を示す前記第1の処理部フラグが付加された前記ミドル部同期完了を受信すると、前記トップ部未着カウンタを1減算することを特徴とするバリア同期方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012161392A JP5974703B2 (ja) | 2012-07-20 | 2012-07-20 | 情報処理装置およびバリア同期方法 |
US13/937,258 US9436520B2 (en) | 2012-07-20 | 2013-07-09 | Information processing device and barrier synchronization method |
US14/926,597 US9336064B2 (en) | 2012-07-20 | 2015-10-29 | Information processing device and barrier synchronization method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012161392A JP5974703B2 (ja) | 2012-07-20 | 2012-07-20 | 情報処理装置およびバリア同期方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014021820A JP2014021820A (ja) | 2014-02-03 |
JP5974703B2 true JP5974703B2 (ja) | 2016-08-23 |
Family
ID=49947673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012161392A Active JP5974703B2 (ja) | 2012-07-20 | 2012-07-20 | 情報処理装置およびバリア同期方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9436520B2 (ja) |
JP (1) | JP5974703B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2950214B1 (fr) * | 2014-05-23 | 2024-04-03 | Kalray | Barriere de synchronisation materielle entre elements de traitement |
US9760410B2 (en) * | 2014-12-12 | 2017-09-12 | Intel Corporation | Technologies for fast synchronization barriers for many-core processing |
WO2017024038A1 (en) * | 2015-08-03 | 2017-02-09 | The Arizona Board Of Regents On Behalf Of The University Of Arizona | Solar concentrator for a tower-mounted central receiver |
US11353868B2 (en) * | 2017-04-24 | 2022-06-07 | Intel Corporation | Barriers and synchronization for machine learning at autonomous machines |
GB2569775B (en) * | 2017-10-20 | 2020-02-26 | Graphcore Ltd | Synchronization in a multi-tile, multi-chip processing arrangement |
CN109756311A (zh) * | 2017-11-02 | 2019-05-14 | 普天信息技术有限公司 | 一种确定同步信号状态信息的方法及装置 |
GB2575294B8 (en) * | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
US11782713B1 (en) * | 2019-08-27 | 2023-10-10 | Amazon Technologies, Inc. | Security vulnerability mitigation using address space co-execution |
US11803380B2 (en) * | 2019-10-29 | 2023-10-31 | Nvidia Corporation | High performance synchronization mechanisms for coordinating operations on a computer system |
US11409579B2 (en) * | 2020-02-24 | 2022-08-09 | Intel Corporation | Multiple independent synchonization named barrier within a thread group |
US11988379B2 (en) | 2020-06-12 | 2024-05-21 | Bsh Home Appliances Corporation | Burner for a cooking appliance |
US11977496B1 (en) | 2022-09-29 | 2024-05-07 | Amazon Technologies, Inc. | Security vulnerability mitigation using hardware-supported context-dependent address space hiding |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2962241B2 (ja) * | 1996-09-10 | 1999-10-12 | 日本電気株式会社 | 階層型マルチプロセッサにおける並列処理方法 |
JP3730740B2 (ja) * | 1997-02-24 | 2006-01-05 | 株式会社日立製作所 | 並列ジョブ多重スケジューリング方法 |
JP2001051966A (ja) * | 1999-08-16 | 2001-02-23 | Nec Corp | ノード装置、並列処理システム、並列処理方法、および、並列処理プログラムを記録した記録媒体 |
US6592449B2 (en) | 2001-02-24 | 2003-07-15 | International Business Machines Corporation | Smart fan modules and system |
IL157508A0 (en) | 2001-02-24 | 2004-03-28 | Ibm | Global interrupt and barrier networks |
JP4448784B2 (ja) | 2005-03-15 | 2010-04-14 | 株式会社日立製作所 | 並列計算機の同期方法及びプログラム |
WO2008155806A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | バリア同期方法、装置、及びマルチコアプロセッサ |
WO2010109761A1 (ja) * | 2009-03-25 | 2010-09-30 | 日本電気株式会社 | 並列処理システム、並列処理方法、ネットワークスイッチ装置、及び並列処理プログラムの記録媒体 |
US8539204B2 (en) * | 2009-09-25 | 2013-09-17 | Nvidia Corporation | Cooperative thread array reduction and scan operations |
US20120179896A1 (en) * | 2011-01-10 | 2012-07-12 | International Business Machines Corporation | Method and apparatus for a hierarchical synchronization barrier in a multi-node system |
-
2012
- 2012-07-20 JP JP2012161392A patent/JP5974703B2/ja active Active
-
2013
- 2013-07-09 US US13/937,258 patent/US9436520B2/en active Active
-
2015
- 2015-10-29 US US14/926,597 patent/US9336064B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160077890A1 (en) | 2016-03-17 |
US9436520B2 (en) | 2016-09-06 |
JP2014021820A (ja) | 2014-02-03 |
US20140026138A1 (en) | 2014-01-23 |
US9336064B2 (en) | 2016-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5974703B2 (ja) | 情報処理装置およびバリア同期方法 | |
CN110313163B (zh) | 分布式计算系统中的负载平衡 | |
US11194753B2 (en) | Platform interface layer and protocol for accelerators | |
US8769155B2 (en) | Techniques for synchronizing application object instances | |
US20130232262A1 (en) | Flow control for reliable message passing | |
JP5331898B2 (ja) | 並列計算用の通信方法、情報処理装置およびプログラム | |
US10348612B2 (en) | Set up of direct mapped routers located across independently managed compute and storage networks | |
US11824765B2 (en) | Fast redirect of traffic when pods fail | |
US20130100957A1 (en) | Information processing system, relay device, and information processing method | |
CN108512865A (zh) | 一种Java应用服务器的EJB容器系统的数据传输方法及装置 | |
EP2912811B1 (en) | Traffic engineering system for preventing demand deadlock and achieving uniform link utilization | |
US20150143384A1 (en) | Network system, network node and communication method | |
US10728178B2 (en) | Apparatus and method for distribution of congestion information in a switch | |
US9792162B2 (en) | Network system, network node and communication method | |
CN114039936B (zh) | 基于时间敏感的虚拟电厂通信业务流量调度方法及装置 | |
Clark | The network and the OS | |
CN109831385B (zh) | 一种消息处理方法、装置及电子设备 | |
KR20140106912A (ko) | 패킷 처리 장치 및 방법 | |
US20120210018A1 (en) | System And Method for Lock-Less Multi-Core IP Forwarding | |
CN112737966A (zh) | 一种负载均衡方法及相关装置 | |
EP3503474A1 (en) | A method for remotely performing a network function on data exchanged with at least one gateway | |
JP7207133B2 (ja) | 情報処理装置、同期装置及び情報処理装置の制御方法 | |
JP5331897B2 (ja) | 通信方法、情報処理装置及びプログラム | |
Barrett et al. | A low impact flow control implementation for offload communication interfaces | |
CN114844906A (zh) | 多个数据流的处理方法及相关系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150406 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151021 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20151110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160112 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160621 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160704 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5974703 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |