JP2017016250A - バリア同期装置、バリア同期方法及びプログラム - Google Patents

バリア同期装置、バリア同期方法及びプログラム Download PDF

Info

Publication number
JP2017016250A
JP2017016250A JP2015129945A JP2015129945A JP2017016250A JP 2017016250 A JP2017016250 A JP 2017016250A JP 2015129945 A JP2015129945 A JP 2015129945A JP 2015129945 A JP2015129945 A JP 2015129945A JP 2017016250 A JP2017016250 A JP 2017016250A
Authority
JP
Japan
Prior art keywords
barrier synchronization
thread
notification
threads
core
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.)
Pending
Application number
JP2015129945A
Other languages
English (en)
Inventor
恵美子 宮崎
Emiko Miyazaki
恵美子 宮崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2015129945A priority Critical patent/JP2017016250A/ja
Publication of JP2017016250A publication Critical patent/JP2017016250A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

【課題】
バリア同期に要する時間を短縮することを可能にするバリア同期装置等を提供する。
【解決手段】
バリア同期装置100は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する通知部110と、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御するプロセッサ制御部120と、通知に応じて、スレッドの実行状態を変更する並列プログラム制御部130とを備える。
【選択図】 図1

Description

本発明は、バリア同期装置、バリア同期方法及びプログラムに関する。
一つのタスクが複数のプロセッサで行われる並列計算においては、当該一つのタスクがスレッド等と呼ばれるより小さな複数の処理単位に分割され、スレッドの各々が複数のプロセッサに割当てられて実行される。
上述したタスクは、1つのパッケージに複数のプロセッサコア(以下、「コア」と記載する場合がある)が封入されたマルチコアプロセッサにて実行される場合がある。マルチコアプロセッサの高速化に関する技術の一例として、インテル社のインテル ターボ・ブースト・テクノロジーと呼ばれる技術が存在する。この技術が採用されたマルチコアプロセッサにおいては、動作しているコアの数等に応じて、コアが定格の動作周波数と比較して高速な動作周波数で動作する。
一方、複数のスレッドの間には、例えば一つのスレッドにおける処理結果を他のスレッドが用いる等、依存関係が生じる場合がある。そのため、依存関係がある複数のスレッドが実行される際には、複数のスレッドが予め定められた任意の箇所で処理を停止して待ち合わせを行う同期処理が行われる場合がある。この処理は、バリア同期と呼ばれる。バリア同期が行われる際には、先に終了したスレッドは、全てのスレッドが終了するまで動作を一時的に停止する。並列計算を高速化するためには、バリア同期に要する時間を短縮することが必要となる。
特許文献1には、バリア同期装置が記載されている。特許文献1に記載のバリア同期装置は、第1のレジスタにより指定されたバリア同期の対象となる全てのプロセッサからの同期リクエストが第2のレジスタに保持されると、当該プロセッサにバリア同期が成立した旨を通知する手段を含む。
特許文献2には、バリア同期方法等が記載されている。この方法は、バリア同期処理の実行時に、設定されたバリア同期中断プロセッサ数と同じ個数のプロセッサがバリア同期ポイントに達した時点で、バリア同期機構にバリア同期ポイントに到達したプロセッサ全てに割り込みを発生させる。
特開平09−6734号公報 特開平11−312148号公報
特許文献1又は2に記載の技術においては、バリア同期に関連するスレッドの実行速度に関する考慮が必ずしもなされていない。すなわち、特許文献1又は2に記載の技術では、バリア同期に要する時間を短縮することが困難である。
本発明は、上記課題を解決するためになされたものであって、バリア同期に要する時間の短縮を可能にするバリア同期装置等を提供することを主たる目的とする。
本発明の一態様におけるバリア同期装置は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する通知手段と、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御するプロセッサ制御手段と、通知に応じて、スレッドの実行状態を変更する並列プログラム制御手段とを備える。
本発明の一態様におけるバリア同期方法は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生し、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御し、通知手段からの通知に応じて、スレッドの実行状態を変更し、スレッドを実行するプロセッサコアの動作速度を変更する。
本発明の一態様におけるプログラムは、コンピュータに、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する処理と、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御する処理と、通知手段からの通知に応じて、スレッドの実行状態を変更する処理と、スレッドを実行するプロセッサコアの動作速度を変更する処理とを実行させる。
本発明によると、バリア同期に要する時間の短縮を可能にするバリア同期装置を提供することができる。
本発明の第1の実施形態におけるバリア同期装置の構成を示す図である。 本発明の第1の実施形態におけるバリア同期装置が対象とする並列プログラムの動作例を示す図である。 本発明の第1の実施形態におけるバリア同期装置の通知部にて用いられる管理テーブルの一例を示す図である。 本発明の第1の実施形態におけるバリア同期装置の動作の一例を示すフローチャートである。 本発明の第1の実施形態におけるバリア同期装置の動作の別の一例を示すフローチャートである。 本発明の第1の実施形態におけるバリア同期装置によるプロセッサコアの動作状態及び動作速度の変更例を示す図である。 本発明の第1の実施形態の変形例におけるバリア同期装置の構成を示す図である。 本発明の各実施形態におけるバリア同期装置等を実現する情報処理装置の一構成例を示す図である。
本発明の各実施形態について、添付の図面を参照して説明する。本発明の各実施形態において、各装置の各構成要素は、機能単位のブロックを示している。各装置の各構成要素は、例えば図8に示すような情報処理装置500とソフトウェアとの任意の組み合わせにより実現することができる。情報処理装置500は、一例として、以下のような構成を含む。
・CPU(Central Processing Unit)501
・ROM(Read Only Memory)502
・RAM(Ramdom Access Memory)503
・RAM503にロードされるプログラム504
・プログラム504を格納する記憶装置505
・記憶媒体506の読み書きを行うドライブ装置507
・通信ネットワーク509と接続する通信インターフェース508
・データの入出力を行う入出力インターフェース510
・各構成要素を接続するバス511
なお、CPU501は、マルチコアプロセッサであってもよい。図8に示す例では、CPU501は、コア501−1から501−4の4つのコアを含む。後述する本発明の各実施形態におけるバリア同期装置が同期の対象とする並列プログラムは、マルチコアプロセッサにて実行されることを想定する。また、各装置の実現方法には様々な変形例がある。例えば、各装置は、専用の装置として実現することができる。また、各装置は、複数の装置の組み合わせにより実現することができる。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態におけるバリア同期装置の構成を示す図である。図2は、本発明の第1の実施形態におけるバリア同期装置が対象とする並列プログラムの動作例を示す図である。図3は、本発明の第1の実施形態におけるバリア同期装置の通知部にて用いられる管理テーブルの一例を示す図である。図4は、本発明の第1の実施形態におけるバリア同期装置の動作の一例を示すフローチャートである。図5は、本発明の第1の実施形態におけるバリア同期装置の動作の別の一例を示すフローチャートである。図6は、本発明の第1の実施形態におけるバリア同期装置によるプロセッサコアの動作状態及び動作速度の変更例を示す図である。
図1に示すとおり、本発明の第1の実施形態におけるバリア同期装置100は、通知部110と、プロセッサ制御部120と、並列プログラム制御部130と、速度変更部140とを有する。通知部110は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する。プロセッサ制御部120は、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知部110からの通知に応じて制御する。並列プログラム制御部130は、通知部110からの通知に応じて、スレッドの実行状態を変更する。速度変更部140は、スレッドを実行するプロセッサコアの動作速度を変更する。
なお、本発明の第1の実施形態におけるバリア同期装置100にてバリア同期の対象となる並列プログラムは、図8に示すようなマルチコアプロセッサを含む情報処理装置において実行されることを想定する。すなわち、本実施形態におけるバリア同期装置100にてバリア同期の対象となる並列プログラムは、マルチコアプロセッサにおいて実行されることを想定する。並列プログラムの少なくとも一部の処理は、各々が当該並列プログラムの部分的な処理である複数のスレッドに分けられる。また、スレッドは、例えばマルチコアプロセッサの各々のコアにて並列に実行される。
本実施形態においては、図2に示す並列プログラムの例を用いてバリア同期装置100の構成及び動作を説明する。図2に示す例において、並列プログラム200の処理の一部は、スレッド201−1から201−4の各々に処理が分けられて実行される。また、スレッド201−1から201−4の各々は、図8に示す情報処理装置500等が備えるCPU501に含まれるコア551−1から551−4にてそれぞれ実行される。すなわち、図2に示す例では、スレッド201−1はコア551−1にて、スレッド201−2はコア551−2にて、スレッド201−3はコア551−3にて、スレッド201−4はコア551−4にて実行される。
また、本実施形態においては、CPU501に含まれるコア551−1から551−4の各々の動作速度(例えば動作周波数)は、実際に動作を行うコアの数に応じて変更可能であることを想定する。例えば、図2に示すコア551−1から551−4のうち、一部のコアが予め定められた停止状態である場合には、通常の動作を行う他のコアは、予め定められた通常の動作速度と比較して高い動作速度にて実行する。例えば、上述した通常の動作を行う他のコアは、予め定められた定格の動作周波数と比較して高い動作周波数にて実行する。
この場合において、当該他のコアの動作速度は、CPU501に対して指定された熱設計電力や、通常の動作を行うコアの数等に応じて適宜定められる。また、停止状態は、例えば、コアに対してクロックや電力等の供給が停止した状態である。この停止状態は、コアにおける負荷や発熱量の任意の指標の値等が予め定められた大きさより小さい場合であってもよい。
なお、本実施形態におけるバリア同期装置100と、バリア同期装置100がバリア同期の対象とする並列プログラムとは、例えば同一の情報処理装置にて実行されるが、これに限られない。
続いて、本実施形態におけるバリア同期装置100の各構成要素について説明する。
通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する。上述したスレッドの各々は、同じ並列プログラムの処理の一部に関連する。すなわち、このスレッドの各々は、バリア同期装置100が同期の対象とする並列プログラムに含まれる。
スレッドがバリア同期点に未到達であるとは、当該スレッドの処理が、バリア同期点として予め定められた処理に至っていないことを示す。言い換えると、スレッドがバリア同期点に到達したとは、バリア同期点として予め定められた処理に処理が進んだことを示す。バリア同期点に到達したスレッドは、並列プログラムに含まれる他の全てのスレッドが到達するまで処理を一時的に停止する。並列プログラムに含まれる全てのスレッドがバリア同期点に到達すると、並列プログラムに含まれるスレッドの各々は、バリア同期点として予め定められた処理から後の処理の実行を再開する。
通知は、バリア同期装置100が備える他の構成要素を主たる対象とする。また、通知は、ハードウェア又はソフトウェアの割り込みの形式にて行われる。ただし、この通知は、バリア同期装置100の他の構成要素が当該通知に基づいて動作することが可能である任意の形式であってもよい。
通知部110が通知を発生する基準となるスレッドの数は、例えば、マルチコアプロセッサにおいて、通常の動作を行うコアの動作速度を高めることが可能になるコアの数に応じて定められる。例えば、バリア同期点に未到達であるスレッドの数が減少し、当該スレッドの各々を実行するマルチコアプロセッサにて通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、通知部110は通知を発生する。
一例として、図2に示すCPU501において、1つのコアのみが動作し、他のコアが停止状態である場合に当該1つのコアの動作速度を高めることが可能であることを想定する。この例においては、通知部110は、バリア同期点に未到達であるスレッドの数が1つである場合に通知を発生する。
なお、通知部110は、バリア同期点に未到達であるスレッドの数が2つ以上の任意の数である場合に通知を発生してもよい。図2に示すCPU501において、例えば2つのコアが停止状態である場合に、動作する2つのコアの動作速度を高めることが可能であれば、通知部110は、バリア同期点に未到達であるスレッドの数が2つである場合に通知を発生する。
また、一部のマルチコアプロセッサにおいては、動作するコアの数に応じて、そのコアの動作速度が変更される場合がある。このようなマルチコアプロセッサでは、例えば動作するコアが2つである場合には、通常の動作速度と比較して高い動作速度が設定される。そして、動作するコアが1つである場合には、動作するコアが2つである場合と比較して更に高い動作速度が設定される。通知部110は、上述したマルチコアプロセッサにおいて実行されるスレッドを対象とする場合には、バリア同期点に未到達であるスレッドの数が1つである場合と、2つである場合との両方の場合において通知を発生してもよい。
このように通知部110が通知を発生することで、他の構成要素が、バリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように制御することが可能となる。
更に、通知部110は、バリア同期点に未到達であるスレッドが0である場合に通知を発生してもよい。この場合には、通知部110は、バリア同期点に未到達であるスレッドが1以上である場合と区別可能な形式にて通知してもよい。
すなわち、通知部110は、バリア同期点に未到達であるスレッドの数に応じて通知の形式を変更してもよい。なお、通知部110は、バリア同期点に未到達であるスレッドの数に関わらず、同じ形式にて通知を発生してもよい。この場合には、例えば、後述するプロセッサ制御部130や速度変更部140等が、バリア同期点に未到達であるスレッドの数に応じた制御を行う。
通知部110は、図3に示す管理テーブル111を参照する等して、バリア同期点に未到達であるスレッドの数に関する情報を取得する。図3に示す管理テーブル111は、スレッド状態112と、同期待ちスレッド数113との2つの情報を含む。
管理テーブル111において、スレッド状態112は、バリア同期装置100が同期の対象とする並列プログラムに含まれるスレッドの各々に関するバリア同期点への到達の状況を表す。例えば、バリア同期点に未到達であるスレッドは“1”、バリア同期点に到達したスレッドは“0”として表される。
図3に示す例では、スレッド状態112は“1111”である。これは、バリア同期装置100が同期の対象とする並列プログラムに含まれるスレッドが4つであり、そのいずれもがバリア同期点に未到達であることを示す。
また、管理テーブル111において、同期待ちスレッド数は、バリア同期点に未到達であるスレッドの数を示す。図3に示す例では、バリア同期点に未到達であるスレッドの数は4つである。
なお、管理テーブルは、例えばCPU501が備えるレジスタ等にて保持されてもよいし、その他の任意の記憶装置に記憶されてもよい。また、管理テーブルにて管理される情報は、例えばコア551−1から551−4の各々によってスレッドの状況に応じて更新されてもよいし、他の任意の手段にて適宜更新されてもよい。
また、通知部110は、図3に示す管理テーブル111の参照とは異なる任意の手順にてバリア同期点に未到達であるスレッドの数に関する情報を取得してもよい。
プロセッサ制御部120は、通知部110からの通知に応じて、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を制御する。
一例として、プロセッサ制御部120は、バリア同期点に未到達であるスレッドの数が、通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合にスレッドを実行するコアの動作状態を変更する。この場合には、プロセッサ制御部120は、バリア同期点に到達したスレッドを実行するコアを上述した停止状態等に変更するように、コアの動作状態を制御する。このような制御により、一部のコアが停止状態である場合に通常の動作を行う他のコアを通常の動作速度と比較して高い動作速度にて実行させるプロセッサにおいて、通常の動作を行うコアの動作速度を高めることが可能となる。
すなわち、プロセッサ制御部120が上述の制御を行うことで、バリア同期点に未到達であり、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能になる。そして、バリア同期点に未到達であるスレッドがバリア同期点に到達するまでに行われる処理に要する時間の短縮が可能となる。
なお、プロセッサ制御部120は、バリア同期点に未到達であり、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能となる任意の状態になるように、コアの動作状態を制御してもよい。つまり、プロセッサ制御部120は、バリア同期点に到達したスレッドを実行するコアを上述した停止状態等に変更しなくてもよい。プロセッサ制御部120が制御するコアの動作状態は、スレッドが実行されるマルチコアプロセッサの仕様等に応じて適宜定められる。
また、プロセッサ制御部120は、バリア同期点に未到達であるスレッドが0である場合に発生した通知に応じて、コアの動作を制御してもよい。この場合には、プロセッサ制御部120は、停止状態であるコアを通常の動作を行う状態に変更するように、コアの動作を制御する。
バリア同期点に未到達であるスレッドが0である場合には、並列プログラムに含まれる全てのスレッドにおける処理がバリア同期点に到達したことが想定される。すなわち、並列プログラムに含まれる全てのスレッドに関する同期処理が完了したと考えられる。そして、先行してバリア同期点に到達したスレッドを実行するコアは、例えば先にプロセッサ制御部120により行われた制御によって、停止状態であることが想定される。
この場合に、プロセッサ制御部120は、スレッドの各々がバリア同期点から後の処理の実行を再開するよう、停止状態であるコアを通常の動作を行う状態に変更する。すなわち、このような制御により、スレッドの各々について、バリア同期点から後の処理の実行が開始される。
並列プログラム制御部130は、通知部110からの通知に応じて、スレッドの実行状態を変更する。
一例として、並列プログラム制御部130は、バリア同期点に未到達であるスレッドの数が減少し、通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、バリア同期に到達したスレッドの実行状態を変更する。この場合には、並列プログラム制御部130は、バリア同期点に到達したスレッドを停止するように、スレッドの動作状態を制御する。なお、本実施形態において、スレッドを停止するとは、スレッドの実行が一時的に中断されるように、スレッドの状態が設定されることを示す。
バリア同期の対象となるスレッドは、バリア同期点に到達した場合においても、他のスレッドがバリア同期点に到達したことを確認する処理を行う場合がある。この場合に、上述した確認の処理がプロセッサ制御部120にて停止状態にされたコアとは異なる他のコアで実行されると、バリア同期点に未到達であるスレッドの処理速度等に影響が及ぶ可能性がある。
そこで、並列プログラム制御部130は、バリア同期に到達したスレッドの実行状態を停止状態等に変更する。このような制御により、バリア同期に未到達であるスレッドにおける処理が、バリア同期に到達したスレッドによって影響を受ける可能性が小さくなる。
また、並列プログラム制御部130は、バリア同期点に未到達であるスレッドが0である場合に発生した通知に応じて、スレッドの実行状態を制御してもよい。この場合には、並列プログラム制御部130は、停止されたスレッドの実行を再開させるように、スレッドの実行状態を制御する。
なお、バリア同期点に未到達であるスレッドが0である場合には、上述のように、並列プログラムに含まれる全てのスレッドにおける処理がバリア同期点に到達したことが想定される。このような制御により、スレッドの各々について、バリア同期点から後の処理が行われる。
速度変更部140は、スレッドを実行するプロセッサコアの動作速度を変更する。
速度変更部140は、コアの動作状態に応じて、コアの動作速度を変更する。例えば、本実施形態においては、速度変更部140は、コアが通常の動作速度で動作している場合に、他のコアの動作状態に応じて、動作速度を高めるように変更することが想定される。また、速度変更部140は、コアが通常の動作速度よりも高い動作速度にて動作する場合に、コアの動作速度を通常の動作速度とするように変更してもよい。
一例として、速度変更部140は、バリア同期点に未到達のスレッドが存在し、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能な状態である場合に、スレッドを実行するコアの動作速度を変更する。速度変更部140は、一部のコアにおいてバリア同期点に未到達であるスレッドの処理が継続して行われており、他のコアが停止状態にある場合に、当該スレッドを実行するコアの動作速度を変更する。すなわち、速度変更部140は、停止状態にあるコアの数に基づいて、バリア同期点に未到達であるスレッドを実行するコアの動作速度を変更する。
この場合には、速度変更部140は、バリア同期点に未到達のスレッドを実行するコアの動作速度を高めるように制御する。例えば、速度変更部140は、コアの動作周波数を高めるように制御する。
また、別の例として、速度変更部140は、バリア同期点に未到達のスレッドが0である場合に、スレッドを実行するコアの動作速度を変更する。
この例においては、速度変更部140は、通常よりも高い動作速度で動作するコアが存在する場合には、そのコアを通常の動作速度にて動作するように制御する。
続いて、図4及び図5に示すフローチャートを用いて、本発明の第1の実施形態におけるバリア同期装置100の動作の一例を説明する。
図4に示すフローチャートは、バリア同期処理が行われる場合のバリア同期装置100の動作の例を示す。すなわち、図4に示すフローチャートは、バリア同期点に未到達のスレッドの数が減少し、バリア同期点に未到達のスレッドを実行するコアの動作速度が高められる場合のバリア同期装置100の動作の例を示す。
まず、通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する(ステップS101)。この場合に、通知部110は、バリア同期点に未到達であるスレッドの数が減少し、当該スレッドの各々を実行するマルチコアプロセッサにて通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、通知を発生する。
続いて、プロセッサ制御部120は、バリア同期点に到達したスレッドの動作を停止状態とする(ステップS102)。
そして、並列プログラム制御部130は、バリア同期に到達したスレッドを実行するコアの動作状態を停止状態に変更するよう制御する(ステップS103)。ステップS102及びステップS103の処理の順番は任意である。すなわち、上述の順番とは異なり、ステップS103の処理がステップS102の処理に先行して行われてもよいし、ステップS102及びステップS103の処理が並行して行われてもよい。
速度変更部140は、バリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように変更する(ステップS104)。ステップS104の処理において、動作速度が変更されるコアは、ステップS103において停止状態とされていないコアである。ステップS104において、コアの動作速度を高めるような変更が行われることで、バリア同期点に未到達であるスレッドが、コアが通常の動作速度にて動作する場合と比較して高速に実行される。したがって、並列プログラムがバリア同期点に到達するまでに要する時間が短くなる。
また、本実施形態におけるバリア同期装置100は、バリア同期点に未到達のスレッドの数が0となった場合に、停止状態にあるコアを、通常の動作を行うよう状態に変更してもよい。図5に示すフローチャートを用いて、この場合におけるバリア同期装置100の動作の一例を説明する。すなわち、図5は、バリア同期処理が完了した後におけるバリア同期装置100の動作の例を示す。
まず、通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する(ステップS111)。すなわち、通知部110は、バリア同期点に未到達であるスレッドが0である旨の通知を発生する。
ステップS111における通知部110による通知に応じて、以下のどうさがおこなわれる。速度変更部140は、動作速度が高められたコアの動作速度を、通常の動作速度に変更する(ステップS112)。そして、プロセッサ制御部120は、停止状態とされているコアの状態を通常の動作を行う状態に変更するよう制御する(ステップS113)。
続いて、並列プログラム制御部130は、バリア同期点に到達し、停止状態にあるスレッドの動作を再開する(ステップS114)。すなわち、並列プログラムに含まれるスレッドの各々に関して、バリア同期点より後の処理が実行される。
次に、図6を用いて、並列プログラムにおいてバリア同期処理が行われる場合におけるバリア同期装置100の動作の一例を説明する。
この例においては、並列プログラムは、4つのスレッドに分けられて処理が行われる。図6においては、4つのスレッドのそれぞれには、コア0から3までの番号が付されている。4つのスレッドは、例えば、図8に示すCPU501に含まれるコア551−1から551−4にてそれぞれ実行される。
この例においては、CPU501は、コア551−1から551−4うちの1つが通常の動作を行う状態であり、他の3つが停止状態である場合に、通常の動作を行うコアの動作速度を高めて実行させることを想定する。
バリア同期装置100は、このような並列プログラムに含まれるスレッドのバリア同期を行う。バリア同期装置100において、スレッドの動作状態は、図3に示す管理テーブル111の形式にて管理される。
図6においては、管理テーブル111に含まれるスレッド状態112は、スレッド0から3に関するバリア同期点への到達の状況を順に表す。すなわち、図6に含まれるスレッド状態112において、例えば、図中の左端の数字はスレッド0に関するバリア同期点への到達の状況を順に表し、図中の右端の数字はスレッド3に関するバリア同期点への到達の状況を順に表す。
図6に示す例では、スレッド0から3の各々において、バリア同期の対象となる処理が行われていることを想定する。したがって、図6において処理の始まりとなる時刻においては、管理テーブル111に含まれるスレッド状態112は、全てのスレッドがバリア同期の対象となる処理が行われていることを表す“1111”となる。また、この場合に、管理テーブル111に含まれる同期待ちスレッド数113は“4”となる。
図6の例では、処理の始まりとなる時刻からの時間の経過に伴い、スレッド0における処理がバリア同期点に到達する。この場合には、管理テーブル111に含まれるスレッド状態112は、“0111”となる。これは、スレッド0の処理がバリア同期点に到達し、スレッド1から3の各々に関するバリア同期の対象となる処理が実行されていることを表す。また、管理テーブル111に含まれる同期待ちスレッド数113は“3”となる。なお、この場合には、スレッド1から3の各々を実行するコアの動作速度は変化しない。そして、スレッド0は、スレッド1から3の処理のバリア同期点への到達を待つ状態となる。
続いて、更なる時間の経過に伴い、スレッド1における処理がバリア同期点に到達する。この場合に、管理テーブル111に含まれるスレッド状態112は、スレッド0及び1の処理がバリア同期点に到達し、スレッド2及び3の各々においてバリア同期の対象となる処理が行われていることを表す“0011”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“2”となる。なお、この場合には、スレッド2及び3の各々を実行するコアの動作速度は変化しない。そして、スレッド1は、スレッド2及び3に関する処理のバリア同期点への到達を待つ状態となる。
続いて、更なる時間の経過に伴い、スレッド2における処理がバリア同期点に到達する。この場合に、管理テーブル111に含まれるスレッド状態112は、スレッド0から2の各々がバリア同期点に到達し、スレッド3においてバリア同期の対象となる処理が行われていることを表す“0001”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“1”となる。そして、スレッド2は、スレッド3の処理のバリア同期点への到達を待つ状態となる。
この場合において、バリア同期点に未到達であるスレッドは1つである。すなわち、CPU501に含まれるコアのうち、処理を実行するコアは1つである。したがって、CPU501は、当該処理を実行する1つのコアの動作速度を高めることが可能となる。そのため、バリア同期装置100の通知部110は、バリア同期点に未到達であるスレッドの数が1つである旨の通知を発生する。
この場合に、通知部110にて生じた通知に応じて、並列プログラム制御部130は、処理がバリア同期点に到達したスレッド0から2をそれぞれ停止する。また、プロセッサ制御部120は、通知部110にて生じた通知に応じて、スレッド0から2をそれぞれ実行する3つのコアの状態を停止状態とするように制御する。更に、速度変更部140は、スレッド3を実行するコアの動作速度を高めるように変更する。
上述したバリア同期装置100の各構成要素による動作が行われた後には、スレッド3のバリア同期点に至るまでの処理が継続して行われる。この場合には、スレッド3を実行するコアは、スレッド2における処理がバリア同期点に到達するまでと比較して高い動作速度にて動作する。
そして、スレッド3における処理が継続して行われると、スレッド3の処理はバリア同期点に到達する。スレッド3を実行するコアの動作速度が高められたことで、スレッド3の処理がバリア同期点に到達するまでに要する時間は、コアの動作速度が変更されない場合と比較して短い時間となる。この場合には、管理テーブル111に含まれるスレッド状態112は、スレッド0から3の各々がバリア同期点に到達したことを表す“0000”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“0”となる。すなわち、並列プログラムに含まれる全てのスレッドが、バリア同期点に到達した状態となる。
バリア同期装置100の通知部110は、バリア同期点に未到達であるスレッドが0である旨の通知を発生する。この場合に、通知部110にて生じた通知に応じて、速度変更部140は、スレッド3を実行するコアの通常の動作速度へ戻すように変更する。また、プロセッサ制御部120は、通知部110にて生じた通知に応じて、スレッド0から2をそれぞれ実行する3つのコアの状態を通常の動作を行う状態へ戻すように制御する。更に、並列プログラム制御部130は、先に処理がバリア同期点に到達したスレッド0から2をそれぞれ再開させる。
このような制御が行われることで、CPU501に含まれるコア551−1から551−4の各々は、通常の動作を行う状態に動作状態が変更される。そして、スレッド0から3の各々は、通常の実行が可能な状態に実行状態が制御される。このように、上述したバリア同期装置100の各構成要素による動作が行われた後には、コア551−1から551−4の各々においてスレッド0から3の各々に関して、バリア同期点より後にある処理が並列に実行される。
以上のとおり、本発明の第1の実施形態におけるバリア同期装置100は、並列プログラムに含まれるスレッドがバリア同期処理を行う場合において、バリア同期点に未到達であるスレッドの数に応じてコアの動作速度を制御する。すなわち、本実施形態におけるバリア同期装置100は、マルチコアプロセッサが許容する場合にはバリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように制御する。
このような制御が行われることで、バリア同期点に未到達であるスレッドが、バリア同期点への到達までに要する時間が短縮される。並列プログラムにおいて、バリア同期に要する時間は、処理がバリア同期点に最も遅く到達するスレッドに依存する。そのため、処理がバリア同期点に最も遅く到達するスレッドがバリア同期点到達までに要する時間を短縮することで、バリア同期に要する時間を短縮することが可能となる。
すなわち、本実施形態におけるバリア同期装置100は、バリア同期に要する時間を短縮することを可能にする。
(第1の実施形態の変形例)
本発明の第1の実施形態におけるバリア同期装置100には、種々の変形例が考えられる。図7は、本発明の第1の実施形態の変形例におけるバリア同期装置の構成を示す図である。
一部のマルチプロセッサは、明示的な動作速度に関する変更の指示を必要とせず、停止状態にあるコアの数や通常の動作状態にあるコアの数に応じて、通常の動作状態にあるコアの動作速度を変更する。このようなマルチプロセッサにて実行される並列プログラムのバリア同期を対象とする場合には、バリア同期装置100は、例えば図7に示すように、速度変更部140を備えない構成であってもよい。
すなわち、図7に示すバリア同期装置101は、通知部110と、プロセッサ制御部120と、並列プログラム制御部130とを備える。各構成要素は、第1の実施形態におけるバリア同期装置100が備える同じ要素と同様に動作する。そして、プロセッサ制御部120がバリア同期点に到達したスレッドを実行するコアの状態を停止状態等に変更することで、バリア同期点に未到達であるスレッドを実行するコアの動作速度が高められるように制御される。
また、並列プログラムに含まれる全てのスレッドがバリア同期点に到達した場合等に、プロセッサ制御部120が停止状態にあるコアを通常の動作状態とすることで、動作速度が高められたコアの動作速度が通常の動作速度に変更される。
上述の場合において、並列プログラムを動作するマルチコアプロセッサは、プログラム制御部120にて制御されたコアの各々の動作に関する状態に応じて、コアの動作速度を変更する。そのため、このようなマルチコアプロセッサにて並列プログラムが実行される場合においては、バリア同期装置101は、速度変更部140をも備えるバリア同期装置100と同様の効果を奏する。
また、プロセッサ制御部120と速度変更部140は、一つの構成要素として実現されてもよい。プロセッサ制御部120と速度変更部140の具体的な構成は、並列プログラムに含まれるスレッドが実行されるマルチコアプロセッサにおける動作速度の制御に関する仕様に応じて適宜定められる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。
100 バリア同期装置
110 通知部
111 管理テーブル
112 スレッド状態
113 同期待ちスレッド数
120 プロセッサ制御部
130 並列プログラム制御部
140 速度変更部
200 並列プログラム
201 スレッド
500 情報処理装置
501 CPU
551 コア
502 ROM
503 RAM
504 プログラム
505 記憶装置
506 記憶媒体
507 ドライブ装置
508 通信インターフェース
509 通信ネットワーク
510 入出力インターフェース
511 バス

Claims (10)

  1. 並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達である前記スレッドの数に基づいて通知を発生する通知手段と、
    マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御するプロセッサ制御手段と、
    前記通知に応じて、前記スレッドの実行状態を変更する並列プログラム制御手段とを備える、バリア同期装置。
  2. 前記スレッドを実行する前記プロセッサコアの動作速度を変更する速度変更手段を備える、請求項1に記載のバリア同期装置。
  3. 前記通知手段は、バリア同期点に未到達である前記スレッドが1以上の所定の数である場合に通知を発生する、請求項1又は2に記載のバリア同期装置。
  4. 前記通知手段は、バリア同期点に未到達である前記スレッドが0である場合に通知を発生する、請求項1から3のいずれか一項に記載のバリア同期装置。
  5. 前記プロセッサ制御手段は、バリア同期点に未到達である前記スレッドが1以上の所定の数である場合における前記通知に基づいて、バリア同期点に到達した前記スレッドを実行する前記プロセッサコアを停止状態とするように制御する、請求項1から4のいずれか一項に記載のバリア同期装置。
  6. 前記プロセッサ制御手段は、バリア同期点に未到達である前記スレッドが0である場合における前記通知に基づいて、停止状態にある前記プロセッサコアを動作状態とするように制御する、請求項1から5のいずれか一項に記載のバリア同期装置。
  7. 前記速度変更手段は、停止状態にある前記プロセッサコアの数に基づいて、バリア同期点に未到達である前記スレッドを実行する前記プロセッサコアの動作速度を高めるように変更する、請求項1から6のいずれか一項に記載のバリア同期装置。
  8. 前記速度変更手段は、複数の前記スレッドの全てがバリア同期点に到達した場合に、前記プロセッサコアの動作速度を通常の動作速度に変更する、請求項1から7のいずれか一項に記載のバリア同期装置。
  9. 並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達である前記スレッドの数に基づいて通知を発生し、
    マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御し、
    前記通知手段からの通知に応じて、前記スレッドの実行状態を変更し、
    前記スレッドを実行する前記プロセッサコアの動作速度を変更する、バリア同期方法。
  10. コンピュータに、
    並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達である前記スレッドの数に基づいて通知を発生する処理と、
    マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御する処理と、
    前記通知手段からの通知に応じて、前記スレッドの実行状態を変更する処理と、
    前記スレッドを実行する前記プロセッサコアの動作速度を変更する処理とを実行させる、プログラム。
