JP2011180725A - ハイブリッド並列処理システム、方法、及びプログラム - Google Patents

ハイブリッド並列処理システム、方法、及びプログラム Download PDF

Info

Publication number
JP2011180725A
JP2011180725A JP2010042711A JP2010042711A JP2011180725A JP 2011180725 A JP2011180725 A JP 2011180725A JP 2010042711 A JP2010042711 A JP 2010042711A JP 2010042711 A JP2010042711 A JP 2010042711A JP 2011180725 A JP2011180725 A JP 2011180725A
Authority
JP
Japan
Prior art keywords
parallel processing
threads
shared
processes
hybrid
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.)
Granted
Application number
JP2010042711A
Other languages
English (en)
Other versions
JP5521644B2 (ja
Inventor
Takeshi Hayasaka
武 早坂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010042711A priority Critical patent/JP5521644B2/ja
Publication of JP2011180725A publication Critical patent/JP2011180725A/ja
Application granted granted Critical
Publication of JP5521644B2 publication Critical patent/JP5521644B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】分散並列処理において、各プロセスによる共有並列処理の実行時間を均一にする。
【解決手段】コンピュータプログラムの分散並列処理を実行する複数のプロセス61〜6nを備える。複数のプロセス61−6nの各々は、分散並列処理において共有並列処理を実行する一つ以上のスレッド71〜7mと、自プロセスのスレッド数を理想スレッド数に再設定する再設定部82とを備える。再設定部82は、共有並列処理において、複数のプロセス61−6nの全てに負荷される総負荷量を各プロセス61−6nに均一に割り当てた場合の平均負荷量と、共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、共有並列処理を実行するべき理想スレッド数を算出する。
【選択図】図2

Description

本発明は、動的負荷分散を行うハイブリッド並列処理システムに関する。
ハイブリッド並列処理は、並列処理計算機(以下、ノード)内における共有メモリ並列処理(以下、共有並列処理)と、ノード間における分散メモリ並列処理(以下、分散並列処理)とを組み合わせて行う処理である。ノード内におけるスレッド並列処理手法として、OpenMPが広く知られている。また、ノード間におけるプロセス並列処理手法として、MPI(Message Passing Interface)が知られている。以下では、ハイブリッド並列処理をコンピュータに実行させるべく記述されたコンピュータプログラムをハイブリッド並列処理プログラムと呼び、ハイブリッド並列処理プログラムを実行するコンピュータシステムをハイブリッド並列処理システムと呼ぶ。
ハイブリッド並列処理では、分散並列処理において各プロセスが計算を行うべき負荷量が異なるため、各プロセスにおけるスレッド数が同じであればプロセス毎の共有並列処理に要する時間に差が生じる。つまり、負荷量の少ないプロセスは、負荷量の多いプロセスより先に共有並列処理が完了してしまう。そのため、早く共有並列処理の完了したプロセスは、他のプロセスによる共有並列処理が完了し、プロセス間の同期処理あるいはデータ転送処理を行うタイミングまで待ち合わせる必要が発生する。このような原因で、ハイブリッド並列処理プログラムの実行性能が低下するという課題がある。
特に、極めて高速な処理を必要とするHPC(High Performance Computing)分野において、実行時間が長時間にわたるハイブリッド並列処理プログラム等では、上述のような性能低下が累積されることは、プログラムの高速実行を阻害する要因となる。
ハイブリッド並列処理の効果を最大限に発揮しハイブリッド並列処理プログラムを高速に実行するためには、プログラムの特性を考慮して、利用可能なプロセッサ数を余すことなく使用するように、プロセス数及びプロセス毎のスレッド数を適切に設定することが必要となる。例えば、OpenMPでは、ハイブリッド並列処理プログラム中に複数個所存在する共有並列処理部分毎に、プロセス毎のスレッド数をユーザが明示的に指定することが可能である。そのため、共有並列処理部分毎に実行されるべき負荷量に応じて最適なスレッド数へ増減されることが望まれる。
しかし、プロセス毎のスレッド数は、共有並列処理部分の実行時に利用可能なプロセッサ数や、プロセス数等を考慮して決定しなければならない。また、共有並列処理部分における各プロセスへの負荷量が実行時の入力データに依存する場合もあり、予め最適なスレッド数を見積もった上で、ハイブリッド並列処理プログラム中に指定することは非常に困難である。そのため、一般に、プロセス毎のスレッド数は、各プロセスで同一であり、プログラムの実行開始から終了まで変更しない手法がとられている。
特許文献1は、効率的な並列処理を可能とする動的負荷分散方法を開示している。特許文献1の動的負荷分散方法は、複数のプロセスを複数のプロセッサで並列的に実行する分散並列処理を複数回繰り返して行うにあたり、各プロセッサに対するプロセスの配分を決定するための方法である。まず、分散並列処理の実行後における各プロセッサの負荷状況に関する負荷情報を収集する。また、更に分散並列処理を実行するか否かを判断する。このとき、更に分散並列処理を実行すると判断されると、収集された負荷情報に基づいて、分散並列処理における各プロセッサに対するプロセスの再配分を決定する。
特許文献1の動的負荷分散方法によれば、アプリケーションプログラムの内部情報だけでなく、当該アプリケーションプログラムが動作している計算機の負荷状況をモニタして、負荷状況に関する情報を用いて負荷が平均的になるように並列要素分割を行うことができる。
なお、特許文献2は、複数の反復を含むループ命令を多数のスレッド間で最適に均衡させて多数のスレッドに分配し、各スレッドをネットワークに接続された複数のコンピュータ、あるいは一つの装置における複数のプロセッサに割り当てるデータ処理システムを開示している。また、特許文献3は、スケジューラを使用することなく、各CPUのロードバランスを改善し、効率の良い並列処理を可能なコンパイルプログラムを開示している。
特開2002−049603号公報 特開2000−315163号公報 特開2004−094581号公報
本発明の目的は、ハイブリッド並列処理プログラムの分散並列処理部分において、各プロセスにおける共有並列処理の実行時間を均一にすることが可能なハイブリッド並列処理システムを提供することである。
本発明のハイブリッド並列処理システムは、コンピュータプログラムの分散並列処理を実行する複数のプロセスを備え、複数のプロセスの各々は、分散並列処理において共有並列処理を実行する一つ以上のスレッドと、共有並列処理において、複数のプロセスの全てに負荷される総負荷量を各プロセスに均一に割り当てた場合の平均負荷量と、共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、共有並列処理を実行するべき理想スレッド数を算出して、自プロセスのスレッド数を理想スレッド数に再設定する再設定部とを備える。
本発明のハイブリッド並列処理方法は、複数のプロセスによりコンピュータプログラムの分散並列処理を実行するステップと、一つ以上のスレッドにより分散並列処理において共有並列処理を実行するステップと、共有並列処理において、複数のプロセスの全てに負荷される総負荷量を各プロセスに均一に割り当てた場合の平均負荷量と、共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、共有並列処理を実行するべき理想スレッド数を算出するステップと、自プロセスのスレッド数を理想スレッド数に再設定するステップと備える。
本発明のハイブリッド並列処理プログラムは、上述のハイブリッド並列処理方法をコンピュータに実行させる。
本発明によれば、ハイブリッド並列処理プログラムの分散並列処理部分において、複数のプロセスの各々に異なる負荷量が割り当てられたとしても、各プロセスにおける並列処理の実行時間を均一にすることが可能なハイブリッド並列処理システムを提供することができる。そのため、各プロセスは、共有並列処理時に他のプロセスによる共有並列処理の完了を待ち合わせる必要が無く、効率的で高速なハイブリッド並列処理を実現できる。
図1は、本発明の実施形態におけるハイブリッド並列処理システムの構成を示す図である。 図2は、本発明の実施形態におけるハイブリッド並列処理システムの機能ブロック図である。 図3は、本発明の実施形態におけるハイブリッド並列処理システムの動作を示すフローチャートである。 図4は、本発明の実施形態におけるハイブリッド並列処理システムの従来技術に対する効果を説明する図である。
添付図面を参照して、本発明によるハイブリッド並列処理システムを以下に説明する。
[概要]
本発明のハイブリッド並列処理システムでは、各プロセスが共有並列処理に要した時間(以下、並列処理時間)と、現在の各プロセスの備えるスレッド数とに基づいて、ハイブリッド並列処理の実行中にプロセス毎のスレッド数を動的に再設定する。
具体的に各プロセスは、ハイブリッド並列処理プログラムにおける共有並列処理部分を実行中に共有並列処理時間を計測する。各プロセスは、共有並列処理が完了して、分散並列処理を行うプロセス間における同期処理あるいはデータ転送のタイミングで、計測された共有並列処理時間と当該プロセスにおける現在のスレッド数とを含めた実行情報を、他のプロセスへ通知し、また、他のプロセスから取得する。
各プロセスは、実行情報による他のプロセスの共有並列処理時間及び当該プロセスの備えるスレッド数と、自己の共有並列処理時間及びスレッド数とに基づいて、各プロセスへの負荷量が均一であったとした場合の、各プロセスにおける共有並列処理時間(以下、理想共有並列処理時間)を算出する。そして、各プロセスは、理想共有並列処理時間と自己の共有並列処理時間とに基づいて、適正なスレッド数(以下、理想スレッド数)を算出する。各プロセスは、現在、自己の備えるスレッド数を、理想スレッド数へ再設定する。
これにより、各プロセスにおけるスレッド数は、各プロセスが処理を行うべき負荷量に対して適正な数となる。そのため、ハイブリッド並列処理プログラムの分散並列処理部分において、複数のプロセスの各々に異なる負荷量が割り当てられたとしても、各プロセスの共有並列処理時間を均一にすることができる。このような構成により、本発明のハイブリッド並列処理システムは、各プロセスが共有並列処理時に他のプロセスによる共有並列処理の完了を待ち合わせる必要が無く、効率的で高速なハイブリッド並列処理を実現できる。以下、本実施形態におけるハイブリッド並列処理システムの構成及び動作を詳細に説明する。
[構成の説明]
はじめに、本実施形態におけるハイブリッド並列処理システムの構成の説明を行う。図1は、本実施形態におけるハイブリッド並列処理システムの構成を示す図である。
本実施形態におけるハイブリッド並列処理システムは、並列処理計算機(以下、ノード)100を備える。本実施形態のノード100は、処理部1と、記憶部2と、入出力部3と、通信部4とを備える。処理部1と、記憶部2と、入出力部3と、通信部4とは、バス5を介して接続されており、データの送受信が可能である。
まず、通信部4は、他のノード100との通信インターフェースである。通信部4は、NIC(Network Interface Card)に例示される。ノード100は、通信部4を介して他のノード100とデータ送受信することが可能である。
次に、入出力部3は、ノード100のユーザとの入出力インターフェースである。入出力部3は、キーボードや、マウスや、あるいはLCD(Liquid Crystal Display)に例示される。ユーザは、入出力部3により、ノード100を操作可能である。
次に、記憶部2は、ノード100の機能を実現するコンピュータプログラムやデータを記憶する。記憶部2は、RAM(Random Access Memory)や、ROM(Read Only Memory)や、HDD(Hard Disk Drive)に例示されるような主記憶装置、2次記憶装置により構成される。記憶部2は、コンピュータプログラムとしてOS(Operating System)21とハイブリッド並列処理プログラム22とを備える。OS21は、ノード100のOSである。ハイブリッド並列処理プログラム22は、OS21上で動作するアプリケーションプログラムである。
次に、処理部1は、記憶部2に記憶されたコンピュータプログラムを実行してノード100の機能を実現する。処理部1は、CPU(Central Processing Unit)に例示される。本実施形態において処理部1は、マルチコアCPUにより構成され、CPUコア11とCPUコア12とを備える。なお、処理部1の備えるCPUコアの数は、2つに限定せず、これより多くのCPUコアを備えても良い。また、処理部1は、複数のCPUを備えたマルチプロセッサによって構成されてもよい。
ここで、記憶部2に記憶されたハイブリッド並列処理プログラム22は、移動可能な記憶媒体に記録することが可能である。記憶媒体とは、CD(Compact Disk)や、USB(Universal Serial Bus)インターフェースを搭載したフラッシュメモリ(USBメモリ)等に例示される。ハイブリッド並列処理プログラム22は、このような記録媒体により流通が可能である。ハイブリッド並列処理プログラム22は、図示されないノード100のCDドライブや、USBインターフェースを介して、ノード100へ導入される。また、ハイブリッド並列処理プログラム22は、図示されないネットワークに接続されたアプリケーションサーバのHDDにダウンロード可能に記憶されていても良い。この場合、ハイブリッド並列処理プログラム22は、ネットワークを介して、ノード100へ導入される。
なお、本実施形態においてハイブリッド並列処理システムは、複数のノード100により構成されてよい。その場合、各ノード100は、それぞれ通信部4によりネットワーク等を介して接続されて、データの送受信が可能に構成される。各ノード100の処理部1の備えるCPUの数あるいはCPUコアの数は同じでもよいし、異なっていても良い。また、各ノード100の記憶部2には予めハイブリッド並列処理プログラム22が記憶されていても良いし、主制御を担うノード100から遠隔で導入されても良い。このように、図1に示した本実施形態のハイブリッド並列処理システムの構成は、あくまで一例であり、これに限定はしない。
続いて、図2は、本実施形態におけるハイブリッド並列処理システムの機能ブロック図である。本実施形態のハイブリッド並列処理システムは、プロセス61〜6nを備える。プロセス61〜6nは、記憶部2に記憶されたハイブリッド並列処理プログラム22を処理部1が実行することにより実現される。
プロセス61〜6nは、スレッド72〜7mと、既定値設定部80と、実行時間計測部81と、再設定部82とを備える。スレッド72〜7mは、ハイブリッド並列処理プログラム22における共有並列処理を実行する。既定値設定部80は、ハイブリッド並列処理プログラム22における共有並列処理時の各プロセスのスレッド72〜7mの数(以下、スレッド数)を決定する。ここで、スレッド数の既定値は、一般に、ユーザによりハイブリッド並列処理プログラム22の実行開始時に環境変数を介して指定される。なお、既定値設定部80は、環境変数による指定が無い場合、システムの既定値を採用する。実行時間計測部81は、ハイブリッド並列処理プログラム22の並列処理部分の処理に要する時間である共有並列処理時間を計測する。再設定部82は、プロセス61〜6n間で共有並列処理時間と現在のスレッド数とを含む実行情報を交換して、当該プロセスにおける適正なスレッド数である理想スレッド数を算出し、当該プロセスにおけるスレッド数を理想スレッド数に再設定する。
以上が、本実施形態におけるハイブリッド並列処理システムの構成の説明である。
[動作の説明]
次に、上述のような構成による本実施形態のハイブリッド並列処理システムの動作の説明を行う。図3は、本実施形態におけるハイブリッド並列処理システムの動作を示すフローチャートである。
まず、プロセス61〜6nの既定値設定部80は、ハイブリッド並列処理プログラム22の実行開始にあたり、それぞれスレッド71〜7mの数の既定値の設定を開始する(ステップS10)。既定値設定部80は、ハイブリッド並列処理プログラム22における環境変数を参照する(ステップS20)。既定値設定部80は、環境変数が存在するか否かを判定して(ステップS30)、存在する場合(ステップS30のYes)、環境変数に基づいて、それぞれプロセス61〜6nのスレッド71〜7mの数を設定する(ステップS40)。一方、既定値設定部80は、環境変数が存在しない場合(ステップS30のNo)、システムであるOS21の既定値に基づいて、それぞれプロセス61〜6nのスレッド71〜7mの数を設定する(ステップS50)。
続いて、プロセス61〜6nは、それぞれハイブリッド並列処理プログラム22の実行を開始する(ステップS60)。プロセス61〜6nの実行時間計測部81は、ハイブリッド並列処理プログラム22における共有並列処理部分に到達する(ステップS70)と、それぞれ共有並列処理の実行開始時刻を取得する(ステップS80)。その後、プロセス61〜6nのスレッド71〜7mは、それぞれ共有並列処理部分の処理を実行する(ステップS90)。プロセス61〜6nの実行時間計測部81は、各プロセス61〜6nのスレッド71〜7mによる共有並列処理部分の実行が完了すると、共有並列処理の実行完了時刻を取得する(ステップS100)。実行時間計測部81は、それぞれのプロセス61〜6nにおける共有並列処理の実行開始時刻から実行完了時刻の差を算出して、共有並列処理部分の実行時間である共有並列処理時間を求める(ステップS110)。実行時間計測部81は、それぞれ共有並列処理時間を保持する。
その後、プロセス61〜6nは、共有並列処理が完了すると、分散並列処理を行うプロセス61〜6nの間における通信処理を開始する(ステップS120)。プロセス61〜6nの再設定部82は、それぞれ通信処理において、計算の行われたデータのデータ転送処理(ステップS130)と共に、他のプロセス61〜6nの再設定部82との間で共有並列処理時間とスレッド71〜7mの数を含めた実行情報を交換する(ステップS140)。再設定部82は、通信処理により取得された実行情報に基づいて、適正なスレッド数である理想スレッド数を算出し(ステップS150)、算出された理想スレッド数を設定する(ステップS160)。
ここで、再設定部82は、ステップS150において、以下のように理想スレッド数を算出する。まず、再設定部82は、利用可能なプロセッサの総数をC、実行情報を交換したプロセス数をp、プロセスnのスレッド数をNn、プロセスnの共有並列処理時間をTn、として、実行情報を交換した全てのプロセスnにおける共有並列処理時間の延べ時間である総共有並列処理時間Tを、以下の数式(1)に基づいて算出する。
Figure 2011180725
総共有並列処理時間Tは、当該分散並列処理部分において全てのプロセス61〜6nに負荷された総負荷量と等しいと考えられる。次に、再設定部82は、総共有並列処理時間Tを用いて、以下の数式(2)に基づいて、利用可能なプロセッサにおける理想共有並列処理時間Taveを算出する。
Figure 2011180725
理想共有並列処理時間Taveは、利用可能なプロセッサに対して当該分散並列処理部分の総負荷量を均一に割り当てた場合に、各プロセッサのプロセスにおいて実行に要すると想定される共有並列処理時間と考えられる。続いて、再設定部82は、自プロセスの共有並列処理時間Tnを、理想共有並列処理時間Taveに近づけるように自プロセスのスレッド71〜7nの数を補正する。補正後のスレッド71〜7nの数である理想スレッド数をNnnewとすると、再設定部82は、以下の数式(3)に基づいて算出する。
Figure 2011180725
再設定部82は、このようにして求められた理想スレッド数Nnnewを、以降の共有並列処理におけるプロセスnのスレッド数として設定する。数式(3)に示されるように、理想スレッド数Nnnewは、自プロセスにおける共有並列処理時間Tnと、理想共有並列処理時間Taveとの比率に応じて決定される。そのため、「Tn>Tave」であれば、自プロセスの負荷量が平均の負荷量より多いことを意味し、再設定部82は、スレッド数を増加させるように補正を行うことになる。一方、「Tn<Tave」であれば、自プロセスの負荷量が平均の負荷量より少ないことを意味し、再設定部82は、スレッド数を現象させるように補正を行うことになる。
このようなスレッド数の補正により、各プロセス61〜6nにおける共有並列処理時間Tnは、理想共有並列処理時間Taveに近づくことになる。そのため、各プロセス61〜6nは、ハイブリッド並列処理プログラムの分散並列処理部分において、異なる負荷量が割り当てられたとしても、各プロセスにおける並列処理の実行時間を均一にすることが可能となる。これによって、各プロセス61〜6nは、共有並列処理時に他のプロセスによる共有並列処理の完了を待ち合わせる必要が無く、効率的で高速なハイブリッド並列処理を実現できる。
さらに、再設定部82は、次に示すような理想スレッド数Nnnewの補正処理を行って、未使用プロセッサの発生を抑える。再設定部82は、再設定後のプロセス61〜6nにおけるスレッド71〜7nの総数が、利用可能なプロセッサの総数Cを下回っている場合、共有並列処理時間Tnの長いプロセス61〜6nから順に1スレッドずつ加算する。再設定部82は、再設定後のスレッド総数をNnewtotalとして、以下の数式(4)に基づいて算出する。
Figure 2011180725
さらに、再設定部82は、利用可能なプロセッサの総数Cと再設定後のスレッド総数Nnewtotalとの差で示される未使用プロセッサ数Cdを、以下の数式(5)に基づいて算出する。
Figure 2011180725
再設定部82は、数式(5)により算出された未使用プロセッサ数Cdと同数のスレッドを、並列処理時間Tnの長いプロセス61〜6nから順番に1スレッドずつ加算する。このような処理により、再設定部82は、未使用のプロセッサを発生させないように、プロセッサ61〜6nの理想スレッド数Nnnewを補正することができる。
以上が、本実施形態におけるハイブリッド並列処理システムの動作方法の説明である。
[スレッド数の補正例]
次に、上述した、本実施形態におけるハイブリッド並列処理システムにおけるスレッド数の補正処理について、具体例を説明する。
例えば、利用可能プロセッサ数C=16、プロセス数p=2、プロセスnにおけるスレッド数N1=N2=8として、ある共有並列処理における共有並列処理時間が、T1=10[秒]、T2=30[秒]であった場合を考えてみる。
まず、プロセスp1、p2の再設定部82は、それぞれ、総共有並列処理時間Tを算出する。総共有並列処理時間Tは、数式(1)より、
Figure 2011180725
となる。次に、プロセスp1、p2の再設定部82は、それぞれ、理想共有並列処理時間Taveを算出する。理想共有並列処理時間Taveは、数式(2)より、
Figure 2011180725
となる。続いて、プロセスp1、p2の再設定部82は、それぞれ、理想スレッド数Nnnewを算出する。まず、プロセスp1の再設定部82は、理想スレッド数N1newを、数式(3)により、
Figure 2011180725
と算出する。同様に、プロセスp2の再設定部82は、理想スレッド数N2newを、数式(3)により
Figure 2011180725
と算出する。これにより、プロセスp1の再設定部82は、プロセスp1のスレッド数を「8」から「4」へ減少させる。またプロセスp2の再設定部82は、プロセスp2のスレッド数を「8」から「12」へ増加させることになる。
さらに、再設定部82は、再設定後のスレッド総数NnewTotalを、数式(4)により、
Figure 2011180725
と算出する。再設定部82は、利用可能なプロセッサの総数Cと再設定後のスレッド総数NnewTotalとの際を、数式(5)により、
Figure 2011180725
と算出する。本例の場合、プロセッサの総数Cと再設定後のスレッド総数NnewTotalが同数であるため、未使用プロセッサ数Cdは「0」となり、理想スレッド数Nnnewの補正処理は不要となる。
以上が、本実施形態におけるハイブリッド並列処理システムにおけるスレッド数の補正処理についての具体例の説明である。
ここで、図4は、本実施形態におけるハイブリッド並列処理システムの従来技術に対する効果を説明する図である。図4(a)に示すように、従来の手法によれば、プロセス1及びプロセス2のスレッド数は、常に一定である。低負荷のプロセス1は、高負荷のプロセス2より常に先に共有並列処理が完了する。そのため、プロセス間で通信処理を行うタイミングにおいて、プロセス1は、常に待ち合わせが発生することになり、プログラムの実行性能が低下する。
これに対して、本実施形態におけるハイブリッド並列処理システムによれば、プロセス間で通信処理を行うタイミングにおいて、各プロセス間において実行情報を交換して、両プロセスの負荷状態に応じてスレッド数の再設定を行う。その結果、後続の共有並列処理では、実行時間の不均一が解消され、また、ハイブリッド並列処理プログラムの実行時間も短縮されることとなる。
ここまで、実施形態を参照して本発明のハイブリッド並列処理システムの説明を行ってきた。本発明のハイブリッド並列処理システムでは、各プロセスがハイブリッド並列処理プログラムにおける共有並列処理部分を実行中に共有並列処理時間を計測する。各プロセスは、共有並列処理が完了すると、計測された共有並列処理時間と当該プロセスにおける現在のスレッド数とを含めた実行情報を、他のプロセスと交換する。各プロセスは、取得された実行情報に基づいて、共有並列処理部分において各プロセスへの負荷量を均一であったとした場合の、理想スレッド数を算出して、自己の備えるスレッド数を理想スレッド数へ再設定する。
これにより、各プロセスにおけるスレッド数は、各プロセスが処理を行うべき負荷量に対して適正な数となるため、以後の、分散並列処理部分において、各プロセスの負荷量が異なっていたとしても、各プロセスにおける共有並列処理時間を均一にすることができる。このような構成により、本発明のハイブリッド並列処理システムは、各プロセスが共有並列処理時に他のプロセスによる共有並列処理の完了を待ち合わせる必要が無く、効率的で高速なハイブリッド並列処理を実現できる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更を行うことができる。
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)コンピュータプログラムの分散並列処理を実行する複数のプロセス
を備え、前記複数のプロセスの各々は、前記分散並列処理において共有並列処理を実行する一つ以上のスレッドと、前記共有並列処理において、前記複数のプロセスの全てに負荷される総負荷量を前記各プロセスに均一に割り当てた場合の平均負荷量と、前記共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、前記共有並列処理を実行するべき理想スレッド数を算出して、前記自プロセスのスレッド数を前記理想スレッド数に再設定する再設定部とを備えるハイブリッド並列処理システム。
(付記2)付記1に記載のハイブリッド並列処理システムであって、前記複数のプロセスの各々は、前記共有並列処理の実行に要した共有並列処理時間を計測する実行時間計測部をさらに備え、前記再設定部は、前記各プロセスの前記共有並列処理時間と前記各プロセスにおける前記スレッド数に基づいて前記総負荷量を前記各プロセスに均一に割り当てた場合に前記各プロセスにおいて前記共有並列処理の実行に要すると想定される理想共有並列処理時間を算出して、前記理想共有並列処理時間と前記各プロセスにおける前記共有並列処理時間との比率に基づいて前記理想スレッド数を算出するハイブリッド並列処理システム。
(付記3)付記2に記載のハイブリッド並列処理システムであって、前記再設定部は、前記分散並列処理における前記複数のプロセス間の通信処理において、他のプロセスから前記各プロセスにおける前記共有並列処理時間と前記各プロセスの備えるスレッド数とを取得するハイブリッド並列処理システム。
(付記4)付記2または付記3に記載のハイブリッド並列処理システムであって、前記再設定部は、前記複数のプロセスを実行可能なプロセッサ総数から、前記複数のプロセスにおける前記理想スレッド数の合計数を減算することで未使用プロセッサ数を算出して、前記未使用プロセッサ数と同数のスレッドを、前記複数のプロセスのうちで前記共有並列処理時間の長いプロセスから順に、一つずつ割り当てて前記理想スレッド数を補正するハイブリッド並列処理システム。
(付記5)付記2から付記4までのいずれかに記載のハイブリッド並列処理システムであって、前記再設定部は、前記複数のプロセスの数をp、前記複数のプロセスのうちプロセスnの備える前記スレッドの数をNn、前記プロセスnにおける前記自己負荷量である前記共有並列処理時間をTnとして、前記総負荷量である総共有並列処理時間Tを、
Figure 2011180725
により算出して、さらに、前記プロセッサ総数をCとして、前記平均負荷量である理想共有並列時間Taveを、
Figure 2011180725
により算出して、前記プロセスnにおける理想スレッド数Nnnewを、
Figure 2011180725
により算出するハイブリッド並列処理システム。
(付記6)付記2から付記5までのいずれかに記載のハイブリッド並列処理システムであって、前記再設定部は、前記理想スレッド数の総数NNewTotalを、
Figure 2011180725
により算出して、さらに、未使用プロセッサ数Cdを、
Figure 2011180725
により算出するハイブリッド並列処理システム。
(付記7)複数のプロセスによりコンピュータプログラムの分散並列処理を実行するステップと、一つ以上のスレッドにより前記分散並列処理において共有並列処理を実行するステップと、前記共有並列処理において、前記複数のプロセスの全てに負荷される総負荷量を前記各プロセスに均一に割り当てた場合の平均負荷量と、前記共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、前記共有並列処理を実行するべき理想スレッド数を算出するステップと、前記自プロセスのスレッド数を前記理想スレッド数に再設定するステップと備えるハイブリッド並列処理方法。
(付記8)付記7に記載のハイブリッド並列処理方法であって、前記複数のプロセスの各々は、前記共有並列処理の実行に要した共有並列処理時間を計測するステップをさらに備え、前記共有並列処理を実行するべき理想スレッド数を算出するステップは、前記各プロセスの前記共有並列処理時間と前記各プロセスにおける前記スレッド数に基づいて前記総負荷量を前記各プロセスに均一に割り当てた場合に前記各プロセスにおいて前記共有並列処理の実行に要すると想定される理想共有並列処理時間を算出するステップと、前記理想共有並列処理時間と前記各プロセスにおける前記共有並列処理時間との比率に基づいて前記理想スレッド数を算出するステップとを含むハイブリッド並列処理方法。
(付記9)付記8に記載のハイブリッド並列処理方法であって、前記分散並列処理における前記複数のプロセス間の通信処理において、他のプロセスから前記各プロセスにおける前記共有並列処理時間と前記各プロセスの備えるスレッド数とを取得するステップをさらに備えるハイブリッド並列処理方法。
(付記10)付記8または付記9に記載のハイブリッド並列処理方法であって、前記共有並列処理を実行するべき理想スレッド数を算出するステップは、前記複数のプロセスを実行可能なプロセッサ総数から、前記複数のプロセスにおける前記理想スレッド数の合計数を減算することで未使用プロセッサ数を算出するステップと、前記未使用プロセッサ数と同数のスレッドを、前記複数のプロセスのうちで前記共有並列処理時間の長いプロセスから順に、一つずつ割り当てて前記理想スレッド数を補正するステップとを含むハイブリッド並列処理方法。
(付記11)付記項8から付記10までのいずれかに記載のハイブリッド並列処理方法であって、前記共有並列処理を実行するべき理想スレッド数を算出するステップは、前記複数のプロセスの数をp、前記複数のプロセスのうちプロセスnの備える前記スレッドの数をNn、前記プロセスnにおける前記自己負荷量である前記共有並列処理時間をTnとして、前記総負荷量である総共有並列処理時間Tを、
Figure 2011180725
により算出して、さらに、前記プロセッサ総数をCとして、前記平均負荷量である理想共有並列時間Taveを、
Figure 2011180725
により算出して、前記プロセスnにおける理想スレッド数Nnnewを、
Figure 2011180725
により算出するステップを含むハイブリッド並列処理方法。
(付記12)付記8から付記11までのいずれかに記載のハイブリッド並列処理方法であって、前記共有並列処理を実行するべき理想スレッド数を算出するステップは、前記理想スレッド数の総数NNewTotalを、
Figure 2011180725
により算出して、さらに、未使用プロセッサ数Cdを、
Figure 2011180725
により算出するステップ
を含むハイブリッド並列処理方法。
(付記13)付記7から付記12までのいずれかに記載のハイブリッド並列処理方法をコンピュータに実行させるハイブリッド並列処理プログラム。
1 処理部
2 記憶部
3 入出力部
4 通信部
5 バス
11 CPUコア
12 CPUコア
21 OS
22 ハイブリッド並列処理プログラム
61〜6n プロセス
71〜7n スレッド
80 既定値設定部
81 実行時間計測部
82 再設定部
100 ノード

Claims (8)

  1. コンピュータプログラムの分散並列処理を実行する複数のプロセス
    を備え、
    前記複数のプロセスの各々は、
    前記分散並列処理において共有並列処理を実行する一つ以上のスレッドと、
    前記共有並列処理において、前記複数のプロセスの全てに負荷される総負荷量を前記各プロセスに均一に割り当てた場合の平均負荷量と、前記共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、前記共有並列処理を実行するべき理想スレッド数を算出して、前記自プロセスのスレッド数を前記理想スレッド数に再設定する再設定部と
    を備えるハイブリッド並列処理システム。
  2. 請求項1に記載のハイブリッド並列処理システムであって、
    前記複数のプロセスの各々は、
    前記共有並列処理の実行に要した共有並列処理時間を計測する実行時間計測部
    をさらに備え、
    前記再設定部は、前記各プロセスの前記共有並列処理時間と前記各プロセスにおける前記スレッド数に基づいて前記総負荷量を前記各プロセスに均一に割り当てた場合に前記各プロセスにおいて前記共有並列処理の実行に要すると想定される理想共有並列処理時間を算出して、前記理想共有並列処理時間と前記各プロセスにおける前記共有並列処理時間との比率に基づいて前記理想スレッド数を算出する
    ハイブリッド並列処理システム。
  3. 請求項2に記載のハイブリッド並列処理システムであって、
    前記再設定部は、前記分散並列処理における前記複数のプロセス間の通信処理において、他のプロセスから前記各プロセスにおける前記共有並列処理時間と前記各プロセスの備えるスレッド数とを取得する。
    ハイブリッド並列処理システム。
  4. 請求項2または請求項3に記載のハイブリッド並列処理システムであって、
    前記再設定部は、前記複数のプロセスを実行可能なプロセッサ総数から、前記複数のプロセスにおける前記理想スレッド数の合計数を減算することで未使用プロセッサ数を算出して、前記未使用プロセッサ数と同数のスレッドを、前記複数のプロセスのうちで前記共有並列処理時間の長いプロセスから順に、一つずつ割り当てて前記理想スレッド数を補正する
    ハイブリッド並列処理システム。
  5. 請求項2から請求項4までのいずれかに記載のハイブリッド並列処理システムであって、
    前記再設定部は、前記複数のプロセスの数をp、前記複数のプロセスのうちプロセスnの備える前記スレッドの数をNn、前記プロセスnにおける前記自己負荷量である前記共有並列処理時間をTnとして、前記総負荷量である総共有並列処理時間Tを、
    Figure 2011180725
    により算出して、さらに、前記プロセッサ総数をCとして、前記平均負荷量である理想共有並列時間Taveを、
    Figure 2011180725
    により算出して、前記プロセスnにおける理想スレッド数Nnnewを、
    Figure 2011180725
    により算出する
    ハイブリッド並列処理システム。
  6. 請求項2から請求項5までのいずれかに記載のハイブリッド並列処理システムであって、
    前記再設定部は、前記理想スレッド数の総数NNewTotalを、
    Figure 2011180725
    により算出して、さらに、未使用プロセッサ数Cdを、
    Figure 2011180725
    により算出する
    ハイブリッド並列処理システム。
  7. 複数のプロセスによりコンピュータプログラムの分散並列処理を実行するステップと、
    一つ以上のスレッドにより前記分散並列処理において共有並列処理を実行するステップと、
    前記共有並列処理において、前記複数のプロセスの全てに負荷される総負荷量を前記各プロセスに均一に割り当てた場合の平均負荷量と、前記共有並列処理の実行時において自プロセスに割り当てられた自己負荷量との比率に基づいて、前記共有並列処理を実行するべき理想スレッド数を算出するステップと、
    前記自プロセスのスレッド数を前記理想スレッド数に再設定するステップと
    備えるハイブリッド並列処理方法。
  8. 請求項7に記載のハイブリッド並列処理方法をコンピュータに実行させるハイブリッド並列処理プログラム。
JP2010042711A 2010-02-26 2010-02-26 ハイブリッド並列処理システム、方法、及びプログラム Expired - Fee Related JP5521644B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010042711A JP5521644B2 (ja) 2010-02-26 2010-02-26 ハイブリッド並列処理システム、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010042711A JP5521644B2 (ja) 2010-02-26 2010-02-26 ハイブリッド並列処理システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2011180725A true JP2011180725A (ja) 2011-09-15
JP5521644B2 JP5521644B2 (ja) 2014-06-18

Family

ID=44692187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010042711A Expired - Fee Related JP5521644B2 (ja) 2010-02-26 2010-02-26 ハイブリッド並列処理システム、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5521644B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013182502A (ja) * 2012-03-02 2013-09-12 Nec Corp リソース配分システム、リソース配分方法、及びリソース配分プログラム
JP2013246458A (ja) * 2012-05-23 2013-12-09 Hitachi Ltd 検証装置及び検証方法
WO2014068950A1 (ja) * 2012-10-31 2014-05-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
JP2014092873A (ja) * 2012-11-01 2014-05-19 Nec Corp ハイブリッド並列処理システム、ハイブリッド並列処理方法およびコンピュータプログラム
JP2016207076A (ja) * 2015-04-27 2016-12-08 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160071782A (ko) 2014-12-12 2016-06-22 삼성전자주식회사 멀티 스레드를 처리하는 방법 및 장치

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013182502A (ja) * 2012-03-02 2013-09-12 Nec Corp リソース配分システム、リソース配分方法、及びリソース配分プログラム
JP2013246458A (ja) * 2012-05-23 2013-12-09 Hitachi Ltd 検証装置及び検証方法
WO2014068950A1 (ja) * 2012-10-31 2014-05-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
US9430285B2 (en) 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers
JPWO2014068950A1 (ja) * 2012-10-31 2016-09-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
JP2014092873A (ja) * 2012-11-01 2014-05-19 Nec Corp ハイブリッド並列処理システム、ハイブリッド並列処理方法およびコンピュータプログラム
JP2016207076A (ja) * 2015-04-27 2016-12-08 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
US9940173B2 (en) 2015-04-27 2018-04-10 Fujitsu Limited System, management device and method of controlling a plurality of computers

