(57)【要約】  分散処理装置では、起動された少なくとも１つのプロセスが、上記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、その局所集団通信の後、その局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンを選択し、上記複数のプロセスがその第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、上記局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信手段に実行させる通信制御手段と、を有する。
2014020959.tif 000002
【特許請求の範囲】
【請求項１】
複数の分散処理装置により起動される複数のプロセスの中の少なくとも１つを起動する分散処理装置において、
前記少なくとも１つのプロセスが、
前記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、
前記局所集団通信の後、前記局所集団通信において用いられた前記第１分割パターンとは異なる第２分割パターンを選択し、前記複数のプロセスが、該第２分割パターンで分割された、複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、前記局所集団通信の結果に基づくデータを用いて次の局所集団通信を前記集団通信手段に実行させる通信制御手段と、
を備える分散処理装置。
【請求項２】
前記局所集団通信の結果に基づくデータを評価する評価手段、
を更に備え、
前記通信制御手段は、前記評価手段の評価結果に応じて、前記集団通信手段に、前記次の局所集団通信を実行させるか否かを判定する、
請求項１に記載の分散処理装置。
【請求項３】
前記局所集団通信の結果に基づくデータを評価する評価手段、
を更に備え、
前記通信制御手段は、前記評価手段の評価結果に基づいて、前記次の局所集団通信に用いられる分割パターンを選択する、
請求項１又は２に記載の分散処理装置。
【請求項４】
前記通信制御手段は、各プロセスグループ内のプロセス数が前記第１分割パターンよりも多い分割パターンを前記第２分割パターンとして選択する、
請求項１から３のいずれか１項に記載の分散処理装置。
【請求項５】
前記通信制御手段は、前記局所集団通信が所定回数繰り返された後、前記複数のプロセスが持つ複数の対象データが反映されたデータが前記複数のプロセスの各々でそれぞれ共有されるような、前記第１分割パターン及び前記第２分割パターンを含む複数の分割パターンの選択順序を保持し、該選択順序に基づいて、前記次の局所集団通信に用いられる分割パターンを選択する、
請求項１から４のいずれか１項に記載の分散処理装置。
【請求項６】
請求項１から５のいずれか１項に記載の複数の分散処理装置と、
前記各分散処理装置についてプロセッサコア数及び接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部と、
前記接続ネットワークが共通の分散処理装置、及び、前記プロセッサコア数が多い分散処理装置の少なくとも一方から優先的に、前記複数のプロセスの少なくとも１つを起動させる分散処理装置を選択する実行対象決定部と、
前記実行対象決定部により選択された各分散処理装置に、前記プロセスの実行指示をそれぞれ送信する実行指示部と、
を備える分散処理管理装置と、
を含む分散処理システム。
【請求項７】
請求項１から５のいずれか１項に記載の複数の分散処理装置と、
前記各分散処理装置についてプロセッサコア数及び接続ネットワーク情報をそれぞれ格納する情報格納部と、
接続ネットワーク毎のプロセッサコア数の合計が多くかつプロセッサコア数が多い分散処理装置から優先的に、前記複数のプロセスの少なくとも１つを起動させる分散処理装置を選択し、前記プロセッサコア数に応じて該分散処理装置に起動させるプロセス数を決定する対象決定部と、
前記実行対象決定部により選択された各分散処理装置に、前記実行対象決定部により決定されたプロセス数を含む、前記プロセスの実行指示をそれぞれ送信する実行指示部と、
を備える分散処理管理装置と、
を含む分散処理システム。
【請求項８】
複数のコンピュータにより起動される複数のプロセスの中の少なくとも１つを起動するコンピュータで実行される分散処理方法において、
前記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、
前記局所集団通信の後、前記局所集団通信において用いられた前記第１分割パターンとは異なる第２分割パターンを選択し、
前記複数のプロセスが前記第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、前記局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、
ことを含む分散処理方法。
【請求項９】
前記局所集団通信の結果に基づくデータを評価し、
前記評価結果に応じて、前記次の局所集団通信を実行させるか否かを判定する、
ことを更に含む請求項８に記載の分散処理方法。
【請求項１０】
前記局所集団通信の結果に基づくデータを評価する、
ことを更に含み、
前記第２分割パターンの選択は、前記評価結果に基づいて行われる、
請求項８又は９に記載の分散処理方法。
【請求項１１】
前記第２分割パターンの選択は、各プロセスグループ内のプロセス数が前記第１分割パターンよりも多い分割パターンを前記第２分割パターンとして選択する、
請求項８から１０のいずれか１項に記載の分散処理方法。
【請求項１２】
前記第２分割パターンの選択は、前記局所集団通信が所定回数繰り返された後、前記複数のプロセスが持つ複数の対象データが反映されたデータが前記複数のプロセスの各々でそれぞれ共有されるような、前記第１分割パターン及び前記第２分割パターンを含む複数の分割パターンの選択順序に基づいて行われる、
請求項８から１１のいずれか１項に記載の分散処理方法。
【請求項１３】
前記コンピュータ又は他のコンピュータが、
前記各コンピュータについてプロセッサコア数及び接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部を参照し、
前記接続ネットワークが共通のコンピュータ、及び、前記プロセッサコア数が多いコンピュータの少なくとも一方から優先的に、前記複数のプロセスの少なくとも１つを起動させるコンピュータとして選択し、
前記選択された各コンピュータに、前記プロセスの実行指示をそれぞれ送信する、
ことを更に含む請求項８から１２のいずれか１項に記載の分散処理方法。
【請求項１４】
前記コンピュータ又は他のコンピュータが、
前記各コンピュータについてプロセッサコア数及び接続ネットワーク情報をそれぞれ格納する情報格納部を参照し、
接続ネットワーク毎のプロセッサコア数の合計が多くかつプロセッサコア数が多いコンピュータから優先的に、前記複数のプロセスの少なくとも１つを起動させるコンピュータとして選択し、
前記プロセッサコア数に応じて前記選択された各コンピュータに起動させるプロセス数をそれぞれ決定し、
前記選択された各コンピュータに、前記決定されたプロセス数を含む、前記プロセスの実行指示をそれぞれ送信する、
ことを更に含む請求項８から１２のいずれか１項に記載の分散処理方法。
【請求項１５】
請求項８から１４のいずれか１項に記載の分散処理方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集団通信を伴う分散処理技術に関する。
【背景技術】
【０００２】
機械学習、データマイニングは、データから規則やパターンを見つける方法であり、情報推薦、顔認証、音声認識、文書分類などの様々な場面で用いられている。このような機械学習、データマイニングに関し様々な手法が提案されている。これら提案手法の多くでは、データを説明するモデルを設計し、そのモデルのデータの説明度合いを表す関数（例えば対数尤度）を生成し、その関数に対してモデルパラメータの最適化（対数尤度なら最大化）を行うことで学習が行われる。【０００３】
上記最適化には、例えば、最急降下法、確率的勾配降下法、ＥＭ（Expectation Maximization）アルゴリズムなどが用いられる。最適化処理は、学習対象のデータが大きくなればなるほど多くの時間が必要となるため、大規模データで学習を行う場合には、処理の並列及び分散処理化が望まれる。【０００４】
そこで、最適化処理を並列分散で行う方法として、ＤＧＤ（Distributed Gradient Descent）法、ＩＰＭ（Iterative Parameter Mixtures）法が提案されている（下記非特許文献１及び２参照）。ＤＧＤ法は、最急降下法を並列分散で行う方法である。ＤＧＤ法は、データをＮ分割し、各分割において並列にサブデータセットの勾配を計算し、それらを足しあわせることで勾配を求め、モデルの更新を行う。ＤＧＤ法は、イテレーティブ（iterative）なアルゴリズムであるため、上記処理を収束するまで繰り返す。ＩＰＭ法は、データをＮ分割し、各分割データに対して並列に確率的勾配降下法を適用する。これにより、Ｎ個の異なるモデルが算出されるため、それらを平均化する。ＩＰＭ法も、イテレーティブ（iterative）なアルゴリズムであるため、そのような処理を収束するまで繰り返す。【０００５】
下記非特許文献１では、構造化パーセプトロンや最大エントロピー法において、ＩＰＭ法による最適化が高速であるという実験結果が示されている。また、ＤＧＤ法やＩＰＭ法を実装する場合、どちらの方法も分散処理フレームワークであるＭａｐＲｅｄｕｃｅ（下記非特許文献３参照）を利用することができる。このため、これらの方法は分散プログラミングに関して知識が無い者でも容易に実装が行えるという利点がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Keith B. Hall, Scott Gilpin, Gideon Mann, "MapReduce/Bigtable for Distributed Optimization", NIPS LCCC Workshop 2010
【非特許文献２】Ryan McDonald, Keith Hall, Gideon Mann, "Distributed Training Strategies for the Structured Perceptron", Human Language Technologies, The 2010 Annual Conference of the North American Chapter of the ACL, pages 456-464, Los Angeles, California, June 2010
【非特許文献３】Jeffrey Dean, Sanjay Ghemawat, "MapReduce: Simplified Data Processing on Large Clusters", USENIX Association, 6th Symposium on Operating Systems Design and Implementation, 2004
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したＤＧＤ法やＩＰＭ法には、次のような問題がある。ＤＧＤ法やＩＰＭ法のアルゴリズムは、分散された全モデルパラメータの勾配を足し合わせる処理を含む。この処理には、データが分散されている全マシンにおいて通信が生じる。よって、このような通信がボトルネックとなり、ＤＧＤ法やＩＰＭ法では、分散処理を行うマシン台数を増やしたとしても、処理の高速化には限度がある。即ち、分散処理フレームワークとしてのＭａｐＲｅｄｕｃｅにおけるＲｅｄｕｃｅや、ＭＰＩ（Message Passing Interface）におけるＡｌｌｒｅｄｕｃｅが、処理のボトルネックとなってしまう。【０００８】
本発明は、上述のような事象に鑑みてなされたものであり、集団通信を伴う分散処理を高速に実行する技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。【００１０】
第１の態様は、複数の分散処理装置により起動される複数のプロセスの中の少なくとも１つを起動する分散処理装置に関する。第１態様に係る分散処理装置では、起動された少なくとも１つのプロセスが、上記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、その局所集団通信の後、その局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンを選択し、上記複数のプロセスがその第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、上記局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信手段に実行させる通信制御手段と、を有する。【００１１】
第２の態様は、複数のコンピュータにより起動される複数のプロセスの中の少なくとも１つを起動するコンピュータで実行される分散処理方法に関する。第２態様に係る分散処理方法は、当該コンピュータが、上記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、その局所集団通信の後、その局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンを選択し、上記複数のプロセスが第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、その局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、ことを含む。【００１２】
第３の態様に係る分散処理システムは、上記第１態様に係る複数の分散処理装置と、各分散処理装置についてプロセッサコア数及び接続ネットワーク情報の少なくとも一方をそれぞれ格納する情報格納部と、接続ネットワークが共通の分散処理装置、及び、前記プロセッサコア数が多い分散処理装置の少なくとも一方から優先的に、前記複数のプロセスの少なくとも１つを起動させる分散処理装置を選択する実行対象決定部と、実行対象決定部により選択された各分散処理装置に、前記プロセスの実行指示をそれぞれ送信する実行指示部と、を備える分散処理管理装置と、を含む。【００１３】
なお、本発明の他の態様としては、上記第１態様に係る構成をコンピュータに実現させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【発明の効果】
【００１４】
上記各態様によれば、集団通信を伴う分散処理を高速に実行する技術を提供することができる。
【図面の簡単な説明】
【００１５】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１６】
【図１】第１実施形態における分散処理システムの構成例を概念的に示す図である。
【図２】第１実施形態におけるマスタ装置の構成例を概念的に示す図である。
【図３】第１実施形態におけるスレーブ装置の構成例を概念的に示す図である。
【図４】Ａｌｌｒｅｄｕｃｅの例（加算）を示す図である。
【図５】４つのプロセスに関する３つの分割パターンの例を示す図である。
【図６】８つのプロセスに関する３つの分割パターンの例を示す図である。
【図７】８つのプロセスに関する３つの分割パターンの例を示す図である。
【図８】第１実施形態における分散処理システムの動作例を示す図である。
【図９】第１実施形態における各プロセスの動作例を示すフローチャートである。
【図１０】第２実施形態におけるスレーブ装置の構成例を概念的に示す図である。
【図１１】第２実施形態における各プロセスの動作例を示すフローチャートである。
【図１２】第２実施形態におけるプロセス割り当ての例を概念的に示す図である。
【図１３】実施例における分散処理システムの構成を概念的に示す図である。
【図１４】変形例におけるスレーブ装置の構成例を概念的に示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【００１８】
本実施形態に係る分散処理装置は、複数の分散処理装置により起動される複数のプロセスの中の少なくとも１つを起動する。本実施形態に係る分散処理装置では、この少なくとも１つのプロセスが、上記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行う集団通信手段と、その局所集団通信の後、その局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンを選択し、上記複数のプロセスがその第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、上記局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信手段に実行させる通信制御手段と、を有する。
【００１９】
本実施形態に係る分散処理方法は、複数のコンピュータにより起動される複数のプロセスの中の少なくとも１つを起動するコンピュータで実行される。本実施形態に係る分散処理方法は、当該コンピュータが、上記複数のプロセスが第１分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行い、その局所集団通信の後、その局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンを選択し、上記複数のプロセスが第２分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、その局所集団通信の結果に基づくデータを用いて次の局所集団通信を行う、ことを含む。
【００２０】
上述の分割パターンとは、複数のプロセスをグループ分けする１つのグルーピング手法を示す。よって、第１分割パターンとは異なる第２分割パターンとは、第１分割パターンのグルーピング手法とは異なる他のグルーピング手法を意味する。
【００２１】
上述の複数のプロセスは、構造化パーセプトロンや最大エントロピー法などを分散で実行する。本実施形態が最大エントロピー法を用いた分散学習処理において効果的に作用することは、例えば、次の参考文献の内容等から明らかである。
参考文献：Gideon Mann, Ryan McDonald, Mehryar Mohri, "Efficient Large-Scale Distributed Training of Conditional Maxmum Entropy Models", NIPS, 2009
また、上述のプロセスとは、ソフトウェア（プログラム）の任意の実行単位を意味し、スレッド、タスク等と区別する意図で利用される文言ではない。
【００２２】
上述の集団通信とは、複数のプロセスが持つ複数の処理対象データを対象に所定の処理が施され、得られたデータが当該複数のプロセスに分配されることを意味する。この集団通信において、複数の処理対象データを複数のプロセスから収集し、その収集されたデータに所定の処理を施すプロセスは、１つのプロセスであってもよいし、複数のプロセスであってもよい。当該所定の処理自体は、何ら制限されず、例えば、加算等である。
【００２３】
本実施形態では、複数のプロセスを第１分割パターンで分割することで形成される各プロセスグループ内において、局所集団通信がそれぞれ行われる。本実施形態における局所集団通信では、各プロセスグループ内に存在するプロセスのみを対象に上述の集団通信が行われる。よって、当該局所集団通信では、所属するプロセスグループが異なるプロセス間での通信は発生しない。
【００２４】
各プロセスグループ内で局所集団通信が完了すると、各プロセスグループ内の複数プロセスが有する複数の処理対象データに対して所定の処理を施すことにより得られる各データが、各プロセスグループ内の複数プロセス間でそれぞれ共有される。以降、プロセスグループ内の複数プロセスが有する複数の処理対象データに対して所定の処理を施すことにより得られるデータを局所処理データと表記する場合もある。つまり、本実施形態によれば、プロセスグループ毎の局所集団通信により、各プロセスグループ内のプロセスが持つ処理対象データが反映された局所処理データがプロセスグループ毎に共有される。
【００２５】
本実施形態では、次の局所集団通信を行うために、先の局所集団通信において用いられた第１分割パターンとは異なる第２分割パターンが選択される。そして、この第２分割パターンに対応する各プロセスグループにおいて先の局所集団通信の結果に基づくデータを用いて次の局所集団通信が行われる。ここで、次の局所集団通信は、先の局所集団通信により得られた局所処理データをそのまま用いて実施されてもよいし、先の局所集団通信により得られた局所処理データに対して各プロセスがそれぞれ更なる処理を施すことにより得られるデータを用いて実施されてもよい。次の局所集団通信では、具体的には、新たなプロセスグループ内の複数プロセスが持つ、先の各局所集団通信の結果がそれぞれ反映された複数の処理対象データを対象に、所定の処理が行われ、得られたデータがその新たなプロセスグループ内の複数プロセスに分配される。第２分割パターンは第１分割パターンとは異なるため、各プロセスにとって、次の局所集団通信時には、先の局所集団通信時に集団通信相手に含まれていなかった少なくとも１つのプロセスが集団通信相手となる。更に、各プロセスは、次の局所集団通信時には、先の局所集団通信時に同一プロセスグループに属していた他のプロセスが持つ処理対象データが反映された局所処理データ又はその局所処理データに対して更なる処理が施されたデータをそれぞれ持っている。よって、次の局所集団通信が完了すると、各プロセスは、先の局所集団通信完了時よりも多くの処理対象データが反映された局所処理データをそれぞれ持つことになる。
【００２６】
本実施形態によれば、このような局所集団通信を繰り返すことにより、複数のプロセスに分散配置されていた全ての処理対象データが反映された所望のデータを取得することができる。但し、本実施形態は、所望のデータを得るために局所集団通信のみを繰り返すことに限定しているわけではない。
【００２７】
更に、本実施形態によれば、所望のデータを得るにあたり、全プロセス間での通信ではなく局所的なグループ内通信を行っているため、通信が分散処理高速化のボトルネックになることを防ぐことができる。これにより、本実施形態によれば、通信負荷による高速処理の限界を抑制し、集団通信を伴う分散処理の高速化を実現することができる。
【００２８】
以下、上述の実施形態について更に詳細を説明する。
【００２９】
［第１実施形態］
〔システム構成〕
図１は、第１実施形態における分散処理システムの構成例を概念的に示す図である。第１実施形態における分散処理システム１は、マスタ装置１０、複数のスレーブ装置２０（＃１、＃２、・・・、＃ｎ）を有する。以降、各スレーブ装置２０（＃１、＃２、・・・、＃ｎ）は、特に個々を区別する必要がある場合を除き、スレーブ装置２０と総称する。
【００３０】
スレーブ装置２０は、集団通信を伴う分散処理を実行する。上述の分散処理装置及び分散処理方法は、スレーブ装置２０に適用される。これにより、スレーブ装置２０は、分散処理装置と呼ぶこともできる。マスタ装置１０は、ユーザからの要求に応じて、複数のスレーブ装置２０に分散処理を実行させる。このため、マスタ装置１０は、分散処理管理装置と呼ぶこともできる。
【００３１】
このように、分散処理の管理を行う装置をその他の装置と区別するために、マスタ装置１０とスレーブ装置２０とを区別するが、両者は特に区別されなくてもよい。これは、マスタ装置１０及びスレーブ装置２０のいずれも分散処理システム１内で分散処理プログラムを実際に実行し得るからである。しかし、以降の説明では、説明の便宜のために、分散処理プログラムを実際に実行し得るコンピュータはスレーブ装置２０のみとする。
【００３２】
マスタ装置１０とスレーブ装置２０とは通信網９を介して通信可能に接続される。通信網９は、インターネット等のような公衆網、ＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）、無線通信ネットワーク等である。なお、本実施形態において、マスタ装置１０とスレーブ装置２０との間、及び、スレーブ装置２０間の通信形態は限定されない。
【００３３】
マスタ装置１０及びスレーブ装置２０は、いわゆるコンピュータであり、相互にバス５で接続されるＣＰＵ（Central Processing Unit）２、メモリ３、入出力インタフェース（Ｉ／Ｆ）４等を有する。メモリ３は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、可搬型記憶媒体等である。入出力Ｉ／Ｆ４は、通信網９を介して、他のコンピュータ（マスタ装置１０及びスレーブ装置２０）と通信を行う通信装置７等と接続される。また、入出力Ｉ／Ｆ４は、入力部（図示せず）や出力部（図示せず）と接続されてもよい。入力部は、キーボード、マウス等のようなユーザ操作の入力を受け付ける装置である。出力部は、ディスプレイ装置やプリンタ等のようなユーザに情報を提供する装置である。
【００３４】
なお、マスタ装置１０及びスレーブ装置２０のハードウェア構成は制限されない。図１では、マスタ装置１０及びスレーブ装置２０はそれぞれ１つずつのＣＰＵ２を有する構成例が示されるが、それらは複数のＣＰＵ２を有してもよい。
【００３５】
〔装置構成〕
〈マスタ装置〉
図２は、第１実施形態におけるマスタ装置１０の構成例を概念的に示す図である。図２に示されるように、マスタ装置１０は、スレーブ情報格納部１１、初期設定部１２、スレーブ制御部１３、実行指示部１４、実行要求取得部１５等を有する。これら各処理部は、例えば、メモリ３に格納されるプログラムがＣＰＵ２により実行されることにより実現される。当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ４を介してインストールされ、メモリ３に格納される。
【００３６】
スレーブ情報格納部１１は、各スレーブ装置２０に関し、マシン名やＩＰアドレス等のような、マスタ装置１０が各スレーブ装置２０を特定し、各スレーブ装置２０と通信するための各種情報を格納する。なお、ＤＮＳ（Domain Name System）サービスを用いる場合には、マシン名のみが格納されていてもよい。
【００３７】
初期設定部１２は、マスタ装置１０の初期設定を行う。初期設定部１２は、マスタ装置１０の起動後に、ユーザにより指定された上述のようなスレーブ装置２０に関する情報をスレーブ情報格納部１１に格納する。スレーブ装置２０に関する情報は、例えば、入力部を操作することによりユーザにより入力されてもよいし、ユーザにより生成された設定ファイルから取得されてもよい。
【００３８】
スレーブ制御部１３は、スレーブ情報格納部１１に格納されているスレーブ装置２０に関する情報に基づいて、複数のスレーブ装置２０の起動及び停止を行う。
【００３９】
実行要求取得部１５は、分散処理プログラムの実行要求を取得する。例えば、この実行要求では、複数のスレーブ装置２０で実行すべき分散処理プログラムが指定される。また、その実行要求には、分散処理プログラムにより実現されるプロセスの数が含まれてもよい。なお、実行要求において分散処理プログラムやプロセス数が指定されない場合には、それらに予め設定された情報が利用されてもよい。また、その実行要求は、入力部（図示せず）から入力されてもよいし、他のコンピュータから取得されてもよい。
【００４０】
実行指示部１４は、分散処理の実行指示を各スレーブ装置２０にそれぞれ送る。実行指示部１４は、実行要求取得部１５により取得されたプロセス数に応じて、分散処理のためのプロセスを起動させるスレーブ装置２０、各スレーブ装置２０のプロセス数を決定し、これら決定情報を実行指示に含める。
【００４１】
〈スレーブ装置〉
図３は、第１実施形態におけるスレーブ装置２０の構成例を概念的に示す図である。図３に示されるように、スレーブ装置２０は、指示取得部２１、プログラム取得部２２、プログラム実行部２３、スレーブ情報格納部２４等を有する。これら各処理部は、例えば、メモリ３に格納されるプログラムがＣＰＵ２により実行されることにより実現される。当該プログラムは、例えば、ＣＤ、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ４を介してインストールされ、メモリ３に格納される。
【００４２】
指示取得部２１は、マスタ装置１０から、分散処理の実行指示を受ける。この実行指示には、実行すべき分散処理プログラムの情報、起動プロセス数、分散処理に参加する複数のスレーブ装置２０の情報が含まれる。指示取得部２１は、スレーブ装置２０の情報についてはスレーブ情報格納部２４に格納する。
【００４３】
スレーブ情報格納部２４は、分散処理に参加する複数のスレーブ装置２０に関する情報を格納する。具体的には、分散処理に参加する各スレーブ装置２０に関し、マシン名、ＩＰアドレス、起動プロセス数等がそれぞれ格納される。
【００４４】
プログラム取得部２２は、指示取得部２１が受けた分散処理の実行指示で指定される分散処理プログラムを取得する。実行指示に、分散処理プログラムの所在情報が設定されている場合には、プログラム取得部２２は、その所在情報に基づいて、他のコンピュータから指定された分散処理プログラムを取得する。また、実行指示と共に、分散処理プログラムがマスタ装置１０から送られてもよい。
【００４５】
プログラム実行部２３は、プログラム取得部２２により取得された分散処理プログラムを、指示取得部２１により取得された実行指示で指定されるプロセス数分、実行する。このとき、プログラム実行部２３は、同一スレーブ装置２０上で起動される各プロセスを区別するために、各プロセスのＩＤを固有にそれぞれ付する。各スレーブ装置２０で分散処理プログラムに基づいて起動される分散処理を行う各プロセスは、プロセス２５と表記される。これにより、マスタ装置１０から分散処理の実行指示を受けた各スレーブ装置２０では、少なくとも１つのプロセス２５がそれぞれ生成される。
【００４６】
プロセス２５は、集団通信部２６、通信制御部２７等を有する。集団通信部２６及び通信制御部２７は、分散処理プログラムの実行により実現されるため、集団通信手段、通信制御手段と呼ぶこともできる。
【００４７】
集団通信部２６は、上述の実施形態における分散処理装置の集団通信手段と同様に、或る分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で局所集団通信を行う。集団通信部２６は、或るプロセスグループ内の複数のプロセスのみを対象として、例えば、ＭＰＩにおけるＡｌｌｒｅｄｕｃｅを実行する。
【００４８】
図４は、Ａｌｌｒｅｄｕｃｅの例（加算）を示す図である。符号Ｎ１、Ｎ２、Ｎ３及びＮ４はそれぞれプロセス２５を示す。即ち、図４は、或るプロセスグループ内に４つのプロセスＮ１からＮ４が存在する例を示す。各プロセスは、ＩＮＴ（整数）型のベクトルを持つ。図４の例によれば、プロセスＮ１の集団通信部２６は、他のプロセスＮ２、Ｎ３及びＮ４からそれぞれベクトルを取集し、全ベクトルの各要素をそれぞれ加算する。プロセスＮ１の集団通信部２６は、加算の結果得られるベクトル（６，７，９）を他のプロセスＮ２、Ｎ３及びＮ４に配布する。
【００４９】
このように、局所集団通信により、そのプロセスグループ内の全プロセスが持つ全データが反映された局所処理データがそのプロセスグループ内の全プロセスで共有される。図４の例では、１つのプロセスＮ１にデータが集められ、そのプロセスＮ１で所定処理が実行された。このような実装はシンプルではあるが非効率であるため、より効率的なＲｅｃｕｒｓｉｖｅ  Ｈａｌｖｉｎｇ  Ａｎｄ  Ｄｏｕｂｌｉｎｇと呼ばれる手法が利用されてもよい。
【００５０】
通信制御部２７は、上述の実施形態における分散処理装置の通信制御手段と同様に、局所集団通信を行う単位（プロセスグループ）を決めるための分割パターンを選択する。具体的には、通信制御部２７は、選択され得る複数の分割パターンに関する情報、及び、複数の分割パターンの選択順序に関する情報を保持し、これら保持情報に基づいて、先の局所集団通信に用いられた分割パターンとは異なる分割パターンとなるように、次の局所集団通信に用いられる分割パターンを選択する。
【００５１】
以下、分割パターン及び分割パターンの選択順序について図５、図６及び図７を用いて説明する。図５は、４つのプロセス２５に関する３つの分割パターンの例を示す図である。図５の例では、各々２つのプロセス２５を含む２つのプロセスグループに分割される。通信制御部２７は、図５に示される３つの分割パターンに関する情報を保持すると共に、局所集団通信が所定回数繰り返された後、複数のプロセス２５が持つ複数の対象データが反映されたデータが複数のプロセス２５の各々でそれぞれ共有されるような選択順序に関する情報を保持する。図５に示される分割パターンでは、次の２つの選択順序が保持され得る。
【００５２】
選択順序１：分割パターンＡ−１と分割パターンＡ−２とを交互に繰り返し選択する。
選択順序２：分割パターンＡ−１、分割パターンＡ−２、分割パターンＡ−３を順に繰り返し選択する。
【００５３】
選択順序１及び２が実行される場合のデータ処理の流れは次のようになる。ここで、各プロセスＮ１、Ｎ２、Ｎ３及びＮ４が持つ対象データをＤ１、Ｄ２、Ｄ３及びＤ４と表記し、対象データＤ１と対象データＤ２とが反映された演算結果データはデータＤ１Ｄ２と表記する。１ステップ目において、プロセスＮ１とプロセスＮ２との間での局所集団通信により、データＤ１Ｄ２がプロセスＮ１及びＮ２で共有され、プロセスＮ３とプロセスＮ４との間での局所集団通信により、データＤ３Ｄ４がプロセスＮ３及びＮ４で共有される。次のステップでは、プロセスＮ１とプロセスＮ４との間での局所集団通信により、データＤ１Ｄ２Ｄ３Ｄ４がプロセスＮ１及びＮ４で共有され、プロセスＮ２とプロセスＮ３との間での局所集団通信により、データＤ１Ｄ２Ｄ３Ｄ４がプロセスＮ２及びＮ３で共有される。
【００５４】
このように、選択順序１及び２が実行される場合、プロセスＮ１からＮ４が持つ全対象データが反映された演算結果データ（Ｄ１Ｄ２Ｄ３Ｄ４）が、２回の局所集団通信により、全プロセスＮ１からＮ４で共有される。
【００５５】
図６は、８つのプロセス２５に関する３つの分割パターンの例を示す図である。図６の例では、各々２つのプロセス２５を含む４つのプロセスグループに分割される。ここで、８つのプロセス２５を２プロセスずつ分割する分割パターンは、１０５通り存在する（８！／（４！２！２！２！２！）＝１０５）。この中の３つの分割パターンが図６に示される。図６に示される３つの分割パターンを用いる場合、次の２つの選択順序が取られ得る。
【００５６】
選択順序１：分割パターンＢ−１と分割パターンＢ−２とを交互に繰り返し選択する。
選択順序２：分割パターンＢ−２と分割パターンＢ−３とを交互に繰り返し選択する。
【００５７】
選択順序１及び２によれば、４ステップ、即ち、４回の局所集団通信により、プロセスＮ１からＮ８が持つ全対象データが反映された演算結果データが全プロセスＮ１からＮ８で共有される。なお、分割パターンＢ−１、分割パターンＢ−２、分割パターンＢ−３を順に繰り返し選択するという選択順序でも、数ステップで、プロセスＮ１からＮ８が持つ全対象データが反映された演算結果データを全プロセスＮ１からＮ８で共有することができる。
【００５８】
ところが、図６に示される３つの分割パターンを用いる場合、分割パターンＢ−１と分割パターンＢ−３とを何回交互に繰り返しても、プロセスＮ１からＮ８が持つ全対象データが反映された演算結果データを全プロセスＮ１からＮ８で共有することはできない。よって、通信制御部２７は、このような選択順序を用いない。
【００５９】
図７は、８つのプロセス２５に関する３つの分割パターンの例を示す図である。図７の例では、各々４つのプロセス２５を含む２つのプロセスグループに分割される。ここで、８つのプロセス２５を４プロセスずつ分割する分割パターンは、３５通り存在する。この中の３つの分割パターンが図７に示される。図７に示される３つの分割パターンを用いる場合、いずれか２つの分割パターンを交互に繰り返し選択する選択順序や、３つの分割パターンを順に繰り返し選択する選択順序が実行され得る。これらの選択順序によれば、２ステップで、プロセスＮ１からＮ８が持つ全対象データが反映された演算結果データを全プロセスＮ１からＮ８で共有することができる。
【００６０】
通信制御部２７は、このように選択された分割パターンで分割された複数のプロセスグループの中の１つのプロセスグループ内の複数のプロセス間で、先の局所集団通信の結果に基づくデータを用いて次の局所集団通信を集団通信部２６に実行させる。
【００６１】
〔動作例〕
以下、第１実施形態における分散処理方法について図８及び図９を用いて説明する。図８は、第１実施形態における分散処理システム１の動作例を示す図である。
【００６２】
分散処理システム１では、マスタ装置１０が、各スレーブ装置２０と通信するために、各スレーブ装置２０の情報をそれぞれスレーブ情報格納部１１に格納する（Ｓ８１）。スレーブ情報格納部１１には、例えば、次のように、各スレーブ装置２０に関するマシン名及びＩＰアドレスがそれぞれ格納される。
Ｎｏｄｅ＿Ａ，  １９２．１６８．０．２
Ｎｏｄｅ＿Ｂ，  １９２．１６８．０．３
Ｎｏｄｅ＿Ｃ，  １９２．１６８．０．４
Ｎｏｄｅ＿Ｄ，  １９２．１６８．０．５
Ｎｏｄｅ＿Ｅ，  １９２．１６８．０．６
Ｎｏｄｅ＿Ｆ，  １９２．１６８．０．７
【００６３】
マスタ装置１０は、スレーブ情報格納部１１に格納される情報に基づいて、各スレーブ装置２０をそれぞれ起動させる（Ｓ８２）。マスタ装置１０から起動要求を受けた各スレーブ装置２０は、それぞれ起動する（Ｓ８３）。上記例によれば、Ｎｏｄｅ＿ＡからＮｏｄｅ＿Ｆの６台のスレーブ装置２０が起動する。なお、各スレーブ装置２０は、マスタ装置１０からの要求によらず、独自に、起動されてもよい。この場合には、工程（Ｓ８２）は省かれる。
【００６４】
マスタ装置１０は、分散処理プログラムの実行要求を取得する（Ｓ８４）。この実行要求には、例えば、次のような情報が含まれる。
分散処理プログラム  ／ｈｏｍｅ／ｕｓｅｒＡ／ｍｏｄｉｆｉｅｄ＿ｉｐｍ
起動プロセス数  ８
【００６５】
マスタ装置１０は、その実行要求に応じて、分散処理のためのプロセスを起動させるスレーブ装置２０、各スレーブ装置２０のプロセス数を決定し、対象に決定された各スレーブ装置２０に分散処理の実行指示をそれぞれ送る（Ｓ８５）。例えば、マスタ装置１０は、上述の６台のスレーブ装置２０を対象に決定し、各スレーブ装置２０のプロセス数を次のように決定する。
Ｎｏｄｅ＿Ａ，  プロセス数＝２
Ｎｏｄｅ＿Ｂ，  プロセス数＝２
Ｎｏｄｅ＿Ｃ，  プロセス数＝１
Ｎｏｄｅ＿Ｄ，  プロセス数＝１
Ｎｏｄｅ＿Ｅ，  プロセス数＝１
Ｎｏｄｅ＿Ｆ，  プロセス数＝１
【００６６】
マスタ装置１０は、上記実行指示と共に、分散処理プログラムの情報、分散処理の対象に決定されたスレーブ装置２０の情報、各スレーブ装置２０のプロセス数等を、各スレーブ装置２０に送信する。
【００６７】
スレーブ装置２０は、分散処理の実行指示を受けると、実行指示と共に取得された各スレーブ装置２０の情報をスレーブ情報格納部２４に格納する（Ｓ８６）。
【００６８】
続いて、スレーブ装置２０は、当該実行指示と共に取得された情報に基づいて、分散処理プログラムを取得する（Ｓ８７）。例えば、ホームディレクトリがＮＦＳ（Network File System）等で共有されている場合、ネットワークアクセスにより、各スレーブ装置２０は、分散処理プログラム（／ｈｏｍｅ／ｕｓｅｒＡ／ｍｏｄｉｆｉｅｄ＿ｉｐｍ）を取得する。
【００６９】
各スレーブ装置２０は、取得された分散処理プログラムを、指定されたプロセス数分実行する（Ｓ８８）。上述の例によれば、Ｎｏｄｅ＿Ａ及びＮｏｄｅ＿Ｂのスレーブ装置２０がそれぞれ２つのプロセス２５を起動し、他のスレーブ装置２０はそれぞれ１つのプロセス２５を起動する。分散処理プログラムに基づいて起動された各プロセス２５において局所集団通信がそれぞれ実行される。各プロセス２５の動作については後述する。各スレーブ装置２０は、各プロセス２５が終了すると、各プロセス２５による分散処理の結果をマスタ装置１０にそれぞれ送る。
【００７０】
マスタ装置１０は、各スレーブ装置２０からの分散処理の結果を受け、結果データを出力する（Ｓ８９）。結果データの出力の具体的形態は、制限されず、例えば、入出力Ｉ／Ｆ４を介して表示部や他の出力装置（プリンタなど）等で実現される。
【００７１】
マスタ装置１０は、各スレーブ装置２０に停止要求を送る（Ｓ９０）。この停止要求を受けた各スレーブ装置２０は停止する（Ｓ９１）。各スレーブ装置２０の停止は、シャットダウンであってもよいし、省電力モード等のような所定の動作モードへの移行であってもよい。また、各スレーブ装置２０は、マスタ装置１０からの要求によらず、独自に、停止してもよい。この場合には、工程（Ｓ９０）は省かれる。
【００７２】
図９は、第１実施形態における各プロセス２５の動作例を示すフローチャートである。ここでは、図７の例に基づいて、次のような形態でプロセスが起動されていると仮定する。
Ｎｏｄｅ＿Ａ：プロセスＮ１
Ｎｏｄｅ＿Ａ：プロセスＮ２
Ｎｏｄｅ＿Ｂ：プロセスＮ３
Ｎｏｄｅ＿Ｂ：プロセスＮ４
Ｎｏｄｅ＿Ｃ：プロセスＮ５
Ｎｏｄｅ＿Ｄ：プロセスＮ６
Ｎｏｄｅ＿Ｅ：プロセスＮ７
Ｎｏｄｅ＿Ｆ：プロセスＮ８
【００７３】
プロセス２５は、起動されると、保持される複数の分割パターンの中から１つの分割パターンを選択する（Ｓ９５）。各プロセス２５は、同じ分散処理プログラムに基づいて生成されているため、同一の分割パターンをそれぞれ選択する。ここで、各プロセス２５において、図７に示される分割パターンＣ−１及びＣ−２が保持されており、選択順序として、分割パターンＣ−１及びＣ−２を交互に繰り返す選択順序が保持されていると仮定する。この仮定によれば、プロセス２５は、まず、分割パターンＣ−１を選択する。
【００７４】
続いて、プロセス２５は、選択された分割パターンに関する情報を取得する（Ｓ９６）。ここで取得される情報には、各プロセス２５が局所集団通信を行う相手となる同一プロセスグループ内に属する他のプロセス２５の情報やその局所集団通信の具体的実現手法が含まれる。局所集団通信の具体的実現手法により、局所集団通信における各プロセス２５の役割（データを送る側、データを受ける側、所定演算を行うか否か等）等が示される。
【００７５】
図７の例において、プロセス２５がプロセスＮ１であると仮定すると、プロセスＮ１は、同一プロセスグループ内に属するプロセスＮ２からＮ４に関するマシン名、ＩＰアドレス等を取得する。また、例えば、プロセスＮ１は、局所集団通信の役割として、他のプロセスＮ２からＮ４からデータを収集し、収集されたデータに対して所定の演算を施し、演算結果を他のプロセスＮ２からＮ４に配布する役割を持つことを認識する。
【００７６】
プロセス２５は、分割パターンに関する情報に基づいて、工程（Ｓ９５）で選択された分割パターンに対応する同一プロセスグループ内の複数のプロセス２５間で局所集団通信を実行する（Ｓ９７）。図７の例によれば、プロセスＮ１からＮ４で局所集団通信が行われ、プロセスＮ５からＮ８で局所集団通信が行われる。
【００７７】
プロセス２５は、局所集団通信を完了すると、局所集団通信の実行ステップ（実行回数）が所定ステップ（所定回数）分完了したか否かを判定する（Ｓ９８）。所定ステップは、各プロセス２５が持つ全対象データが反映された演算結果データを全プロセス２５で共有することができる回数を示す。プロセス２５は、所定ステップ分完了した場合には（Ｓ９８；ＹＥＳ）、処理を終了する。一方、所定ステップ分完了していない場合には（Ｓ９８；ＮＯ）、プロセス２５は、工程（Ｓ９５）に戻り、処理を継続する。
【００７８】
次ステップでの工程（Ｓ９５）では、プロセス２５は、保持される選択順序の情報に基づいて、前回選択された分割パターンとは異なる分割パターンを選択する。図７の例によれば、プロセス２５は、分割パターンＣ−２を選択する。これにより、次ステップでは、プロセスＮ３からＮ６で局所集団通信が行われ、残りのプロセスで局所集団通信が行われる。
【００７９】
〔第１実施形態における作用及び効果〕
このように第１実施形態では、上述の実施形態における分散処理装置及び分散処理方法のように、選択された分割パターンに基づいて、全プロセスが複数のプロセスグループに分割された各プロセスグループ内のプロセス間で局所集団通信が行われる。即ち、第１実施形態では、複数の局所集団通信が並列に実行され、各局所集団通信に参加するプロセス数は、全プロセスで集団通信を行うのに比べて、減少する。
【００８０】
従って、第１実施形態によれば、集団通信に伴う通信負荷を拡散することができ、集団通信に伴う通信が分散処理高速化のボトルネックとなることを防ぐことができる。これにより、第１実施形態によれば、集団通信を伴う分散処理の高速化を実現することができる。
【００８１】
更に、第１実施形態では、各スレーブ装置２０で起動される分散処理のための各プロセス２５において、複数の分割パターン、及び、局所集団通信が所定回数繰り返された後、全プロセスが持つ対象データが反映されたデータが全プロセスで共有されるような複数の分割パターンの選択順序が保持されており、これら情報に基づいて選択される分割パターンに基づいて、各ステップでの局所集団通信がそれぞれ実行される。
【００８２】
これにより、第１実施形態によれば、局所集団通信の繰り返し回数が抑制されるため、繰り返し回数の増加に伴う処理速度の低下を抑制することができる。更に、第１実施形態によれば、局所集団通信の繰り返し回数が抑制されたとしても、所望の分散処理結果を得ることができる。
【００８３】
［第２実施形態］
第２実施形態では、各プロセス２５を起動させるスレーブ装置２０及び各スレーブ装置２０で起動させるプロセス数が、各スレーブ装置２０のプロセッサコア数及び接続ネットワークにより決定される。以下、第２実施形態における分散処理システム１について、第１実施形態と異なる内容を中心説明する。以下の説明では、第１実施形態と同様の内容については適宜省略する。
【００８４】
〔装置構成〕
スレーブ情報格納部１１は、各スレーブ装置２０に関し、第１実施形態で示された情報に加えて、プロセッサコア数及び接続ネットワーク情報を更にそれぞれ格納する。接続ネットワーク情報は、各スレーブ装置２０が接続されるネットワークセグメントやイーサネットセグメント（イーサネットは登録商標）を区別し得る情報である。よって、同一ネットワークセグメントに属する各スレーブ装置２０については同じ接続ネットワーク情報が設定される。
【００８５】
実行指示部１４は、スレーブ情報格納部１１に格納される情報に基づいて、接続ネットワーク毎のプロセッサコア数の合計が多くかつプロセッサコア数が多いスレーブ装置２０から優先的に、分散処理を実行させるスレーブ装置２０を選択し、更に、プロセッサコア数に応じてその選択されたスレーブ装置２０に起動させるプロセス数を決定する。これにより、実行指示部１４は、対象決定手段と呼ぶこともできる。実行指示部１４は、このように選択された各スレーブ装置２０に、分散処理に参加するスレーブ装置２０に関する接続ネットワーク情報及びプロセッサコア数、並びに、決定されたプロセス数を含む実行指示をそれぞれ送信する。
【００８６】
図１０は、第２実施形態におけるスレーブ装置２０の構成例を概念的に示す図である。図１０に示されるように、第２実施形態におけるスレーブ装置２０は、第１実施形態の構成に加えて、プロセス決定部２９を更に有する。プロセス決定部２９は、分散処理プログラムの実行により実現されるため、プロセス決定手段と呼ぶこともできる。
【００８７】
プロセス決定部２９は、自プロセス２５が、通信制御部２７により最初に選択された分割パターンの中のどのプロセス２５に対応するのかを決定する。プロセス決定部２９は、マスタ装置１０から実行指示と共に受信された分散処理に参加する各スレーブ装置２０に関する情報に基づいて、局所集団通信において、通信ができる限り発生せず、かつ、通信のレイテンシが出来る限り抑えられるように、上記決定を行う。プロセス決定部２９による具体的決定方法については図１１を用いて後述される。
【００８８】
〔動作例〕
以下、第２実施形態における分散処理システム１の動作例について図８及び図１１を用いて説明する。
【００８９】
第２実施形態では、工程（Ｓ８１）において、マスタ装置１０は、次のような情報をスレーブ情報格納部１１に格納する。
Ｎｏｄｅ＿Ａ，  １９２．１６８．０．２，  コア数（４），  ネットワークＡ
Ｎｏｄｅ＿Ｂ，  １９２．１６８．０．３，  コア数（２），  ネットワークＢ
Ｎｏｄｅ＿Ｃ，  １９２．１６８．０．４，  コア数（２），  ネットワークＣ
Ｎｏｄｅ＿Ｄ，  １９２．１６８．０．５，  コア数（２），  ネットワークＡ
Ｎｏｄｅ＿Ｅ，  １９２．１６８．０．６，  コア数（１），  ネットワークＡ
Ｎｏｄｅ＿Ｆ，  １９２．１６８．０．７，  コア数（２），  ネットワークＡ
Ｎｏｄｅ＿Ｇ，  １９２．１６８．０．８，  コア数（４），  ネットワークＢ
【００９０】
マスタ装置１０は、工程（Ｓ８４）において、次のような情報を含む分散処理プログラムの実行要求を取得する。
分散処理プログラム：  ／ｈｏｍｅ／ｕｓｅｒＡ／ｍｏｄｉｆｉｅｄ＿ｉｐｍ
起動プロセス数：  ８
【００９１】
マスタ装置１０は、工程（Ｓ８５）において、次のように、分散処理の実行指示の送信先となるスレーブ装置２０を選択する。マスタ装置１０は、スレーブ情報格納部１１から上述のようなスレーブ情報を取得し、接続ネットワーク毎のプロセッサコア数の合計を算出し、接続ネットワークをその合計値の降順にソートする。上記スレーブ情報の例によれば、次のようなリストが算出される。
ネットワークＡ：  コア数（９）
ネットワークＢ：  コア数（６）
ネットワークＣ：  コア数（２）
【００９２】
更に、マスタ装置１０は、上記リストの上位のネットワークから優先的に、実行要求で指定される起動プロセス数（８）を満足するように、ネットワークを選択する。上記例によれば、起動プロセス数（８）を満足するネットワークＡのみが選択される。これにより、通信レイテンシが小さい同一ネットワークに接続するスレーブ装置２０から優先的に選択されるようになる。
【００９３】
マスタ装置１０は、この選択されたネットワークＡに接続されており、かつ、プロセッサコア数が多いスレーブ装置２０から優先的に、実行要求で指定される起動プロセス数（８）を満足するスレーブ装置２０を選択する。上記例によれば、次のような３つのスレーブ装置２０が選択される。これにより、ノード間通信をできる限り発生させないスレーブ装置２０が優先的に選択されるようになる。
Ｎｏｄｅ＿Ａ，  １９２．１６８．０．２，  コア数（４），  ネットワークＡ
Ｎｏｄｅ＿Ｄ，  １９２．１６８．０．５，  コア数（２），  ネットワークＡ
Ｎｏｄｅ＿Ｆ，  １９２．１６８．０．７，  コア数（２），  ネットワークＡ
【００９４】
マスタ装置１０は、このように選択されたスレーブ装置２０を分散処理に参加するスレーブ装置２０に決定し、更に、各スレーブ装置２０で実行させるプロセス数をそれぞれのプロセッサコア数に応じて決定する。上記例では、Ｎｏｄｅ＿Ａのスレーブ装置２０のプロセッサ数が４に決定され、Ｎｏｄｅ＿Ｄのスレーブ装置２０のプロセッサ数が２に決定され、Ｎｏｄｅ＿Ｆのスレーブ装置２０のプロセッサ数が２に決定される。
【００９５】
マスタ装置１０は、このように選択された各スレーブ装置２０に、プロセス数と共に分散処理の実行指示をそれぞれ送る（Ｓ８５）。上述のような選択手法により、ノード間通信ができる限り発生せず、通信レイテンシが小さくなるようなスレーブ装置２０を分散処理に参加する装置として選択することができる。
【００９６】
図１１は、第２実施形態における各プロセス２５の動作例を示すフローチャートである。ここでは、各プロセス２５において、図７に示される分割パターンＣ−１及びＣ−２が保持されており、選択順序として、分割パターンＣ−１及びＣ−２を交互に繰り返す選択順序が保持されていると仮定する。
【００９７】
プロセス２５は、起動されると、保持される複数の分割パターンの中から１つの分割パターンを選択する（Ｓ１１１）。上記仮定により、各プロセス２５は、分割パターンＣ−１をそれぞれ選択する。
【００９８】
続いて、プロセス２５は、今回の局所集団通信が初回の場合に（Ｓ１１２；ＹＥＳ）、次のように動作する。プロセス２５は、選択された分割パターンで分割された各プロセスグループに蔵するプロセス集合のリストを生成する（Ｓ１１３）。図７の例によれば、次のようなプロセス集合のリストが生成される。
（プロセス集合のリスト）
｛プロセスＮ１，プロセスＮ２，プロセスＮ３，プロセスＮ４｝
｛プロセスＮ５，プロセスＮ６，プロセスＮ７，プロセスＮ８｝
【００９９】
プロセス２５は、各プロセスグループに関するプロセス集合のリストを、要素の数（プロセスの数）が多い順にソートする（Ｓ１１４）。図７の例では、どちらのプロセス集合も要素数が同じ（４）であるため、ソート結果は変わらない。
【０１００】
プロセス２５は、分散処理に参加するスレーブ装置２０の情報をマスタ装置１０から指定された起動プロセス数が多い順にソートする（Ｓ１１５）。
（スレーブ装置リスト）
Ｎｏｄｅ＿Ａ，  １９２．１６８．０．２，  プロセス数（４），  ネットワークＡ
Ｎｏｄｅ＿Ｄ，  １９２．１６８．０．５，  プロセス数（２），  ネットワークＡ
Ｎｏｄｅ＿Ｆ，  １９２．１６８．０．７，  プロセス数（２），  ネットワークＡ
【０１０１】
プロセス２５は、プロセス集合のリストの上位のプロセス集合に含まれる各プロセスを優先的に、スレーブ装置リストの上位のスレーブ装置２０に順に割り当てていく（Ｓ１１６）。図７の例によれば、図１２に示される割り当てが決定される。図１２は、第２実施形態におけるプロセス割り当ての例を概念的に示す図である。
【０１０２】
プロセス２５は、この割り当て結果及び自プロセスが起動されているスレーブ装置２０の情報に応じて、自プロセスが分割パターンにおけるどのプロセスに対応するかを認識する（Ｓ１１７）。図７の例において、Ｎｏｄｅ＿Ｄのスレーブ装置２０で起動されたプロセス２５は、図１２に示される割り当て結果に基づいて、自プロセスが分割パターンＣ−１におけるプロセスＮ５又はＮ６であることを認識する。
【０１０３】
続いて、プロセス２５は、この認識結果に基づいて、選択された分割パターンに関する情報を取得する（Ｓ１１８）。
【０１０４】
プロセス２５は、取得された情報に基づいて、工程（Ｓ１１１）で選択された分割パターンに対応する同一プロセスグループ内の複数のプロセス２５間で局所集団通信を実行する（Ｓ１１９）。この分割パターンＣ−１での各局所集団通信では、Ｎｏｄｅ＿Ｄのスレーブ装置２０とＮｏｄｅ＿Ｆのスレーブ装置２０との間でしか通信は発生しない。
【０１０５】
一方、プロセス２５は、今回の局所集団通信が初回でない場合には（Ｓ１１２；ＮＯ）、上述の工程（Ｓ１１３）から工程（Ｓ１１７）を実行しない。既に、自プロセスが分割パターンにおけるどのプロセスに対応するかの認識が完了しているからである。以降、第１実施形態における図９の工程（Ｓ９８）と同様の工程（Ｓ１２０）が実行される。
【０１０６】
〔第２実施形態における作用及び効果〕
このように、第２実施形態では、各スレーブ装置２０のプロセッサコア数及び接続ネットワークに基づいて、分散処理に参加するスレーブ装置２０及びそのスレーブ装置２０で起動されるプロセッサの数が決定される。そして、初回選択された分割パターンに各プロセス２５が対応付けられる。このような決定及び対応付けは、局所集団通信が、同じスレーブ装置２０内のマルチコアでできる限り実行され、かつ、同一ネットワークに接続されるスレーブ装置２０間でできる限り実行されるように実行される。
【０１０７】
従って、第２実施形態によれば、各局所集団通信においても、通信が発生せず、かつ、通信レイテンシが小さくなるように制御されるため、集団通信を伴う分散処理の高速化を実現することができる。
【０１０８】
以下に実施例を挙げ、上述の第１実施形態を更に詳細に説明する。
【実施例】
【０１０９】
図１３は、実施例における分散処理システム１の構成を概念的に示す図である。分散処理システム１は、上述の各実施形態で示した装置（マスタ装置１０及びスレーブ装置２０）に加えて、ＤＮＳサーバ装置５２、ＮＦＳサーバ装置５３、クライアント装置５１を更に有する。本実施例では、通信網９がＬＡＮとして実現される。また、スレーブ装置２０は８台存在する。クライアント装置５１、ＤＮＳサーバ装置５２及びＮＦＳサーバ装置５３は、マスタ装置１０やスレーブ装置２０と同様に、いわゆるコンピュータである。【０１１０】
マスタ装置１０、スレーブ装置２０及びクライアント装置５１は、ＮＦＳサーバ装置５３のホームディレクトリをマウントしているため、マスタ装置１０及びスレーブ装置２０は、クライアント装置５１がＮＦＳサーバ装置５３に保存したファイルにアクセスすることができる。【０１１１】
本実施例では、マスタ装置１０のマシン名がＭＡＴ１であり、８台のスレーブ装置２０のマシン名がＳＬＶ１からＳＬＶ８であると仮定する。コンピュータ同士が通信する場合には、ＤＮＳサーバ装置５２により提供されるＤＮＳサービスにより、マシン名ＭＡＴ１を名前解決することにより、対応するＩＰアドレスが取得される。【０１１２】
マスタ装置１０のスレーブ情報格納部１１には、スレーブ装置２０のマシン名ＳＬＶ１からＳＬＶ８が格納されている。また、８台のスレーブ装置２０も起動されている。この状態で、ユーザは、クライアント装置５１を操作することにより、分散処理プログラムの実行要求をマスタ装置１０へ送る。本実施例では、実行要求と共に、次のような情報が送られる。
分散処理プログラム：  ／ｈｏｍｅ／ｕｓｅｒＡ／ｓｐｅｒｃｅｐｔｒｏｎ
起動プロセス数：  ８【０１１３】
ここで、分散処理プログラムは、次のような構造化パーセプトロンの分散学習プログラムである。
（分散処理プログラム：／ｈｏｍｅ／ｕｓｅｒＡ／ｓｐｅｒｃｅｐｔｒｏｎ）
１．ｗ＝０    ／／重みベクトル初期化
２．Ｄａｔａ＝｛（ｘ１，ｙ１），（ｘ２，ｙ２），・・・（ｘｎ，ｙｎ）｝
／／データを読み込む（ｘは特徴、ｙはラベル）
３．Ｆｏｒ  ｉ＝１：Ｍａｘ    ／／以下の（１）、（２）をＭａｘ回繰り返す
（１）Ｆｏｒｅａｃｈ  （ｘ，ｙ）  ｉｎ  Ｄａｔａ
ａ）現在の推定が間違っていればｗ更新
（２）ｗ＝ＰｓｅｕｄｏＡｌｌｒｅｄｃｕｅ（ｗ，ｉ，４）
／／４台ずつのＡｌｌｒｅｄｕｃｅ（局所集団通信）
４．ｗ＝Ａｌｌｒｅｄｕｃｅ（ｗ）／ｎ【０１１４】
マスタ装置１０は、クライアント装置５１から上述の実行要求を受信すると、スレーブ情報格納部１１から起動可能なスレーブ装置２０のマシン名ＳＬＶ１からＳＬＶ８を取得する。当該実行要求において起動プロセス数８が指定されているため、マスタ装置１０は、各スレーブ装置２０に１プロセスずつ起動させる。具体的には、マスタ装置１０は、８台のスレーブ装置２０の各々にアクセスし、分散処理プログラムが存在する場所、実行を担当するスレーブ装置２０のマシン名（ＳＬＶ１からＳＬＶ８）を送信する。【０１１５】
スレーブ装置２０は、マスタ装置１０からの実行指示と共に送られるスレーブ装置２０のマシン名をスレーブ情報格納部２４に格納する。次に、スレーブ装置２０は、分散処理プログラムを／ｈｏｍｅ／ｕｓｅｒＡ／ｓｐｅｒｃｅｐｔｒｏｎから読み出し、実行する。これにより、各スレーブ装置２０では、構造化パーセプトロンの分散学習処理を行う１つずつのプロセスがそれぞれ起動される。【０１１６】
本実施例では、次のような、各スレーブ装置２０と各プロセスとの対応関係が実現される。
ＳＬＶ１  ：  プロセスＮ１
ＳＬＶ２  ：  プロセスＮ２
ＳＬＶ３  ：  プロセスＮ３
ＳＬＶ４  ：  プロセスＮ４
ＳＬＶ５  ：  プロセスＮ５
ＳＬＶ６  ：  プロセスＮ６
ＳＬＶ７  ：  プロセスＮ７
ＳＬＶ８  ：  プロセスＮ８【０１１７】
上述のように、分散処理プログラムは、Ｍａｘ回の反復計算を行う。１回の反復のたびに、ＰｓｅｕｄｏＡｌｌｒｅｄｃｕｅが実行される。本実施例におけるＰｓｅｕｄｏＡｌｌｒｅｄｕｃｅの実行が集団通信部２６に相当する。集団通信部２６の引数に、反復の数ｉと、局所集団通信が行われる台数（ｍ＝４）が提供される。【０１１８】
通信制御部２７は、図７に示される分割パターンＣ−１及びＣ−２の情報、それらを交互に繰り返す選択順序を保持している。通信制御部２７は、上記引数ｉの値が奇数か偶数かにより、図７の分割パターンＣ−１か分割パターンＣ−２かを決定する。例えば、ｉが１の場合には、分割パターンＣ−１が選択される。【０１１９】
これにより、引数ｉが１の場合の局所集団通信は、ＳＬＶ１からＳＬＶ４のスレーブ装置２０間、及び、ＳＬＶ５からＳＬＶ８のスレーブ装置２０間で行われる。次のステップ（引数ｉが２の場合）には、局所集団通信は、ＳＬＶ１、ＳＬＶ２、ＳＬＶ７及びＳＬＶ８のスレーブ装置２０間、及び、ＳＬＶ３からＳＬＶ６のスレーブ装置２０間で行われる。【０１２０】
［変形例］
上述の各実施形態では、局所集団通信は所定ステップ数繰り返されたが、局所集団通信の結果（局所処理データ）に応じて、局所集団通信の繰り返しが終了されるようにしてもよい。【０１２１】
図１４は、変形例におけるスレーブ装置２０の構成例を概念的に示す図である。変形例におけるスレーブ装置２０では、プロセス２５が、上述の各実施形態の構成に加えて、評価部３１を更に有する。評価部３１は、分散処理プログラムの実行により実現されるため、評価手段と呼ぶこともできる。【０１２２】
評価部３１は、局所集団通信の結果（局所処理データ）に基づくデータを評価する。評価部３１は、局所集団通信の結果そのものを評価してもよいし、局所集団通信の結果に対して処理が施されることで得られるデータを評価してもよい。例えば、評価部３１は、前回の局所集団通信の結果と今回の局所集団通信の結果との差分が所定閾値よりも小さい場合に、その局所処理データが所望のレベルを満たすと評価する。また、評価部３１は、所定の評価関数を持ち、その評価関数に局所処理データを与えることにより得られる結果で、その局所処理データが所望のレベルを満たすと評価してもよい。【０１２３】
通信制御部２７は、評価部３１の評価結果に応じて、プロセスを続行させるか否かを判定する。この判定により、集団通信部２６により次の局所集団通信が実行されるか否かが決まり得る。通信制御部２７は、評価部３１の評価結果がその局所処理データが所望のレベルを満たすことを示す場合には、プロセスを終了させる。これにより、集団通信部２６の処理が行われなくなる。一方、通信制御部２７は、評価部３１の評価結果がその局所処理データが所望のレベルを満たしていないことを示す場合には、プロセスを続行させる。これにより、集団通信部２６により次の局所集団通信が実行される。【０１２４】
この変形例によれば、局所集団通信の繰り返し回数を一層抑制することができ、集団通信を伴う分散処理の高速化を実現することができる。【０１２５】
また、上述の各実施形態では、図５、図６及び図７の例に示されるように、各プロセスグループ内のプロセス数が全ての分割パターンにおいて同じに設定されていたが、各分割パターンで、プロセスグループ内のプロセス数が異なっていてもよい。【０１２６】
局所集団通信が繰り返されるにつれ、局所処理データには多くの対象データが反映されており、局所処理データの習熟度は高いと言える。そこで、一般的には、局所処理データを所望レベルに到達させるためには、繰り返し初期に比べ、繰り返し後期のほうがより多くの情報量が必要となる。そこで、繰り返し後期では、通信制御部２７は、各プロセスグループ内のプロセス数が繰り返し初期よりも多い分割パターンを選択するようにしてもよい。【０１２７】
この場合、通信制御部２７は、プロセスグループ内のプロセス数が異なる複数の分割パターンを保持し、評価部３１の評価結果に応じて、複数の分割パターンの中から、次の局所集団通信に用いられる分割パターンを選択するようにしてもよい。また、通信制御部２７は、繰り返し後期にプロセスグループ内のプロセス数が多くなるような選択順序を予め保持し、この選択順序に応じて、各プロセスグループ内のプロセス数が先の局所集団通信のときよりも多い分割パターンを次の局所集団通信のための分割パターンとして選択するようにしてもよい。【０１２８】
この変形例によれば、局所集団通信の結果を早く所望のレベルに到達させることができるため、局所集団通信の繰り返し回数を一層抑制することができ、ひいては、集団通信を伴う分散処理の高速化を実現することができる。【０１２９】
また、上述の各実施形態では、複数の分割パターンが通信制御部２７により保持されている例が示されたが、次の局所集団通信に用いる分割パターンは動的に決められてもよい。具体的には、各プロセス２５の通信制御部２７が、各プロセス２５の局所処理データをマスタ装置１０に送り、マスタ装置１０が収集された局所処理データに基づいて分割パターンを動的に決定し、各プロセス２５の通信制御部２７が、その決定された分割パターンを次の局所集団通信に利用するようにしてもよい。【０１３０】
上述の第２実施形態では、各スレーブ装置２０のプロセッサコア数及び接続ネットワーク情報の両方が考慮されたが、いずれか一方に基づいて、分散処理に参加させるスレーブ装置２０が選択されてもよい。この場合、マスタ装置１０のスレーブ情報格納部１１は、各スレーブ装置２０について、プロセッサコア数又は接続ネットワーク情報をそれぞれ格納すればよい。また、マスタ装置１０の実行指示部１４は、接続ネットワークが同じスレーブ装置２０を優先的に選択するか、又は、プロセッサコア数が多い分スレーブ装置２０を優先的に選択するようにすればよい。このような形態であっても、各局所集団通信において通信が抑制されるか、又は、通信レイテンシが小さくなるように制御されるため、集団通信を伴う分散処理の高速化を実現することができる。【０１３１】
なお、上述の説明で用いた複数のフローチャートでは、複数の工程（処理）が順番に記載されているが、本実施形態で実行される工程の実行順序は、その記載の順番に制限されない。本実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。【０１３２】
この出願は、２０１２年７月３０日に出願された日本特許出願特願２０１２−１６８６９８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2014020959.tif 000003
【図２】
2014020959.tif 000004
【図３】
2014020959.tif 000005
【図４】
2014020959.tif 000006
【図５】
2014020959.tif 000007
【図６】
2014020959.tif 000008
【図７】
2014020959.tif 000009
【図８】
2014020959.tif 000010
【図９】
2014020959.tif 000011
【図１０】
2014020959.tif 000012
【図１１】
2014020959.tif 000013
【図１２】
2014020959.tif 000014
【図１３】
2014020959.tif 000015
【図１４】
2014020959.tif 000016
【国際調査報告】
2014020959.tif 000017
2014020959.tif 000018
2014020959.tif 000019
2014020959.tif 000020