(57)【要約】【課題】ＰＣクラスタに処理させようとする一まとまりの計算処理の複雑さないし負荷程度に応じて単位処理への分割数を自動的に最適化することで、ＰＣクラスタにおける処理の効率性を高める。【解決手段】複数台のスレーブＰＣ２１、２２、……２ｎが並列に接続されてなるＰＣクラスタについて、アプリケーションソフトウエアで与えられる一まとまりの計算処理をその複雑さに応じた分割数で複数の単位処理に分割し、この各単位処理を分割数に対応する台数のスレーブＰＣに分配する分配制御用のソフトウエアを組み込むようにしている。【選択図】　　　　図１
2004038226.tif 000002
【特許請求の範囲】
【請求項１】
複数台のパーソナルコンピュータが並列に接続されてなるＰＣクラスタにおいて、
アプリケーションソフトウエアで与えられる一まとまりの計算処理をその複雑さに応じた分割数で複数の単位処理に分割し、この各単位処理を前記分割数に対応する台数の前記パーソナルコンピュータに分配する分配制御用のソフトウエアが組み込まれていることを特徴とするＰＣクラスタ。
【請求項２】
分配制御用のソフトウエアが中間ソフトウエアとして組み込まれている請求項１に記載のＰＣクラスタ。
【請求項３】
複数台のパーソナルコンピュータが並列に接続されてなるＰＣクラスタ用の中間ソフトウエアにおいて、
アプリケーションソフトウエアで与えられる一まとまりの計算処理をその複雑さに応じた分割数で複数の単位処理に分割し、この各単位処理を前記分割数に対応する台数の前記パーソナルコンピュータに分配する処理をなすようにされていることを特徴とする中間ソフトウエア。
【請求項４】
前記一まとまりの計算処理の分割処理は、前記一まとまりの計算処理を前記パーソナルコンピュータの１台で処理した場合に要する基本処理時間をＴａ、前記単位処理への仮の分割数をＮ、前記計算処理で扱うデータを送るのに要する前記パーソナルコンピュータ１台あたりの基本通信時間をＴｂとし、ＴａとＴｂに関する情報を取得するステップ、このステップで与えられたＴａとＴｂに基づいて（Ｔａ／Ｎ）＋（Ｔｂ×Ｎ）が最小になるＮｘを求めるステップ、このＮｘで前記一まとまりの計算処理を複数の単位処理に分割するステップを含んでいる請求項３に記載の中間ソフトウエア。
【請求項５】
前記基本処理時間Ｔａに関する情報は、アプリケーションソフトウエアにより指示されるか、または実行しようとする一まとまりの計算処理を部分的に試行して求めるか、あるいは過去になされた同種の処理から推定して求めるようにされている請求項４に記載の中間ソフトウエア。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列に接続された複数台のパーソナルコンピュータに一まとまりの計算処理を分散させて処理させるようになっているＰＣクラスタおよびその中間ソフトウエアに関する。
【０００２】
【従来の技術】
ＰＣクラスタは、並列処理型のコンピュータの一つで、基本的に個人により使われることを前提にしたコンピュータであるパーソナルコンピュータをネットワークで複数台並列に接続して構成され、一まとまりの計算処理から分割した複数の単位処理を各パーソナルコンピュータに分散処理させることで、高速な処理を実現するようになっている。なお、クラスタ型のコンピュータについては、例えば特開２００１−３１８９０３号公報や特開平１１−３５３２９２号公報などに開示の例が知られている。
【０００３】
【発明が解決しようとする課題】
ＰＣクラスタにおいては、各パーソナルコンピュータに予めデータを保持させおき、そのデータについて計算処理を実行させる形態が従来では用いられていた。つまり従来のＰＣクラスタでは、一まとまりの計算処理を分散処理のために分配させるパーソナルコンピュータの台数が、その計算処理をアプリケーションソフトウエアでＰＣクラスタに実行させる前に予め決められているということである。このような処理形態では、その都度の処理時間は計算処理時間だけで済み、データを各コンピュータに伝送するための通信時間がそれほど問題になることはなかった。これに対して、例えばＸ線ＣＴで得られる３次元ビットマップデータについて形状変換のために座標変換処理を行なうなど例のように、扱うデータがその都度異なるような処理の場合には、計算処理を行なわせる度にデータも分配先の各パーソナルコンピュータに送る必要があり、しかも各パーソナルコンピュータには一まとまりの計算処理で扱う全データを送る必要がある。このような処理形態における処理時間は、計算処理に要する時間とデータ通信に要する時間の和で与えられることになる。そして計算処理に要する時間とデータ通信に要する時間は、何れも一まとまりの計算処理の単位処理への分割数に相関し、前者は分割数が増えるほど短くなり、後者は分割数が増えるほど長くなる。
【０００４】
この場合でもデータの通信時間が計算処理時間に比べて十分に短ければ、通信時間はそれほど問題にならない。しかし上記した３次元ビットマップデータの処理のように扱うデータ量が膨大でそれを分配先の各パーソナルコンピュータに伝送するための通信時間が計算処理時間に対して有意な比率を占めるようになる場合には、単位処理への分割数の設定が処理効率に大きく影響することになり、処理させようとする一まとまりの計算処理の複雑さに関係なく分割数を決めてしまうと、徒に通信時間を要して分散処理の効率が低下し、場合によっては１台のパーソナルコンピュータで処理するよりも処理時間が長くなってしまうことにもなりかねない。
【０００５】
本発明はこのような事情を背景になされたものであり、ＰＣクラスタに処理させようとする一まとまりの計算処理の複雑さないし負荷程度に応じて単位処理への分割数を自動的に最適化することで、ＰＣクラスタにおける処理の効率性を高めることを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するために本発明では、複数台のパーソナルコンピュータが並列に接続されてなるＰＣクラスタにおいて、アプリケーションソフトウエアで与えられる一まとまりの計算処理をその複雑さに応じた分割数で複数の単位処理に分割し、この各単位処理を前記分割数に対応する台数の前記パーソナルコンピュータに分配する分配制御用のソフトウエアが組み込まれていることを特徴としている。
【０００７】
また本発明では上記ＰＣクラスタについて、分配制御用のソフトウエアを中間ソフトウエアに組み込むようにしている。
【０００８】
また本発明では上記目的を達成するために、複数台のパーソナルコンピュータが並列に接続されてなるＰＣクラスタの中間ソフトウエアにおいて、アプリケーションソフトウエアで与えられる一まとまりの計算処理をその複雑さに応じた分割数で複数の単位処理に分割し、この各単位処理を前記分割数に対応する台数の前記パーソナルコンピュータに分配する処理をなすようにされていることを特徴としている。
【０００９】
また本発明では、上記中間ソフトウエアにおける一まとまりの計算処理の分割処理に、前記一まとまりの計算処理を前記パーソナルコンピュータの１台で処理した場合に要する基本処理時間をＴａ、前記単位処理への仮の分割数をＮ、前記計算処理で扱うデータを送るのに要する前記パーソナルコンピュータ１台あたりの基本通信時間をＴｂとし、ＴａとＴｂに関する情報を取得するステップ、このステップで与えられたＴａとＴｂに基づいて（Ｔａ／Ｎ）＋（Ｔｂ×Ｎ）が最小になるＮｘを求めるステップ、このＮｘで前記一まとまりの計算処理を複数の単位処理に分割するステップを含ませるものとしている。
【００１０】
また本発明では、上記中間ソフトウエアについて、その基本処理時間Ｔａに関する情報を、アプリケーションソフトウエアにより指示されるか、または実行しようとする一まとまりの計算処理を部分的に試行して求めるか、あるいは過去になされた同種の処理から推定して求めるものとしている。
【００１１】
【発明の実施の形態】
以下、本発明をその実施の形態とともに、より具体的に説明する。図１に一実施形態によるＰＣクラスタの構成を模式化して示す。ＰＣクラスタは、そのハードウエア構成として、１台のマスタＰＣ１と複数のスレーブＰＣ２（２１、２２、……２ｎ）が通信ネットワーク３を介して並列に接続された構成をとる。これらマスタＰＣ１とスレーブＰＣ２には、パーソナルコンピュータ、つまり個人により使われることを基本的な前提として製造・販売されているコンピュータが用いられる。したがってマスタＰＣ１とスレーブＰＣ２１、２２、……２ｎは、それぞれ個別にＣＰＵ（中央演算処理装置）と記憶装置を有している。スレーブＰＣ２１、２２、……２ｎに用いられる各パーソナルコンピュータの処理速度は同一であってもよいし、異なっていてもよい。
【００１２】
ＰＣクラスタのソフトウエアは、一般のコンピュータと同様に、ＯＳ（基本ソフトウエア）と中間ソフトウエア（ミドルウエア）、それにアプリケーション（アプリケーションソフトウエア）を含んでいる。そして、実行すべき計算処理をスレーブＰＣ２に分散処理させるについての制御はミドルウエアにおいてなされるのが通常である。本発明では、このミドルウエアに、アプリケーションで与えられる一まとまりの計算処理をその複雑さないし負荷程度に応じた最適な分割数で単位処理に自動的に分割する処理、およびこの分割による各単位処理をその分割数に応じた台数のスレーブＰＣ２に分配する処理からなる分配制御を実行させるようにしている。
【００１３】
このようなＰＣクラスタにおいて、例えばＸ線ＣＴで得られる３次元ビットマップデータについて形状変換のために座標変換処理などの処理を実行させる場合には、処理で扱うデータも分配先のスレーブＰＣ２にその都度送る。したがってその処理時間は、上記のように、計算処理に要する時間とデータ通信に要する時間の和で与えられ、一まとまりの計算処理の単位処理への分割数Ｎに相関する。この場合の分割数と処理時間の関係の例を図２〜図４にグラフ化して示す。縦軸は処理時間を表し、横軸は分散処理に使用するスレーブＰＣ２の台数、つまり一まとまりの計算処理の分割数を表している。
【００１４】
図２〜図４は、基本通信時間Ｔｂが同じで、一まとまりの計算処理における基本処理時間Ｔａがそれぞれ異なる場合を示している。基本通信時間Ｔｂは、マスタＰＣ１と１台のスレーブＰＣ２との間でのデータの通信に要する時間である。この基本通信時間Ｔｂは、上記のように一まとまりの計算処理で扱う全データを分配先の各パーソナルコンピュータに送る必要のあることから、一まとまりの計算処理で扱うデータ量に相関し、データ量が大きくなるほど長くなるが、分割数に関してはその影響は受けず一定である。図の例ではＴｂが仮に１０（秒）であるとしてある。
【００１５】
基本処理時間Ｔａは、ＰＣクラスタに実行させようとする一まとまりの計算処理の複雑さないし負荷程度の指標となるもので、スレーブＰＣ２１、２２、……２ｎの何れか１台で一まとまりの計算処理を実行した場合に要する時間である。ここで、スレーブＰＣ２１、２２、……２ｎの処理速度が同一でない場合には、スレーブＰＣ２１、２２、……２ｎそれぞれの処理速度に応じた重み付けを行なって平均化した処理速度を前提にして計るものとする。図２はＴａが３００（秒）、図３はＴａが１０００（秒）、そして図４はＴａが１００００（秒）の場合である。
【００１６】
これらの図の例から理解できるように、分割数の増大に応じて短くなる処理時間と分割数に応じて増大する通信時間との和として与えられる合計処理時には一つの極小値がある。したがってこの極小値に対応する分割数Ｎｘで分割することにより、処理時間を最短にすることができる。本発明では、この関係を前提にしており、一まとまりの計算処理を最適の分割数Ｎｘで分割し、それによる各単位処理をその分割数に応じた台数のスレーブＰＣ２に分配する分配制御をなすソフトウエアをＰＣクラスタに組み込むものとし、その分配制御のためのソフトウエアは上記のようにミドルウエアとして組み込むようにしている。
【００１７】
分配制御における処理の流れを図５に示す。分配制御においては、まず基本処理時間Ｔａと基本通信時間Ｔｂに関する情報を取得する（ステップ１０）。それからステップ１０で与えられたＴａとＴｂに基づいて（Ｔａ／Ｎ）＋（Ｔｂ×Ｎ）が最小になる分割数Ｎｘを求める（ステップ１１）。次いで、ステップ１１で求められたＮｘがＰＣクラスタを構成するスレーブＰＣ２の台数ｎよりも小さいか否かを判断する（ステップ１２）。ステップ１２の結果が肯定的であった場合には、Ｎｘで一まとまりの計算処理を単位処理に分割する（ステップ１３）。一方、ステップ１２の結果が否定的であった場合には、ｎで一まとまりの計算処理を単位処理に分割する（ステップ１４）。次いで、一まとまりの計算処理からＮｘ個またはｎ個に分割された各単位処理をＮｘに対応する台数のスレーブＰＣ２か、またはｎ台のスレーブＰＣ２に分配する（ステップ１５）。そして、最後に各ＰＣに処理を開始させる命令を出し（ステップ１６）、処理終了を待って結果を取得する（ステップ１７）。このような分配制御によれば、実行しようとする計算処理の実際に即した最適な分割数を自動的に求めて、この最適分割数で一まとまりの計算処理を分割することができ、ＰＣクラスタによる処理の高速性を最大限に引き出すことが容易にできるようになる。
【００１８】
ちなみに、図２の条件では、最適分割数Ｎｘが５台または６台となり、この台数で分散処理させた場合の合計処理時間は１００（秒）である。また図３と図４の条件では、それぞれの最適分割数Ｎｘが１０台と３６台になり、これらに対応する合計処理時間は１９０（秒）と６２７（秒）である。一方、図２の条件の場合に、例えばＰＣクラスタのスレーブＰＣ２が４０台あるとして、この全スレーブＰＣ２に分散処理させると、合計処理時間が３９７．５（秒）となり、一台のスレーブＰＣ２で処理させる場合よりも処理時間が長くなってしまう。
【００１９】
Ｔａに関する情報を取得するには幾つかの手法が可能である。その例としては次のような手法を挙げることができる。▲１▼アプリケーションにその情報を予め含ませておく手法。この手法は、アプリケーションで実行させる一まとまりの計算処理についてその処理時間が事前に分かっている場合に用いられる。アプリケーションはＴａに関する情報を処理開始前にミドルウェアに伝え、ミドルウェアはこの情報をもとにＮｘを求める。なおアプリケーションがミドルウェアにＮｘを伝えるようにしてもよい。▲２▼実行しようとする一まとまりの計算処理を部分的に試行してＴａを求める手法。つまり、一まとまりの計算処理を適当な数の単位処理に仮に分割し、その単位処理の一つについて処理を試行し、その結果からＴａを求める手法である。▲３▼過去になされた同種の処理から推定することで、実行しようとする一まとまりの計算処理についてのＴａを求める手法。
【００２０】
一方、Ｔｂに関する情報は、実行しようとする計算処理で扱うデータ量の大きさとＰＣクラスタの通信ネットワークの通信速度から計算で求めるのが通常である。この場合のデータ量の大きさは、アプリケーションから求めることができ、また通信ネットワークの通信速度は、当該ＰＣクラスタに固有のデータとして予め設定してある数値を用いる。
【００２１】
【発明の効果】
以上説明したように本発明では、基本処理時間を実行すべき計算処理の複雑さないし負荷程度の指標とし、この基本処理時間と基本通信時間に基づくことで、実行しようとする一まとまりの計算処理の実際に即した最適な分割数を自動的に求め、この最適分割数で計算処理の分配を制御するようにしている。このため本発明によれば、計算処理で扱うデータをその都度分配先のパーソナルコンピュータに送る必要がある場合でも、ＰＣクラスタによる処理の高速性を最大限に引き出すことが容易に可能となり、したがってその処理効率を高めることが可能となる。
【図面の簡単な説明】
【図１】一実施形態によるＰＣクラスタの構成を示すブロック図である。
【図２】ＰＣクラスタにおける分割数と処理時間の関係の一例をグラフ化して示す図である。
【図３】ＰＣクラスタにおける分割数と処理時間の関係の他の例をグラフ化して示す図である。
【図４】ＰＣクラスタにおける分割数と処理時間の関係のさらに他の例をグラフ化して示す図である。
【図５】分配制御における処理の流れ図である。
【符号の説明】
１　マスタＰＣ（パーソナルコンピュータ）
２　スレーブＰＣ（パーソナルコンピュータ）
３　通信ネットワーク
【図１】
2004038226.tif 000003
【図２】
2004038226.tif 000004
【図３】
2004038226.tif 000005
【図４】
2004038226.tif 000006
【図５】
2004038226.tif 000007