JP6070078B2 - Hybrid parallel processing system, hybrid parallel processing method, and computer program - Google Patents
Hybrid parallel processing system, hybrid parallel processing method, and computer program Download PDFInfo
- Publication number
- JP6070078B2 JP6070078B2 JP2012241994A JP2012241994A JP6070078B2 JP 6070078 B2 JP6070078 B2 JP 6070078B2 JP 2012241994 A JP2012241994 A JP 2012241994A JP 2012241994 A JP2012241994 A JP 2012241994A JP 6070078 B2 JP6070078 B2 JP 6070078B2
- Authority
- JP
- Japan
- Prior art keywords
- waiting time
- threads
- processes
- transfer
- thread
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
本発明は、コンピュータによる並列処理に関し、特にコンピュータによる並列処理における負荷分散技術に関する。 The present invention relates to parallel processing by a computer, and more particularly to a load distribution technique in parallel processing by a computer.
コンピュータによる並列処理(並列計算または並列コンピューティングと呼ばれることもある)とは、コンピュータプログラム(以下、単に「プログラム」と称する)の実行やデータ処理、計算等を、逐次的に行うのでは無く、同時並列的に行う処理である。コンピュータによる並列処理の分類として、スレッド並列処理と、プロセス並列処理が挙げられる。スレッド並列処理は、共有メモリ型並列処理またはノード内並列処理と呼ばれることもある。プロセス並列処理は、分散メモリ型並列処理またはノード間並列処理と呼ばれることもある。スレッド並列処理は、主に共有メモリ型計算機上で、例えばOpenMP等を利用することにより実現される。プロセス並列処理は、例えばMPI(Message Passing Interface)等を利用することにより実現される。 Parallel processing by a computer (sometimes referred to as parallel computing or parallel computing) is not a computer program (hereinafter simply referred to as “program”) execution, data processing, calculation, or the like, This process is performed in parallel. The parallel processing classification by computer includes thread parallel processing and process parallel processing. The thread parallel processing is sometimes called shared memory parallel processing or intra-node parallel processing. Process parallel processing is sometimes called distributed memory type parallel processing or inter-node parallel processing. The thread parallel processing is realized mainly by using, for example, OpenMP on a shared memory type computer. Process parallel processing is realized by using, for example, MPI (Message Passing Interface).
プロセス並列処理を行う際に、各プロセス内でスレッド並列処理を行う並列処理はハイブリッド並列処理と呼ばれる。ハイブリッド並列処理においては、各プロセスの処理量(計算負荷)とスレッド数により各プロセスの処理時間が変わる。例えば、各プロセスの処理量が均一ではないにもかかわらずスレッド数が同じであれば、各プロセスの処理時間に差が生じる。このような場合、プロセス間の同期処理あるいはデータ転送処理のタイミングにおいて、先に終了したプロセスが他の実行中のプロセスの終了を待ち合わせる時間が発生する。このことにより、並列処理の実行性能が低下する(すなわち、並列処理全体の実行時間が増大する)。特に、HPC(High Performance Computing)分野で利用されるアプリケーションプログラム等においては、その実行時間が長時間にわたるため、実行性能低下の影響が大きい。すなわち、実行性能低下の影響が蓄積されることが、アプリケーションプログラムの高速実行を阻害する大きな要因となり得る。 When performing process parallel processing, parallel processing for performing thread parallel processing within each process is called hybrid parallel processing. In the hybrid parallel processing, the processing time of each process varies depending on the processing amount (calculation load) of each process and the number of threads. For example, if the number of threads is the same even though the processing amount of each process is not uniform, a difference occurs in the processing time of each process. In such a case, at the timing of the synchronization process or the data transfer process between the processes, a time occurs in which the process that has ended first waits for the end of another process being executed. This decreases the execution performance of parallel processing (that is, the execution time of the entire parallel processing increases). In particular, in an application program used in the HPC (High Performance Computing) field, the execution time is long, so the influence of a decrease in execution performance is great. In other words, accumulation of the effect of the decrease in execution performance can be a major factor that hinders high-speed execution of application programs.
上記のような問題を防止するためには、各プロセスに適切なスレッド数を設定する必要がある。すなわち、処理量が多いプロセスのスレッド数を増やし、処理量が少ないプロセスのスレッド数を減らすことにより、並列処理の効果を上げることができる。例えば、OpenMPにおいては、利用者がプロセスごとのスレッド数を明示的に指定することができる。 In order to prevent the above problems, it is necessary to set an appropriate number of threads for each process. That is, the effect of parallel processing can be improved by increasing the number of threads of a process with a large amount of processing and reducing the number of threads of a process with a small amount of processing. For example, in OpenMP, the user can explicitly specify the number of threads for each process.
しかしながら、適切なスレッド数の見積もりおよび決定は、プロセッサ数等のハードウェア構成やプロセス数等のソフトウェア設定、実行時の入力データ等を考慮する必要があり、非常に困難である。 However, it is very difficult to estimate and determine an appropriate number of threads because it is necessary to consider hardware configuration such as the number of processors, software settings such as the number of processes, input data at the time of execution, and the like.
このような問題点を解決する技術が特許文献1に記載されている。特許文献1に記載のハイブリッド並列処理システムは、直近の共有メモリ型並列処理(スレッド並列処理)の処理時間に基づき、各プロセス間のスレッド数調整を動的に行う。
A technique for solving such problems is described in
また、特許文献2に記載の解析装置は、プロセス間通信の待機時間に基づいて、複数のプロセスに対する処理の配分状態を評価する。
Moreover, the analysis apparatus described in
上述したハイブリッド並列処理システムは、スレッド並列処理を実行する度にその処理時間を計測する必要がある。すなわち、全てのプロセスで時間計測処理が発生する。また、例えばプロセス間で処理時間が均一であるためスレッド数調整が不要な場合においても時間計測処理が発生する。このため、時間計測処理のオーバーヘッドが蓄積することにより、並列処理全体の性能が低下するという問題点がある。 The hybrid parallel processing system described above needs to measure the processing time each time the thread parallel processing is executed. That is, time measurement processing occurs in all processes. Further, for example, the processing time is uniform among the processes, so that the time measurement process occurs even when the number of threads does not need to be adjusted. For this reason, there is a problem in that the performance of the entire parallel processing deteriorates due to the accumulation of time measurement processing overhead.
本発明は、上述した課題を解決し、ハイブリッド並列処理における効率的な並列処理を実現することを主たる目的とする。 The main object of the present invention is to solve the above-described problems and realize efficient parallel processing in hybrid parallel processing.
上記目的を達成する本発明に係るハイブリッド並列処理システムは、
並列処理される複数のプロセスを備え、
プロセスの各々が、
プロセスに割り当てられた処理を実行する1つ以上のスレッドと、
プロセス間のデータ転送処理を行うデータ転送処理手段と、
スレッド数の再設定を行うスレッド数再設定手段とを含み、
データ転送処理手段が、プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測手段を含み、転送待ち合わせ時間を他のプロセスと送受信し、
スレッド数再設定手段が、転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
The hybrid parallel processing system according to the present invention that achieves the above object is as follows.
With multiple processes in parallel,
Each of the processes
One or more threads that perform the processing assigned to the process;
Data transfer processing means for performing data transfer processing between processes;
Thread number resetting means for resetting the number of threads,
The data transfer processing means includes a transfer waiting time measuring means for measuring a transfer waiting time in the data transfer processing between processes, and transmits / receives the transfer waiting time to / from another process,
The thread number resetting means resets the number of threads based on the transfer waiting time.
また、上記目的を達成する本発明に係るハイブリッド並列処理方法は、
複数のプロセスを並列処理し、
プロセスの各々が割り当てられた処理を1つ以上のスレッドにより実行し、
プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
転送待ち合わせ時間をプロセスが他のプロセスと送受信し、
転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
The hybrid parallel processing method according to the present invention for achieving the above object is
Process multiple processes in parallel,
Each of the processes performs the assigned processing by one or more threads,
Measure the transfer waiting time in the data transfer process between processes,
The process sends and receives the transfer waiting time to and from other processes,
Reset the number of threads based on the transfer waiting time.
そして、上記目的を達成する本発明に係るプログラムは、
複数のプロセスを並列処理可能なプロセッサを用いて、
プロセスの各々が割り当てられた処理を1つ以上のスレッドにより実行し、
プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
転送待ち合わせ時間をプロセスが他のプロセスと送受信し、
転送待ち合わせ時間に基づいてスレッド数の再設定を行う処理をコンピュータに実行させる。
And the program concerning the present invention which achieves the above-mentioned object is
Using a processor that can process multiple processes in parallel,
Each of the processes performs the assigned processing by one or more threads,
Measure the transfer waiting time in the data transfer process between processes,
The process sends and receives the transfer waiting time to and from other processes,
Causes the computer to execute processing for resetting the number of threads based on the transfer waiting time.
なお、同目的は、係るプログラムを格納したコンピュータ読み取り可能な記憶媒体によっても達成される。 This object can also be achieved by a computer-readable storage medium storing such a program.
本発明によれば、ハイブリッド並列処理における効率的な並列処理を実現する。 According to the present invention, efficient parallel processing in hybrid parallel processing is realized.
次に、本発明の実施の形態について図面を参照して詳細に説明する。 Next, embodiments of the present invention will be described in detail with reference to the drawings.
[第1の実施形態]
図1は、本発明の第1の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。本発明の第1の実施形態に係るハイブリッド並列処理システムS1は、プロセス10−1〜10−mを備える。プロセス10−1〜10−mは、それぞれ、スレッド11−1〜11−nと、スレッド数既定値設定部12と、スレッド数再設定部13と、データ転送処理部14とを備える。データ転送処理部14は、転送待ち合わせ時間計測部141を備える。
[First Embodiment]
FIG. 1 is a block diagram showing the configuration of the hybrid parallel processing system according to the first embodiment of the present invention. The hybrid parallel processing system S1 according to the first embodiment of the present invention includes processes 10-1 to 10-m. Each of the processes 10-1 to 10-m includes threads 11-1 to 11-n, a thread number default
プロセス10−1〜10−mは、同一ホスト上で実行される複数のプロセスである。スレッド11−1〜11−nは、プロセスに割り当てられた処理を実行するために、各プロセスに割り当てられたスレッドである。プロセス10−1〜10−mのそれぞれに含まれるスレッドの数は、同じでもよいし、異なっていてもよい。スレッド数既定値設定部12は、プロセス実行開始時にスレッド数の既定値を決定する。スレッド数再設定部13は、後述する転送待ち合わせ時間(期間)に基づいて各プロセスのスレッド数を再設定する。データ転送処理部14は、データ転送処理およびプロセス間同期処理を行う。転送待ち合わせ時間計測部141は、データ転送処理における転送待ち合わせ時間と、プロセス間同期処理における同期待ち合わせ時間を計測する。
Processes 10-1 to 10-m are a plurality of processes executed on the same host. The threads 11-1 to 11-n are threads assigned to each process in order to execute processing assigned to the process. The number of threads included in each of the processes 10-1 to 10-m may be the same or different. The thread number default
図2は、本発明の第1の実施形態に係るハイブリッド並列処理システムS1における、各プロセスのスレッド数既定値決定処理を説明するフローチャートである。また、図3は、本発明の第1の実施形態に係るハイブリッド並列処理システムS1における、各プロセスのスレッド数調整処理(プロセス間通信処理およびスレッド数再設定処理)を説明するフローチャートである。以下、ハイブリッド並列処理システムS1の処理動作について図面を参照して詳細に説明する。 FIG. 2 is a flowchart for explaining the thread number default value determination process of each process in the hybrid parallel processing system S1 according to the first embodiment of the present invention. FIG. 3 is a flowchart for explaining thread number adjustment processing (inter-process communication processing and thread number resetting processing) of each process in the hybrid parallel processing system S1 according to the first embodiment of the present invention. Hereinafter, the processing operation of the hybrid parallel processing system S1 will be described in detail with reference to the drawings.
ハイブリッド並列処理によるプログラムの実行開始時、プロセス毎に、スレッド数既定値設定部12が、スレッド数の既定値を決定する。図2を参照すると、最初に、スレッド数既定値設定部12は、スレッド数指定用の環境変数を参照する(ステップS201)。なお、例えばOpenMPにおいては、環境変数を介して利用者がスレッド数を指定することができる。
At the start of program execution by hybrid parallel processing, the thread number default
環境変数の指定が有る場合は(ステップS202においてYES)、この環境変数に基づいてスレッド数が設定される(ステップS203)。環境変数の指定が無い場合は(ステップS202においてNO)、システムの既定値からスレッド数が設定される(ステップS204)。 If an environment variable is specified (YES in step S202), the number of threads is set based on this environment variable (step S203). If no environment variable is specified (NO in step S202), the number of threads is set from the system default value (step S204).
スレッド数が設定された後、プロセス並列処理が開始する。各プロセスは、スレッド並列処理を行い、その後でプロセス間通信処理(プロセス間同期処理またはプロセス間のデータ転送処理)を行う。なお、以降ではプロセス間のデータ転送処理を行う場合について説明するが、プロセス間同期処理を行う場合においても、転送待ち合わせ時間の計測およびスレッド数の再設定の処理は同様である。 After the number of threads is set, process parallel processing starts. Each process performs thread parallel processing, and then performs inter-process communication processing (inter-process synchronization processing or inter-process data transfer processing). In the following, the case of performing the data transfer process between processes will be described, but the process of measuring the transfer waiting time and resetting the number of threads is the same when performing the inter-process synchronization process.
図3を参照すると、プロセス間通信処理を行う際に、データ転送処理部14は、データ転送処理が開始可能か否かを判断する(ステップS301)。直ちにデータ転送処理が開始可能であれば(ステップS301においてYES)、転送待ち合わせ時間計測部141は、転送待ち合わせ時間=ゼロとする(ステップS302)。そして、処理はステップS307へ進む。
Referring to FIG. 3, when performing the inter-process communication process, the data
一方で、データ転送処理が開始できない場合は(ステップS301においてNO)、転送待ち合わせ時間計測部141は、転送待ち合わせ開始時刻(S)を取得する(ステップS303)。すなわち、転送待ち合わせ時間計測部141は、この時点の時刻を転送待ち合わせ開始時刻(S)として記憶する。なお、データ転送処理が開始できない理由としては、転送対象となるプロセス(転送相手のプロセス)がプロセス内の処理(スレッド並列処理等)を完了していないためにデータ転送の準備が整っていない場合等がある。
On the other hand, when the data transfer process cannot be started (NO in step S301), the transfer waiting
次に、データ転送処理部14および転送待ち合わせ時間計測部141は、データ転送が可能になるまで待機する(ステップS304)。
Next, the data
待機状態が解けてデータ転送が開始できる状態になったことを検出すると、転送待ち合わせ時間計測部141は、転送待ち合わせ終了時刻(E)を取得する(ステップS305)。そして、転送待ち合わせ時間計測部141は、転送待ち合わせ時間(E−S)を計算する(ステップS306)。
When it is detected that the standby state has been solved and data transfer can be started, the transfer waiting
その後、データ転送処理部14は、データ転送処理を実行する(ステップS307)。データ転送処理の終了後、各プロセスは、転送待ち合わせ時間および現在のスレッド数を交換する。すなわち、転送待ち合わせ時間および現在のスレッド数をお互いに送受信する。そして、各プロセスのスレッド数再設定部13は、自プロセスおよび他プロセスの転送待ち合わせ時間とスレッド数に基づき、後続のスレッド並列処理を実行するスレッド数を算出し、算出したスレッド数を新たなスレッド数として設定する。
Thereafter, the data
以降において、新たなスレッド数を算出する手順および計算式について詳細に説明する。なお、これら手順および計算方法の概要(方針)は、以下の通りである。
・各プロセスの転送待ち合わせ時間と各プロセスのスレッド数との積を集計(総和を計算)し、その転送待ち合わせ時間の総和を全プロセスに均等に再配分する。すなわち、各スレッドの転送待ち合わせ時間の総和を全プロセス数で割った値(平均待ち合わせ時間)を求め、各プロセスに送信する。そして、各プロセスにおいて、各プロセスの転送待ち合わせ時間と再配分された転送待ち合わせ時間(平均待ち合わせ時間)を比較する。
・自プロセスの転送待ち合わせ時間が、再配分された転送待ち合わせ時間を上回る場合、現在割り当てられているスレッド数が過多である(処理量の少なさの割にスレッド数が多い)と見なす。そして、他プロセスに一部スレッドを譲渡する。
・自プロセスの転送待ち合わせ時間が、再配分された転送待ち合わせ時間を下回る場合、現在割り当てられているスレッド数が過少である(処理量の多さの割にスレッド数が少ない)と見なす。そして、他プロセスから一部スレッドを譲り受ける。
Hereinafter, a procedure and a calculation formula for calculating the new number of threads will be described in detail. The outline (policy) of these procedures and calculation methods is as follows.
The product of the transfer waiting time of each process and the number of threads of each process is aggregated (calculated), and the total of the transfer waiting time is evenly redistributed to all processes. That is, a value (average waiting time) obtained by dividing the total transfer waiting time of each thread by the total number of processes is obtained and transmitted to each process. In each process, the transfer waiting time of each process is compared with the redistributed transfer waiting time (average waiting time).
When the transfer waiting time of the own process exceeds the redistributed transfer waiting time, it is considered that the number of currently allocated threads is excessive (the number of threads is large for a small amount of processing). Then, some threads are transferred to another process.
When the transfer waiting time of the own process is less than the redistributed transfer waiting time, the number of currently assigned threads is considered to be too small (the number of threads is small for the large amount of processing). Then, a part of the thread is acquired from another process.
新たなスレッド数を算出する計算式に関する各変数を、下表のように定義する。 Each variable related to the formula for calculating the new number of threads is defined as shown in the table below.
WaveとDnは、それぞれ下記の計算式のように計算される。
W ave and D n are calculated according to the following formulas, respectively.
ここで、Dn>0であれば、プロセスnは、転送待ち合わせ時間が平均待ち合わせ時間Waveより長いため、割り当てられているスレッド数が過大であると見なされる。この場合、プロセスnに割り当てられているスレッドの一部が他プロセスへ譲渡される。 Here, if D n > 0, the process n is considered to have an excessive number of assigned threads because the transfer waiting time is longer than the average waiting time W ave . In this case, a part of the thread assigned to the process n is transferred to another process.
Dn>0であるプロセスの再設定後のプロセス数Tn newは以下のように求められる。まず、プロセスnに再設定するスレッド数の最小値であるTn minを下記の計算式で求める。
The number of processes T n new after resetting a process with D n > 0 is obtained as follows. First, T n min which is the minimum value of the number of threads reset to the process n is obtained by the following calculation formula.
次に、Tn minからTnまでの平均値を計算することにより、Tn newを求める。あるいは、Tn minの数値からTnの数値までの中央値を求めることにより、Tn newを求めてもよい。例えば、下記の計算式によりTn newが求められる。
Then, by calculating the average values from T n min to T n, determine the T n new new. Alternatively, by determining the median of the numerical values of T n min to a value of T n, may be calculated T n new new. For example, T n new is obtained by the following calculation formula.
一方、Dn<0であれば、プロセスnは、転送待ち合わせ時間が平均待ち合わせ時間Waveより短いため、割り当てられているスレッド数が過少であると見なされる。この場合、プロセスnは他プロセスからスレッドの譲渡を受ける。譲渡を受けるスレッド数は、Dn>0であるプロセスから譲渡された全スレッドを、Dn<0であるプロセス間でDnの大きさ(比率)に応じて分配することにより求められる。 On the other hand, if D n <0, the process n is considered to have an insufficient number of threads because the transfer waiting time is shorter than the average waiting time W ave . In this case, the process n receives a thread transfer from another process. The number of threads to be transferred is obtained by distributing all the threads transferred from the process with D n > 0 according to the size (ratio) of D n among the processes with D n <0.
例えば、
For example,
とした場合、Dn<0であるプロセスの再設定後のプロセス数Tn newは下記の計算式により求められる。
In this case, the number of processes T n new after resetting a process where D n <0 is obtained by the following calculation formula.
以下、プロセス数が2(p=2)である場合における、スレッド数調整処理(新たなスレッド数の計算)の例を説明する。 Hereinafter, an example of thread number adjustment processing (calculation of a new thread number) when the number of processes is 2 (p = 2) will be described.
以降の説明において、2つのプロセスのそれぞれを「プロセス1」,「プロセス2」と呼称する。開始時におけるプロセス1とプロセス2のスレッド数は共に8(T1=T2=8)である。プロセス1は計算負荷が低かったため、プロセス2より先にプロセス間通信処理が開始したことにより、4秒の転送待ち合わせ時間が発生した(W1=4)。一方、プロセス2は計算負荷が高かったため、プロセス間通信処理開始後直ちにデータ転送が可能であったことにより、転送待ち時間はゼロであった(W2=0)。以上により、
In the following description, the two processes are referred to as “
である。D1>0かつD2<0であるため、プロセス1からプロセス2へのスレッドの譲渡が行われる。
It is. Since D 1 > 0 and D 2 <0, the thread is transferred from the
プロセス1のスレッド数の調整(新たなスレッド数T1 newの計算)は以下のように行われる。
Adjustment of the number of threads of process 1 (calculation of a new number of threads T 1 new ) is performed as follows.
すなわち、プロセス1のスレッド数が8から6に減少する。そして、減少した2スレッドが他プロセスへ譲渡される。
That is, the number of threads in
プロセス2のスレッド数の調整(新たなスレッド数T2 newの計算)は以下のように行われる。
The adjustment of the number of threads of the process 2 (calculation of a new number of threads T 2 new ) is performed as follows.
すなわち、プロセス1から譲渡された2スレッドがプロセス2に割り当てられることにより、プロセス2のスレッド数が8から10に増加する。
That is, the number of threads in
図4は、本発明の第1の実施形態に係るハイブリッド並列処理システムS1と、スレッド数調整処理を行わないハイブリッド並列処理システムの処理を比較説明する図である。図4の左側の(a)は、スレッド数調整処理を行わないハイブリッド並列処理システムの処理を表わしている。図4の右側の(b)は、本発明の第1の実施形態に係るハイブリッド並列処理システムS1の処理を表わしている。図4の(a)および(b)においては、プロセス数は共に2であるものとする。 FIG. 4 is a diagram for comparing and explaining the processing of the hybrid parallel processing system S1 according to the first embodiment of the present invention and the hybrid parallel processing system that does not perform the thread number adjustment processing. (A) on the left side of FIG. 4 represents processing of a hybrid parallel processing system that does not perform thread number adjustment processing. 4B on the right side of FIG. 4 represents processing of the hybrid parallel processing system S1 according to the first embodiment of the present invention. In FIGS. 4A and 4B, it is assumed that the number of processes is two.
図4の(a)を参照すると、スレッド数調整処理を行わないハイブリッド並列処理システムは、処理量が少ないプロセス1のスレッド並列処理Iが先に終了する。このため、プロセス1においては、プロセス間通信処理の段階で、プロセス2のスレッド並列処理Iが終了するまで通信待ちの時間(転送待ち合わせ時間)が発生する。そして、後続の処理においても、プロセス1の処理量が少ないため、先程と同様に処理量が少ないプロセス1のスレッド並列処理IIが先に終了する。このため、プロセス1に常に待ち合わせの時間が発生する。
Referring to FIG. 4A, in the hybrid parallel processing system that does not perform the thread number adjustment processing, the thread parallel processing I of the
一方で、図4の(b)を参照すると、本発明の第1の実施形態に係るハイブリッド並列処理システムS1は、プロセス間通信処理の段階で、通信待ち時間の交換を行う。そして、通信待ち時間に基づいて、各プロセスの負荷に応じたスレッド数再設定を行う。すなわち、処理量が多いプロセス1のスレッド数が増加し、処理量が少ないプロセス2のスレッド数が減少する。このように各プロセスのスレッド数が処理量に応じた数に調整されることにより、後続の処理において各プロセスの処理時間(スレッド並列処理IIの処理時間)が平準化する。このことにより、転送待ち合わせ時間が減少するため、並列処理全体の実行時間が短縮する。すなわち、並列処理の効率が改善される。
On the other hand, referring to FIG. 4B, the hybrid parallel processing system S <b> 1 according to the first embodiment of the present invention exchanges communication waiting time at the stage of inter-process communication processing. Based on the communication waiting time, the number of threads is reset according to the load of each process. That is, the number of threads of
以上のように、本発明の第1の実施形態に係るハイブリッド並列処理システムS1は、転送待ち合わせ時間計測部141が計測する転送待ち合わせ時間に基づいて、スレッド数再設定部13が各プロセスのスレッド数を処理量に応じた数に再設定する。このことにより、各プロセスの処理時間が平準化するため、転送待ち合わせ時間が減少し、並列処理全体の実行時間が短縮する。このように、本発明の第1の実施形態に係るハイブリッド並列処理システムS1は、プロセス間の動的な負荷分散を行うことにより、並列処理の効率を改善する。
As described above, in the hybrid parallel processing system S1 according to the first embodiment of the present invention, the thread
また、転送待ち合わせ時間計測部141は、転送待ち合わせ時間が存在しない場合(プロセス間通信処理を行う際に、直ちにデータ転送処理が開始可能な場合)、時間計測処理を行わない。このため、全てのプロセスで時間計測処理が発生する特許文献1に記載のハイブリッド並列処理システムに比べ、本発明の第1の実施形態に係るハイブリッド並列処理システムS1は、時間計測処理による性能低下が少ない。
Further, the transfer waiting
[第2の実施形態]
次に、本発明の第2の実施の形態を説明する。
[Second Embodiment]
Next, a second embodiment of the present invention will be described.
図5は、本発明の第2の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。本発明の第2の実施形態に係るハイブリッド並列処理システムS2は、並列処理される複数のプロセスであるプロセス10−1〜10−mを備える。プロセス10−1〜10−mは、それぞれ、各プロセスに割り当てられた処理を実行する1つ以上のスレッドであるスレッド11−1〜11−nと、スレッド数の再設定を行うスレッド数再設定部13と、プロセス間のデータ転送処理を行うデータ転送処理部14とを備える。データ転送処理部14は、プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測部141を備える。
FIG. 5 is a block diagram showing the configuration of the hybrid parallel processing system according to the second embodiment of the present invention. The hybrid parallel processing system S2 according to the second embodiment of the present invention includes processes 10-1 to 10-m that are a plurality of processes to be processed in parallel. Each of the processes 10-1 to 10-m is a thread 11-1 to 11-n that is one or more threads that execute processing assigned to each process, and a thread number resetting that resets the number of threads.
転送待ち合わせ時間計測部141は、転送待ち合わせ時間を他のプロセスと送受信する。そして、スレッド数再設定部13は、転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
The transfer waiting
以上のように、本発明の第2の実施形態に係るハイブリッド並列処理システムS2は、転送待ち合わせ時間計測部141が計測する転送待ち合わせ時間に基づいて、スレッド数再設定部13が各プロセスのスレッド数を再設定する。このことにより、各プロセスの処理時間が平準化するため、転送待ち合わせ時間が減少し、並列処理全体の実行時間が短縮する。このように、本発明の第2の実施形態に係るハイブリッド並列処理システムS1は、並列処理の効率を改善する。
As described above, in the hybrid parallel processing system S2 according to the second embodiment of the present invention, the thread
図6は、コンピュータを構成する要素の例を表すブロック構成図である。図6のコンピュータ900は、CPU(Central Processing Unit)910と、RAM(Random Access Memory)920と、ROM(Read Only Memory)930と、ハードディスクドライブ940と、通信インタフェース950とを備える。CPU910は、CPUコア911および912を含む。
FIG. 6 is a block diagram illustrating an example of elements constituting the computer. 6 includes a CPU (Central Processing Unit) 910, a RAM (Random Access Memory) 920, a ROM (Read Only Memory) 930, a
コンピュータ900は、他のコンピュータ900と通信インタフェース950により図示しないネットワーク等を介して接続されていてもよい。この場合、複数のコンピュータ900は、お互いにデータの送受信が可能なように構成される。
The
CPU910は、複数のプロセスを並列処理可能である。CPU910に含まれるCPUコアの数は2個でなくともよい。また、CPU910は、単一のCPUではなく、複数のCPUからなるマルチプロセッサであってもよい。
The
前述したハイブリッド並列処理システムS1およびS2の構成要素は、プログラムがコンピュータ900のCPU910において実行されることにより実現されてもよい。具体的には、前述した図1あるいは5に記載の構成要素である、スレッド数既定値設定部12,スレッド数再設定部13,データ転送処理部14および転送待ち合わせ時間計測部141は、CPU910がROM930あるいはハードディスクドライブ940からプログラムを読み込み、読み込んだプログラムを、例えば図3および4に示したフローチャートの手順の如くCPU910が実行することにより実現されてもよい。そして、このような場合において、上述した実施形態を例に説明した本発明は、係るコンピュータプログラムを表わすコードあるいはそのコンピュータプログラムを表わすコードが格納されたコンピュータ読み取り可能な記憶媒体(例えばハードディスクドライブ940や、不図示の着脱可能な磁気ディスク媒体,光学ディスク媒体やメモリカード等)によって構成されると捉えることができる。
The components of the hybrid parallel processing systems S1 and S2 described above may be realized by executing a program in the
あるいは、スレッド数既定値設定部12,スレッド数再設定部13,データ転送処理部14および転送待ち合わせ時間計測部141は、専用のハードウェアで実現されてもよい。また、ハイブリッド並列処理システムS1およびS2は、これら構成要素を備える専用のハードウェアであってもよい。
Alternatively, the thread number default
S1,S2 ハイブリッド並列処理システム
10−1〜10−m プロセス
11−1〜11−n スレッド
12 スレッド数既定値設定部
13 スレッド数再設定部
14 データ転送処理部
141 転送待ち合わせ時間計測部
900 コンピュータ
910 CPU
911,912 CPUコア
920 RAM
930 ROM
940 ハードディスクドライブ
950 通信インタフェース
S1, S2 Hybrid parallel processing system 10-1 to 10-m Process 11-1 to 11-
911, 912
930 ROM
940
Claims (7)
前記プロセスの各々が、
前記プロセスに割り当てられた処理を実行する1つ以上のスレッドと、
前記プロセス間のデータ転送処理を行うデータ転送処理手段と、
前記スレッド数の再設定を行うスレッド数再設定手段とを含み、
前記データ転送処理手段が、前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測手段を含み、前記転送待ち合わせ時間を他のプロセスと送受信し、
前記スレッド数再設定手段が、各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、前記算出された差が正の値であるプロセスのスレッドの一部を、前記算出された差が負の値であるプロセスに譲渡することにより、前記スレッド数の再設定を行うハイブリッド並列処理システム。 With multiple processes in parallel,
Each of the processes
One or more threads that perform processing assigned to the process;
Data transfer processing means for performing data transfer processing between the processes;
Thread number resetting means for resetting the number of threads,
The data transfer processing means includes a transfer waiting time measuring means for measuring a transfer waiting time in the data transfer processing between the processes, and transmits and receives the transfer waiting time to and from another process;
The thread number resetting means calculates an average waiting time that is a value obtained by dividing the total transfer waiting time of each thread by the number of processes, and calculates the product of the number of threads of the process and the transfer waiting time. Calculating a difference obtained by subtracting an average waiting time, and transferring a part of a thread of a process having a positive value to the calculated difference to a process having a negative value in the calculated difference. A hybrid parallel processing system that resets the number.
前記プロセスの各々が割り当てられた処理を1つ以上のスレッドにより実行し、
前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
前記転送待ち合わせ時間を前記プロセスが他のプロセスと送受信し、
各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、
前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、
前記算出された差が正の値であるプロセスのスレッドの一部を前記算出された差が負の値であるプロセスに譲渡することにより前記スレッド数の再設定を行うハイブリッド並列処理方法。 Using a processor that can process multiple processes in parallel,
Each of the processes executes the assigned process by one or more threads;
Measure the transfer waiting time in the data transfer process between the processes,
The process sends / receives the transfer waiting time to / from other processes,
Calculate the average waiting time which is a value obtained by dividing the total transfer waiting time of each thread by the number of processes.
Calculate the difference obtained by subtracting the average waiting time from the product of the number of threads of the process and the transfer waiting time,
A hybrid parallel processing method for resetting the number of threads by transferring a part of a thread of a process whose calculated difference is a positive value to a process whose calculated difference is a negative value .
前記算出された差が負の値であるプロセスそれぞれにおいて、前記譲渡されるスレッドの全てを前記算出された差の値の比率に応じて分配することにより前記スレッド数の再設定を行う請求項4に記載のハイブリッド並列処理方法。 In each process where the calculated difference is a positive value, determine the number of threads to be transferred based on the quotient obtained by dividing the average waiting time by the transfer waiting time of the process and the number of threads before resetting;
In each process the calculated difference is a negative value, according to claim 4 for resetting the number of the threads by dispensing in accordance with all threads that are the transfer to the ratio of the value of the calculated difference The hybrid parallel processing method described in 1.
前記プロセスの各々が割り当てられた処理を1つ以上のスレッドにより実行し、
前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
前記転送待ち合わせ時間を前記プロセスが他のプロセスと送受信し、
各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、
前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、
前記算出された差が正の値であるプロセスのスレッドの一部を前記算出された差が負の値であるプロセスに譲渡することにより前記スレッド数の再設定を行う処理をコンピュータに実行させるプログラム。 Process multiple processes in parallel,
Each of the processes executes the assigned process by one or more threads;
Measure the transfer waiting time in the data transfer process between the processes,
The process sends / receives the transfer waiting time to / from other processes,
Calculate the average waiting time which is a value obtained by dividing the total transfer waiting time of each thread by the number of processes.
Calculate the difference obtained by subtracting the average waiting time from the product of the number of threads of the process and the transfer waiting time,
A program for causing a computer to execute a process of resetting the number of threads by transferring a part of a thread of a process whose calculated difference is a positive value to a process whose calculated difference is a negative value .
前記算出された差が負の値であるプロセスそれぞれにおいて、前記譲渡されるスレッドの全てを前記算出された差の値の比率に応じて分配することにより前記スレッド数の再設定を行う処理をコンピュータに実行させる請求項6に記載のプログラム。 In each process where the calculated difference is a positive value, determine the number of threads to be transferred based on the quotient obtained by dividing the average waiting time by the transfer waiting time of the process and the number of threads before resetting;
In each of the processes in which the calculated difference is a negative value, a process for resetting the number of threads by distributing all of the transferred threads according to the ratio of the calculated difference values The program according to claim 6 , wherein the program is executed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012241994A JP6070078B2 (en) | 2012-11-01 | 2012-11-01 | Hybrid parallel processing system, hybrid parallel processing method, and computer program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012241994A JP6070078B2 (en) | 2012-11-01 | 2012-11-01 | Hybrid parallel processing system, hybrid parallel processing method, and computer program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014092873A JP2014092873A (en) | 2014-05-19 |
JP6070078B2 true JP6070078B2 (en) | 2017-02-01 |
Family
ID=50936919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012241994A Active JP6070078B2 (en) | 2012-11-01 | 2012-11-01 | Hybrid parallel processing system, hybrid parallel processing method, and computer program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6070078B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6435980B2 (en) * | 2015-04-27 | 2018-12-12 | 富士通株式会社 | Parallel computer, thread reallocation determination method, and thread reallocation determination program |
JP6891521B2 (en) * | 2017-02-08 | 2021-06-18 | 日本電気株式会社 | Information processing equipment, information processing methods, programs |
JP7434925B2 (en) * | 2020-01-23 | 2024-02-21 | 日本電気株式会社 | Information processing device, information processing method and program |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4591310B2 (en) * | 2005-10-31 | 2010-12-01 | 株式会社日立製作所 | Flow control method |
JP2009059316A (en) * | 2007-09-04 | 2009-03-19 | Nec Corp | Measuring device, measurement program, and measuring method |
JP5343523B2 (en) * | 2008-11-17 | 2013-11-13 | 富士通株式会社 | Job management apparatus, job management method, and job management program |
JP5521644B2 (en) * | 2010-02-26 | 2014-06-18 | 日本電気株式会社 | Hybrid parallel processing system, method, and program |
JP5526914B2 (en) * | 2010-03-25 | 2014-06-18 | 富士通株式会社 | Analysis device, analysis method, and analysis program |
-
2012
- 2012-11-01 JP JP2012241994A patent/JP6070078B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014092873A (en) | 2014-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2437168B1 (en) | Method and device for balancing load of multiprocessor system | |
JP6168576B2 (en) | Method, apparatus and system for virtual machine migration management | |
JP6886964B2 (en) | Load balancing method and equipment | |
US8756600B2 (en) | Judging apparatus, method, and recording medium of program for estimating the effect of deployment of an application in a virtual machine environment | |
EP2808789A2 (en) | Multi-core apparatus and job scheduling method thereof | |
WO2021073130A1 (en) | Frequency modulation method and apparatus for processor, and computing device | |
US10198370B2 (en) | Memory distribution across multiple non-uniform memory access nodes | |
WO2024119763A1 (en) | Computing power scheduling method for container cluster, and related apparatus | |
WO2018157586A1 (en) | Method for optimising processor resources of computing node, computing node, and server cluster | |
CN107544845B (en) | GPU resource scheduling method and device | |
CN109729113B (en) | Method, server system and computer program product for managing dedicated processing resources | |
WO2015144008A1 (en) | Method and device for allocating physical machine to virtual machine | |
EP3423940A1 (en) | A method and device for scheduling resources | |
KR20120066189A (en) | Apparatus for dynamically self-adapting of software framework on many-core systems and method of the same | |
JP6070078B2 (en) | Hybrid parallel processing system, hybrid parallel processing method, and computer program | |
US20230305880A1 (en) | Cluster distributed resource scheduling method, apparatus and device, and storage medium | |
JP5521644B2 (en) | Hybrid parallel processing system, method, and program | |
US11269686B2 (en) | Adaptive consumer thread pool | |
US8775767B2 (en) | Method and system for allocating memory to a pipeline | |
CN112882827B (en) | Method, electronic device and computer program product for load balancing | |
US20160055037A1 (en) | Analysis controller, analysis control method and computer-readable medium | |
WO2020076394A1 (en) | Resource allocation using restore credits | |
US9563532B1 (en) | Allocation of tasks in large scale computing systems | |
JP2007172322A (en) | Distributed processing type multiprocessor system, control method, multiprocessor interruption controller, and program | |
CN102945214B (en) | Based on the method for IO distribution optimization time delay interrupt processing task |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151015 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160712 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160909 |
|
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: 20161206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161219 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6070078 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |