(57)【要約】【課題】  ハイブリッド並列処理における効率的な並列処理を実現する。【解決手段】  並列処理される複数のプロセスを備え、プロセスの各々が、プロセスに割り当てられた処理を実行する１つ以上のスレッドと、プロセス間のデータ転送処理を行うデータ転送処理手段と、スレッド数の再設定を行うスレッド数再設定手段とを含み、データ転送処理手段が、プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測手段を含み、転送待ち合わせ時間を他のプロセスと送受信し、スレッド数再設定手段が、転送待ち合わせ時間に基づいてスレッド数の再設定を行う。【選択図】      図１
2014092873.tif 000002
【特許請求の範囲】
【請求項１】
並列処理される複数のプロセスを備え、
前記プロセスの各々が、
前記プロセスに割り当てられた処理を実行する１つ以上のスレッドと、
前記プロセス間のデータ転送処理を行うデータ転送処理手段と、
前記スレッド数の再設定を行うスレッド数再設定手段とを含み、
前記データ転送処理手段が、前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測手段を含み、前記転送待ち合わせ時間を他のプロセスと送受信し、
前記スレッド数再設定手段が、前記転送待ち合わせ時間に基づいて前記スレッド数の再設定を行うハイブリッド並列処理システム。
【請求項２】
前記スレッド数再設定手段が、各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、前記算出された差が正の値であるプロセスのスレッドの一部を、前記算出された差が負の値であるプロセスに譲渡することにより、前記スレッド数の再設定を行う請求項１に記載のハイブリッド並列処理システム。
【請求項３】
前記スレッド数再設定手段が、前記算出された差が正の値であるプロセスそれぞれにおいて、前記平均待ち合わせ時間を前記プロセスの前記転送待ち合わせ時間で割った商と再設定前のスレッド数とに基づいて譲渡されるスレッドの数を決定し、前記算出された差が負の値であるプロセスそれぞれにおいて、前記譲渡されるスレッドの全てを前記算出された差の値の比率に応じて分配することにより前記スレッド数の再設定を行う請求項２に記載のハイブリッド並列処理システム。
【請求項４】
前記プロセスが、前記プロセスの実行開始時のスレッド数の既定値を決定するスレッド数既定値設定手段を含む請求項１乃至３のいずれかに記載のハイブリッド並列処理システム。
【請求項５】
複数のプロセスを並列処理可能なプロセッサを用いて、
前記プロセスの各々が割り当てられた処理を１つ以上のスレッドにより実行し、
前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
前記転送待ち合わせ時間を前記プロセスが他のプロセスと送受信し、
前記転送待ち合わせ時間に基づいて前記スレッド数の再設定を行うハイブリッド並列処理方法。
【請求項６】
各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、
前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、
前記算出された差が正の値であるプロセスのスレッドの一部を前記算出された差が負の値であるプロセスに譲渡することにより前記スレッド数の再設定を行う請求項５に記載のハイブリッド並列処理方法。
【請求項７】
前記算出された差が正の値であるプロセスそれぞれにおいて、前記平均待ち合わせ時間をプロセスの前記転送待ち合わせ時間で割った商および再設定前のスレッド数に基づいて譲渡されるスレッドの数を決定し、
前記算出された差が負の値であるプロセスそれぞれにおいて、前記譲渡されるスレッドの全てを前記算出された差の値の比率に応じて分配することにより前記スレッド数の再設定を行う請求項６に記載のハイブリッド並列処理方法。
【請求項８】
複数のプロセスを並列処理し、
前記プロセスの各々が割り当てられた処理を１つ以上のスレッドにより実行し、
前記プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
前記転送待ち合わせ時間を前記プロセスが他のプロセスと送受信し、
前記転送待ち合わせ時間に基づいて前記スレッド数の再設定を行う処理をコンピュータに実行させるプログラム。
【請求項９】
各スレッドの前記転送待ち合わせ時間の総和を前記プロセスの数で割った値である平均待ち合わせ時間を算出し、
前記プロセスの前記スレッド数と前記転送待ち合わせ時間の積から前記平均待ち合わせ時間を引いた差を算出し、
前記算出された差が正の値であるプロセスのスレッドの一部を前記算出された差が負の値であるプロセスに譲渡することにより前記スレッド数の再設定を行う処理をコンピュータに実行させる請求項８に記載のプログラム。
【請求項１０】
前記算出された差が正の値であるプロセスそれぞれにおいて、前記平均待ち合わせ時間をプロセスの前記転送待ち合わせ時間で割った商および再設定前のスレッド数に基づいて譲渡されるスレッドの数を決定し、
前記算出された差が負の値であるプロセスそれぞれにおいて、前記譲渡されるスレッドの全てを前記算出された差の値の比率に応じて分配することにより前記スレッド数の再設定を行う処理をコンピュータに実行させる請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータによる並列処理に関し、特にコンピュータによる並列処理における負荷分散技術に関する。
【背景技術】
【０００２】
コンピュータによる並列処理（並列計算または並列コンピューティングと呼ばれることもある）とは、コンピュータプログラム（以下、単に「プログラム」と称する）の実行やデータ処理、計算等を、逐次的に行うのでは無く、同時並列的に行う処理である。コンピュータによる並列処理の分類として、スレッド並列処理と、プロセス並列処理が挙げられる。スレッド並列処理は、共有メモリ型並列処理またはノード内並列処理と呼ばれることもある。プロセス並列処理は、分散メモリ型並列処理またはノード間並列処理と呼ばれることもある。スレッド並列処理は、主に共有メモリ型計算機上で、例えばＯｐｅｎＭＰ等を利用することにより実現される。プロセス並列処理は、例えばＭＰＩ(Message Passing Interface)等を利用することにより実現される。
【０００３】
プロセス並列処理を行う際に、各プロセス内でスレッド並列処理を行う並列処理はハイブリッド並列処理と呼ばれる。ハイブリッド並列処理においては、各プロセスの処理量（計算負荷）とスレッド数により各プロセスの処理時間が変わる。例えば、各プロセスの処理量が均一ではないにもかかわらずスレッド数が同じであれば、各プロセスの処理時間に差が生じる。このような場合、プロセス間の同期処理あるいはデータ転送処理のタイミングにおいて、先に終了したプロセスが他の実行中のプロセスの終了を待ち合わせる時間が発生する。このことにより、並列処理の実行性能が低下する（すなわち、並列処理全体の実行時間が増大する）。特に、ＨＰＣ(High Performance Computing)分野で利用されるアプリケーションプログラム等においては、その実行時間が長時間にわたるため、実行性能低下の影響が大きい。すなわち、実行性能低下の影響が蓄積されることが、アプリケーションプログラムの高速実行を阻害する大きな要因となり得る。
【０００４】
上記のような問題を防止するためには、各プロセスに適切なスレッド数を設定する必要がある。すなわち、処理量が多いプロセスのスレッド数を増やし、処理量が少ないプロセスのスレッド数を減らすことにより、並列処理の効果を上げることができる。例えば、ＯｐｅｎＭＰにおいては、利用者がプロセスごとのスレッド数を明示的に指定することができる。
【０００５】
しかしながら、適切なスレッド数の見積もりおよび決定は、プロセッサ数等のハードウェア構成やプロセス数等のソフトウェア設定、実行時の入力データ等を考慮する必要があり、非常に困難である。
【０００６】
このような問題点を解決する技術が特許文献１に記載されている。特許文献１に記載のハイブリッド並列処理システムは、直近の共有メモリ型並列処理（スレッド並列処理）の処理時間に基づき、各プロセス間のスレッド数調整を動的に行う。
【０００７】
また、特許文献２に記載の解析装置は、プロセス間通信の待機時間に基づいて、複数のプロセスに対する処理の配分状態を評価する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１８０７２５号公報
【特許文献２】特開２０１１−２０３９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したハイブリッド並列処理システムは、スレッド並列処理を実行する度にその処理時間を計測する必要がある。すなわち、全てのプロセスで時間計測処理が発生する。また、例えばプロセス間で処理時間が均一であるためスレッド数調整が不要な場合においても時間計測処理が発生する。このため、時間計測処理のオーバーヘッドが蓄積することにより、並列処理全体の性能が低下するという問題点がある。
【００１０】
本発明は、上述した課題を解決し、ハイブリッド並列処理における効率的な並列処理を実現することを主たる目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成する本発明に係るハイブリッド並列処理システムは、
並列処理される複数のプロセスを備え、
プロセスの各々が、
プロセスに割り当てられた処理を実行する１つ以上のスレッドと、
プロセス間のデータ転送処理を行うデータ転送処理手段と、
スレッド数の再設定を行うスレッド数再設定手段とを含み、
データ転送処理手段が、プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測手段を含み、転送待ち合わせ時間を他のプロセスと送受信し、
スレッド数再設定手段が、転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
【００１２】
また、上記目的を達成する本発明に係るハイブリッド並列処理方法は、
複数のプロセスを並列処理し、
プロセスの各々が割り当てられた処理を１つ以上のスレッドにより実行し、
プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
転送待ち合わせ時間をプロセスが他のプロセスと送受信し、
転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
【００１３】
そして、上記目的を達成する本発明に係るプログラムは、
複数のプロセスを並列処理可能なプロセッサを用いて、
プロセスの各々が割り当てられた処理を１つ以上のスレッドにより実行し、
プロセス間のデータ転送処理における転送待ち合わせ時間を計測し、
転送待ち合わせ時間をプロセスが他のプロセスと送受信し、
転送待ち合わせ時間に基づいてスレッド数の再設定を行う処理をコンピュータに実行させる。
【００１４】
なお、同目的は、係るプログラムを格納したコンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１５】
本発明によれば、ハイブリッド並列処理における効率的な並列処理を実現する。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。
【図２】本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１における、各プロセスのスレッド数既定値決定処理を説明するフローチャートである。
【図３】本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１における、各プロセスのスレッド数調整処理（プロセス間通信処理およびスレッド数再設定処理）を説明するフローチャートである。
【図４】本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１と、スレッド数調整処理を行わないハイブリッド並列処理システムの処理を比較説明する図である。
【図５】本発明の第２の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。
【図６】コンピュータを構成する要素の例を表すブロック構成図である。
【発明を実施するための形態】
【００１７】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
［第１の実施形態］
図１は、本発明の第１の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１は、プロセス１０−１〜１０−ｍを備える。プロセス１０−１〜１０−ｍは、それぞれ、スレッド１１−１〜１１−ｎと、スレッド数既定値設定部１２と、スレッド数再設定部１３と、データ転送処理部１４とを備える。データ転送処理部１４は、転送待ち合わせ時間計測部１４１を備える。
【００１９】
プロセス１０−１〜１０−ｍは、同一ホスト上で実行される複数のプロセスである。スレッド１１−１〜１１−ｎは、プロセスに割り当てられた処理を実行するために、各プロセスに割り当てられたスレッドである。プロセス１０−１〜１０−ｍのそれぞれに含まれるスレッドの数は、同じでもよいし、異なっていてもよい。スレッド数既定値設定部１２は、プロセス実行開始時にスレッド数の既定値を決定する。スレッド数再設定部１３は、後述する転送待ち合わせ時間（期間）に基づいて各プロセスのスレッド数を再設定する。データ転送処理部１４は、データ転送処理およびプロセス間同期処理を行う。転送待ち合わせ時間計測部１４１は、データ転送処理における転送待ち合わせ時間と、プロセス間同期処理における同期待ち合わせ時間を計測する。
【００２０】
図２は、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１における、各プロセスのスレッド数既定値決定処理を説明するフローチャートである。また、図３は、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１における、各プロセスのスレッド数調整処理（プロセス間通信処理およびスレッド数再設定処理）を説明するフローチャートである。以下、ハイブリッド並列処理システムＳ１の処理動作について図面を参照して詳細に説明する。
【００２１】
ハイブリッド並列処理によるプログラムの実行開始時、プロセス毎に、スレッド数既定値設定部１２が、スレッド数の既定値を決定する。図２を参照すると、最初に、スレッド数既定値設定部１２は、スレッド数指定用の環境変数を参照する（ステップＳ２０１）。なお、例えばＯｐｅｎＭＰにおいては、環境変数を介して利用者がスレッド数を指定することができる。
【００２２】
環境変数の指定が有る場合は（ステップＳ２０２においてＹＥＳ）、この環境変数に基づいてスレッド数が設定される（ステップＳ２０３）。環境変数の指定が無い場合は（ステップＳ２０２においてＮＯ）、システムの既定値からスレッド数が設定される（ステップＳ２０４）。
【００２３】
スレッド数が設定された後、プロセス並列処理が開始する。各プロセスは、スレッド並列処理を行い、その後でプロセス間通信処理（プロセス間同期処理またはプロセス間のデータ転送処理）を行う。なお、以降ではプロセス間のデータ転送処理を行う場合について説明するが、プロセス間同期処理を行う場合においても、転送待ち合わせ時間の計測およびスレッド数の再設定の処理は同様である。
【００２４】
図３を参照すると、プロセス間通信処理を行う際に、データ転送処理部１４は、データ転送処理が開始可能か否かを判断する（ステップＳ３０１）。直ちにデータ転送処理が開始可能であれば（ステップＳ３０１においてＹＥＳ）、転送待ち合わせ時間計測部１４１は、転送待ち合わせ時間＝ゼロとする（ステップＳ３０２）。そして、処理はステップＳ３０７へ進む。
【００２５】
一方で、データ転送処理が開始できない場合は（ステップＳ３０１においてＮＯ）、転送待ち合わせ時間計測部１４１は、転送待ち合わせ開始時刻（Ｓ）を取得する（ステップＳ３０３）。すなわち、転送待ち合わせ時間計測部１４１は、この時点の時刻を転送待ち合わせ開始時刻（Ｓ）として記憶する。なお、データ転送処理が開始できない理由としては、転送対象となるプロセス（転送相手のプロセス）がプロセス内の処理（スレッド並列処理等）を完了していないためにデータ転送の準備が整っていない場合等がある。
【００２６】
次に、データ転送処理部１４および転送待ち合わせ時間計測部１４１は、データ転送が可能になるまで待機する（ステップＳ３０４）。
【００２７】
待機状態が解けてデータ転送が開始できる状態になったことを検出すると、転送待ち合わせ時間計測部１４１は、転送待ち合わせ終了時刻（Ｅ）を取得する（ステップＳ３０５）。そして、転送待ち合わせ時間計測部１４１は、転送待ち合わせ時間（Ｅ−Ｓ）を計算する（ステップＳ３０６）。
【００２８】
その後、データ転送処理部１４は、データ転送処理を実行する（ステップＳ３０７）。データ転送処理の終了後、各プロセスは、転送待ち合わせ時間および現在のスレッド数を交換する。すなわち、転送待ち合わせ時間および現在のスレッド数をお互いに送受信する。そして、各プロセスのスレッド数再設定部１３は、自プロセスおよび他プロセスの転送待ち合わせ時間とスレッド数に基づき、後続のスレッド並列処理を実行するスレッド数を算出し、算出したスレッド数を新たなスレッド数として設定する。
【００２９】
以降において、新たなスレッド数を算出する手順および計算式について詳細に説明する。なお、これら手順および計算方法の概要（方針）は、以下の通りである。
・各プロセスの転送待ち合わせ時間と各プロセスのスレッド数との積を集計（総和を計算）し、その転送待ち合わせ時間の総和を全プロセスに均等に再配分する。すなわち、各スレッドの転送待ち合わせ時間の総和を全プロセス数で割った値（平均待ち合わせ時間）を求め、各プロセスに送信する。そして、各プロセスにおいて、各プロセスの転送待ち合わせ時間と再配分された転送待ち合わせ時間（平均待ち合わせ時間）を比較する。
・自プロセスの転送待ち合わせ時間が、再配分された転送待ち合わせ時間を上回る場合、現在割り当てられているスレッド数が過多である（処理量の少なさの割にスレッド数が多い）と見なす。そして、他プロセスに一部スレッドを譲渡する。
・自プロセスの転送待ち合わせ時間が、再配分された転送待ち合わせ時間を下回る場合、現在割り当てられているスレッド数が過少である（処理量の多さの割にスレッド数が少ない）と見なす。そして、他プロセスから一部スレッドを譲り受ける。
【００３０】
新たなスレッド数を算出する計算式に関する各変数を、下表のように定義する。
【００３１】
【表１】
2014092873.tif 000003
【００３２】
ＷａｖｅとＤｎは、それぞれ下記の計算式のように計算される。
2014092873.tif 000004
【００３３】
ここで、Ｄｎ＞０であれば、プロセスｎは、転送待ち合わせ時間が平均待ち合わせ時間Ｗａｖｅより長いため、割り当てられているスレッド数が過大であると見なされる。この場合、プロセスｎに割り当てられているスレッドの一部が他プロセスへ譲渡される。
【００３４】
Ｄｎ＞０であるプロセスの再設定後のプロセス数Ｔｎｎｅｗは以下のように求められる。まず、プロセスｎに再設定するスレッド数の最小値であるＴｎｍｉｎを下記の計算式で求める。
2014092873.tif 000005
【００３５】
次に、ＴｎｍｉｎからＴｎまでの平均値を計算することにより、Ｔｎｎｅｗを求める。あるいは、Ｔｎｍｉｎの数値からＴｎの数値までの中央値を求めることにより、Ｔｎｎｅｗを求めてもよい。例えば、下記の計算式によりＴｎｎｅｗが求められる。
2014092873.tif 000006
【００３６】
一方、Ｄｎ＜０であれば、プロセスｎは、転送待ち合わせ時間が平均待ち合わせ時間Ｗａｖｅより短いため、割り当てられているスレッド数が過少であると見なされる。この場合、プロセスｎは他プロセスからスレッドの譲渡を受ける。譲渡を受けるスレッド数は、Ｄｎ＞０であるプロセスから譲渡された全スレッドを、Ｄｎ＜０であるプロセス間でＤｎの大きさ（比率）に応じて分配することにより求められる。
【００３７】
例えば、
2014092873.tif 000007
【００３８】
とした場合、Ｄｎ＜０であるプロセスの再設定後のプロセス数Ｔｎｎｅｗは下記の計算式により求められる。
2014092873.tif 000008
【００３９】
以下、プロセス数が２（ｐ＝２）である場合における、スレッド数調整処理（新たなスレッド数の計算）の例を説明する。
【００４０】
以降の説明において、２つのプロセスのそれぞれを「プロセス１」，「プロセス２」と呼称する。開始時におけるプロセス１とプロセス２のスレッド数は共に８（Ｔ１＝Ｔ２＝８）である。プロセス１は計算負荷が低かったため、プロセス２より先にプロセス間通信処理が開始したことにより、４秒の転送待ち合わせ時間が発生した（Ｗ１＝４）。一方、プロセス２は計算負荷が高かったため、プロセス間通信処理開始後直ちにデータ転送が可能であったことにより、転送待ち時間はゼロであった（Ｗ２＝０）。以上により、
2014092873.tif 000009
【００４１】
である。Ｄ１＞０かつＤ２＜０であるため、プロセス１からプロセス２へのスレッドの譲渡が行われる。
【００４２】
プロセス１のスレッド数の調整（新たなスレッド数Ｔ１ｎｅｗの計算）は以下のように行われる。
2014092873.tif 000010
【００４３】
すなわち、プロセス１のスレッド数が８から６に減少する。そして、減少した２スレッドが他プロセスへ譲渡される。
【００４４】
プロセス２のスレッド数の調整（新たなスレッド数Ｔ２ｎｅｗの計算）は以下のように行われる。
2014092873.tif 000011
【００４５】
すなわち、プロセス１から譲渡された２スレッドがプロセス２に割り当てられることにより、プロセス２のスレッド数が８から１０に増加する。
【００４６】
図４は、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１と、スレッド数調整処理を行わないハイブリッド並列処理システムの処理を比較説明する図である。図４の左側の（ａ）は、スレッド数調整処理を行わないハイブリッド並列処理システムの処理を表わしている。図４の右側の（ｂ）は、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１の処理を表わしている。図４の（ａ）および（ｂ）においては、プロセス数は共に２であるものとする。
【００４７】
図４の（ａ）を参照すると、スレッド数調整処理を行わないハイブリッド並列処理システムは、処理量が少ないプロセス１のスレッド並列処理Ｉが先に終了する。このため、プロセス１においては、プロセス間通信処理の段階で、プロセス２のスレッド並列処理Ｉが終了するまで通信待ちの時間（転送待ち合わせ時間）が発生する。そして、後続の処理においても、プロセス１の処理量が少ないため、先程と同様に処理量が少ないプロセス１のスレッド並列処理ＩＩが先に終了する。このため、プロセス１に常に待ち合わせの時間が発生する。
【００４８】
一方で、図４の（ｂ）を参照すると、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１は、プロセス間通信処理の段階で、通信待ち時間の交換を行う。そして、通信待ち時間に基づいて、各プロセスの負荷に応じたスレッド数再設定を行う。すなわち、処理量が多いプロセス１のスレッド数が増加し、処理量が少ないプロセス２のスレッド数が減少する。このように各プロセスのスレッド数が処理量に応じた数に調整されることにより、後続の処理において各プロセスの処理時間（スレッド並列処理ＩＩの処理時間）が平準化する。このことにより、転送待ち合わせ時間が減少するため、並列処理全体の実行時間が短縮する。すなわち、並列処理の効率が改善される。
【００４９】
以上のように、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１は、転送待ち合わせ時間計測部１４１が計測する転送待ち合わせ時間に基づいて、スレッド数再設定部１３が各プロセスのスレッド数を処理量に応じた数に再設定する。このことにより、各プロセスの処理時間が平準化するため、転送待ち合わせ時間が減少し、並列処理全体の実行時間が短縮する。このように、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１は、プロセス間の動的な負荷分散を行うことにより、並列処理の効率を改善する。
【００５０】
また、転送待ち合わせ時間計測部１４１は、転送待ち合わせ時間が存在しない場合（プロセス間通信処理を行う際に、直ちにデータ転送処理が開始可能な場合）、時間計測処理を行わない。このため、全てのプロセスで時間計測処理が発生する特許文献１に記載のハイブリッド並列処理システムに比べ、本発明の第１の実施形態に係るハイブリッド並列処理システムＳ１は、時間計測処理による性能低下が少ない。
【００５１】
［第２の実施形態］
次に、本発明の第２の実施の形態を説明する。
【００５２】
図５は、本発明の第２の実施形態に係るハイブリッド並列処理システムの構成を表すブロック構成図である。本発明の第２の実施形態に係るハイブリッド並列処理システムＳ２は、並列処理される複数のプロセスであるプロセス１０−１〜１０−ｍを備える。プロセス１０−１〜１０−ｍは、それぞれ、各プロセスに割り当てられた処理を実行する１つ以上のスレッドであるスレッド１１−１〜１１−ｎと、スレッド数の再設定を行うスレッド数再設定部１３と、プロセス間のデータ転送処理を行うデータ転送処理部１４とを備える。データ転送処理部１４は、プロセス間のデータ転送処理における転送待ち合わせ時間を計測する転送待ち合わせ時間計測部１４１を備える。
【００５３】
転送待ち合わせ時間計測部１４１は、転送待ち合わせ時間を他のプロセスと送受信する。そして、スレッド数再設定部１３は、転送待ち合わせ時間に基づいてスレッド数の再設定を行う。
【００５４】
以上のように、本発明の第２の実施形態に係るハイブリッド並列処理システムＳ２は、転送待ち合わせ時間計測部１４１が計測する転送待ち合わせ時間に基づいて、スレッド数再設定部１３が各プロセスのスレッド数を再設定する。このことにより、各プロセスの処理時間が平準化するため、転送待ち合わせ時間が減少し、並列処理全体の実行時間が短縮する。このように、本発明の第２の実施形態に係るハイブリッド並列処理システムＳ１は、並列処理の効率を改善する。
【００５５】
図６は、コンピュータを構成する要素の例を表すブロック構成図である。図６のコンピュータ９００は、ＣＰＵ(Central Processing Unit)９１０と、ＲＡＭ(Random Access Memory)９２０と、ＲＯＭ(Read Only Memory)９３０と、ハードディスクドライブ９４０と、通信インタフェース９５０とを備える。ＣＰＵ９１０は、ＣＰＵコア９１１および９１２を含む。
【００５６】
コンピュータ９００は、他のコンピュータ９００と通信インタフェース９５０により図示しないネットワーク等を介して接続されていてもよい。この場合、複数のコンピュータ９００は、お互いにデータの送受信が可能なように構成される。
【００５７】
ＣＰＵ９１０は、複数のプロセスを並列処理可能である。ＣＰＵ９１０に含まれるＣＰＵコアの数は２個でなくともよい。また、ＣＰＵ９１０は、単一のＣＰＵではなく、複数のＣＰＵからなるマルチプロセッサであってもよい。
【００５８】
前述したハイブリッド並列処理システムＳ１およびＳ２の構成要素は、プログラムがコンピュータ９００のＣＰＵ９１０において実行されることにより実現されてもよい。具体的には、前述した図１あるいは５に記載の構成要素である、スレッド数既定値設定部１２，スレッド数再設定部１３，データ転送処理部１４および転送待ち合わせ時間計測部１４１は、ＣＰＵ９１０がＲＯＭ９３０あるいはハードディスクドライブ９４０からプログラムを読み込み、読み込んだプログラムを、例えば図３および４に示したフローチャートの手順の如くＣＰＵ９１０が実行することにより実現されてもよい。そして、このような場合において、上述した実施形態を例に説明した本発明は、係るコンピュータプログラムを表わすコードあるいはそのコンピュータプログラムを表わすコードが格納されたコンピュータ読み取り可能な記憶媒体（例えばハードディスクドライブ９４０や、不図示の着脱可能な磁気ディスク媒体，光学ディスク媒体やメモリカード等）によって構成されると捉えることができる。
【００５９】
あるいは、スレッド数既定値設定部１２，スレッド数再設定部１３，データ転送処理部１４および転送待ち合わせ時間計測部１４１は、専用のハードウェアで実現されてもよい。また、ハイブリッド並列処理システムＳ１およびＳ２は、これら構成要素を備える専用のハードウェアであってもよい。
【符号の説明】
【００６０】
Ｓ１，Ｓ２    ハイブリッド並列処理システム
１０−１〜１０−ｍ    プロセス
１１−１〜１１−ｎ    スレッド
１２    スレッド数既定値設定部
１３    スレッド数再設定部
１４    データ転送処理部
１４１    転送待ち合わせ時間計測部
９００    コンピュータ
９１０    ＣＰＵ
９１１，９１２    ＣＰＵコア
９２０    ＲＡＭ
９３０    ＲＯＭ
９４０    ハードディスクドライブ
９５０    通信インタフェース
【図１】
2014092873.tif 000012
【図２】
2014092873.tif 000013
【図３】
2014092873.tif 000014
【図４】
2014092873.tif 000015
【図５】
2014092873.tif 000016
【図６】
2014092873.tif 000017