Also Published As

Publication number Publication date
JP5521644B2 (ja) 2014-06-18

Similar Documents

Publication Publication Date Title
JP5521644B2 (ja) ハイブリッド並列処理システム、方法、及びプログラム
CN107003887B (zh) Cpu超载设置和云计算工作负荷调度机构
Raveendran et al. A framework for elastic execution of existing mpi programs
US10237335B2 (en) Managing cluster-level performance variability without a centralized controller
US10355966B2 (en) Managing variations among nodes in parallel system frameworks
US10467106B2 (en) Data processing method, data processing system, and non-transitory computer program product for controlling a workload delay time
US20130212594A1 (en) Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method
US9619288B2 (en) Deploying software in a multi-instance node
EP2466469A2 (en) Apparatus and method for dynamically reconfiguring state of application program in a many-core system
US7788672B2 (en) System for controlling assignment of a plurality of modules of a program to available execution units based on speculative executing and granularity adjusting
WO2017041674A1 (zh) 一种启动备份任务的方法、装置及电子设备
Luszczek Parallel programming in MATLAB
US9417924B2 (en) Scheduling in job execution
CN107544845B (zh) Gpu资源调度方法及装置
JP6477260B2 (ja) アプリケーションを実行する方法及びリソースマネジャ
US20130238871A1 (en) Data processing method and apparatus, pci-e bus system, and server
JP6070078B2 (ja) ハイブリッド並列処理システム、ハイブリッド並列処理方法およびコンピュータプログラム
CN106897137B (zh) 一种基于虚拟机热迁移的物理机与虚拟机映射转换方法
JP5435133B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
US20130305251A1 (en) Scheduling method and scheduling system
JP2014206805A (ja) 制御装置
EP3118742A1 (en) Information processing apparatus, parallel computer system, file server communication program, and file server communication method
TWI455030B (zh) 決定程式任務之平行度的方法與計算裝置及其機器可讀取媒體
KR101748210B1 (ko) 분산 처리 시스템 및 분산 처리 시스템에서의 파일 처리 방법
JP5949245B2 (ja) 情報処理装置、実行プログラムおよび実行方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140127

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: 20140311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R150 Certificate of patent or registration of utility model

Ref document number: 5521644

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees