JP2017016250A - Barrier synchronization device, barrier synchronization method, and program - Google Patents
Barrier synchronization device, barrier synchronization method, and program Download PDFInfo
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
Description
本発明は、バリア同期装置、バリア同期方法及びプログラムに関する。 The present invention relates to a barrier synchronization apparatus, a barrier synchronization method, and a program.
一つのタスクが複数のプロセッサで行われる並列計算においては、当該一つのタスクがスレッド等と呼ばれるより小さな複数の処理単位に分割され、スレッドの各々が複数のプロセッサに割当てられて実行される。 In parallel computation in which one task is performed by a plurality of processors, the one task is divided into a plurality of smaller processing units called threads or the like, and each of the threads is assigned to a plurality of processors and executed.
上述したタスクは、1つのパッケージに複数のプロセッサコア(以下、「コア」と記載する場合がある)が封入されたマルチコアプロセッサにて実行される場合がある。マルチコアプロセッサの高速化に関する技術の一例として、インテル社のインテル ターボ・ブースト・テクノロジーと呼ばれる技術が存在する。この技術が採用されたマルチコアプロセッサにおいては、動作しているコアの数等に応じて、コアが定格の動作周波数と比較して高速な動作周波数で動作する。 The above-described task may be executed by a multi-core processor in which a plurality of processor cores (hereinafter sometimes referred to as “cores”) are enclosed in one package. As an example of a technology related to the acceleration of a multi-core processor, there is a technology called Intel's Intel Turbo Boost Technology. In a multi-core processor employing this technology, the core operates at a higher operating frequency than the rated operating frequency, depending on the number of operating cores and the like.
一方、複数のスレッドの間には、例えば一つのスレッドにおける処理結果を他のスレッドが用いる等、依存関係が生じる場合がある。そのため、依存関係がある複数のスレッドが実行される際には、複数のスレッドが予め定められた任意の箇所で処理を停止して待ち合わせを行う同期処理が行われる場合がある。この処理は、バリア同期と呼ばれる。バリア同期が行われる際には、先に終了したスレッドは、全てのスレッドが終了するまで動作を一時的に停止する。並列計算を高速化するためには、バリア同期に要する時間を短縮することが必要となる。 On the other hand, there may be a dependency relationship between a plurality of threads, for example, the processing result of one thread is used by another thread. For this reason, when a plurality of threads having a dependency relationship are executed, there is a case where a synchronization process is performed in which the plurality of threads stop processing and wait at an arbitrary predetermined position. This process is called barrier synchronization. When barrier synchronization is performed, the previously terminated thread temporarily stops operating until all threads are terminated. In order to speed up parallel computation, it is necessary to shorten the time required for barrier synchronization.
特許文献1には、バリア同期装置が記載されている。特許文献1に記載のバリア同期装置は、第1のレジスタにより指定されたバリア同期の対象となる全てのプロセッサからの同期リクエストが第2のレジスタに保持されると、当該プロセッサにバリア同期が成立した旨を通知する手段を含む。
特許文献2には、バリア同期方法等が記載されている。この方法は、バリア同期処理の実行時に、設定されたバリア同期中断プロセッサ数と同じ個数のプロセッサがバリア同期ポイントに達した時点で、バリア同期機構にバリア同期ポイントに到達したプロセッサ全てに割り込みを発生させる。
特許文献1又は2に記載の技術においては、バリア同期に関連するスレッドの実行速度に関する考慮が必ずしもなされていない。すなわち、特許文献1又は2に記載の技術では、バリア同期に要する時間を短縮することが困難である。
In the technique described in
本発明は、上記課題を解決するためになされたものであって、バリア同期に要する時間の短縮を可能にするバリア同期装置等を提供することを主たる目的とする。 The present invention has been made in order to solve the above-described problems, and has as its main object to provide a barrier synchronization device and the like that can shorten the time required for barrier synchronization.
本発明の一態様におけるバリア同期装置は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する通知手段と、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御するプロセッサ制御手段と、通知に応じて、スレッドの実行状態を変更する並列プログラム制御手段とを備える。 A barrier synchronization apparatus according to an aspect of the present invention includes a notification unit that generates a notification based on the number of threads that have not reached a barrier synchronization point among a plurality of threads in a parallel program, and a processor core included in a multicore processor. Of these, processor control means for controlling the operating state of the processor core executing the thread according to the notification, and parallel program control means for changing the execution state of the thread according to the notification.
本発明の一態様におけるバリア同期方法は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生し、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御し、通知手段からの通知に応じて、スレッドの実行状態を変更し、スレッドを実行するプロセッサコアの動作速度を変更する。 The barrier synchronization method according to one aspect of the present invention generates a notification based on the number of threads that have not reached the barrier synchronization point among a plurality of threads in a parallel program, and the threads among the processor cores included in the multicore processor The operating state of the processor core that executes is controlled according to the notification, the execution state of the thread is changed according to the notification from the notification means, and the operating speed of the processor core that executes the thread is changed.
本発明の一態様におけるプログラムは、コンピュータに、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する処理と、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知に応じて制御する処理と、通知手段からの通知に応じて、スレッドの実行状態を変更する処理と、スレッドを実行するプロセッサコアの動作速度を変更する処理とを実行させる。 A program according to an aspect of the present invention includes a process for generating notification based on the number of threads that have not reached the barrier synchronization point among a plurality of threads in a parallel program, and a processor core included in a multicore processor. Among them, the processing for controlling the operating state of the processor core that executes the thread according to the notification, the processing for changing the execution state of the thread according to the notification from the notification means, and the operating speed of the processor core that executes the thread The process to change is executed.
本発明によると、バリア同期に要する時間の短縮を可能にするバリア同期装置を提供することができる。 According to the present invention, it is possible to provide a barrier synchronization apparatus that can shorten the time required for barrier synchronization.
本発明の各実施形態について、添付の図面を参照して説明する。本発明の各実施形態において、各装置の各構成要素は、機能単位のブロックを示している。各装置の各構成要素は、例えば図8に示すような情報処理装置500とソフトウェアとの任意の組み合わせにより実現することができる。情報処理装置500は、一例として、以下のような構成を含む。
Embodiments of the present invention will be described with reference to the accompanying drawings. In each embodiment of the present invention, each component of each device represents a functional unit block. Each component of each device can be realized by an arbitrary combination of an
・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つのコアを含む。後述する本発明の各実施形態におけるバリア同期装置が同期の対象とする並列プログラムは、マルチコアプロセッサにて実行されることを想定する。また、各装置の実現方法には様々な変形例がある。例えば、各装置は、専用の装置として実現することができる。また、各装置は、複数の装置の組み合わせにより実現することができる。
CPU (Central Processing Unit) 501
ROM (Read Only Memory) 502
-RAM (Random Access Memory) 503
A
A
A
An input /
-
Note that the
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態におけるバリア同期装置の構成を示す図である。図2は、本発明の第1の実施形態におけるバリア同期装置が対象とする並列プログラムの動作例を示す図である。図3は、本発明の第1の実施形態におけるバリア同期装置の通知部にて用いられる管理テーブルの一例を示す図である。図4は、本発明の第1の実施形態におけるバリア同期装置の動作の一例を示すフローチャートである。図5は、本発明の第1の実施形態におけるバリア同期装置の動作の別の一例を示すフローチャートである。図6は、本発明の第1の実施形態におけるバリア同期装置によるプロセッサコアの動作状態及び動作速度の変更例を示す図である。
(First embodiment)
First, a first embodiment of the present invention will be described. FIG. 1 is a diagram showing a configuration of a barrier synchronization apparatus according to the first embodiment of the present invention. FIG. 2 is a diagram illustrating an operation example of the parallel program targeted by the barrier synchronization apparatus according to the first embodiment of the present invention. FIG. 3 is a diagram illustrating an example of a management table used in the notification unit of the barrier synchronization apparatus according to the first embodiment of the present invention. FIG. 4 is a flowchart showing an example of the operation of the barrier synchronization apparatus according to the first embodiment of the present invention. FIG. 5 is a flowchart showing another example of the operation of the barrier synchronization apparatus according to the first embodiment of the present invention. FIG. 6 is a diagram illustrating a modification example of the operation state and the operation speed of the processor core by the barrier synchronization apparatus according to the first embodiment of the present invention.
図1に示すとおり、本発明の第1の実施形態におけるバリア同期装置100は、通知部110と、プロセッサ制御部120と、並列プログラム制御部130と、速度変更部140とを有する。通知部110は、並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する。プロセッサ制御部120は、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を通知部110からの通知に応じて制御する。並列プログラム制御部130は、通知部110からの通知に応じて、スレッドの実行状態を変更する。速度変更部140は、スレッドを実行するプロセッサコアの動作速度を変更する。
As illustrated in FIG. 1, the
なお、本発明の第1の実施形態におけるバリア同期装置100にてバリア同期の対象となる並列プログラムは、図8に示すようなマルチコアプロセッサを含む情報処理装置において実行されることを想定する。すなわち、本実施形態におけるバリア同期装置100にてバリア同期の対象となる並列プログラムは、マルチコアプロセッサにおいて実行されることを想定する。並列プログラムの少なくとも一部の処理は、各々が当該並列プログラムの部分的な処理である複数のスレッドに分けられる。また、スレッドは、例えばマルチコアプロセッサの各々のコアにて並列に実行される。
Note that it is assumed that the parallel program to be subjected to barrier synchronization in the
本実施形態においては、図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にて実行される。
In the present embodiment, the configuration and operation of the
また、本実施形態においては、CPU501に含まれるコア551−1から551−4の各々の動作速度(例えば動作周波数)は、実際に動作を行うコアの数に応じて変更可能であることを想定する。例えば、図2に示すコア551−1から551−4のうち、一部のコアが予め定められた停止状態である場合には、通常の動作を行う他のコアは、予め定められた通常の動作速度と比較して高い動作速度にて実行する。例えば、上述した通常の動作を行う他のコアは、予め定められた定格の動作周波数と比較して高い動作周波数にて実行する。
In the present embodiment, it is assumed that the operating speed (for example, operating frequency) of each of the cores 551-1 to 551-4 included in the
この場合において、当該他のコアの動作速度は、CPU501に対して指定された熱設計電力や、通常の動作を行うコアの数等に応じて適宜定められる。また、停止状態は、例えば、コアに対してクロックや電力等の供給が停止した状態である。この停止状態は、コアにおける負荷や発熱量の任意の指標の値等が予め定められた大きさより小さい場合であってもよい。
In this case, the operation speed of the other core is appropriately determined according to the thermal design power designated for the
なお、本実施形態におけるバリア同期装置100と、バリア同期装置100がバリア同期の対象とする並列プログラムとは、例えば同一の情報処理装置にて実行されるが、これに限られない。
Note that the
続いて、本実施形態におけるバリア同期装置100の各構成要素について説明する。
Subsequently, each component of the
通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する。上述したスレッドの各々は、同じ並列プログラムの処理の一部に関連する。すなわち、このスレッドの各々は、バリア同期装置100が同期の対象とする並列プログラムに含まれる。
The
スレッドがバリア同期点に未到達であるとは、当該スレッドの処理が、バリア同期点として予め定められた処理に至っていないことを示す。言い換えると、スレッドがバリア同期点に到達したとは、バリア同期点として予め定められた処理に処理が進んだことを示す。バリア同期点に到達したスレッドは、並列プログラムに含まれる他の全てのスレッドが到達するまで処理を一時的に停止する。並列プログラムに含まれる全てのスレッドがバリア同期点に到達すると、並列プログラムに含まれるスレッドの各々は、バリア同期点として予め定められた処理から後の処理の実行を再開する。 The fact that a thread has not reached the barrier synchronization point indicates that the processing of the thread has not reached the process predetermined as the barrier synchronization point. In other words, the fact that the thread has reached the barrier synchronization point indicates that the processing has progressed to processing predetermined as the barrier synchronization point. The thread that has reached the barrier synchronization point temporarily stops processing until all other threads included in the parallel program arrive. When all the threads included in the parallel program reach the barrier synchronization point, each of the threads included in the parallel program resumes the execution of the subsequent process from the process predetermined as the barrier synchronization point.
通知は、バリア同期装置100が備える他の構成要素を主たる対象とする。また、通知は、ハードウェア又はソフトウェアの割り込みの形式にて行われる。ただし、この通知は、バリア同期装置100の他の構成要素が当該通知に基づいて動作することが可能である任意の形式であってもよい。
The notification is mainly targeted for other components included in the
通知部110が通知を発生する基準となるスレッドの数は、例えば、マルチコアプロセッサにおいて、通常の動作を行うコアの動作速度を高めることが可能になるコアの数に応じて定められる。例えば、バリア同期点に未到達であるスレッドの数が減少し、当該スレッドの各々を実行するマルチコアプロセッサにて通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、通知部110は通知を発生する。
For example, in the multi-core processor, the number of threads serving as a reference for the
一例として、図2に示すCPU501において、1つのコアのみが動作し、他のコアが停止状態である場合に当該1つのコアの動作速度を高めることが可能であることを想定する。この例においては、通知部110は、バリア同期点に未到達であるスレッドの数が1つである場合に通知を発生する。
As an example, in the
なお、通知部110は、バリア同期点に未到達であるスレッドの数が2つ以上の任意の数である場合に通知を発生してもよい。図2に示すCPU501において、例えば2つのコアが停止状態である場合に、動作する2つのコアの動作速度を高めることが可能であれば、通知部110は、バリア同期点に未到達であるスレッドの数が2つである場合に通知を発生する。
Note that the
また、一部のマルチコアプロセッサにおいては、動作するコアの数に応じて、そのコアの動作速度が変更される場合がある。このようなマルチコアプロセッサでは、例えば動作するコアが2つである場合には、通常の動作速度と比較して高い動作速度が設定される。そして、動作するコアが1つである場合には、動作するコアが2つである場合と比較して更に高い動作速度が設定される。通知部110は、上述したマルチコアプロセッサにおいて実行されるスレッドを対象とする場合には、バリア同期点に未到達であるスレッドの数が1つである場合と、2つである場合との両方の場合において通知を発生してもよい。
In some multicore processors, the operating speed of the core may be changed according to the number of operating cores. In such a multi-core processor, for example, when there are two operating cores, a higher operation speed is set as compared with a normal operation speed. When there is one operating core, a higher operating speed is set as compared with the case where there are two operating cores. When the
このように通知部110が通知を発生することで、他の構成要素が、バリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように制御することが可能となる。
When the
更に、通知部110は、バリア同期点に未到達であるスレッドが0である場合に通知を発生してもよい。この場合には、通知部110は、バリア同期点に未到達であるスレッドが1以上である場合と区別可能な形式にて通知してもよい。
すなわち、通知部110は、バリア同期点に未到達であるスレッドの数に応じて通知の形式を変更してもよい。なお、通知部110は、バリア同期点に未到達であるスレッドの数に関わらず、同じ形式にて通知を発生してもよい。この場合には、例えば、後述するプロセッサ制御部130や速度変更部140等が、バリア同期点に未到達であるスレッドの数に応じた制御を行う。
Further, the
That is, the
通知部110は、図3に示す管理テーブル111を参照する等して、バリア同期点に未到達であるスレッドの数に関する情報を取得する。図3に示す管理テーブル111は、スレッド状態112と、同期待ちスレッド数113との2つの情報を含む。
The
管理テーブル111において、スレッド状態112は、バリア同期装置100が同期の対象とする並列プログラムに含まれるスレッドの各々に関するバリア同期点への到達の状況を表す。例えば、バリア同期点に未到達であるスレッドは“1”、バリア同期点に到達したスレッドは“0”として表される。
In the management table 111, the
図3に示す例では、スレッド状態112は“1111”である。これは、バリア同期装置100が同期の対象とする並列プログラムに含まれるスレッドが4つであり、そのいずれもがバリア同期点に未到達であることを示す。
In the example illustrated in FIG. 3, the
また、管理テーブル111において、同期待ちスレッド数は、バリア同期点に未到達であるスレッドの数を示す。図3に示す例では、バリア同期点に未到達であるスレッドの数は4つである。 In the management table 111, the number of threads waiting for synchronization indicates the number of threads that have not reached the barrier synchronization point. In the example shown in FIG. 3, the number of threads that have not reached the barrier synchronization point is four.
なお、管理テーブルは、例えばCPU501が備えるレジスタ等にて保持されてもよいし、その他の任意の記憶装置に記憶されてもよい。また、管理テーブルにて管理される情報は、例えばコア551−1から551−4の各々によってスレッドの状況に応じて更新されてもよいし、他の任意の手段にて適宜更新されてもよい。
The management table may be held in, for example, a register provided in the
また、通知部110は、図3に示す管理テーブル111の参照とは異なる任意の手順にてバリア同期点に未到達であるスレッドの数に関する情報を取得してもよい。
Further, the
プロセッサ制御部120は、通知部110からの通知に応じて、マルチコアプロセッサに含まれるプロセッサコアのうち、スレッドを実行するプロセッサコアの動作状態を制御する。
In response to the notification from the
一例として、プロセッサ制御部120は、バリア同期点に未到達であるスレッドの数が、通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合にスレッドを実行するコアの動作状態を変更する。この場合には、プロセッサ制御部120は、バリア同期点に到達したスレッドを実行するコアを上述した停止状態等に変更するように、コアの動作状態を制御する。このような制御により、一部のコアが停止状態である場合に通常の動作を行う他のコアを通常の動作速度と比較して高い動作速度にて実行させるプロセッサにおいて、通常の動作を行うコアの動作速度を高めることが可能となる。
As an example, the
すなわち、プロセッサ制御部120が上述の制御を行うことで、バリア同期点に未到達であり、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能になる。そして、バリア同期点に未到達であるスレッドがバリア同期点に到達するまでに行われる処理に要する時間の短縮が可能となる。
That is, when the
なお、プロセッサ制御部120は、バリア同期点に未到達であり、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能となる任意の状態になるように、コアの動作状態を制御してもよい。つまり、プロセッサ制御部120は、バリア同期点に到達したスレッドを実行するコアを上述した停止状態等に変更しなくてもよい。プロセッサ制御部120が制御するコアの動作状態は、スレッドが実行されるマルチコアプロセッサの仕様等に応じて適宜定められる。
Note that the
また、プロセッサ制御部120は、バリア同期点に未到達であるスレッドが0である場合に発生した通知に応じて、コアの動作を制御してもよい。この場合には、プロセッサ制御部120は、停止状態であるコアを通常の動作を行う状態に変更するように、コアの動作を制御する。
Further, the
バリア同期点に未到達であるスレッドが0である場合には、並列プログラムに含まれる全てのスレッドにおける処理がバリア同期点に到達したことが想定される。すなわち、並列プログラムに含まれる全てのスレッドに関する同期処理が完了したと考えられる。そして、先行してバリア同期点に到達したスレッドを実行するコアは、例えば先にプロセッサ制御部120により行われた制御によって、停止状態であることが想定される。
When the number of threads that have not reached the barrier synchronization point is 0, it is assumed that the processing in all threads included in the parallel program has reached the barrier synchronization point. In other words, it is considered that the synchronization processing for all threads included in the parallel program has been completed. The core that executes the thread that has reached the barrier synchronization point in advance is assumed to be in a stopped state, for example, by the control performed by the
この場合に、プロセッサ制御部120は、スレッドの各々がバリア同期点から後の処理の実行を再開するよう、停止状態であるコアを通常の動作を行う状態に変更する。すなわち、このような制御により、スレッドの各々について、バリア同期点から後の処理の実行が開始される。
In this case, the
並列プログラム制御部130は、通知部110からの通知に応じて、スレッドの実行状態を変更する。
The parallel
一例として、並列プログラム制御部130は、バリア同期点に未到達であるスレッドの数が減少し、通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、バリア同期に到達したスレッドの実行状態を変更する。この場合には、並列プログラム制御部130は、バリア同期点に到達したスレッドを停止するように、スレッドの動作状態を制御する。なお、本実施形態において、スレッドを停止するとは、スレッドの実行が一時的に中断されるように、スレッドの状態が設定されることを示す。
As an example, when the number of threads that have not reached the barrier synchronization point decreases and the parallel
バリア同期の対象となるスレッドは、バリア同期点に到達した場合においても、他のスレッドがバリア同期点に到達したことを確認する処理を行う場合がある。この場合に、上述した確認の処理がプロセッサ制御部120にて停止状態にされたコアとは異なる他のコアで実行されると、バリア同期点に未到達であるスレッドの処理速度等に影響が及ぶ可能性がある。
そこで、並列プログラム制御部130は、バリア同期に到達したスレッドの実行状態を停止状態等に変更する。このような制御により、バリア同期に未到達であるスレッドにおける処理が、バリア同期に到達したスレッドによって影響を受ける可能性が小さくなる。
Even when the thread targeted for barrier synchronization reaches the barrier synchronization point, it may perform processing for confirming that another thread has reached the barrier synchronization point. In this case, if the confirmation process described above is executed by another core different from the core that has been stopped by the
Therefore, the parallel
また、並列プログラム制御部130は、バリア同期点に未到達であるスレッドが0である場合に発生した通知に応じて、スレッドの実行状態を制御してもよい。この場合には、並列プログラム制御部130は、停止されたスレッドの実行を再開させるように、スレッドの実行状態を制御する。
Further, the parallel
なお、バリア同期点に未到達であるスレッドが0である場合には、上述のように、並列プログラムに含まれる全てのスレッドにおける処理がバリア同期点に到達したことが想定される。このような制御により、スレッドの各々について、バリア同期点から後の処理が行われる。 When the number of threads that have not reached the barrier synchronization point is 0, as described above, it is assumed that the processing in all threads included in the parallel program has reached the barrier synchronization point. By such control, the subsequent processing from the barrier synchronization point is performed for each thread.
速度変更部140は、スレッドを実行するプロセッサコアの動作速度を変更する。
The
速度変更部140は、コアの動作状態に応じて、コアの動作速度を変更する。例えば、本実施形態においては、速度変更部140は、コアが通常の動作速度で動作している場合に、他のコアの動作状態に応じて、動作速度を高めるように変更することが想定される。また、速度変更部140は、コアが通常の動作速度よりも高い動作速度にて動作する場合に、コアの動作速度を通常の動作速度とするように変更してもよい。
The
一例として、速度変更部140は、バリア同期点に未到達のスレッドが存在し、処理が継続して行われるスレッドを実行するコアの動作速度を高めることが可能な状態である場合に、スレッドを実行するコアの動作速度を変更する。速度変更部140は、一部のコアにおいてバリア同期点に未到達であるスレッドの処理が継続して行われており、他のコアが停止状態にある場合に、当該スレッドを実行するコアの動作速度を変更する。すなわち、速度変更部140は、停止状態にあるコアの数に基づいて、バリア同期点に未到達であるスレッドを実行するコアの動作速度を変更する。
As an example, the
この場合には、速度変更部140は、バリア同期点に未到達のスレッドを実行するコアの動作速度を高めるように制御する。例えば、速度変更部140は、コアの動作周波数を高めるように制御する。
In this case, the
また、別の例として、速度変更部140は、バリア同期点に未到達のスレッドが0である場合に、スレッドを実行するコアの動作速度を変更する。
この例においては、速度変更部140は、通常よりも高い動作速度で動作するコアが存在する場合には、そのコアを通常の動作速度にて動作するように制御する。
As another example, when the number of threads that have not reached the barrier synchronization point is 0, the
In this example, when there is a core that operates at an operation speed higher than normal, the
続いて、図4及び図5に示すフローチャートを用いて、本発明の第1の実施形態におけるバリア同期装置100の動作の一例を説明する。
Next, an example of the operation of the
図4に示すフローチャートは、バリア同期処理が行われる場合のバリア同期装置100の動作の例を示す。すなわち、図4に示すフローチャートは、バリア同期点に未到達のスレッドの数が減少し、バリア同期点に未到達のスレッドを実行するコアの動作速度が高められる場合のバリア同期装置100の動作の例を示す。
The flowchart shown in FIG. 4 shows an example of the operation of the
まず、通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する(ステップS101)。この場合に、通知部110は、バリア同期点に未到達であるスレッドの数が減少し、当該スレッドの各々を実行するマルチコアプロセッサにて通常の動作を行うコアの動作速度を高めることが可能になる数に至った場合に、通知を発生する。
First, the
続いて、プロセッサ制御部120は、バリア同期点に到達したスレッドの動作を停止状態とする(ステップS102)。
Subsequently, the
そして、並列プログラム制御部130は、バリア同期に到達したスレッドを実行するコアの動作状態を停止状態に変更するよう制御する(ステップS103)。ステップS102及びステップS103の処理の順番は任意である。すなわち、上述の順番とは異なり、ステップS103の処理がステップS102の処理に先行して行われてもよいし、ステップS102及びステップS103の処理が並行して行われてもよい。
Then, the parallel
速度変更部140は、バリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように変更する(ステップS104)。ステップS104の処理において、動作速度が変更されるコアは、ステップS103において停止状態とされていないコアである。ステップS104において、コアの動作速度を高めるような変更が行われることで、バリア同期点に未到達であるスレッドが、コアが通常の動作速度にて動作する場合と比較して高速に実行される。したがって、並列プログラムがバリア同期点に到達するまでに要する時間が短くなる。
The
また、本実施形態におけるバリア同期装置100は、バリア同期点に未到達のスレッドの数が0となった場合に、停止状態にあるコアを、通常の動作を行うよう状態に変更してもよい。図5に示すフローチャートを用いて、この場合におけるバリア同期装置100の動作の一例を説明する。すなわち、図5は、バリア同期処理が完了した後におけるバリア同期装置100の動作の例を示す。
In addition, the
まず、通知部110は、バリア同期点に未到達であるスレッドの数に基づいて通知を発生する(ステップS111)。すなわち、通知部110は、バリア同期点に未到達であるスレッドが0である旨の通知を発生する。
First, the
ステップS111における通知部110による通知に応じて、以下のどうさがおこなわれる。速度変更部140は、動作速度が高められたコアの動作速度を、通常の動作速度に変更する(ステップS112)。そして、プロセッサ制御部120は、停止状態とされているコアの状態を通常の動作を行う状態に変更するよう制御する(ステップS113)。
In response to the notification by the
続いて、並列プログラム制御部130は、バリア同期点に到達し、停止状態にあるスレッドの動作を再開する(ステップS114)。すなわち、並列プログラムに含まれるスレッドの各々に関して、バリア同期点より後の処理が実行される。
Subsequently, the parallel
次に、図6を用いて、並列プログラムにおいてバリア同期処理が行われる場合におけるバリア同期装置100の動作の一例を説明する。
Next, an example of the operation of the
この例においては、並列プログラムは、4つのスレッドに分けられて処理が行われる。図6においては、4つのスレッドのそれぞれには、コア0から3までの番号が付されている。4つのスレッドは、例えば、図8に示すCPU501に含まれるコア551−1から551−4にてそれぞれ実行される。
In this example, the parallel program is divided into four threads for processing. In FIG. 6, the numbers from
この例においては、CPU501は、コア551−1から551−4うちの1つが通常の動作を行う状態であり、他の3つが停止状態である場合に、通常の動作を行うコアの動作速度を高めて実行させることを想定する。
In this example, when the
バリア同期装置100は、このような並列プログラムに含まれるスレッドのバリア同期を行う。バリア同期装置100において、スレッドの動作状態は、図3に示す管理テーブル111の形式にて管理される。
The
図6においては、管理テーブル111に含まれるスレッド状態112は、スレッド0から3に関するバリア同期点への到達の状況を順に表す。すなわち、図6に含まれるスレッド状態112において、例えば、図中の左端の数字はスレッド0に関するバリア同期点への到達の状況を順に表し、図中の右端の数字はスレッド3に関するバリア同期点への到達の状況を順に表す。
In FIG. 6, the
図6に示す例では、スレッド0から3の各々において、バリア同期の対象となる処理が行われていることを想定する。したがって、図6において処理の始まりとなる時刻においては、管理テーブル111に含まれるスレッド状態112は、全てのスレッドがバリア同期の対象となる処理が行われていることを表す“1111”となる。また、この場合に、管理テーブル111に含まれる同期待ちスレッド数113は“4”となる。
In the example illustrated in FIG. 6, it is assumed that processing that is subject to barrier synchronization is performed in each of
図6の例では、処理の始まりとなる時刻からの時間の経過に伴い、スレッド0における処理がバリア同期点に到達する。この場合には、管理テーブル111に含まれるスレッド状態112は、“0111”となる。これは、スレッド0の処理がバリア同期点に到達し、スレッド1から3の各々に関するバリア同期の対象となる処理が実行されていることを表す。また、管理テーブル111に含まれる同期待ちスレッド数113は“3”となる。なお、この場合には、スレッド1から3の各々を実行するコアの動作速度は変化しない。そして、スレッド0は、スレッド1から3の処理のバリア同期点への到達を待つ状態となる。
In the example of FIG. 6, the process in the
続いて、更なる時間の経過に伴い、スレッド1における処理がバリア同期点に到達する。この場合に、管理テーブル111に含まれるスレッド状態112は、スレッド0及び1の処理がバリア同期点に到達し、スレッド2及び3の各々においてバリア同期の対象となる処理が行われていることを表す“0011”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“2”となる。なお、この場合には、スレッド2及び3の各々を実行するコアの動作速度は変化しない。そして、スレッド1は、スレッド2及び3に関する処理のバリア同期点への到達を待つ状態となる。
Subsequently, as the time further elapses, the process in the
続いて、更なる時間の経過に伴い、スレッド2における処理がバリア同期点に到達する。この場合に、管理テーブル111に含まれるスレッド状態112は、スレッド0から2の各々がバリア同期点に到達し、スレッド3においてバリア同期の対象となる処理が行われていることを表す“0001”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“1”となる。そして、スレッド2は、スレッド3の処理のバリア同期点への到達を待つ状態となる。
Subsequently, as the time further elapses, the processing in the
この場合において、バリア同期点に未到達であるスレッドは1つである。すなわち、CPU501に含まれるコアのうち、処理を実行するコアは1つである。したがって、CPU501は、当該処理を実行する1つのコアの動作速度を高めることが可能となる。そのため、バリア同期装置100の通知部110は、バリア同期点に未到達であるスレッドの数が1つである旨の通知を発生する。
In this case, there is one thread that has not reached the barrier synchronization point. That is, one of the cores included in the
この場合に、通知部110にて生じた通知に応じて、並列プログラム制御部130は、処理がバリア同期点に到達したスレッド0から2をそれぞれ停止する。また、プロセッサ制御部120は、通知部110にて生じた通知に応じて、スレッド0から2をそれぞれ実行する3つのコアの状態を停止状態とするように制御する。更に、速度変更部140は、スレッド3を実行するコアの動作速度を高めるように変更する。
In this case, in response to the notification generated in the
上述したバリア同期装置100の各構成要素による動作が行われた後には、スレッド3のバリア同期点に至るまでの処理が継続して行われる。この場合には、スレッド3を実行するコアは、スレッド2における処理がバリア同期点に到達するまでと比較して高い動作速度にて動作する。
After the operation of each component of the
そして、スレッド3における処理が継続して行われると、スレッド3の処理はバリア同期点に到達する。スレッド3を実行するコアの動作速度が高められたことで、スレッド3の処理がバリア同期点に到達するまでに要する時間は、コアの動作速度が変更されない場合と比較して短い時間となる。この場合には、管理テーブル111に含まれるスレッド状態112は、スレッド0から3の各々がバリア同期点に到達したことを表す“0000”となる。また、管理テーブル111に含まれる同期待ちスレッド数113は“0”となる。すなわち、並列プログラムに含まれる全てのスレッドが、バリア同期点に到達した状態となる。
When the process in the
バリア同期装置100の通知部110は、バリア同期点に未到達であるスレッドが0である旨の通知を発生する。この場合に、通知部110にて生じた通知に応じて、速度変更部140は、スレッド3を実行するコアの通常の動作速度へ戻すように変更する。また、プロセッサ制御部120は、通知部110にて生じた通知に応じて、スレッド0から2をそれぞれ実行する3つのコアの状態を通常の動作を行う状態へ戻すように制御する。更に、並列プログラム制御部130は、先に処理がバリア同期点に到達したスレッド0から2をそれぞれ再開させる。
The
このような制御が行われることで、CPU501に含まれるコア551−1から551−4の各々は、通常の動作を行う状態に動作状態が変更される。そして、スレッド0から3の各々は、通常の実行が可能な状態に実行状態が制御される。このように、上述したバリア同期装置100の各構成要素による動作が行われた後には、コア551−1から551−4の各々においてスレッド0から3の各々に関して、バリア同期点より後にある処理が並列に実行される。
By performing such control, each of the cores 551-1 to 551-4 included in the
以上のとおり、本発明の第1の実施形態におけるバリア同期装置100は、並列プログラムに含まれるスレッドがバリア同期処理を行う場合において、バリア同期点に未到達であるスレッドの数に応じてコアの動作速度を制御する。すなわち、本実施形態におけるバリア同期装置100は、マルチコアプロセッサが許容する場合にはバリア同期点に未到達であるスレッドを実行するコアの動作速度を高めるように制御する。
As described above, in the
このような制御が行われることで、バリア同期点に未到達であるスレッドが、バリア同期点への到達までに要する時間が短縮される。並列プログラムにおいて、バリア同期に要する時間は、処理がバリア同期点に最も遅く到達するスレッドに依存する。そのため、処理がバリア同期点に最も遅く到達するスレッドがバリア同期点到達までに要する時間を短縮することで、バリア同期に要する時間を短縮することが可能となる。 By performing such control, the time required for a thread that has not reached the barrier synchronization point to reach the barrier synchronization point is shortened. In a parallel program, the time required for barrier synchronization depends on the thread whose processing reaches the barrier synchronization point latest. Therefore, it is possible to reduce the time required for the barrier synchronization by reducing the time required for the thread that reaches the barrier synchronization point latest to reach the barrier synchronization point.
すなわち、本実施形態におけるバリア同期装置100は、バリア同期に要する時間を短縮することを可能にする。
That is, the
(第1の実施形態の変形例)
本発明の第1の実施形態におけるバリア同期装置100には、種々の変形例が考えられる。図7は、本発明の第1の実施形態の変形例におけるバリア同期装置の構成を示す図である。
(Modification of the first embodiment)
Various modifications can be considered for the
一部のマルチプロセッサは、明示的な動作速度に関する変更の指示を必要とせず、停止状態にあるコアの数や通常の動作状態にあるコアの数に応じて、通常の動作状態にあるコアの動作速度を変更する。このようなマルチプロセッサにて実行される並列プログラムのバリア同期を対象とする場合には、バリア同期装置100は、例えば図7に示すように、速度変更部140を備えない構成であってもよい。
Some multiprocessors do not require explicit instructions for changing the operating speed, and depending on the number of cores in the stopped state and the number of cores in the normal operating state, Change the operating speed. When barrier synchronization of a parallel program executed by such a multiprocessor is targeted, the
すなわち、図7に示すバリア同期装置101は、通知部110と、プロセッサ制御部120と、並列プログラム制御部130とを備える。各構成要素は、第1の実施形態におけるバリア同期装置100が備える同じ要素と同様に動作する。そして、プロセッサ制御部120がバリア同期点に到達したスレッドを実行するコアの状態を停止状態等に変更することで、バリア同期点に未到達であるスレッドを実行するコアの動作速度が高められるように制御される。
That is, the
また、並列プログラムに含まれる全てのスレッドがバリア同期点に到達した場合等に、プロセッサ制御部120が停止状態にあるコアを通常の動作状態とすることで、動作速度が高められたコアの動作速度が通常の動作速度に変更される。
In addition, when all threads included in the parallel program reach the barrier synchronization point, the operation of the core whose operation speed is increased by setting the core in which the
上述の場合において、並列プログラムを動作するマルチコアプロセッサは、プログラム制御部120にて制御されたコアの各々の動作に関する状態に応じて、コアの動作速度を変更する。そのため、このようなマルチコアプロセッサにて並列プログラムが実行される場合においては、バリア同期装置101は、速度変更部140をも備えるバリア同期装置100と同様の効果を奏する。
In the above case, the multi-core processor that operates the parallel program changes the operating speed of the core according to the state related to the operation of each core controlled by the
また、プロセッサ制御部120と速度変更部140は、一つの構成要素として実現されてもよい。プロセッサ制御部120と速度変更部140の具体的な構成は、並列プログラムに含まれるスレッドが実行されるマルチコアプロセッサにおける動作速度の制御に関する仕様に応じて適宜定められる。
Further, the
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。 The present invention has been described above with reference to the embodiments, but the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention. The configurations in the embodiments can be combined with each other without departing from the scope of the present invention.
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 バス
DESCRIPTION OF
551
503 RAM
504
Claims (10)
マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御するプロセッサ制御手段と、
前記通知に応じて、前記スレッドの実行状態を変更する並列プログラム制御手段とを備える、バリア同期装置。 Notification means for generating a notification based on the number of threads that have not reached the barrier synchronization point among a plurality of threads in the parallel program;
Processor control means for controlling an operation state of the processor core that executes the thread among the processor cores included in the multi-core processor according to the notification;
A barrier synchronization apparatus comprising: parallel program control means for changing the execution state of the thread in response to the notification.
マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御し、
前記通知手段からの通知に応じて、前記スレッドの実行状態を変更し、
前記スレッドを実行する前記プロセッサコアの動作速度を変更する、バリア同期方法。 A notification is generated based on the number of threads that have not reached the barrier synchronization point among a plurality of threads in the parallel program,
Of the processor cores included in the multi-core processor, control the operation state of the processor core that executes the thread according to the notification,
In response to the notification from the notification means, the thread execution state is changed,
A barrier synchronization method for changing an operation speed of the processor core executing the thread.
並列プログラムにおける複数のスレッドのうち、バリア同期点に未到達である前記スレッドの数に基づいて通知を発生する処理と、
マルチコアプロセッサに含まれるプロセッサコアのうち、前記スレッドを実行する前記プロセッサコアの動作状態を前記通知に応じて制御する処理と、
前記通知手段からの通知に応じて、前記スレッドの実行状態を変更する処理と、
前記スレッドを実行する前記プロセッサコアの動作速度を変更する処理とを実行させる、プログラム。 On the computer,
Processing that generates a notification based on the number of threads that have not reached the barrier synchronization point among a plurality of threads in the parallel program;
A process of controlling the operating state of the processor core that executes the thread among the processor cores included in the multi-core processor according to the notification;
Processing to change the execution state of the thread in response to a notification from the notification means;
A program for executing processing for changing an operation speed of the processor core for executing the thread.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015129945A JP2017016250A (en) | 2015-06-29 | 2015-06-29 | Barrier synchronization device, barrier synchronization method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015129945A JP2017016250A (en) | 2015-06-29 | 2015-06-29 | Barrier synchronization device, barrier synchronization method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017016250A true JP2017016250A (en) | 2017-01-19 |
Family
ID=57829112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015129945A Pending JP2017016250A (en) | 2015-06-29 | 2015-06-29 | Barrier synchronization device, barrier synchronization method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017016250A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486693A (en) * | 2019-09-11 | 2021-03-12 | 富士通株式会社 | 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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155806A1 (en) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | Method and device for barrier synchronization, and multicore processor |
JP2014056594A (en) * | 2009-12-03 | 2014-03-27 | Intel Corp | Method and device for improving turbo performance for event processing |
-
2015
- 2015-06-29 JP JP2015129945A patent/JP2017016250A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155806A1 (en) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | Method and device for barrier synchronization, and multicore processor |
JP2014056594A (en) * | 2009-12-03 | 2014-03-27 | Intel Corp | Method and device for improving turbo performance for event processing |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486693A (en) * | 2019-09-11 | 2021-03-12 | 富士通株式会社 | 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 |
EP3792763A1 (en) * | 2019-09-11 | 2021-03-17 | Fujitsu Limited | Barrier synchronization system and parallel information processing apparatus |
JP2021043737A (en) * | 2019-09-11 | 2021-03-18 | 富士通株式会社 | Barrier synchronization system, barrier synchronization method and parallel information processing device |
JP2021043740A (en) * | 2019-09-11 | 2021-03-18 | 富士通株式会社 | Barrier synchronization circuit, barrier synchronization method, and parallel information processing device |
US11487593B2 (en) | 2019-09-11 | 2022-11-01 | Fujitsu Limited | Barrier synchronization system and parallel information processing apparatus |
CN112486693B (en) * | 2019-09-11 | 2023-07-07 | 富士通株式会社 | Barrier synchronization system and parallel information processing apparatus |
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 (en) | Multiprocessor system and its control method | |
JP6151669B2 (en) | Numerical control device capable of distributing CPU load according to machining program command contents | |
JP6494155B2 (en) | Mini-core based reconfigurable processor, scheduling apparatus and method therefor | |
JP6673202B2 (en) | Arithmetic device, method of controlling arithmetic device, and control program for arithmetic device | |
US20210191757A1 (en) | Sub-idle thread priority class | |
US20230127112A1 (en) | Sub-idle thread priority class | |
JP2017016250A (en) | Barrier synchronization device, barrier synchronization method, and program | |
JP2018022317A (en) | HIL simulation system and control method thereof | |
EP2620876A1 (en) | Method and apparatus for data processing, pci-e bus system and server | |
JP6368452B2 (en) | Improved scheduling of tasks performed by asynchronous devices | |
JP6074932B2 (en) | Arithmetic processing device and arithmetic processing method | |
JP5630798B1 (en) | Processor and method | |
JP2014206805A (en) | Control device | |
JP5623187B2 (en) | Parallel computation processing that transmits and receives data across multiple nodes without barrier synchronization | |
JP2013250696A (en) | Processor system and processor control device | |
US9015720B2 (en) | Efficient state transition among multiple programs on multi-threaded processors by executing cache priming program | |
JP5949245B2 (en) | Information processing apparatus, execution program, and execution method | |
JP2011248454A (en) | Processor device and control method for processor device | |
JP5768586B2 (en) | COMPUTER DEVICE, COMPUTER DEVICE CONTROL METHOD, AND PROGRAM | |
US20080288952A1 (en) | Processing apparatus and device control unit | |
JP2011070318A (en) | Method of performing batch processing, and system for performing batch processing | |
JP5486368B2 (en) | Microcomputer and control method of microcomputer | |
JP2011060048A (en) | Apparatus, method and program for processing information | |
JP6658123B2 (en) | Parallel processing device, parallel processing method and program | |
WO2019188181A1 (en) | Scheduling method, scheduling device |
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 |