(57)【要約】  並列データ処理システムを複数のデータフロープログラムによって時分割利用する場合においてシステム性能及び資源の利用効率を向上させる。スケジューリング装置は、第１及び第２のデータフロープログラムを参照して、両データフロープログラムを表す第１及び第２のＤＡＧと、両ＤＡＧの節点に相当する処理の実行順序を表す第１及び第２の処理実行順序情報と、をそれぞれ生成するプログラム解析部と、第１及び第２の処理実行順序情報に基いて、第１及び第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当部と、第１及び第２のＤＡＧ並びに第１及び第２の処理実行順序情報を参照して、第１及び第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当部を有する。（図１）
2011078162.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成するプログラム解析部と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当部と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当部と、を備えていることを特徴とするスケジューリング装置。
【請求項２】
前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの節点に相当する処理に用いられるデータの割り当てと、前記第２のＤＡＧの節点に相当する処理に用いられるデータの割り当てとを、各処理が終了する度に交互に繰り返すことを特徴とする、請求項１に記載のスケジューリング装置。
【請求項３】
前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てと、前記第２のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てとを、これらの複数の処理のそれぞれが終了する度に交互に繰り返すことを特徴とする、請求項１に記載のスケジューリング装置。
【請求項４】
前記データ割当部は、前記複数のデータ処理装置に対して割り当てられたデータに対する、前記第１のＤＡＧ又は前記第２のＤＡＧのうちの一方のＤＡＧの節点に相当する処理が、所定の期間の経過前に終了しなかった場合には、他方のＤＡＧの節点に相当する処理に用いられるデータを前記複数のデータ処理装置に割り当てることを特徴とする、請求項２又は３に記載のスケジューリング装置。
【請求項５】
前記データ割当部は、前記複数のデータ処理装置に割り当てたデータを対象とする処理を識別する処理識別子を生成し、
前記処理割当部は、前記処理識別子を参照して、前記複数のデータ処理装置に処理を割り当てることを特徴とする、請求項１乃至４のいずれか１項に記載のスケジューリング装置。
【請求項６】
前記データ割当部は、第１の処理の後に第２の処理を実行する実行順序が前記第１の処理実行順序情報及び前記第２の処理実行順序情報の少なくともいずれか一方に含まれ、該第２の処理に使用されるデータが前記ストレージ装置の記憶部に記録されている場合において、前記複数のデータ処理装置のうちのいずれかのデータ処理装置から該第１の処理を終了した旨の信号を受信したときには、該第１の処理に使用されるデータを該データ処理装置の記憶部から前記ストレージ装置の記憶部に転送させるとともに、該第２の処理に使用されるデータを前記ストレージ装置の記憶部から該データ処理装置の記憶部に送信させることを特徴とする、請求項１乃至５のいずれか１項に記載のスケジューリング装置。
【請求項７】
前記プログラム解析部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を、前記複数のデータ処理装置のうちのいずれのデータ処理装置に割り当てるかを示すデータ処理装置割当リストを出力し、
前記データ割当部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、前記ストレージ装置の記憶部と前記データ処理装置割当リストに含まれるデータ処理装置の記憶部との間において入れ替えることを特徴とする、請求項１乃至６のいずれか１項に記載のスケジューリング装置。
【請求項８】
前記データ割当部は、さらに前記ストレージ装置の性能を示す情報を参照し、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報に含まれる実行順序を変更すべきか否かを判定し、変更すべきと判定した場合には、変更内容を含む変更依頼を前記プログラム解析部に出力し、
前記プログラム解析部は、前記変更依頼に応じて、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報を変更して、前記処理割当部及び前記データ割当部に出力することを特徴とする、請求項１乃至７のいずれか１項に記載のスケジューリング装置。
【請求項９】
コンピュータが、第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する工程と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当工程と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当工程と、を含むことを特徴とするスケジューリング方法。
【請求項１０】
第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する処理と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替える処理と、をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２００９−２９３０８２号（２００９年１２月２４日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、スケジューリング装置、スケジューリング方法及びプログラムに関し、特に、並列データ処理システムにおけるスケジューリング装置、スケジューリング方法及びプログラムに関する。
【背景技術】
【０００２】
並列データ処理システムにおいては、ネットワークに並列に接続された複数の計算機に処理するデータを記憶させ、複数の計算機で並列にデータ処理を行う。並列データ処理システムの典型的な方式として、処理に応じてデータを配置する並列データベース方式（非特許文献１）と、データ配置に応じて処理を配置するＭａｐＲｅｄｕｃｅ方式（非特許文献２）がある。ＭａｐＲｅｄｕｃｅ方式では、データは、内容に拠らずに分割され、並列データ処理システムを構成する計算機に格納される。【０００３】
並列データ処理システムにおいてデータを処理して結果を得るためのプログラムは、処理内容を節点とし、データの流れを枝とする有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）構造によって表現することができる。かかるプログラムを、データフロープログラムと呼ぶ。【０００４】
非特許文献１に記載された並列データベースでは、ＳＱＬ等のクエリ言語で記載された一連のプログラムが、クエリオプティマイザと呼ばれるシステム内部処理の一部によって、ＤＡＧ構造のクエリ木に変換される。また、非特許文献３に記載されたＰｉｇ  Ｌａｔｉｎ及び非特許文献４に記載されたＤｒｙａｄＬＩＮＱでは、プログラムを記述するユーザが直接ＤＡＧ構造のプログラムを記述する。【０００５】
ＤＡＧ構造で表現されたデータフロープログラムは、処理スケジューラ機能により、利用するシステムにおける処理動作に変換されて順に実行される。非特許文献３に記載されたＰｉｇ  Ｌａｔｉｎ及び非特許文献５に記載されたＨａｄｏｏｐでは、ＤＡＧ構造の各節点にあたる処理内容は、処理スケジューラ機能（ＪｏｂＴｒａｃｋｅｒ）によって、ＭａｐＲｅｄｕｃｅ処理に変換されて実行される。【０００６】
複数の計算機によって構成されたシステムを時分割して利用する技術は、並列計算機上の計算スケジューリングとして多数知られている。非特許文献６において、複数の計算機にまたがる処理を、異なる処理に置き換えるギャングスケジュール技術が記載されている。特許文献１に記載された技術では、さらに、処理をプロセスからギャンググループという単位に分割して時分割利用している。また、特許文献２に記載されたスケジュール方式では、ジョブが複数のプロセスから成る場合に、各計算機上でのプロセスの切り替えにジョブの情報を利用する。【０００７】
複数のデータ処理プログラムを時分割で置き換えるには、処理に利用する計算機以外に、使用しないデータを蓄えるための記憶装置（以下「ストレージ装置」という。）を用いる。ところで、複数の計算機又は記憶装置にまたがるデータを入れ替える技術が知られている。特許文献３に記載された方法によると、データの利用傾向を反映してデータを再展開することができる。また、特許文献４に記載された方法によると、処理を停止することなく、データセットを入れ替えることができる。このようにデータ処理プログラムを時分割で置き換える制御を行う機能を、以下では、データスケジューラ機能又はデータ割当機能という。【０００８】
なお、非特許文献７において、処理の途中で生成された中間データを破棄せずに保持することで、システムを高速化する技術が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第３８８５７４８号公報
【特許文献２】特開２００１−２４９８２１号公報
【特許文献３】特願２００９−０８３４２６号
【特許文献４】特願２００９−２０２５４３号
【非特許文献】
【００１０】
【非特許文献１】Ｄａｖｉｄ  Ｊ．  ＤｅＷｉｔｔ  ａｎｄ  Ｊｉｍ  Ｇｒａｙ，“Ｐａｒａｌｌｅｌ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍｓ：Ｔｈｅ  Ｆｕｔｕｒｅ  ｏｆ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｄａｔａｂａｓｅ  Ｐｒｏｃｅｓｓｉｎｇ，”Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，Ｖｏｌ．３６，Ｎｏ．６，Ｊｕｎｅ，１９９２．
【非特許文献２】Ｊｅｆｆｒｅｙ  Ｄｅａｎ  ａｎｄ  Ｓａｎｊａｙ  Ｇｈｅｍａｗａｔ，“ＭａｐＲｅｄｕｃｅ：Ｓｉｍｐｌｉｆｉｅｄ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  ｏｎ  Ｌａｒｇｅ  Ｃｌｕｓｔｅｒｓ，”ｉｎ  ｔｈｅ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ６ｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ（ＯＳＤＩ  ０４），Ｄｅｃｅｍｂｅｒ，２００４．
【非特許文献３】Ｃｈｒｉｓｔｏｐｈｅｒ  Ｏｌｓｔｏｎ，  ｅｔ．  ａｌ．，“Ｐｉｇ  Ｌａｔｉｎ：Ａ  Ｎｏｔ−Ｓｏ−Ｆｏｒｅｉｇｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ，”ＳＩＧＭＯＤ’０８，Ｊｕｎｅ，２００８．
【非特許文献４】Ｙｕａｎ  Ｙｕ，  ｅｔ．  ａｌ．，“ＤｒｙａｄＬＩＮＱ：  Ａ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ−Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｓｉｎｇ  ａ  Ｈｉｇｈ−Ｌｅｖｅｌ  Ｌａｎｇｕａｇｅ，”  ｉｎ  ｔｈｅ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ８ｔｈ  ＵＳＥＮＩＸ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｄｅｓｇｉｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ（ＯＳＤＩ０８），Ｄｅｃｅｍｂｅｒ，２００８．
【非特許文献５】Ａｐａｃｈｅ  Ｈａｄｏｏｐ，［２００９年９月２８日検索］インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｈａｄｏｏｐ．ａｐａｃｈｅ．ｏｒｇ／＞，［ｏｎｌｉｎｅ］
【非特許文献６】Ａｔｓｕｓｈｉ  Ｈｏｒｉ，  ｅｔ．  ａｌ．，“Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｇａｎｇ−Ｓｃｈｅｄｕｌｉｎｇ  ｏｎ  Ｗｏｒｋｓｔａｔｉｏｎ  Ｃｌｕｓｔｅｒ，”Ｊｏｂ  Ｓｃｈｅｄｕｌｉｎｇ  Ｓｔｒａｔｅｇｉｅｓ  ｆｏｒ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｉｎｇ，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，Ｖｏｌ．１１６２，ｐｐ．１２６−１３９，１９９６．
【非特許文献７】Ｍｉｌｅｎａ  Ｇ．  Ｉｖａｎｏｖａ，  ｅｔ．  ａｌ．，“Ａｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｒｅｃｙｃｌｉｎｇ  Ｉｎｔｅｒｍｅｄｉａｔｅｓ  ｉｎ  ａ  Ｃｏｌｕｍｎ−ｓｔｏｒｅ，”ＳＩＧＭＯＤ’０９，Ｊｕｎｅ，２００９
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者によってなされたものである。
処理スケジューラ機能（ないし処理割当機能）によって、並列データ処理システムに複数のデータフロープログラムを割り当てるとともに、並列データ処理システムを時分割で利用することを考える。【００１２】
特許文献１、２及び非特許文献６に記載された並列計算機向けのスケジューリング技術では、プロセス間の同期について言及しているものの、利用しているデータのフローについては言及していない。また、非特許文献１〜７に記載された並列データ処理システムでは、時分割利用については言及しておらず、これらのシステムと特許文献３、４に記載された技術との組み合わせによると、処理スケジューラとデータスケジューラとが個別に動作し、システムが非効率になる。【００１３】
非効率化の要因の１つとして、処理の実行中に発生する処理の入れ替えが挙げられる。すなわち、処理スケジューラによって割り当てられた、データフロープログラム内の１つの処理が行われている間に、データスケジューラによって、時分割でこの処理と他の処理との入れ替えが行われる。計算機が高速かつ低容量の記憶素子を用いて頻繁に扱うデータを処理するキャッシュ機構を有している場合、データスケジューラによる入れ替えが発生すると、キャッシュヒット率が減少して処理時間が増大する。また、処理中に中間データを破棄しない上述の機能を利用した場合には、処理中に入れ替え対象となるデータの量が処理の前後の時点よりもはるかに多くなり、データの入れ替えのための時間が増大する。【００１４】
非効率化の他の要因として、ストレージ装置の性能の飽和が挙げられる。ストレージ装置が複数の下層データ記憶部から成る場合、デバイス及びネットワークの性能に応じて、下層データ記憶部のデータ転送能力は制限される。したがって、多数のデータ処理装置が同一の下層データ記憶部とデータのやり取りを行うと、データ転送量がデータ転送能力によって制限され、データ処理装置当りのデータ転送速度が減少してしまうことがある。【００１５】
非効率化のさらに他の要因として、データ再利用情報を用いないことが挙げられる。例えば、処理Ａと処理Ｂとが同一のデータを処理する場合には、処理Ａの後に処理Ｂを行うことにより、処理Ａのデータ退避及び処理Ｂのデータ挿入を省略することができる。しかしながら、データスケジューラが処理の順序とデータの流れを把握していない場合には、このようなことを実現することはできない。【００１６】
そこで、並列データ処理システムを複数のデータフロープログラムによって時分割利用する場合において、システム性能及び資源の利用効率を向上させることが課題となる。本発明の目的は、かかる課題を解決するスケジューリング装置、スケジューリング方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明の第１の視点に係るスケジューリング装置は、
第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成するプログラム解析部と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当部と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当部と、を有する。【００１８】
本発明の第２の視点に係るスケジューリング方法は、
コンピュータが、第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する工程と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当工程と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当工程と、を含む。【００１９】
本発明の第３の視点に係るプログラムは、
第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する処理と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替える処理と、をコンピュータに実行させる。
【発明の効果】
【００２０】
本発明に係るスケジューリング装置、スケジューリング方法及びプログラムによると、並列データ処理システムを複数のデータフロープログラムによって時分割利用する場合において、システム性能及び資源の利用効率を向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】第１の実施形態に係る並列データ処理システムの構成を示すブロック図である。
【図２】第１の実施形態に係る並列データ処理システムの物理的な構成を示すブロック図である。
【図３】第１の実施形態に係る並列データ処理システムにおける並列データ処理に係る機能を示すブロック図である。
【図４】第１の実施形態に係る並列データ処理システムにおける並列データセットの時分割利用に係る機能を示すブロック図である。
【図５】ＤＡＧ構造で表されたデータフロープログラムを一例として示す図である。
【図６】第２の実施形態に係る並列データ処理システムの構成を示すブロック図である。
【図７】第２の実施形態に係る並列データ処理システムの他の構成を示すブロック図である。
【図８】第３の実施形態に係る並列データ処理システムの構成を示すブロック図である。
【図９】第３の実施形態に係る並列データ処理システムの他の構成を示すブロック図である。
【図１０】第３の実施形態に係る並列データ処理システムのスケジューリング装置におけるデータ処理装置割当リストを一例として示す図である。
【図１１】第４の実施形態に係る並列データ処理システムの構成を示すブロック図である。
【図１２】第５の実施形態に係る並列データ処理システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
第１の展開形態によると、上記第１の視点に係るスケジューリング装置が提供される。
【００２３】
第２の展開形態によると、
前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの節点に相当する処理に用いられるデータの割り当てと、前記第２のＤＡＧの節点に相当する処理に用いられるデータの割り当てとを、各処理が終了する度に交互に繰り返す、スケジューリング装置が提供される。
【００２４】
第３の展開形態によると、
前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てと、前記第２のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てとを、これらの複数の処理のそれぞれが終了する度に交互に繰り返す、スケジューリング装置が提供される。
【００２５】
第４の展開形態によると、
前記データ割当部は、前記複数のデータ処理装置に対して割り当てられたデータに対する、前記第１のＤＡＧ又は前記第２のＤＡＧのうちの一方のＤＡＧの節点に相当する処理が、所定の期間の経過前に終了しなかった場合には、他方のＤＡＧの節点に相当する処理に用いられるデータを前記複数のデータ処理装置に割り当てる、スケジューリング装置が提供される。
【００２６】
第５の展開形態によると、
前記データ割当部は、前記複数のデータ処理装置に割り当てたデータを対象とする処理を識別する処理識別子を生成し、
前記処理割当部は、前記処理識別子を参照して、前記複数のデータ処理装置に処理を割り当てる、スケジューリング装置が提供される。
【００２７】
第６の展開形態によると、
前記データ割当部は、第１の処理の後に第２の処理を実行する実行順序が前記第１の処理実行順序情報及び前記第２の処理実行順序情報の少なくともいずれか一方に含まれ、該第２の処理に使用されるデータが前記ストレージ装置の記憶部に記録されている場合において、前記複数のデータ処理装置のうちのいずれかのデータ処理装置から該第１の処理を終了した旨の信号を受信したときには、該第１の処理に使用されるデータを該データ処理装置の記憶部から前記ストレージ装置の記憶部に転送させるとともに、該第２の処理に使用されるデータを前記ストレージ装置の記憶部から該データ処理装置の記憶部に送信させる、スケジューリング装置が提供される。
【００２８】
第７の展開形態によると、
前記プログラム解析部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を、前記複数のデータ処理装置のうちのいずれのデータ処理装置に割り当てるかを示すデータ処理装置割当リストを出力し、
前記データ割当部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、前記ストレージ装置の記憶部と前記データ処理装置割当リストに含まれるデータ処理装置の記憶部との間においてのみ入れ替えることを特徴とする、スケジューリング装置が提供される。
【００２９】
第８の展開形態によると、
前記データ割当部は、さらに前記ストレージ装置の性能を示す情報を参照し、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報に含まれる実行順序を変更すべきか否かを判定し、変更すべきと判定した場合には、変更内容を含む変更依頼を前記プログラム解析部に出力し、
前記プログラム解析部は、前記変更依頼に応じて、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報を変更して、前記処理割当部及び前記データ割当部に出力する、スケジューリング装置が提供される。
【００３０】
第９の展開形態によると、上記第２の視点に係るスケジューリング方法が提供される。
【００３１】
第１０の展開形態によると、上記第３の視点に係るプログラムが提供される。
【００３２】
第１１の展開形態によると、上記第１０の展開形態に係るプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【００３３】
（実施形態１）
第１の実施形態に係る並列データ処理システムについて、図面を参照して説明する。図２は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。図２を参照すると、並列データ処理システムは、ネットワーク８０を介して接続された、１又は２以上のデータ処理装置５０ａ−１〜５０ａ−ｎ、ストレージ装置４０ａ及びスケジューリング装置１０ａを有する。また、並列データ処理システムを利用するユーザが用いる計算機であるユーザ装置７０も、ネットワーク８０に接続されている。図２においては、一例として、データ処理装置の台数を３台とした（ｎ＝３）が、データ処理装置の台数はこれに限られない。
【００３４】
データ処理装置５０ａ−ｉ（ｉ＝１、２、…）は、それぞれ、ＣＰＵ７１、データ記憶部７２及びデータ転送部７３を有する。ＣＰＵ７１により、後述する分散データ排出部、データ受信部、データ処理部を実現する。データ記憶部７２により、後述する上層データ記憶部を実現する。ＣＰＵ７１及びとデータ転送部７３により、後述するデータ受信部を実現する。
【００３５】
ストレージ装置４０ａは、ＣＰＵ８１、データ記憶部８２及びデータ転送部８３を有する。ＣＰＵ８１及びデータ転送部８３により、後述するデータ転送部を実現する。ＣＰＵ８１及びデータ記憶部８２により、後述する下層データ記憶部を実現する。
【００３６】
スケジューリング装置１０ａは、ＣＰＵ９１、データ記憶部９２及びデータ転送部９３を有する計算機である。ＣＰＵ９１、データ記憶部９２及びデータ転送部９３を用いて、後述するプログラム解析部、処理割当部、データ割当部を実現する。
【００３７】
スケジューリング装置１０ａは、図２のような単一の計算機でもよい。また、スケジューリング装置１０ａを複数の計算機によって実現し、各計算機がスケジューリング装置１０ａの複数の機能のそれぞれを個別に実行するようにしてもよい。また、データ処理装置５０ａ−ｉの一部又はストレージ装置４０ａが、スケジューリング装置１０ａの機能を代替するようにしてもよい。
【００３８】
データ記憶部７２、８２、９２は、例えば、ハードディスクドライブ、フラッシュメモリ、ＤＲＡＭ、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  ＲＡＭ）、ＲＡＩＤコントローラに結合された記憶装置、磁気テープのようにデータを記録可能な物理媒体、又は、ストレージノードの外部に設置された媒体にデータを記録する制御装置である。
【００３９】
ネットワーク８０及びデータ転送部７３、８３、９３は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ＦＣｏＥ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（登録商標））、ＩｎｆｉｎｉＢａｎｄ、ＱｓＮｅｔ、Ｍｙｒｉｎｅｔ若しくはＥｔｈｅｒｎｅｔ、又は、これらを利用するＴＣＰ／ＩＰ若しくはＲＤＭＡのような上位プロトコルによって実現しうる。ただし、ネットワーク８０の実現方法は、これらに限られない。
【００４０】
まず、図３を参照して、並列データ処理に係る機能について説明する。
【００４１】
データ処理装置５０ａ−ｉは、上層データ記憶部６１に処理されるデータを記憶する。複数のデータ処理装置５０ａ−１〜５０ａ−ｎがある場合、１つの処理内容に必要なデータセットは分割され、それぞれ個別のデータ処理装置５０ａ−ｉに格納されている。例えば、データセットに含まれる個々のデータの識別子、又は、識別子をハッシュ関数で処理した値の範囲を分割することで、どのデータがどのデータ処理装置５０ａ−ｉに格納されるかを決定するハッシュ分割を利用することができる。また、任意のデータを任意の上層データ記憶部６１に格納する任意配置を利用することもできる。なお、データの配置方法は、これらに限られない。
【００４２】
図３を参照すると、スケジューリング装置１０ａは、プログラム解析部２１及び処理割当部２２を有する。
【００４３】
プログラム解析部２１は、ユーザ装置７０からのプログラムを受信し、プログラムを実行するデータ処理装置５０ａ−ｉを特定し、処理制御を行う。
【００４４】
ユーザからのプログラムは、データに対する複数の処理内容と、処理に利用するデータを指し示す利用データ情報と、処理の順序制約とが記載されたデータフロープログラムである。データフロープログラムは、処理内容を節点とし、処理に利用するデータを指し示す利用データ情報を枝とする、有向無閉路グラフ（ＤＡＧ）構造によって表すことができる。
【００４５】
図５は、ＤＡＧ構造で表されたデータフロープログラムを一例として示す図である。データフロープログラムは、一例として、非特許文献３、４に記載された言語でデータフロー構造を直接記載したプログラムである。また、データフロープログラムは、ユーザによる、ＳＱＬ等のクエリ言語に基くプログラムを、データベース管理システムのクエリオプティマイザによって変換して得られたクエリ木を表す情報であってもよい。なお、データフロープログラムは、これらに限定されない。
【００４６】
プログラム解析部２１は、入力されたデータフロープログラムを解釈し、利用可能なデータ処理装置５０ａ−ｉの性能及び空き情報、並びに、利用するデータの配置情報に基いて、データ処理実行順序を決定する。
【００４７】
例えば、データ配置が任意配置である場合には、ＤＡＧの節点における処理内容を、全ノードに対するＭａｐ処理及びＲｅｄｕｃｅ処理に分解して実行することができる。また、個別のデータロード処理を割り当て、そのデータ量に応じた計算量を計算し、計算量が最小となる順に、ＤＡＧの節点を各データ処理装置に配置してもよい。なお、プログラム解析部２１による処理実行順序を決定する方法は、これらに限定されない。
【００４８】
処理割当部２２は、プログラム解析部２１により決定された処理実行順序を表す処理実行順序情報に基いて、データ処理装置５０ａ−ｉのデータ処理部６５を制御し、実際にデータの処理を行わせる。
【００４９】
次に、図４を参照して、並列データセットの時分割利用に係る機能について説明する。
【００５０】
図４を参照すると、ストレージ装置４０ａは、下層データ記憶部４５及びデータ転送部４６を有する。
【００５１】
下層データ記憶部４５は、複数の処理の対象とされるデータを格納している。
【００５２】
データ転送部４６は、格納するデータの一部をデータ転送命令に応じてデータ処理装置５０ａ−ｉにコピー又は移動する。
【００５３】
図４を参照すると、データ処理装置５０ａ−ｉは、上層データ記憶部６１、分散データ排出部６２、データ受信部６３及びデータ処理部６５を有する。
【００５４】
上層データ記憶部６１は、少なくとも１つの処理の対象となるデータを格納している。
【００５５】
データ受信部６３は、ストレージ装置４０ａから送信されたデータを上層データ記憶部６１に格納する。
【００５６】
分散データ排出部６２は、データ処理排出命令によって、上層データ記憶部６１のデータの一部と、現在のデータ処理部６５の処理時点で復元可能な情報を表す処理情報を、データ処理排出命令によって示されたストレージ装置４０ａの下層データ記憶部４５にコピー又は移動する。
【００５７】
分散データ排出部６２は、例えば、特許文献４に記載された方法によって実現した場合には、データ処理装置の処理を停止することなくデータを排出することができる。また、データ処理部６５がＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）上で動作する場合には、分散データ排出部６２は、ＶＭマイグレーション機能及びチェックポイント機能を用いて、処理とデータを記録可能なデータに変換してストレージ装置４０ａに送信してもよい。
【００５８】
図４を参照すると、スケジューリング装置１０ａは、データ割当部２３をさらに有する。
【００５９】
データ割当部２３は、データ転送命令を発行することにより、ストレージ装置４０ａからデータ処理装置５０ａ−ｉにデータを転送する。また、データ割当部２３は、データ処理排出命令を発行することにより、データ処理装置５０ａ−ｉからストレージ装置４０ａにデータを排出する。なお、データ割当部２３は、データ転送命令及びデータ処理排出命令を同時に発行することにより、上層データ記憶部６１と下層データ記憶部４５との間でデータを入れ替えることができる。
【００６０】
このとき、特許文献３に記載された方法によると、下層データ記憶部４５から上層データ記憶部６１にさらにデータを転送する場合に、次の処理に適したデータ配置にすることができる。
【００６１】
図１は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。図１の並列データ処理システムは、並列データセットの時分割利用を行う並列データ処理システムである。なお、図１には、以下の情報のやり取りも記載されている。
【００６２】
図１を参照すると、スケジューリング装置１０は、プログラム解析部２１、処理割当部２２及びデータ割当部２３を有する。
【００６３】
プログラム解析部２１は、データフロープログラムを入力とし、処理割当部２２に処理実行順序情報を出力し、データ割当部２３に処理実行順序情報と、データフロープログラムのＤＡＧ構造を表すＤＡＧ構造情報とを出力する。
【００６４】
データ割当部２３は、処理実行順序情報及びＤＡＧ構造情報に基いて、上層データ記憶部６１と下層データ記憶部４５との間で効率良くデータを入れ替えることができるタイミングで、データ転送命令及びデータ処理排出命令を出力する。
【００６５】
例えば、図５における処理は、Ｌｏａｄ２、Ｆｉｌｔｅｒ１、Ｌｏａｄ１、Ｍｉｎｉｎｇ、Ｌｏａｄ３、Ｆｉｌｔｅｒ２、Ｓｔａｔｉｓｔｉｃａｌ、ＪＯＩＮの順に実行されることが処理実行順序情報に含まれているものとする。このとき、データ割当部２３は、Ｆｉｌｔｅｒ１の実行後にＬｏａｄ１が行われることを知り得るため、このタイミングでデータの入れ替えを行わず、Ｆｉｌｔｅｒ１のデータをそのまま上層データ記憶部６１に残すことができる。また、Ｍｉｎｉｎｇの実行後、Ｌｏａｄ３、Ｆｉｌｔｅｒ２ではＭｉｎｉｎｇ３の結果は利用されないため、データ割当部２３は、Ｍｉｎｉｎｇの結果データを下層データ記憶部４５に排出し、ｄａｔａ３を上層データ記憶部６１に転送することができる。
【００６６】
上層データ記憶部６１がランダムアクセスを高速に行うことができるＤＲＡＭ又はＳＳＤで構成され、下層データ記憶部４５がシーケンシャルアクセスを高速に行うことができるＨＤＤで構成されている場合には、このような制御に基いて、予め使用するデータをシーケンシャルアクセスにより上層データ記憶部６１に転送することで、システムの性能を向上することができる。一方、上層データ記憶部６１が格納するデータ容量に応じて電力を消費するデータグリッド構成を採用し、下層データ記憶部４５が格納するデータ容量に拠らずほぼ一定の電力を消費する大容量ＨＤＤを採用している場合には、このような制御に基いて、上層データ記憶部６１のデータ量を削減することで、システムの消費電力を削減することができる。
【００６７】
また、データ割当部２３が処理の傾向に応じてデータ配置を変更する方法を併用した場合には、ＤＡＧ構造情報を元に、次の処理に適したデータ配置となるように、上層データ記憶部にデータを配置することができる。このようなデータ配置の変更方法として、例えば、ハッシュジョインに用いられるハッシュ分割、及び、特許文献３に記載された方法が挙げられる。
【００６８】
本実施形態に係る並列データ処理システムによると、システムを時分割利用する場合に、システム性能及び資源の利用効率を向上させることができる。その理由は、データフロープログラムにおける処理の順序を参照することで、上層データ記憶部６１のデータ量を制御することができるからである。
【００６９】
（実施形態２）
第２の実施形態に係る並列データ処理システムについて、図面を参照して説明する。本実施形態では、データ処理装置における処理終了を検知することで、並列データ処理システムのさらに効率の良い時分割利用を実現する。図６は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。
【００７０】
図６を参照すると、本実施形態に係る並列データ処理システムにおけるデータ処理装置５１は、第１の実施形態における機能に加え、ＣＰＵ７１（図２参照）を用いて実現される処理終了検知部６６をさらに有する。
【００７１】
処理終了検知部６６は、処理割当部２２によって命令された１つの処理が終了したことを検知し、処理終了信号を出力する。ここで、１つの処理とは、ＤＡＧ構造の１つの節点に相当する処理のうちの、データ処理装置５１に割り当てられた処理を指す。処理終了検知部６６は、例えば、プログラムの末端に特殊な割り込み命令を設けることで実現し得る。
【００７２】
本実施形態に係る並列データ処理システムのスケジューリング装置１１におけるデータ割当部２５は、さらに処理終了信号を入力とする。プログラム解析部２１は、第１の実施形態と同様に、データフロープログラムを入力とし、処理割当部２２に処理実行順序情報を出力し、ＤＡＧ構造情報をデータ割当部２５に処理実行順序情報と、データフロープログラムのＤＡＧ構造を表すＤＡＧ構造情報とを出力する。
【００７３】
データ割当部２５は、入力された処理実行順序情報、ＤＡＧ構造情報及び処理終了信号に基いて、上層データ記憶部６１と下層データ記憶部４５との間で効率良くデータを入れ替えることができるタイミングで、データ転送命令及びデータ処理排出命令を出力するとともに、データ処理装置５１を識別するデータ処理装置識別情報と、処理内容を識別する処理識別情報とをストレージ装置４１のデータ転送部４７に出力する。
【００７４】
処理終了検知部６６を導入することによって、データ割当部２５は、各データ処理装置５１における処理終了タイミングを知ることができ、さらに効率良くデータの入れ替え処理を行うことができる。
【００７５】
例えば、図５における処理は、Ｌｏａｄ２、Ｆｉｌｔｅｒ１、Ｌｏａｄ１、Ｍｉｎｉｎｇ、Ｌｏａｄ３、Ｆｉｌｔｅｒ２、Ｓｔａｔｉｓｔｉｃａｌ、ＪＯＩＮの順に実行されることが処理実行順序情報に含まれているものとする。また、データの処理方式をＭａｐＲｅｄｕｃｅ方式とする。すなわち、すべてのデータ処理装置５１は処理対象データを任意配置で保持し、各節点における処理はすべてのデータ処理装置５１にばらまかれるものとする。
【００７６】
この場合、処理Ｆｉｌｔｅｒ１が終了したデータ処理装置５１から順次、処理Ｌｏａｄ１を行うことができる。また、処理Ｆｉｌｔｅｒ２が終了したデータ処理装置５１から順次、処理Ｆｉｌｔｅｒ１の結果データをロードし、次の処理Ｓｔａｔｉｓｔｉｃａｌに備えることができる。
【００７７】
また、処理が終了したことを検出することができるため、処理途中でデータを入れ替えてしまうことを防ぐことができる。データ処理装置５１は、処理途中において、処理対象データに加え、処理の途中で生成される中間データを保持することがある。処理途中においてデータを入れ替えると、このような中間データを含むデータを入れ替える必要があるため、データ入れ替え処理に要する時間が増大することがある。すなわち、処理の終了を検出できることにより、中間データの入れ替えを回避でき、システムにおける資源の利用効率を向上させ、処理時間を短縮することもできる。
【００７８】
また、処理終了検知部６６に加え、排出済みのデータにもアクセス可能な機構を分散データ排出部６２に導入した場合には、プログラム解析部２１は、すべてのデータが上層データ記憶部６内に存在すると判定でき、かつ、多くのデータを下層データ記憶部４５に格納することができる。このとき、プログラム解析部２１として、時分割利用に対応しない従来の実装の多くを流用することができる。
【００７９】
排出済みのデータにもアクセス可能とするための機構として、例えば、特許文献４に記載された方法が挙げられる。
【００８０】
図７は、本実施形態に係る並列データ処理システムの他の構成を示すブロック図である。図７を参照すると、この並列データ処理システムにおいては、ストレージ装置４２は、複数の下層データ記憶部４５を有する。このとき、各データ処理装置５２は、各下層データ記憶部４５に個別にアクセスすることができる。
【００８１】
下層データ記憶部４５は、デバイス及びネットワークの性能に応じて、データ転送能力が制限される。したがって、多数の上層データ記憶部６１が同一の下層データ記憶部４５とデータのやり取りを行うと、データ転送量がデータ転送能力によって制限され、データ処理装置５２当たりのデータ転送速度が減少してしまうことがある。
【００８２】
そこで、データ割当部２６は、処理終了検知部６６から処理終了信号を受け、データ処理排出命令を送信する際、ストレージ装置４２の資源がより均等に使用されるように、下層データ記憶部４５の割り当てを計算し、計算した割り当てに基いて下層データ記憶部４５を識別する情報を下層データ記憶部識別情報として送信する。
【００８３】
割り当て方法として、例えば、ラウンドロビン手法を用いることができる。すなわち、下層データ記憶部４５を任意の順に並べた下層データ記憶部リストを保持し、処理終了検知部を受信する度に、下層データ記憶部リストの先頭から順に下層データ記憶部４５を割り当てるようにしてもよい。また、他の割り当て方法として、ネットワーク上の転送時間を考慮し、データ処理装置５２に近い下層データ記憶部４５から順に割り当てるようにしてもよい。なお、割当方法は、これらに限定されない。
【００８４】
このとき、データ処理装置５２の分散データ排出部６７は、指定された下層データ記憶部４５にデータを排出する。
【００８５】
このような構成によると、ストレージ装置４２のデータ転送能力をより多く使用してデータの入れ替えを行うことができ、システムのデータ処理能力を向上させることができる。
【００８６】
（実施形態３）
第３の実施形態に係る並列データ処理システムについて、図面を参照して説明する。本実施形態では、全部ではなく一部のデータ処理装置５０を利用する際にはさらに効率が良くなる時分割利用を実現する。図８は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。
【００８７】
本実施形態に係る並列データ処理システムでは、プログラム解析部２７は、ＤＡＧの各節点の処理をデータ処理装置５０に割り当てる際に、必ずしもすべてのデータ処理装置５０に割り当てるだけでなく、一部のデータ処理装置５０に割り当てるようにしてもよい。また、プログラム解析部２７は、ＤＡＧの各節点に対応する処理をどのデータ処理装置５０に割り当てたかを示すデータ処理装置割当リストをさらに出力する。
【００８８】
図１０は、本実施形態に係る並列データ処理システムのスケジューリング装置１３におけるデータ処理装置割当リストを一例として示す図である。なお、図１０のリストは例示にすぎず、リストのフォーマットはこれに限定されない。
【００８９】
データ割当部２８は、処理実行順序情報及びＤＡＧ構造情報以外に、さらにデータ処理装置割当リストを入力とし、データ転送命令及びデータ処理排出命令を生成するために利用する。データ割当部２８は、データ処理装置割当リストを用いることによって、システム内の資源をさらに効率良く扱う命令を生成することができる。
【００９０】
一例として、図５に示したデータフロープログラムの処理を、図１０に記載したデータ処理装置割当リストに示したデータ処理装置で行われる場合に、処理Ｆｉｌｔｅｒ２の後に処理Ｓｔａｔｉｓｔｉｃａｌを実行することを考える。図１０を参照すると、処理Ｆｉｌｔｅｒ２はデータ処理装置６、７で実行され、処理Ｓｔａｔｉｓｔｉｃａｌはデータ処理装置１〜７で実行される。また、処理Ｆｉｌｔｅｒ２の前に、処理Ｍｉｎｉｎｇがデータ処理装置２〜５で実行されているものとする。
【００９１】
このとき、データ処理装置割当リストの情報を使うことで、処理Ｍｉｎｉｎｇの結果をストレージ装置４０に追いやり、処理Ｍｉｎｉｎｇの入力に用いた処理Ｆｉｌｔｅｒ１の出力データをそのままデータ処理装置２〜５に残し、処理Ｆｉｌｔｅｒ２の出力と処理Ｆｉｌｔｅｒ１の出力を利用して処理Ｓｔａｔｉｓｔｉｃａｌを実行することができる。これにより、データ転送量を削減し、システム資源のさらに効率の良い利用が可能となる。
【００９２】
図９は、本実施形態に係る並列データ処理システムの他の構成を示すブロック図である。図９を参照すると、データ処理装置５３は、省電力制御部６７をさらに有する。
【００９３】
省電力制御部６７は、電力制御命令に応じて、データ処理装置５３の処理能力と消費電力を変化させる。一般に、処理能力を高めるにしたがって、消費電力は増大する。
【００９４】
省電力制御部６７による電力制御として、例えば、電力制御命令に応じてデータ処理装置５３の電源をオン・オフすることが考えられる。また、電力制御の他の例として、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）を用いて、データ処理装置を構成するＨＤＤの回転数を制御したり、ＣＰＵの動作周波数を制御する等の省電力技術を利用することができる。なお、省電力制御の方法は、これらに限定されない。
【００９５】
図９を参照すると、データ割当部２９は、データ処理装置５３の省電力制御部６７に、電力制御命令を出力する。このとき、データ割当部２９は、システムの性能を維持しつつ、システムの使用電力を効率良く制御することができる。
【００９６】
図５に示したデータフロープログラムの処理を、図１０に記載したデータ処理装置割当リストに示したデータ処理装置で行われる場合には、データ処理装置１〜７で処理Ｓｔａｔｉｓｔｉｃａｌが行われた後、データ処理装置３、５で処理ＪＯＩＮが行われる。したがって、データ処理装置１、２、４、６、７は、処理ＪＯＩＮが開始される時点で使用されなくなる。そこで、データ処理装置１、２、４、６、７のデータをストレージ装置４０に退避し、データ処理装置１、２、４、６、７の電力を低下させる制御を行うことで、データ処理装置３、５で行われている処理の性能に影響を及ぼすことなく、システム全体の消費電力を削減することができる。
【００９７】
（実施形態４）
第４の実施形態に係る並列データ処理システムについて、図面を参照して説明する。第４の実施形態では、スケジューリング装置は複数のプログラム解析部を有し、さらに効率の良い時分割利用を実現する。図１１は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。
【００９８】
図１１を参照すると、スケジューリング装置１６は、プログラム解析部Ａ３１及びプログラム解析部Ｂ３２を有する。プログラム解析部Ａ３１は、データフロープログラムＡを入力とし、データフロープログラムＡに対する処理実行順序情報とＤＡＧ構造情報を出力する。同様に、プログラム解析部Ｂ３２は、データフロープログラムＢを入力とし、データフロープログラムＢに対する処理実行順序情報とＤＡＧ構造情報を出力する。このとき、プログラム解析部Ａ３１、Ｂ３２は、それぞれ、データ処理装置５０を独占的に利用していることを前提として、処理割当を行う。
【００９９】
例えば、単一の並列データ処理システムを複数のアプリケーション間で共有する場合が考えられる。また、他の例として、単一の並列データ処理システムを、異なる企業のアプリケーション間で共有する場合が考えられる。
【０１００】
データ割当部３５は、複数のプログラム解析部Ａ３１、Ｂ３２から出力された複数の処理実行順序情報及びＤＡＧ構造情報を入力とする。データ割当部３５は、複数の処理実行順序情報及びＤＡＧ構造情報に基いて、複数のＤＡＧ構造にまたがる処理発行順序を決定する。
【０１０１】
データ割当部３５は、実施形態１ないし３と同様にデータ処理排出命令とデータ転送命令を送信するとともに、次に上層データ記憶部６１にロードされるデータを対象とする処理内容を識別する処理識別子を、処理割当部３３に送信する。
【０１０２】
処理割当部３３は、複数のプログラム解析部Ａ３１、Ｂ３２のそれぞれから出力された処理実行順序情報と、データ割当部３５から出力された処理識別子に基づいて処理を選択し、その処理を命じる処理制御を、各データ処理部６５に発行する。
【０１０３】
一例として、データフロープログラムＫ１及びデータフロープログラムＫ２が、それぞれ図５に示したＤＡＧ構造を有し、いずれも、Ｌｏａｄ２、Ｆｉｌｔｅｒ１、Ｌｏａｄ１、Ｍｉｎｉｎｇ、Ｌｏａｄ３、Ｆｉｌｔｅｒ２、Ｓｔａｔｉｓｔｉｃａｌ、ＪＯＩＮの順に処理が実行されることが決定されたものとする。
【０１０４】
第１のデータ割当方法として、データフロープログラムＫ１、Ｋ２のそれぞれの節点ごとに、割当を行うようにしてもよい。すなわち、Ｋ１．Ｌｏａｄ２、Ｋ２．Ｌｏａｄ２、Ｋ１．Ｆｉｌｔｅｒ１、Ｋ２．Ｆｉｌｔｅｒ１、…、のような順序で割り当てることで、それぞれのデータフロープログラムＫ１、Ｋ２は、並列データ処理システムを均等に利用することができる。
【０１０５】
第２のデータ割当方法として、データの入れ替え量を少なくする単位で切り替えを行うようにしてもよい。すなわち、Ｋ１．（Ｌｏａｄ２、Ｆｉｌｔｅｒ１）、Ｋ２．（Ｌｏａｄ２、Ｆｉｌｔｅｒ１）、Ｋ１．（Ｌｏａｄ１、Ｍｉｎｉｎｇ）、Ｋ２．（Ｌｏａｄ１、Ｍｉｎｉｎｇ）、…のような順序で割り当てることができる。このとき、データ入れ替え回数を削減することができる。
【０１０６】
第３のデータ割当方法として、データフロープログラムＫ１とＫ２とを所定の時間単位で切り替えるようにしてもよい。例えば、５秒経過後に処理が途中であってもＫ１の処理を排出してＫ２の処理をロードし、さらに５秒経過後にＫ２の処理を排出してＫ１の処理の続きをロードするような処理の切替を繰り返すようにしてもよい。このとき、仮にデータフロープログラムＫ１が処理に長い時間を要するものであっても、これに影響されることなく、データフロープログラムＫ２の処理を平行して進めることができる。
【０１０７】
なお、これらのデータ割当方法は例示にすぎず、本発明はこれらに限定されない。
【０１０８】
本実施形態の並列データ処理システムによると、単一の並列データ処理システムを時分割で利用して、複数のデータフロープログラムを実行することができる。
【０１０９】
（実施形態５）
第５の実施形態に係る並列データ処理システムについて、図面を参照して説明する。図１２は、本実施形態に係る並列データ処理システムの構成を示すブロック図である。本実施形態では、データ割当部３７はプログラム解析部３６が決定した処理実行順序を変更することができる。
【０１１０】
プログラム解析部３６は、第１の処理実行順情報とＤＡＧ構造情報をデータ割当部３７に出力する。
【０１１１】
データ割当部３７は、ストレージ装置４０のデータの格納方法などの情報から、処理実行順序を変更したほうが良いものと判断した場合には、変更した処理実行順情報を表す処理実行順序変更依頼をプログラム解析部３６に出力する。
【０１１２】
プログラム解析部３６は、処理実行順序変更依頼を受けた場合には、これを精査して、新しい第２の処理実行順序情報を生成する。並列データ処理システムの時分割利用は、第２の処理実行順序情報に基いて行われる。
【０１１３】
例えば、処理Ａ及び処理Ｂが利用するデータセットが同一の場合、又は、処理Ａ及び処理Ｂが利用するデータを同時に読み出すことが下層データ記憶部４５のデバイス特性上効率が良い場合において、処理Ａの実行順序と処理Ｂの実行順序とが離れているときには、処理順序を変更することが好ましい。この場合には、データ割当部３７は、処理順序を変更して、処理Ａの実行に引き続いて処理Ｂが実行されるようにし、処理Ａと処理Ｂにおいて利用するデータセットを同時に上層データ記憶部６１に配置するようにデータ処理装置５０及びストレージ装置４０を制御する。これにより、並列データ処理システムの性能を向上させることができる。なお、処理順序が変更される場合は、これに限定されない。
【０１１４】
本発明に係る並列データ処理システムは、並列データベースシステム、並列データ処理システム、分散ストレージ、並列ファイルシステム、分散データベース、データグリッド、クラスタコンピュータに適用することができる。特に、本発明に係る並列データ処理システムによると、複数のアプリケーションにまたがる複数の処理又は単一アプリケーション内の複数の処理によって、並列データ処理システムを時分割で効率良く利用することができる。
【０１１５】
本発明において、下記の付記に掲げる形態が少なくとも含まれる。
（付記１）第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成するプログラム解析部と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当部と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当部と、を備えていることを特徴とするスケジューリング装置。
【０１１６】
（付記２）前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの節点に相当する処理に用いられるデータの割り当てと、前記第２のＤＡＧの節点に相当する処理に用いられるデータの割り当てとを、各処理が終了する度に交互に繰り返すことを特徴とする、付記１に記載のスケジューリング装置。
【０１１７】
（付記３）前記データ割当部は、前記複数のデータ処理装置に対して、前記第１のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てと、前記第２のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てとを、これらの複数の処理のそれぞれが終了する度に交互に繰り返すことを特徴とする、付記１に記載のスケジューリング装置。
【０１１８】
（付記４）前記データ割当部は、前記複数のデータ処理装置に対して割り当てられたデータに対する、前記第１のＤＡＧ又は前記第２のＤＡＧのうちの一方のＤＡＧの節点に相当する処理が、所定の期間の経過前に終了しなかった場合には、他方のＤＡＧの節点に相当する処理に用いられるデータを前記複数のデータ処理装置に割り当てることを特徴とする、付記２又は３に記載のスケジューリング装置。
【０１１９】
（付記５）前記データ割当部は、前記複数のデータ処理装置に割り当てたデータを対象とする処理を識別する処理識別子を生成し、
前記処理割当部は、前記処理識別子を参照して、前記複数のデータ処理装置に処理を割り当てることを特徴とする、付記１乃至４のいずれか一に記載のスケジューリング装置。
【０１２０】
（付記６）前記データ割当部は、第１の処理の後に第２の処理を実行する実行順序が前記第１の処理実行順序情報及び前記第２の処理実行順序情報の少なくともいずれか一方に含まれ、該第２の処理に使用されるデータが前記ストレージ装置の記憶部に記録されている場合において、前記複数のデータ処理装置のうちのいずれかのデータ処理装置から該第１の処理を終了した旨の信号を受信したときには、該第１の処理に使用されるデータを該データ処理装置の記憶部から前記ストレージ装置の記憶部に転送させるとともに、該第２の処理に使用されるデータを前記ストレージ装置の記憶部から該データ処理装置の記憶部に送信させることを特徴とする、付記１乃至５のいずれか一に記載のスケジューリング装置。
【０１２１】
（付記７）前記データ割当部は、前記ストレージ装置が複数の記憶部を備えている場合に、前記第１のＤＡＧ又は前記第２のＤＡＧの節点に相当する処理に用いられるデータを該複数の記憶部のうちのいずれの記憶部に出力すべきかを、前記複数のデータ処理装置に通知することを特徴とする、付記６に記載のスケジューリング装置。
【０１２２】
（付記８）前記データ割当部は、前記第１のＤＡＧ又は前記第２のＤＡＧの節点に相当する処理に用いられるデータを出力すべき記憶部を、前記複数の記憶部の中からラウンドロビンアルゴリズムに基いて選択するように、前記複数のデータ処理装置に通知することを特徴とする、付記７に記載のスケジューリング装置。
【０１２３】
（付記９）前記プログラム解析部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を、前記複数のデータ処理装置のうちのいずれのデータ処理装置に割り当てるかを示すデータ処理装置割当リストを出力し、
前記データ割当部は、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、前記ストレージ装置の記憶部と前記データ処理装置割当リストに含まれるデータ処理装置の記憶部との間において入れ替えることを特徴とする、付記１乃至８のいずれか一に記載のスケジューリング装置。
【０１２４】
（付記１０）前記データ割当部は、前記複数のデータ処理装置のうちの、前記データ処理装置割当リストに含まれていないデータ処理装置に対し、消費電量を削減するように通知することを特徴とする、付記９に記載のスケジューリング装置。
【０１２５】
（付記１１）前記データ割当部は、さらに前記ストレージ装置の性能を示す情報を参照し、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報に含まれる実行順序を変更すべきか否かを判定し、変更すべきと判定した場合には、変更内容を含む変更依頼を前記プログラム解析部に出力し、
前記プログラム解析部は、前記変更依頼に応じて、前記第１の処理実行順序情報、及び／又は、前記第２の処理実行順序情報を変更して、前記処理割当部及び前記データ割当部に出力することを特徴とする、付記１乃至１０のいずれか一に記載のスケジューリング装置。
【０１２６】
（付記１２）付記１乃至１１のいずれか一に記載のスケジューリング装置と、
前記複数のデータ処理装置、及び／又は、前記ストレージ装置と、を備えていることを特徴とする、並列データ処理システム。
【０１２７】
（付記１３）コンピュータが、第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する工程と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理割当工程と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替えるデータ割当工程と、を含むことを特徴とするスケジューリング方法。
【０１２８】
（付記１４）前記データ割当工程において、前記複数のデータ処理装置に対して、前記第１のＤＡＧの節点に相当する処理に用いられるデータの割り当てと、前記第２のＤＡＧの節点に相当する処理に用いられるデータの割り当てとを、各処理が終了する度に交互に繰り返すことを特徴とする、付記１３に記載のスケジューリング方法。
【０１２９】
（付記１５）前記データ割当工程において、前記複数のデータ処理装置に対して、前記第１のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てと、前記第２のＤＡＧの複数の節点に相当する複数の処理に用いられるデータの割り当てとを、これらの複数の処理のそれぞれが終了する度に交互に繰り返すことを特徴とする、付記１３に記載のスケジューリング方法。
【０１３０】
（付記１６）前記データ割当工程において、前記複数のデータ処理装置に対して割り当てられたデータに対する、前記第１のＤＡＧ又は前記第２のＤＡＧのうちの一方のＤＡＧの節点に相当する処理が、所定の期間の経過前に終了しなかった場合には、他方のＤＡＧの節点に相当する処理に用いられるデータを前記複数のデータ処理装置に割り当てることを特徴とする、付記１４又は１５に記載のスケジューリング方法。
【０１３１】
（付記１７）前記データ割当工程において、前記複数のデータ処理装置に割り当てたデータを対象とする処理を識別する処理識別子を生成し、
前記処理割当工程において、前記処理識別子を参照して、前記複数のデータ処理装置に処理を割り当てることを特徴とする、付記１３乃至１６のいずれか１に記載のスケジューリング方法。
【０１３２】
（付記１８）第１のデータフロープログラムを参照して、該第１のデータフロープログラムを表す第１の有向無閉路グラフ（ＤＡＧ：Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）と、該第１のＤＡＧの節点に相当する処理の実行順序を表す第１の処理実行順序情報とを生成するとともに、第２のデータフロープログラムを参照して、該第２のデータフロープログラムを表す第２のＤＡＧと、該第２のＤＡＧの節点に相当する処理の実行順序を表す第２の処理実行順序情報とを生成する処理と、
前記第１の処理実行順序情報及び前記第２の処理実行順序情報に基いて、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理を複数のデータ処理装置に割り当てる処理と、
前記第１のＤＡＧ及び前記第２のＤＡＧ並びに前記第１の処理実行順序情報及び前記第２の処理実行順序情報を参照して、前記第１のＤＡＧ及び前記第２のＤＡＧの節点に相当する処理に用いられるデータを、ストレージ装置の記憶部と前記複数のデータ処理装置のそれぞれに設けられた記憶部との間で入れ替える処理と、をコンピュータに実行させることを特徴とするプログラム。
【０１３３】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１３４】
１０、１０ａ、１１、１２、１３、１５、１６、１７  スケジューリング装置
２１、２７、３６  プログラム解析部
２２、３３  処理割当部
２３、２５、２６、２８、２９、３５、３７  データ割当部
３１  プログラム解析部Ａ
３２  プログラム解析部Ｂ
４０、４０ａ、４１、４２  ストレージ装置
４５  下層データ記憶部
４６、４７  データ転送部
５０、５０ａ−１〜５０ａ−ｎ、５１、５２、５３  データ処理装置
６１  上層データ記憶部
６２、６７  分散データ排出部
６３  データ受信部
６５  データ処理部
６６  処理終了検知部
６８  省電力制御部
７０  ユーザ装置
７１、８１、９１  ＣＰＵ
７２、８２、９２  データ記憶部
７３、８３、９３  データ転送部
８０  ネットワーク
【図１】
2011078162.tif 000003
【図２】
2011078162.tif 000004
【図３】
2011078162.tif 000005
【図４】
2011078162.tif 000006
【図５】
2011078162.tif 000007
【図６】
2011078162.tif 000008
【図７】
2011078162.tif 000009
【図８】
2011078162.tif 000010
【図９】
2011078162.tif 000011
【図１０】
2011078162.tif 000012
【図１１】
2011078162.tif 000013
【図１２】
2011078162.tif 000014
【国際調査報告】
2011078162.tif 000015
2011078162.tif 000016