JP7419843B2 - parallel processing device - Google Patents

parallel processing device Download PDF

Info

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
Application number
JP2020014221A
Other languages
Japanese (ja)
Other versions
JP2021120824A (en
Inventor
直樹 末安
克己 一瀬
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020014221A priority Critical patent/JP7419843B2/en
Publication of JP2021120824A publication Critical patent/JP2021120824A/en
Application granted granted Critical
Publication of JP7419843B2 publication Critical patent/JP7419843B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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 Patent Document 1, a processing unit determines the number of nodes and the number of processes recommended for a first program to be evaluated. Specifically, the processing unit executes the first program according to the first sample points indicating the number of nodes and the number of processes, and calculates the first statistic based on the rate of change in the evaluation value between each of the first sample points. do. Then, the processing unit generates the first sample points 4 until the first statistic becomes equal to or less than the first threshold. Further, the processing unit adds a second sample point within a predetermined distance from the first sample point, and calculates second statistics for each first sample point using the evaluation value when the first program is executed according to the second sample point. Calculate the amount. The processing unit then generates second sample points until the second statistic becomes equal to or less than the second threshold. The processing unit then determines the recommended number of nodes and processes by complementing the evaluation values of the first sample point and the second sample point.

また、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.

特開2018-120387号公報Unexamined Japanese Patent Publication No. 2018-120387 特開2016-9972号公報Japanese Patent Application Publication No. 2016-9972

しかしながら、ループを有するプログラムを並列処理で実行するときに、プログラムに設定する最適な並列処理パラメータを高速に推定することが難しいという問題がある。 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.

図1は、実施例に係る並列処理装置の機能構成を示すブロック図である。FIG. 1 is a block diagram showing the functional configuration of a parallel processing device according to an embodiment. 図2は、プログラムの一例を示す図である。FIG. 2 is a diagram showing an example of a program. 図3は、実施例に係る関係データベースの一例を示す図である。FIG. 3 is a diagram illustrating an example of a relational database according to the embodiment. 図4は、プログラムを実行するハードウェアの一例を示す図である。FIG. 4 is a diagram showing an example of hardware that executes a program. 図5は、プロセッサコアの割り当ての一例を示す図である。FIG. 5 is a diagram illustrating an example of allocation of processor cores. 図6は、DOループの実行例を示す図である。FIG. 6 is a diagram showing an example of execution of a DO loop. 図7は、最適化パラメータ抽出の一例を示す図である。FIG. 7 is a diagram showing an example of optimization parameter extraction. 図8は、最適化されたプログラムの一例を示す図である。FIG. 8 is a diagram showing an example of an optimized program. 図9は、実施例に係る生成処理のフローチャートの一例を示す図である。FIG. 9 is a diagram illustrating an example of a flowchart of generation processing according to the embodiment. 図10は、実施例に係る最適化パラメータ抽出処理のフローチャートの一例を示す図である。FIG. 10 is a diagram illustrating an example of a flowchart of optimization parameter extraction processing according to the embodiment. 図11は、実施例に係るプログラム本実行処理のフローチャートの一例を示す図である。FIG. 11 is a diagram illustrating an example of a flowchart of the program main execution process according to the embodiment. 図12は、並列処理プログラムを実行するコンピュータの一例を示す図である。FIG. 12 is a diagram illustrating an example of a computer that executes a parallel processing program.

以下に、本願の開示する並列処理装置の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。 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 parallel processing device 1 shown in FIG. 1 selects optimal parallelization parameters for an application program that can be parallelized at multiple levels, and tunes execution performance. In the embodiment, it is assumed that OpenMP, which is a thread parallelization standard, is applied as an application program that can perform multiple levels of parallelization. Further, in the embodiment, a case will be described in which, for example, an appropriate parallelization parameter is selected when an application program having a double loop is executed in parallel processing. Note that the OpenMP standard is based on, for example, the description of "OpenMP Application Program Interface Version 5.0", and detailed explanation will be omitted.

並列処理装置1は、制御部10および記憶部20を有する。制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。そして、制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、生成部11、プログラム仮実行部12、特徴値算出部13、最適化パラメータ抽出部14およびプログラム本実行部15を有する。なお、プログラム仮実行部12は、実行部の一例である。特徴値算出部13は、算出部の一例である。最適化パラメータ抽出部14は、抽出部の一例である。生成部11は、生成部の一例である。 The parallel processing device 1 includes a control section 10 and a storage section 20. The control unit 10 corresponds to an electronic circuit such as a CPU (Central Processing Unit). The control unit 10 has an internal memory for storing programs and control data that define various processing procedures, and executes various processes using these. The control unit 10 includes a generation unit 11 , a temporary program execution unit 12 , a feature value calculation unit 13 , an optimization parameter extraction unit 14 , and a main program execution unit 15 . Note that the program temporary execution unit 12 is an example of an execution unit. The feature value calculation unit 13 is an example of a calculation unit. The optimization parameter extraction unit 14 is an example of an extraction unit. The generation unit 11 is an example of a generation unit.

記憶部20は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、基準プログラム21および関係データベース22を有する。 The storage unit 20 is, for example, a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory, or a storage device such as a hard disk or an optical disk. The storage unit 20 has a reference program 21 and a relational database 22.

基準プログラム21は、並列化パラメータに影響を与える、プログラムの複数の実行特徴値の組み合わせごとに、それぞれの組み合わせの特徴値を持つプログラムのことをいう。基準プログラム21は、並列化パラメータを設定する変数を有するとともに、2重ループを有する。ここでは、プログラムの複数の実行特徴値の組み合わせを「アプリ実行特徴値セット」というものとする。アプリ実行特徴値セットごとに、基準プログラム21が作成される。 The reference program 21 refers to a program that has feature values for each combination of a plurality of execution feature values of the program that affect parallelization parameters. The standard program 21 has variables for setting parallelization parameters and has a double loop. Here, a combination of multiple execution feature values of a program is referred to as an "application execution feature value set." A reference program 21 is created for each application execution feature value set.

ここで、実施例で扱うプログラムの一例を、図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 parallel processing device 1 extracts an optimal parallelization parameter indicating a combination with the shortest execution time from among combinations of parallelization parameters that can be set in a program.

図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 parallel processing device 1 calculates these three types of execution feature values in the first-dimensional DO loop and the second-dimensional DO loop, and calculates the combination of six execution feature values as the application execution feature. Define as a value set.

関係データベース22は、アプリ実行特徴値セットと、最適な並列化パラメータとの対応関係を保持する。関係データベース22は、後述する生成部11によって生成される。なお、関係データベース22の一例は、後述する。 The relational database 22 holds the correspondence between application execution feature value sets and optimal parallelization parameters. The relational database 22 is generated by the generation unit 11, which will be described later. Note that an example of the relational database 22 will be described later.

生成部11は、関係データベース22を生成する。 The generation unit 11 generates a relational database 22.

例えば、生成部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の値を採る。この例では、アプリ実行特徴値セットは、最終的に、10(=100万)個になる。生成部11は、100万個のアプリ実行特徴値セットを持つそれぞれの基準プログラム21を生成する。 For example, the generation unit 11 generates a plurality of reference programs 21 that change each element of the application execution feature value set in the following increments. The average number of instructions executed in the processing portion for each repetition of each DO loop is 1 to 10 times the number of instructions executed in the runtime library in the case of the dynamic scheduling method. That is, the average value of the number of executed instructions in the processing portion for each repetition of each DO loop takes a value of 1, 2, . . . , 10 for each DO loop. The relative standard deviation value of the number of executed instructions in the processing portion for each repetition of each DO loop is set from 0.1 to 1.0 in 0.1 increments. That is, the relative standard deviation value of the number of executed instructions in the processing portion for each repetition of each DO loop takes a value of 0.1, 0.2, . . . , 1.0 for each DO loop. The average value of the cache reuse rate of the processing portion for each repetition of each DO loop is 0.1 to 1.0 in 0.1 increments. That is, the average value of the cache reuse rate of the processing portion for each repetition of each DO loop takes a value of 0.1, 0.2, . . . , 1.0 for each DO loop. In this example, the application execution feature value set ultimately becomes 10 6 (=1 million) pieces. The generation unit 11 generates each reference program 21 having one million application execution feature value sets.

そして、生成部11は、1つのアプリ実行特徴値セットを持つ基準プログラム21に対して複数通りの並列化パラメータの組をそれぞれ設定して実行する。一例として、プログラムに設定可能な並列化パラメータの組み合わせが810通りあるとすると、生成部11は、1つの基準プログラム21に対して810通りの並列化パラメータをそれぞれ設定して実行する。 Then, the generation unit 11 sets and executes a plurality of sets of parallelization parameters for the reference program 21 having one application execution feature value set. As an example, assuming that there are 810 combinations of parallelization parameters that can be set in a program, the generation unit 11 sets and executes each of the 810 parallelization parameters for one reference program 21.

そして、生成部11は、複数通りの実行結果を基に、最も実行時間が短かった並列化パラメータの組を最適並列化パラメータとして決定する。そして、生成部11は、基準プログラム21におけるアプリ実行特徴値セットと最適並列化パラメータとを対応付けて関係データベース22に追加する。そして、生成部11は、他のアプリ実行特徴値セットについても同様に、アプリ実行特徴値セットを持つ基準プログラム21における最適並列化パラメータを決定して、関係データベース22に追加する。 Then, the generation unit 11 determines the set of parallelization parameters with the shortest execution time as the optimal parallelization parameters based on the plurality of execution results. Then, the generation unit 11 associates the application execution feature value set in the standard program 21 with the optimal parallelization parameter and adds them to the relational database 22. Then, the generation unit 11 similarly determines the optimal parallelization parameters for the reference program 21 having the application execution feature value sets for other application execution feature value sets, and adds them to the relational database 22.

ここで、関係データベース22の一例を、図3を参照して説明する。図3は、実施例に係る関係データベースの一例を示す図である。図3に示す関係データベース22は、アプリ実行特徴値セット(X1,Y1,Z1,X2,Y2,Z2)と、最適並列化パラメータ(P1,P2,D1,D2,C1,C2)とを対応付けて記憶する。 Here, an example of the relational database 22 will be explained with reference to FIG. 3. FIG. 3 is a diagram illustrating an example of a relational database according to the embodiment. The relational database 22 shown in FIG. 3 associates the application execution feature value set (X1, Y1, Z1, X2, Y2, Z2) with the optimal parallelization parameters (P1, P2, D1, D2, C1, C2). memorize it.

アプリ実行特徴値セット(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 standard program 21 having the application execution feature value set (X1, Y1, Z1, X2, Y2, Z2). do. P1 and P2 are values indicating allocation of processor cores to DO loops. D1 is a value indicating the scheduling method of the first-dimensional DO loop. D2 is a value indicating the scheduling method of the second-dimensional DO loop. C1 is the number of chunks of the first-dimensional DO loop. C2 is the number of chunks of the second-dimensional DO loop.

一例として、アプリ実行特徴値セットが(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 temporary execution unit 12 temporarily executes an optimization target program from which optimization parameters are to be extracted. For example, the program temporary execution unit 12 temporarily executes the optimization target program with predetermined parallelization parameters set only once in order to find the characteristics of the optimization target program. The predetermined parallelization parameters (P1, P2, D1, D2, C1, C2) set in the optimization target program are, for example, (6, 8, static, static, 1, 1). However, the predetermined parallelization parameters (P1, P2, D1, D2, C1, C2) are not limited to these.

特徴値算出部13は、プログラム仮実行部12によって実行された際のアプリ実行特徴値セットのそれぞれの特徴値を算出する。実行時のアプリ実行特徴値セットのそれぞれの特定値は、特定のプロファイル等の性能情報取得ツールを用いて求められれば良い。特定のプロファイル等の性能情報取得ツールは、例えば、スーパーコンピュータ「京」に向けたアプリケーション開発支援ツール(“スーパーコンピュータ「京」の性能プロファイル”を参照)を利用しても良い。 The feature value calculation unit 13 calculates each feature value of the application execution feature value set when executed by the program temporary execution unit 12 . Each specific value of the application execution feature value set at the time of execution may be obtained using a performance information acquisition tool such as a specific profile. As a performance information acquisition tool such as a specific profile, for example, an application development support tool for the supercomputer "K" (see "Performance profile of the supercomputer "K") may be used.

最適化パラメータ抽出部14は、関係データベース22を参照して、特徴値算出部13によって算出されたアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。例えば、最適化パラメータ抽出部14は、関係データベース22から、特徴値算出部13によって算出されたアプリ実行特徴値セットと最も距離が近いアプリ実行特徴値セットを取得する。これは、関係データベース22に記憶されたアプリ実行特徴値セットは、離散的であるからである。そして、最適化パラメータ抽出部14は、関係データベース22から、取得したアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。これにより、最適化パラメータ抽出部14は、ループを有する最適化対象プログラムを並列処理で実行するときの最適な並列化パラメータを高速に推定することができる。 The optimization parameter extraction unit 14 refers to the relational database 22 and extracts the optimal parallelization parameter corresponding to the application execution feature value set calculated by the feature value calculation unit 13. For example, the optimization parameter extraction unit 14 obtains, from the relational database 22, an application execution feature value set that is closest in distance to the application execution feature value set calculated by the feature value calculation unit 13. This is because the application execution feature value set stored in the relational database 22 is discrete. Then, the optimization parameter extraction unit 14 extracts the optimal parallelization parameter corresponding to the acquired application execution feature value set from the relational database 22. Thereby, the optimization parameter extraction unit 14 can quickly estimate an optimal parallelization parameter when executing an optimization target program having a loop in parallel processing.

プログラム本実行部15は、最適化対象プログラムを本実行する。例えば、プログラム本実行部15は、最適化パラメータ抽出部14によって抽出された最適並列化パラメータを設定した最適化対象プログラムを本実行する。 The program execution unit 15 executes the optimization target program. For example, the main program execution unit 15 executes the optimization target program in which the optimal parallelization parameters extracted by the optimization parameter extraction unit 14 are set.

[プログラムを実行するハードウェアの一例]
図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 CORE#0 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (1, 17). The processor core indicated by CORE #1 is Variation range of the first DO loop (14, 26) The fluctuation range of the second DO loop (1, 17). The processor core indicated by CORE#2 is Variation range of the first DO loop (27, 39) The fluctuation range of the second DO loop (1, 17). ...The processor core indicated by CORE#7 is Variation range of the first DO loop (92, 100) The fluctuation range of the second DO loop (1, 17). Also, The processor core indicated by CORE #8 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (18, 34). The processor core indicated by CORE #16 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (35, 51). The processor core indicated by CORE #24 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (52, 68). The processor core indicated by CORE #32 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (69, 85). The processor core indicated by CORE #40 is The fluctuation range of the first DO loop (1, 13) Variation range of the second DO loop (86, 100). in this way, According to processor core allocation, Allocate part of the iterative processing of the do loop to a thread.

[最適化パラメータ抽出の一例]
図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 relational database 22 generated by the generation unit 11 is displayed. Note that it is assumed that the application execution feature value set corresponding to the optimization target program has been calculated by the feature value calculation unit 13.

最適化パラメータ抽出部14は、関係データベース22を参照して、特徴値算出部13によって算出されたアプリ実行特徴値セットと最も距離が近いアプリ実行特徴値セットを取得する。ここでは、アプリ実行特徴値セットとして(5,0.8,0.2,1,0.2,0.1)が取得される。すると、最適化パラメータ抽出部14は、関係データベース22を参照して、取得したアプリ実行特徴値セットに対応する最適並列化パラメータを抽出する。ここでは、最適並列化パラメータとして(12,4,guided,static,32,1)が抽出される。 The optimization parameter extraction unit 14 refers to the relational database 22 and obtains an application execution feature value set that is closest in distance to the application execution feature value set calculated by the feature value calculation unit 13 . Here, (5, 0.8, 0.2, 1, 0.2, 0.1) is acquired as the application execution feature value set. Then, the optimization parameter extraction unit 14 refers to the relational database 22 and extracts the optimal parallelization parameter corresponding to the acquired application execution feature value set. Here, (12, 4, guided, static, 32, 1) is extracted as the optimal parallelization parameter.

[最適化されたプログラムの一例]
図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 program execution unit 15 executes the optimization target program for which the optimal parallelization parameters have been set.

[生成処理のフローチャートの一例]
図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 generation unit 11 generates a plurality of reference programs 21 that can take values arranged in a grid in the six-dimensional space of the application execution feature value set (step S11).

そして、生成部11は、それぞれの基準プログラム21において、並列化パラメータの全組み合わせの実行を行う。生成部11は、最も実行時間が短い並列化パラメータを、最適並列化パラメータとして、基準プログラム21に対応するアプリ実行特徴値セットと対応付けて関係データベース22に格納する(ステップS12)。 Then, the generation unit 11 executes all combinations of parallelization parameters in each reference program 21. The generation unit 11 stores the parallelization parameter with the shortest execution time as the optimal parallelization parameter in the relational database 22 in association with the application execution feature value set corresponding to the reference program 21 (step S12).

[最適化パラメータ抽出処理のフローチャートの一例]
図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 temporary execution unit 12 that has received the optimization target program executes the received optimization target program once. Then, the feature value calculation unit 13 obtains an application execution feature value set (step S21). Each specific value of the application execution feature value set during execution may be obtained using a performance information acquisition tool such as a specific profile.

そして、最適化パラメータ抽出部14は、取得されたアプリ実行特徴値セットをまるめる(ステップS22)。 Then, the optimization parameter extraction unit 14 rounds the acquired application execution feature value set (step S22).

そして、最適化パラメータ抽出部14は、まるめた後のアプリ実行特徴値セットをキーに、関係データベース22を参照して、最適並列化パラメータを抽出する(ステップS23)。
[プログラム本実行処理のフローチャートの一例]
図11は、実施例に係るプログラム本実行処理のフローチャートの一例を示す図である。
Then, the optimization parameter extraction unit 14 refers to the relational database 22 using the rounded application execution feature value set as a key and extracts the optimal parallelization parameter (step S23).
[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 main execution unit 15 sets the optimum parallelization parameter to the optimization target program and executes it (step S31).

[実施例の効果]
上記実施例によれば、並列処理装置1は、所定の並列化パラメータを設定した、2重ループを有する最適化対象のプログラムを並列処理で1回だけ実行する。並列処理装置1は、実行された結果から最適化対象のプログラムの特徴値を算出する。並列処理装置1は、2重ループを有するサンプルプログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを参照して、算出された特徴値に対応する最適な並列化パラメータを抽出する。かかる構成によれば、並列処理装置1は、2重ループを有する最適化対象のプログラムを並列処理で実行する場合に、1回だけ実行するだけで、最適な並列化パラメータを高速に求めることができる。
[Effects of Examples]
According to the above embodiment, the parallel processing device 1 executes the optimization target program having a double loop only once in parallel processing, for which a predetermined parallelization parameter has been set. The parallel processing device 1 calculates feature values of the program to be optimized from the executed results. The parallel processing device 1 refers to a database showing the correlation between feature values and optimal parallelization parameters in sample programs having double loops, and extracts optimal parallelization parameters corresponding to the calculated feature values. . According to this configuration, when the parallel processing device 1 executes an optimization target program having a double loop in parallel processing, it is possible to quickly obtain the optimal parallelization parameters by executing the program only once. can.

また、上記実施例によれば、並列処理装置1は、特徴値を持つサンプルプログラムに対して複数通りの並列化パラメータをそれぞれ設定して実行した際の結果を基に当該プログラムにおける特徴値と最適な並列化パラメータとの相関関係を示すデータベースを生成する。並列処理装置1は、生成されたデータベースを参照して、算出された前記最適化対象のプログラムの特徴値に対応する最適な並列化パラメータを抽出する。かかる構成によれば、並列処理装置1は、2重ループを有するプログラムにおける特徴値と並列化パラメータとの相関関係を生成することで、最適な並列化パラメータを高速に求めることができる。 Further, according to the above embodiment, the parallel processing device 1 sets the characteristic values of the sample program having characteristic values and the optimal Generate a database showing the correlation with parallelization parameters. The parallel processing device 1 refers to the generated database and extracts the optimal parallelization parameter corresponding to the calculated feature value of the program to be optimized. According to this configuration, the parallel processing device 1 can quickly determine the optimal parallelization parameter by generating a correlation between the feature value and the parallelization parameter in a program having a double loop.

また、上記実施例によれば、並列処理装置1は、以下の相関関係を示すデータベースを生成する。相関関係は、ループごとの、実行命令数の平均、実行命令数の相対標準偏差およびキャッシュの再利用率の平均を示す複数の特徴値と、ループごとの、プロセッサコアの割り当て、並列化のスケジューリング方式および並列化のスケジューリング方式のチャンク数を示す複数の並列化パラメータとの相関関係である。かかる構成によれば、並列処理装置1は、2重ループを有するプログラムにおける特徴値と並列化パラメータとの相関関係を生成することで、最適な並列化パラメータを高速に求めることができる。 Further, according to the above embodiment, the parallel processing device 1 generates a database showing the following correlations. The correlations are based on multiple feature values that indicate 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, as well as processor core allocation and parallelization scheduling for each loop. This is a correlation between the method and a plurality of parallelization parameters indicating the number of chunks of the parallelization scheduling method. According to this configuration, the parallel processing device 1 can quickly determine the optimal parallelization parameter by generating a correlation between the feature value and the parallelization parameter in a program having a double loop.

[その他]
なお、上記実施例では、プログラムとして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 parallel processing device 1 does not necessarily need to be physically configured as illustrated. In other words, the specific manner of distributing and integrating the parallel processing device 1 is not limited to what is shown in the diagram, and all or part of it can be functionally or physically distributed in arbitrary units depending on various loads and usage conditions. It can be configured in a distributed/integrated manner. For example, the feature value calculation unit 13 and the optimization parameter extraction unit 14 may be integrated as one unit. Further, the generation unit 11 may be distributed into a first generation unit that generates the reference program 21 and a second generation unit that generates the relational database 22. Further, the storage unit 20 may be connected as an external device to the parallel processing device 1 via a network.

また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図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 parallel processing device 1 shown in FIG. 1 will be described below. FIG. 12 is a diagram illustrating an example of a computer that executes a parallel processing program.

図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 computer 200 includes a CPU 203 that executes various calculation processes, an input device 215 that receives data input from a user, and a display control unit 207 that controls a display device 209. The computer 200 also includes a drive device 213 that reads programs and the like from a storage medium, and a communication control unit 217 that exchanges data with other computers via a network. Further, the computer 200 includes a memory 201 that temporarily stores various information, and an HDD 205. The memory 201, CPU 203, HDD 205, display control section 207, drive device 213, input device 215, and communication control section 217 are connected via a bus 219.

ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、並列処理プログラム205aおよび並列処理関連情報205bを記憶する。 The drive device 213 is, for example, a device for the removable disk 211. The HDD 205 stores a parallel processing program 205a and parallel processing related information 205b.

CPU203は、並列処理プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、並列処理装置1の各機能部に対応する。並列処理関連情報205bは、基準プログラム21および関係データベース22に対応する。そして、例えばリムーバブルディスク211が、並列処理プログラム205aなどの各情報を記憶する。 The CPU 203 reads the parallel processing program 205a, develops it in the memory 201, and executes it as a process. Such processes correspond to each functional unit of the parallel processing device 1. The parallel processing related information 205b corresponds to the reference program 21 and the relational database 22. For example, the removable disk 211 stores information such as the parallel processing program 205a.

なお、並列処理プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから並列処理プログラム205aを読み出して実行するようにしても良い。 Note that the parallel processing program 205a does not necessarily have to be stored in the HDD 205 from the beginning. For example, the program is stored in a "portable physical medium" such as a flexible disk (FD), CD-ROM, DVD disk, magneto-optical disk, or IC card that is inserted into the computer 200. Then, the computer 200 may read out and execute the parallel processing program 205a from these programs.

1 並列処理装置
10 制御部
11 生成部
12 プログラム仮実行部
13 特徴値算出部
14 最適化パラメータ抽出部
15 プログラム本実行部
20 記憶部
21 基準プログラム
22 関係データベース
1 Parallel processing device 10 Control unit 11 Generation unit 12 Program temporary execution unit 13 Feature value calculation unit 14 Optimization parameter extraction unit 15 Program main execution unit 20 Storage unit 21 Reference program 22 Relational database

Claims (3)

所定の並列化パラメータを設定した、2重ループを有する最適化対象のプログラムを並列処理で1回だけ実行する実行部と、
前記実行部によって実行された結果から前記最適化対象のプログラムの特徴値を算出する算出部と、
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.
JP2020014221A 2020-01-30 2020-01-30 parallel processing device Active JP7419843B2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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