JP2015129945A 2015-06-29 2015-06-29 バリア同期装置、バリア同期方法及びプログラム Pending JP2017016250A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015129945A JP2017016250A (ja) 2015-06-29 2015-06-29 バリア同期装置、バリア同期方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015129945A JP2017016250A (ja) 2015-06-29 2015-06-29 バリア同期装置、バリア同期方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2017016250A true JP2017016250A (ja) 2017-01-19

Family

ID=57829112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015129945A Pending JP2017016250A (ja) 2015-06-29 2015-06-29 バリア同期装置、バリア同期方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2017016250A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486693A (zh) * 2019-09-11 2021-03-12 富士通株式会社 屏障同步***和并行信息处理设备
EP3792764A1 (en) * 2019-09-11 2021-03-17 Fujitsu Limited Barrier synchronization circuit, barrier synchronization method, and parallel information processing apparatus

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
JP2014056594A (ja) * 2009-12-03 2014-03-27 Intel Corp イベント処理のためのターボ性能を向上させる方法および装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
JP2014056594A (ja) * 2009-12-03 2014-03-27 Intel Corp イベント処理のためのターボ性能を向上させる方法および装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486693A (zh) * 2019-09-11 2021-03-12 富士通株式会社 屏障同步***和并行信息处理设备
EP3792763A1 (en) * 2019-09-11 2021-03-17 Fujitsu Limited Barrier synchronization system and parallel information processing apparatus
EP3792764A1 (en) * 2019-09-11 2021-03-17 Fujitsu Limited Barrier synchronization circuit, barrier synchronization method, and parallel information processing apparatus
JP2021043740A (ja) * 2019-09-11 2021-03-18 富士通株式会社 バリア同期回路、バリア同期方法及び並列情報処理装置
JP2021043737A (ja) * 2019-09-11 2021-03-18 富士通株式会社 バリア同期システム、バリア同期方法及び並列情報処理装置
US11487593B2 (en) 2019-09-11 2022-11-01 Fujitsu Limited Barrier synchronization system and parallel information processing apparatus
CN112486693B (zh) * 2019-09-11 2023-07-07 富士通株式会社 屏障同步***和并行信息处理设备
US11709718B2 (en) 2019-09-11 2023-07-25 Fujitsu Limited Barrier synchronization circuit, barrier synchronization method, and parallel information processing apparatus

Similar Documents

Publication Publication Date Title
JP2002215599A (ja) マルチプロセッサシステムおよびその制御方法
Zeng et al. An efficient formulation of the real-time feasibility region for design optimization
JP6494155B2 (ja) ミニコア基盤の再構成可能プロセッサ、そのためのスケジュール装置及び方法
JP6673202B2 (ja) 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム
US20230127112A1 (en) Sub-idle thread priority class
JP2016012221A (ja) 加工プログラム指令内容に応じてcpu負荷を分散可能な数値制御装置
US20210191757A1 (en) Sub-idle thread priority class
JP2017016250A (ja) バリア同期装置、バリア同期方法及びプログラム
JP2018022317A (ja) Hilシミュレーションシステム及びその制御方法
EP2620876A1 (en) Method and apparatus for data processing, pci-e bus system and server
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP6074932B2 (ja) 演算処理装置及び演算処理方法
JP5630798B1 (ja) プロセッサーおよび方法
JP2014206805A (ja) 制御装置
JP2011070318A (ja) バッチ処理実行方法及びバッチ処理実行システム
JP2013250696A (ja) プロセッサシステムおよびプロセッサ制御装置
US9015720B2 (en) Efficient state transition among multiple programs on multi-threaded processors by executing cache priming program
JP2016206817A (ja) 電子制御装置
JP5949245B2 (ja) 情報処理装置、実行プログラムおよび実行方法
JP5768586B2 (ja) 計算装置、計算装置の制御方法、及びプログラム
US20080288952A1 (en) Processing apparatus and device control unit
JP5486368B2 (ja) マイクロコンピュータ及びマイクロコンピュータの制御方法
JP2012048515A (ja) マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理
JP2011060048A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP6658123B2 (ja) 並列処理装置、並列処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190528