JP7419843B2 - parallel processing device - Google Patents
parallel processing device Download PDFInfo
- Publication number
- JP7419843B2 JP7419843B2 JP2020014221A JP2020014221A JP7419843B2 JP 7419843 B2 JP7419843 B2 JP 7419843B2 JP 2020014221 A JP2020014221 A JP 2020014221A JP 2020014221 A JP2020014221 A JP 2020014221A JP 7419843 B2 JP7419843 B2 JP 7419843B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- parallelization
- loop
- parallel processing
- parameters
- 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
- 238000012545 processing Methods 0.000 title claims description 83
- 238000005457 optimization Methods 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 38
- 238000000605 extraction Methods 0.000 claims description 23
- 239000000284 extract Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 27
- 230000003068 static effect Effects 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
本発明は、並列処理装置に関する。 The present invention relates to a parallel processing device.
並列処理プログラムの並列処理パラメータを決定する技術が開示されている。例えば、特許文献1では、処理部が、評価対象の第1プログラムの推奨するノード数とプロセス数とを決定する。具体的には、処理部は、ノード数とプロセス数とを示す第1サンプル点に従って第1プログラムを実行させ、第1サンプル点それぞれの間の評価値の変動率に基づく第1統計量を算出する。そして、処理部は、第1統計量が第1閾値以下になるまで第1サンプル点4を生成する。また、処理部は、第1サンプル点から所定距離内に第2サンプル点を追加し、第2サンプル点に従って第1プログラムを実行したときの評価値を用いて第1サンプル点ごとの第2統計量を算出する。そして、処理部は、第2統計量が第2閾値以下になるまで第2サンプル点を生成する。そして、処理部は、第1サンプル点と第2サンプル点との評価値を補完して、推奨するノード数とプロセス数とを決定する。
A technique for determining parallel processing parameters of a parallel processing program is disclosed. For example, in
また、2重ループを有するプログラムを並列処理で実行するときに、適切な並列処理パラメータを設定する必要がある。スレッド並列化規格OpenMPの並列処理パラメータとして、スケジューリング方式、チャンクサイズおよびプロセッサコアの割り当てが挙げられる。従来では、並列処理パラメータの組み合わせごとに、組み合わせのパラメータをプログラムに設定し、プログラムを実行し、実行結果を参照して適切な並列化パラメータとなるように調整していた。あるいは、並列化パラメータを経験者による経験で調整していた。 Furthermore, when a program having a double loop is executed in parallel, it is necessary to set appropriate parallel processing parameters. Parallel processing parameters of the thread parallelization standard OpenMP include scheduling method, chunk size, and processor core allocation. Conventionally, for each combination of parallel processing parameters, the parameters for the combination were set in a program, the program was executed, and the execution results were referenced to adjust the parallelization parameters to be appropriate. Alternatively, the parallelization parameters were adjusted based on the experience of experienced people.
しかしながら、ループを有するプログラムを並列処理で実行するときに、プログラムに設定する最適な並列処理パラメータを高速に推定することが難しいという問題がある。 However, when a program having a loop is executed in parallel, there is a problem in that it is difficult to quickly estimate optimal parallel processing parameters to be set in the program.
例えば、推奨するノード数とプロセス数とを決定する技術では、評価対象の第1プログラムをノード数とプロセス数とを示す第1サンプル点に従って評価対象の第1プログラムを何度も実行させて、推奨するノード数とプロセス数とを決定する。また、決定する並列処理パラメータは、ノード数とプロセス数だけである。したがって、スケジューリング方式、チャンクサイズおよびプロセッサコアの割り当てを含む最適な並列処理パラメータを高速に推定することが難しい。 For example, in a technique for determining the recommended number of nodes and processes, a first program to be evaluated is executed many times according to a first sample point indicating the number of nodes and processes; Determine the recommended number of nodes and processes. Further, the only parallel processing parameters to be determined are the number of nodes and the number of processes. Therefore, it is difficult to quickly estimate optimal parallel processing parameters including scheduling method, chunk size, and processor core allocation.
また、2重ループを有するプログラムを並列処理で実行するときの並列化パラメータを決定する場合では、並列処理パラメータの組み合わせごとに、プログラムを実行して、最適な並列処理パラメータを求める。したがって、かかる場合でも、最適な並列処理パラメータを高速に推定することが難しい。 Furthermore, when determining parallelization parameters when a program having a double loop is executed in parallel, the program is executed for each combination of parallel processing parameters to find the optimal parallel processing parameters. Therefore, even in such a case, it is difficult to estimate optimal parallel processing parameters at high speed.
本発明は、1つの側面では、ループを有するプログラムを並列処理で実行するときの最適な並列処理パラメータを高速に推定することを目的とする。 One aspect of the present invention is to quickly estimate optimal parallel processing parameters when executing a program having a loop in parallel processing.
1つの態様では、並列処理装置は、所定の並列化パラメータを設定した、2重ループを有する最適化対象のプログラムを並列処理で1回だけ実行する実行部と、前記実行部によって実行された結果から前記最適化対象のプログラムの特徴値を算出する算出部と、2重ループを有するサンプルプログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを参照して、前記算出部によって算出された特徴値に対応する最適な並列化パラメータを抽出する抽出部と、を有する。 In one aspect, the parallel processing device includes an execution unit that executes an optimization target program having a double loop only once in parallel processing, and a result executed by the execution unit, in which a predetermined parallelization parameter is set. A calculation unit that calculates the feature value of the program to be optimized from the above, and a database that shows the correlation between the feature value and the optimal parallelization parameter in the sample program having a double loop, and the calculation unit calculates the feature value. and an extraction unit that extracts an optimal parallelization parameter corresponding to the calculated feature value.
1実施態様によれば、ループを有するプログラムを並列処理で実行するときの最適な並列処理パラメータを高速に推定することができる。 According to one embodiment, optimal parallel processing parameters when executing a program having a loop in parallel processing can be estimated at high speed.
以下に、本願の開示する並列処理装置の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。 Embodiments of the parallel processing device disclosed in the present application will be described in detail below with reference to the drawings. Note that the present invention is not limited to the examples.
[実施例に係る並列処理装置の機能構成]
図1は、実施例に係る並列処理装置の機能構成を示すブロック図である。図1に示す並列処理装置1は、複数レベルの並列化が行なえるアプリケーションプログラムに対する最適な並列化パラメータを選択して、実行性能をチューニングする。実施例では、複数レベルの並列化を行なえるアプリケーションプログラムとしてスレッド並列化規格であるOpenMPを適用するものとする。また、実施例では、例えば、2重ループを有するアプリケーションプログラムを並列処理で実行する際に適切な並列化パラメータを選択する場合について説明する。 なお、OpenMP規格は、例えば、「OpenMP Application Program Interface Version 5.0」の記載に準じるものであり、詳細な説明を省略する。
[Functional configuration of parallel processing device according to embodiment]
FIG. 1 is a block diagram showing the functional configuration of a parallel processing device according to an embodiment. A
並列処理装置1は、制御部10および記憶部20を有する。制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。そして、制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、生成部11、プログラム仮実行部12、特徴値算出部13、最適化パラメータ抽出部14およびプログラム本実行部15を有する。なお、プログラム仮実行部12は、実行部の一例である。特徴値算出部13は、算出部の一例である。最適化パラメータ抽出部14は、抽出部の一例である。生成部11は、生成部の一例である。
The
記憶部20は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、基準プログラム21および関係データベース22を有する。
The
基準プログラム21は、並列化パラメータに影響を与える、プログラムの複数の実行特徴値の組み合わせごとに、それぞれの組み合わせの特徴値を持つプログラムのことをいう。基準プログラム21は、並列化パラメータを設定する変数を有するとともに、2重ループを有する。ここでは、プログラムの複数の実行特徴値の組み合わせを「アプリ実行特徴値セット」というものとする。アプリ実行特徴値セットごとに、基準プログラム21が作成される。
The
ここで、実施例で扱うプログラムの一例を、図2を参照して説明する。図2は、プログラムの一例を示す図である。図2では、Fortran言語のプログラムの一例である。図2に示すように、プログラムは、2レベルのDOループの並列化を行う。プログラム内のL1,U1が、1次元目のループの変動範囲の定数である。L2,U2が、2次元目のループの変動範囲の定数である。 Here, an example of a program used in the embodiment will be explained with reference to FIG. 2. FIG. 2 is a diagram showing an example of a program. FIG. 2 shows an example of a Fortran language program. As shown in FIG. 2, the program performs two levels of parallelization of the DO loop. L1 and U1 in the program are constants for the variation range of the first-dimensional loop. L2 and U2 are constants of the variation range of the second-dimensional loop.
かかるプログラムは、スレッド並列化規格であるOpenMPの並列化パラメータを設定する変数を有する。並列化パラメータには、変数P1,P2,D1,D2,C1およびC2が挙げられる。変数P1,P2には、DOループへのプロセッサコアの割り当てを示す値が設定される。変数D1,D2は、スケジューリング方式を示す値が設定される。変数C1,C2は、チャンク数が設定される。スケジューリング方式には、例えば、static、dynamic、guidedが設定可能である。チャンクには、例えば、任意の整数が設定可能である。任意の整数は、例えば、1,8または32である。DOループへのプロセッサコアの割り当てとして、例えば48コアを例とすると、(1,48),(2,24),(3,16),(4,12),(6,8),(8,6),(12,4),(16,3),(24,2),(48,1)が設定可能である。 Such a program has variables for setting parallelization parameters of OpenMP, which is a thread parallelization standard. Parallelization parameters include variables P1, P2, D1, D2, C1, and C2. Variables P1 and P2 are set to values indicating allocation of processor cores to DO loops. Variables D1 and D2 are set to values indicating the scheduling method. Variables C1 and C2 are set to the number of chunks. The scheduling method can be set to, for example, static, dynamic, or guided. For example, any integer can be set for the chunk. Any integer is, for example, 1, 8 or 32. Assigning processor cores to the DO loop, taking 48 cores as an example, (1, 48), (2, 24), (3, 16), (4, 12), (6, 8), (8 , 6), (12, 4), (16, 3), (24, 2), and (48, 1) can be set.
かかるプログラムは、parallel do構文を持ち、変動範囲のdoループを並列に実行する。ここでいう並列とは、プロセス並列ではなく、プログラム内のスレッド並列のことをいう。parallel do構文は、プロセッサコアの割り当てに従ってスレッドにdoループの繰り返し処理の一部を割り当てる。 Such a program has a parallel do syntax and executes variable range do loops in parallel. Parallelism here refers to thread parallelism within a program, not process parallelism. The parallel do construct assigns a portion of the do loop iterations to threads according to processor core assignments.
かかるプログラムに設定可能な並列化パラメータの組み合わせは、上記の例では、810通り存在する。すなわち、スケジューリング方式に3種類、チャンクに3種類が存在するので、2レベルのDOループに適用する場合には、81(=3×3×3×3)通りが存在する。加えて、DOループへのプロセッサコアの割り当てに10種類が存在するので、プログラムに設定可能な並列化パラメータの組み合わせは、810(=10×81)通りとなる。 In the above example, there are 810 combinations of parallelization parameters that can be set for such a program. That is, since there are three types of scheduling methods and three types of chunks, there are 81 (=3×3×3×3) ways when applied to a two-level DO loop. In addition, since there are 10 types of allocation of processor cores to DO loops, there are 810 (=10×81) combinations of parallelization parameters that can be set in a program.
実施例では、並列処理装置1は、プログラムに設定可能な並列化パラメータの組み合わせの中から実行時間が最も短い組み合わせを示す最適並列化パラメータを抽出する。
In the embodiment, the
図1に戻って、ここで、アプリ実行特徴値セットについて説明する。アプリ実行特徴値セットは、並列化パラメータに影響を与える、プログラムの複数の実行特徴値の組み合わせのことをいう。並列化パラメータに影響を与える、プログラムの複数の実行特徴値には、例えば、以下のx、y、zが考えられる。
x)各DOループの繰り返しごとの処理部分の実行命令数の平均値
y)各DOループの繰り返しごとの処理部分の実行命令数の相対標準偏差値
z)各DOループの繰り返しごとの処理部分のキャッシュ再利用率の平均値
Returning to FIG. 1, the application execution feature value set will now be described. An application execution feature value set is a combination of multiple execution feature values of a program that affect parallelization parameters. For example, the following x, y, and z can be considered as a plurality of program execution characteristic values that affect the parallelization parameter.
x) Average value of the number of instructions executed in the processing section for each iteration of each DO loop y) Relative standard deviation value of the number of instructions executed for the processing section for each iteration of each DO loop z) Average value of the number of instructions executed for the processing section for each iteration of each DO loop Average cache reuse rate
xが並列化パラメータに影響を与える、プログラムの実行特徴値として適用される理由は、以下の通りである。処理部分の実行命令数の大小により、例えば並列化パラメータの1つであるスケジューリング方式に影響を与えるからである。すなわち、処理コスト(オーバーヘッド)が大きい場合に採用されるDynamicスケジューリング方式を採用できるかどうかを判定するためである。 The reason why x is applied as a program execution characteristic value that affects parallelization parameters is as follows. This is because the number of instructions executed in a processing part affects, for example, the scheduling method, which is one of the parallelization parameters. That is, this is to determine whether the dynamic scheduling method, which is adopted when the processing cost (overhead) is large, can be adopted.
yが並列化パラメータに影響を与える、プログラムの実行特徴値として適用される理由は、以下の通りである。処理部分の負荷バランスの度合いにより、例えば並列化パラメータの1つであるスケジューリング方式に影響を与えるからである。すなわち、処理部分の負荷バランスにバラツキが無い場合にはstaticスケジューリング方式を、負荷バランスにバラツキが有る場合にはDynamicスケジューリング方式を採用するためである。 The reason why y is applied as a program execution characteristic value that affects parallelization parameters is as follows. This is because the degree of load balance of the processing parts affects, for example, the scheduling method, which is one of the parallelization parameters. That is, the static scheduling method is used when there is no variation in the load balance of the processing parts, and the dynamic scheduling method is used when there is variation in the load balance.
zが並列化パラメータに影響を与える、プログラムの実行特徴値として適用される理由は、以下の通りである。キャッシュの再利用率の高低により、例えば並列化パラメータの1つであるチャンク数に影響を与えるからである。すなわち、キャッシュの再利用率が高い場合には、チャンク数を大きくすることにより、キャッシュの再利用を促進すべく、大きいチャンク数を採用するためである。 The reason why z is applied as a program execution characteristic value that affects parallelization parameters is as follows. This is because the cache reuse rate affects, for example, the number of chunks, which is one of the parallelization parameters. That is, when the cache reuse rate is high, a large number of chunks is adopted in order to promote cache reuse by increasing the number of chunks.
実施例では、並列処理装置1は、この3種類の実行特徴値を、1次元目のDOループおよび2次元目のDOループでそれぞれ算出し、6個の実行特徴値の組み合わせを、アプリ実行特徴値セットとして定義する。
In the embodiment, the
関係データベース22は、アプリ実行特徴値セットと、最適な並列化パラメータとの対応関係を保持する。関係データベース22は、後述する生成部11によって生成される。なお、関係データベース22の一例は、後述する。
The
生成部11は、関係データベース22を生成する。
The
例えば、生成部11は、アプリ実行特徴値セットの各要素を、次の刻みで変化させるような複数の基準プログラム21を生成する。各DOループの繰り返しごとの処理部分の実行命令数の平均値は、Dynamicスケジューリング方式の場合の実行時ライブラリの実行命令数の1~10倍とする。すなわち、各DOループの繰り返しごとの処理部分の実行命令数の平均値は、DOループごとに、1,2,・・・,10の値を採る。各DOループの繰り返しごとの処理部分の実行命令数の相対標準偏差値は、0.1~1.0を0.1刻みとする。すなわち、各DOループの繰り返しごとの処理部分の実行命令数の相対標準偏差値は、DOループごとに、0.1,0.2,・・・,1.0の値を採る。各DOループの繰り返しごとの処理部分のキャッシュ再利用率の平均値は、0.1~1.0を0.1刻みとする。すなわち、各DOループの繰り返しごとの処理部分のキャッシュ再利用率の平均値は、DOループごとに、0.1,0.2,・・・,1.0の値を採る。この例では、アプリ実行特徴値セットは、最終的に、106(=100万)個になる。生成部11は、100万個のアプリ実行特徴値セットを持つそれぞれの基準プログラム21を生成する。
For example, the
そして、生成部11は、1つのアプリ実行特徴値セットを持つ基準プログラム21に対して複数通りの並列化パラメータの組をそれぞれ設定して実行する。一例として、プログラムに設定可能な並列化パラメータの組み合わせが810通りあるとすると、生成部11は、1つの基準プログラム21に対して810通りの並列化パラメータをそれぞれ設定して実行する。
Then, the
そして、生成部11は、複数通りの実行結果を基に、最も実行時間が短かった並列化パラメータの組を最適並列化パラメータとして決定する。そして、生成部11は、基準プログラム21におけるアプリ実行特徴値セットと最適並列化パラメータとを対応付けて関係データベース22に追加する。そして、生成部11は、他のアプリ実行特徴値セットについても同様に、アプリ実行特徴値セットを持つ基準プログラム21における最適並列化パラメータを決定して、関係データベース22に追加する。
Then, the
ここで、関係データベース22の一例を、図3を参照して説明する。図3は、実施例に係る関係データベースの一例を示す図である。図3に示す関係データベース22は、アプリ実行特徴値セット(X1,Y1,Z1,X2,Y2,Z2)と、最適並列化パラメータ(P1,P2,D1,D2,C1,C2)とを対応付けて記憶する。
Here, an example of the
アプリ実行特徴値セット(X1,Y1,Z1,X2,Y2,Z2)は、1次元目のDOループの上記x、y、zおよび2次元目のDOループの上記x、y、zに対応する。つまり、X1は、1次元目のDOループのx、すなわち、1次元目のDOループの繰り返しごとの処理部分の実行命令数の平均値を示す。Y1は、1次元目のDOループのy、すなわち、1次元目のDOループの繰り返しごとの処理部分の実行命令数の相対標準偏差値を示す。Z1は、1次元目のDOループのz、すなわち、1次元目のDOループの繰り返しごとの処理部分のキャッシュ再利用率の平均値を示す。X2は、2次元目のDOループのx、すなわち、2次元目のDOループの繰り返しごとの処理部分の実行命令数の平均値を示す。Y2は、2次元目のDOループのy、すなわち、2次元目のDOループの繰り返しごとの処理部分の実行命令数の相対標準偏差値を示す。Z2は、2次元目のDOループのz、すなわち、2次元目のDOループの繰り返しごとの処理部分のキャッシュ再利用率の平均値を示す。ここでは、X1やX2は、1,2,・・・,10の値を採る。Y1やY2は、0.1,0.2,・・・,1.0の値を採る。Z1やZ2は、0.1,0.2,・・・,1.0の値を採る。 The application execution feature value set (X1, Y1, Z1, X2, Y2, Z2) corresponds to the above x, y, z of the first-dimensional DO loop and the above x, y, z of the second-dimensional DO loop. . That is, X1 indicates x of the first-dimensional DO loop, that is, the average value of the number of instructions executed in the processing portion for each repetition of the first-dimensional DO loop. Y1 indicates y of the first-dimensional DO loop, that is, the relative standard deviation value of the number of executed instructions of the processing portion for each repetition of the first-dimensional DO loop. Z1 indicates z of the first-dimensional DO loop, that is, the average value of the cache reuse rate of the processing portion for each iteration of the first-dimensional DO loop. X2 indicates x of the second-dimensional DO loop, that is, the average value of the number of instructions executed in the processing portion for each repetition of the second-dimensional DO loop. Y2 indicates y of the second-dimensional DO loop, that is, the relative standard deviation value of the number of executed instructions of the processing portion for each repetition of the second-dimensional DO loop. Z2 indicates z of the second-dimensional DO loop, that is, the average value of the cache reuse rate of the processing portion for each iteration of the second-dimensional DO loop. Here, X1 and X2 take values of 1, 2, . . . , 10. Y1 and Y2 take values of 0.1, 0.2, . . . , 1.0. Z1 and Z2 take values of 0.1, 0.2, . . . , 1.0.
最適並列化パラメータ(P1,P2,D1,D2,C1,C2)は、アプリ実行特徴値セット(X1,Y1,Z1,X2,Y2,Z2)を持つ基準プログラム21における最適な並列化パラメータに対応する。P1,P2は、DOループへのプロセッサコアの割り当てを示す値である。D1は、1次元目のDOループのスケジューリング方式を示す値である。D2は、2次元目のDOループのスケジューリング方式を示す値である。C1は、1次元目のDOループのチャンク数である。C2は、2次元目のDOループのチャンク数である。
The optimal parallelization parameters (P1, P2, D1, D2, C1, C2) correspond to the optimal parallelization parameters in the
一例として、アプリ実行特徴値セットが(1,0.1,0.1,1,0.1,0.1)である場合に、最適並列化パラメータとして(6,8,static,static,1,1)が記憶されている。また、アプリ実行特徴値セットが(10,0.1,0.1,1,0.1,0.1)である場合に、最適並列化パラメータとして(6,8,dynamic,static,1,1)が記憶されている。 As an example, when the application execution feature value set is (1, 0.1, 0.1, 1, 0.1, 0.1), the optimal parallelization parameter is (6, 8, static, static, 1 , 1) are stored. Furthermore, when the application execution feature value set is (10, 0.1, 0.1, 1, 0.1, 0.1), the optimal parallelization parameters are (6, 8, dynamic, static, 1, 1) is stored.
プログラム仮実行部12は、最適化パラメータを抽出したい最適化対象プログラムを仮実行する。例えば、プログラム仮実行部12は、最適化対象プログラムの特徴を求めるために、所定の並列化パラメータを設定した最適化対象プログラムを1回だけ仮実行する。最適化対象プログラムに設定する所定の並列化パラメータ(P1,P2,D1,D2,C1,C2)は、例えば(6,8,static,static,1,1)である。しかしながら、所定の並列化パラメータ(P1,P2,D1,D2,C1,C2)は、これに限定されるものではない。
The program
特徴値算出部13は、プログラム仮実行部12によって実行された際のアプリ実行特徴値セットのそれぞれの特徴値を算出する。実行時のアプリ実行特徴値セットのそれぞれの特定値は、特定のプロファイル等の性能情報取得ツールを用いて求められれば良い。特定のプロファイル等の性能情報取得ツールは、例えば、スーパーコンピュータ「京」に向けたアプリケーション開発支援ツール(“スーパーコンピュータ「京」の性能プロファイル”を参照)を利用しても良い。
The feature
最適化パラメータ抽出部14は、関係データベース22を参照して、特徴値算出部13によって算出されたアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。例えば、最適化パラメータ抽出部14は、関係データベース22から、特徴値算出部13によって算出されたアプリ実行特徴値セットと最も距離が近いアプリ実行特徴値セットを取得する。これは、関係データベース22に記憶されたアプリ実行特徴値セットは、離散的であるからである。そして、最適化パラメータ抽出部14は、関係データベース22から、取得したアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。これにより、最適化パラメータ抽出部14は、ループを有する最適化対象プログラムを並列処理で実行するときの最適な並列化パラメータを高速に推定することができる。
The optimization
プログラム本実行部15は、最適化対象プログラムを本実行する。例えば、プログラム本実行部15は、最適化パラメータ抽出部14によって抽出された最適並列化パラメータを設定した最適化対象プログラムを本実行する。
The
[プログラムを実行するハードウェアの一例]
図4は、プログラムを実行するハードウェアの一例を示す図である、図4に示すように、計算機が、1つのメモリを共有する48個のプロセッサコア(計算コア)を有する場合とする。それぞれの計算コアは、メモリへのアクセスのコストを軽減するために、キャッシュを有する。そして、12個の計算コアごとに、UMAグループを生成する。そして、4組のUMAグループが、NUMA(Non-Uniform Memory Access)結合している。なお、図4の例では、計算機に48個の計算コアがある場合を説明したが、これに限定されるものではない。
[Example of hardware that executes the program]
FIG. 4 is a diagram showing an example of hardware that executes a program. As shown in FIG. 4, it is assumed that a computer has 48 processor cores (computing cores) that share one memory. Each computational core has a cache to reduce the cost of accessing memory. Then, a UMA group is generated for each of the 12 calculation cores. The four UMA groups are connected by NUMA (Non-Uniform Memory Access). In addition, in the example of FIG. 4, the case where a computer has 48 calculation cores was explained, but it is not limited to this.
[プロセッサコアの割り当ての一例]
図5は、プロセッサコアの割り当ての一例を示す図である。すなわち、上記並列化パラメータの変数P1,P2で表わしたDOループへのプロセッサコアの割り当ての一例を示す。図5の一例では、48個のプロセッサコア(計算コア)の場合である。
[Example of processor core allocation]
FIG. 5 is a diagram illustrating an example of allocation of processor cores. That is, an example of the allocation of processor cores to the DO loop represented by the variables P1 and P2 of the parallelization parameters is shown. The example in FIG. 5 is a case of 48 processor cores (computation cores).
図5上図は、48個のプロセッサコアの割り当てが(12,4)の場合である。かかる場合には、プログラムは、コアごとに、1次元目(1重目)のDOループを12分割で実行され、2次元目(2重目)のDOループを4分割で実行される。 The upper diagram of FIG. 5 shows a case where the allocation of 48 processor cores is (12,4). In this case, for each core, the program executes the first dimension (first layer) DO loop in 12 divisions, and the second dimension (second layer) DO loop in four divisions.
図5下図は、48個のプロセッサコアの割り当てが(8,6)の場合である。かかる場合には、プログラムは、コアごとに、1次元目(1重目)のDOループを8分割で実行され、2次元目(2重目)のDOループを6分割で実行される。 The lower diagram in FIG. 5 shows a case where the allocation of 48 processor cores is (8,6). In this case, for each core, the program executes the first dimension (first layer) DO loop in eight divisions, and the second dimension (second layer) DO loop in six divisions.
[DOループの実行例]
図6は、DOループの実行例を示す図である。図6の一例では、図2で示したプログラムのL1,L2が「1」、U1,U2が「100」の場合である。すなわち、1次元目(1重目)のループの変動範囲L1,U1は、1,100である。2次元目(2重目)のループの変動範囲L2,U2は、1,100である。また、最適化パラメータのプロセッサコアの割り当て(P1,P2)が(8,6)の場合である。
[Execution example of DO loop]
FIG. 6 is a diagram showing an example of execution of a DO loop. In the example of FIG. 6, L1 and L2 of the program shown in FIG. 2 are "1" and U1 and U2 are "100". That is, the variation ranges L1 and U1 of the first dimension (first layer) loop are 1,100. The variation ranges L2 and U2 of the second dimension (second layer) loop are 1,100. Further, this is a case where the processor core allocation (P1, P2) of the optimization parameters is (8, 6).
ここでは、CORE#0が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(1,17)を担う。CORE#1が示すプロセッサコアは、1重目のDOループの変動範囲(14,26)を担い、2重目のDOループの変動範囲(1,17)を担う。CORE#2が示すプロセッサコアは、1重目のDOループの変動範囲(27,39)を担い、2重目のDOループの変動範囲(1,17)を担う。・・・CORE#7が示すプロセッサコアは、1重目のDOループの変動範囲(92,100)を担い、2重目のDOループの変動範囲(1,17)を担う。また、CORE#8が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(18,34)を担う。CORE#16が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(35,51)を担う。CORE#24が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(52,68)を担う。CORE#32が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(69,85)を担う。CORE#40が示すプロセッサコアは、1重目のDOループの変動範囲(1,13)を担い、2重目のDOループの変動範囲(86,100)を担う。このように、プロセッサコアの割り当てに従って、スレッドにdoループの繰り返し処理の一部を割り当てる。
here, The processor core indicated by
[最適化パラメータ抽出の一例]
図7は、最適化パラメータ抽出の一例を示す図である。図7に示すように、生成部11によって生成された関係データベース22が表わされている。なお、最適化対象プログラムに対応するアプリ実行特徴値セットが特徴値算出部13によって算出されたものとする。
[Example of optimization parameter extraction]
FIG. 7 is a diagram showing an example of optimization parameter extraction. As shown in FIG. 7, the
最適化パラメータ抽出部14は、関係データベース22を参照して、特徴値算出部13によって算出されたアプリ実行特徴値セットと最も距離が近いアプリ実行特徴値セットを取得する。ここでは、アプリ実行特徴値セットとして(5,0.8,0.2,1,0.2,0.1)が取得される。すると、最適化パラメータ抽出部14は、関係データベース22を参照して、取得したアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。ここでは、最適並列化パラメータとして(12,4,guided,static,32,1)が抽出される。
The optimization
[最適化されたプログラムの一例]
図8は、最適化されたプログラムの一例を示す図である。ここでは、最適化対象プログラムの最適並列化パラメータとして(12,4,guided,static,32,1)が抽出されたとする。符号p1に示すように、DOループへのプロセッサコアの割り当てを示す値として、12,4が設定されている。符号p2に示すように、1次元目のDOループのスケジューリング方式として「guided」が設定されている。符号p3に示すように、2次元目のDOループのスケジューリング方式として「static」が設定されている。符号p4に示すように、1次元目のDOループのチャンク数として「32」が設定されている。符号p5に示すように、2次元目のDOループのチャンク数として「1」が設定されている。
[An example of an optimized program]
FIG. 8 is a diagram showing an example of an optimized program. Here, it is assumed that (12, 4, guided, static, 32, 1) is extracted as the optimal parallelization parameter of the optimization target program. As shown by the symbol p1, 12.4 is set as a value indicating the allocation of the processor core to the DO loop. As shown by symbol p2, "guided" is set as the scheduling method for the first-dimensional DO loop. As shown by symbol p3, "static" is set as the scheduling method for the second-dimensional DO loop. As shown by symbol p4, "32" is set as the number of chunks of the first-dimensional DO loop. As shown by symbol p5, "1" is set as the number of chunks of the second-dimensional DO loop.
そして、最適並列化パラメータを設定した最適化対象プログラムを、プログラム本実行部15は、本実行する。
Then, the
[生成処理のフローチャートの一例]
図9は、実施例に係る生成処理のフローチャートの一例を示す図である。なお、アプリ実行特徴値セットは、図3で示す(X1,Y1,Z1,X2,Y2,Z2)であるとする。
[Example of flowchart of generation process]
FIG. 9 is a diagram illustrating an example of a flowchart of generation processing according to the embodiment. It is assumed that the application execution feature value set is (X1, Y1, Z1, X2, Y2, Z2) shown in FIG.
図9に示すように、生成部11は、アプリ実行特徴値セットの6次元空間でグリッド状に配置される値を取り得る複数の基準プログラム21を生成する(ステップS11)。
As shown in FIG. 9, the
そして、生成部11は、それぞれの基準プログラム21において、並列化パラメータの全組み合わせの実行を行う。生成部11は、最も実行時間が短い並列化パラメータを、最適並列化パラメータとして、基準プログラム21に対応するアプリ実行特徴値セットと対応付けて関係データベース22に格納する(ステップS12)。
Then, the
[最適化パラメータ抽出処理のフローチャートの一例]
図10は、実施例に係る最適化パラメータ抽出処理のフローチャートの一例を示す図である。
[Example of flowchart of optimization parameter extraction process]
FIG. 10 is a diagram illustrating an example of a flowchart of the optimization parameter extraction process according to the embodiment.
図10に示すように、最適化対象プログラムを受け付けたプログラム仮実行部12は、受け付けた最適化対象プログラムを1回実行する。そして、特徴値算出部13は、アプリ実行特徴値セットを取得する(ステップS21)。実行時のアプリ実行特徴値セットのそれぞれの特定値は、特定のプロファイル等の性能情報取得ツールを用いて求められれば良い。
As shown in FIG. 10, the program
そして、最適化パラメータ抽出部14は、取得されたアプリ実行特徴値セットをまるめる(ステップS22)。
Then, the optimization
そして、最適化パラメータ抽出部14は、まるめた後のアプリ実行特徴値セットをキーに、関係データベース22を参照して、最適並列化パラメータを抽出する(ステップS23)。
[プログラム本実行処理のフローチャートの一例]
図11は、実施例に係るプログラム本実行処理のフローチャートの一例を示す図である。
Then, the optimization
[An example of a flowchart of program execution processing]
FIG. 11 is a diagram illustrating an example of a flowchart of the program main execution process according to the embodiment.
プログラム本実行部15は、最適化対象プログラムに最適並列化パラメータを設定して実行する(ステップS31)。
The program
[実施例の効果]
上記実施例によれば、並列処理装置1は、所定の並列化パラメータを設定した、2重ループを有する最適化対象のプログラムを並列処理で1回だけ実行する。並列処理装置1は、実行された結果から最適化対象のプログラムの特徴値を算出する。並列処理装置1は、2重ループを有するサンプルプログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを参照して、算出された特徴値に対応する最適な並列化パラメータを抽出する。かかる構成によれば、並列処理装置1は、2重ループを有する最適化対象のプログラムを並列処理で実行する場合に、1回だけ実行するだけで、最適な並列化パラメータを高速に求めることができる。
[Effects of Examples]
According to the above embodiment, the
また、上記実施例によれば、並列処理装置1は、特徴値を持つサンプルプログラムに対して複数通りの並列化パラメータをそれぞれ設定して実行した際の結果を基に当該プログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを生成する。並列処理装置1は、生成されたデータベースを参照して、算出された前記最適化対象のプログラムの特徴値に対応する最適な並列化パラメータを抽出する。かかる構成によれば、並列処理装置1は、2重ループを有するプログラムにおける特徴値と並列化パラメータとの相関関係を生成することで、最適な並列化パラメータを高速に求めることができる。
Further, according to the above embodiment, the
また、上記実施例によれば、並列処理装置1は、以下の相関関係を示すデータベースを生成する。相関関係は、ループごとの、実行命令数の平均、実行命令数の相対標準偏差およびキャッシュの再利用率の平均を示す複数の特徴値と、ループごとの、プロセッサコアの割り当て、並列化のスケジューリング方式および並列化のスケジューリング方式のチャンク数を示す複数の並列化パラメータとの相関関係である。かかる構成によれば、並列処理装置1は、2重ループを有するプログラムにおける特徴値と並列化パラメータとの相関関係を生成することで、最適な並列化パラメータを高速に求めることができる。
Further, according to the above embodiment, the
[その他]
なお、上記実施例では、プログラムとしてFortran言語を一例として説明した。しかしながら、プログラムは、C言語やC++言語であっても良く、OpenMP規格で扱える言語であれば良い。
[others]
In the above embodiment, the Fortran language was used as an example of the program. However, the program may be in C language or C++ language, as long as it can be handled by the OpenMP standard.
また、上記実施例では、複数レベルの並列化を行なえるアプリケーションプログラムとしてスレッド並列化規格であるOpenMP規格を一例として説明した。しかしながら、Open規格に限定されず、複数レベルの並列化を行なえるアプリケーションプログラムとしてスレッド並列化規格である所定の規格であれば良い。 Further, in the above embodiment, the OpenMP standard, which is a thread parallelization standard, is used as an example of an application program that can perform multiple levels of parallelization. However, the present invention is not limited to the Open standard, and any predetermined standard that is a thread parallelization standard may be used as an application program that can perform multiple levels of parallelization.
また、図示した並列処理装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、並列処理装置1の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、特徴値算出部13および最適化パラメータ抽出部14を1つの部として統合しても良い。また、生成部11を、基準プログラム21を生成する第1生成部と、関係データベース22を生成する第2生成部とに分散しても良い。また、記憶部20を並列処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
Further, each component of the illustrated
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した並列処理装置1と同様の機能を実現する分析プログラムを実行するコンピュータの一例を説明する。図12は、並列処理プログラムを実行するコンピュータの一例を示す図である。
Moreover, the various processes described in the above embodiments can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. Therefore, an example of a computer that executes an analysis program that implements the same functions as the
図12に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
As shown in FIG. 12, the
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、並列処理プログラム205aおよび並列処理関連情報205bを記憶する。
The
CPU203は、並列処理プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、並列処理装置1の各機能部に対応する。並列処理関連情報205bは、基準プログラム21および関係データベース22に対応する。そして、例えばリムーバブルディスク211が、並列処理プログラム205aなどの各情報を記憶する。
The
なお、並列処理プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから並列処理プログラム205aを読み出して実行するようにしても良い。
Note that the
1 並列処理装置
10 制御部
11 生成部
12 プログラム仮実行部
13 特徴値算出部
14 最適化パラメータ抽出部
15 プログラム本実行部
20 記憶部
21 基準プログラム
22 関係データベース
1
Claims (3)
前記実行部によって実行された結果から前記最適化対象のプログラムの特徴値を算出する算出部と、
2重ループを有するサンプルプログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを参照して、前記算出部によって算出された特徴値に対応する最適な並列化パラメータを抽出する抽出部と、
を有することを特徴とする並列処理装置。 an execution unit that executes an optimization target program having a double loop only once in parallel processing, with predetermined parallelization parameters set;
a calculation unit that calculates a feature value of the optimization target program from the result executed by the execution unit;
an extraction unit that refers to a database showing the correlation between feature values and optimal parallelization parameters in a sample program having a double loop, and extracts an optimal parallelization parameter corresponding to the feature value calculated by the calculation unit; and,
A parallel processing device characterized by having:
前記抽出部は、前記生成部によって生成されたデータベースを参照して、前記算出部によって算出された前記最適化対象のプログラムの特徴値に対応する最適な並列化パラメータを抽出する
ことを特徴とする請求項1に記載の並列処理装置。 Generates a database that shows the correlation between the feature values and the optimal parallelization parameters for a sample program with feature values based on the results of setting and executing multiple parallelization parameters for the sample program. further comprising:
The extraction unit refers to the database generated by the generation unit and extracts an optimal parallelization parameter corresponding to the feature value of the optimization target program calculated by the calculation unit. The parallel processing device according to claim 1.
ことを特徴とする請求項1または請求項2に記載の並列処理装置。 The correlation is based on multiple characteristic values indicating the average number of executed instructions, the relative standard deviation of the number of executed instructions, and the average cache reuse rate for each loop, and processor core allocation and parallelization for each loop. The parallel processing device according to claim 1 or 2, characterized in that the correlation is between a scheduling method and a plurality of parallelization parameters indicating the number of chunks of the parallelization scheduling method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020014221A JP7419843B2 (en) | 2020-01-30 | 2020-01-30 | parallel processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020014221A JP7419843B2 (en) | 2020-01-30 | 2020-01-30 | parallel processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021120824A JP2021120824A (en) | 2021-08-19 |
JP7419843B2 true JP7419843B2 (en) | 2024-01-23 |
Family
ID=77270266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020014221A Active JP7419843B2 (en) | 2020-01-30 | 2020-01-30 | parallel processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7419843B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018120387A (en) | 2017-01-25 | 2018-08-02 | 富士通株式会社 | Parallel process parameter determining program, parallel process parameter determining method, and parallel process managing device |
US20190012155A1 (en) | 2016-02-22 | 2019-01-10 | Karlsruhe Institute Of Technology | Computer system and method for parallel program code optimization and deployment |
-
2020
- 2020-01-30 JP JP2020014221A patent/JP7419843B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190012155A1 (en) | 2016-02-22 | 2019-01-10 | Karlsruhe Institute Of Technology | Computer system and method for parallel program code optimization and deployment |
JP2018120387A (en) | 2017-01-25 | 2018-08-02 | 富士通株式会社 | Parallel process parameter determining program, parallel process parameter determining method, and parallel process managing device |
Also Published As
Publication number | Publication date |
---|---|
JP2021120824A (en) | 2021-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Breß et al. | Efficient co-processor utilization in database query processing | |
US8261273B2 (en) | Assigning threads and data of computer program within processor having hardware locality groups | |
EP0867808A2 (en) | Method and apparatus for size optimisation of storage units | |
Yan et al. | Adaptively scheduling parallel loops in distributed shared-memory systems | |
Zhang et al. | Autogeneration and autotuning of 3D stencil codes on homogeneous and heterogeneous GPU clusters | |
Murarasu et al. | Compact data structure and scalable algorithms for the sparse grid technique | |
Liu et al. | Toward accelerated stencil computation by adapting tensor core unit on gpu | |
Amer et al. | Fork-join and data-driven execution models on multi-core architectures: Case study of the FMM | |
Feng et al. | Robust parallel preconditioned power grid simulation on GPU with adaptive runtime performance modeling and optimization | |
JP7419843B2 (en) | parallel processing device | |
Lukarski | Parallel sparse linear algebra for multi-core and many-core platforms: Parallel solvers and preconditioners | |
Burri et al. | An efficient implementation of an adaptive and parallel grid in DUNE | |
Andreolli et al. | Genetic algorithm based auto-tuning of seismic applications on multi and manycore computers | |
Belgin et al. | A library for pattern-based sparse matrix vector multiply | |
US10095494B2 (en) | Systems and methods for footprint based scheduling | |
JP6435980B2 (en) | Parallel computer, thread reallocation determination method, and thread reallocation determination program | |
Song et al. | Feedback-directed thread scheduling with memory considerations | |
Riesinger et al. | Solving random ordinary differential equations on gpu clusters using multiple levels of parallelism | |
Seiferth et al. | Offsite autotuning approach: performance model driven autotuning applied to parallel explicit ODE methods | |
Belyaev et al. | LuNA-ICLU compiler for automated generation of iterative fragmented programs | |
Jin et al. | Libra: An automated code generation and tuning framework for register-limited stencils on GPUs | |
JP2023518090A (en) | System, method and program | |
Yoritaka et al. | Extending a work-stealing framework with probabilistic guards | |
JP7239827B2 (en) | Information processing device and compiler program | |
Ramírez et al. | Improvements to the robust transform based on the weighted median operator algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221006 |
|
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: 20231212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231225 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7419843 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |