(57)【要約】【課題】並列処理装置の起動時間を短縮する。【解決手段】並列処理装置は、プログラムが格納された記憶部を有し、前記記憶部からロードした前記プログラムを実行することで起動される第１のノードと、前記第１のノードの前記記憶部からロードした前記プログラムを実行することで起動される第２のノードと、前記第１のノードと前記第２のノードとのそれぞれに対して、前記プログラムをロード可能な状態に設定する設定処理を実行する制御部とを有し、前記制御部は、前記第１のノードの前記設定処理の開始から所定時間後に前記第２のノードの前記設定処理を開始し、前記所定時間は、前記第１のノードの起動完了タイミングと前記第２のノードの前記設定処理の完了タイミングとを揃える時間である。【選択図】図１
2020119314.tif 000002
【特許請求の範囲】
【請求項１】
プログラムが格納された記憶部を有し、前記記憶部からロードした前記プログラムを実行することで起動される第１のノードと、
前記第１のノードの前記記憶部からロードした前記プログラムを実行することで起動される第２のノードと、
前記第１のノードと前記第２のノードとのそれぞれに対して、前記プログラムをロード可能な状態に設定する設定処理を実行する制御部とを有し、
前記制御部は、前記第１のノードの前記設定処理の開始から所定時間後に前記第２のノードの前記設定処理を開始し、
前記所定時間は、前記第１のノードの起動完了タイミングと前記第２のノードの前記設定処理の完了タイミングとを揃える時間であることを特徴とする並列処理装置。
【請求項２】
前記所定時間は、前記第１のノードの前記設定処理後に実行される前記第１のノードの起動時間から、前記第１のノードおよび前記第２のノードの前記設定処理を並列に実行した場合の設定処理時間を引いた時間を”４”で除した値に、前記第１のノードのみに前記設定処理を実行する場合の設定処理時間を加えた時間であることを特徴とする請求項１に記載の並列処理装置。
【請求項３】
前記制御部は、現在の前記所定時間と、修正のために算出した前記所定時間との差が第１時間内に収まらない場合、前記第１のノードの起動完了タイミングと、前記第２のノードの前記設定処理の完了タイミングとの差が小さくなる方向に前記所定時間を修正することを特徴とする請求項１または請求項２に記載の並列処理装置。
【請求項４】
前記制御部は、前記第１のノードの起動完了タイミングと、前記第２のノードの前記設定処理の完了タイミングとの差が第２時間内に収まらない場合、前記第１のノードの起動完了タイミングと、前記第２のノードの前記設定処理の完了タイミングとの差が小さくなる方向に前記所定時間を修正することを特徴とする請求項１または請求項２に記載の並列処理装置。
【請求項５】
前記制御部は、前記第１のノードの起動完了タイミングが、前記第２のノードの前記設定処理の完了タイミングより遅い場合、前記所定時間を長くし、前記第１のノードの起動完了タイミングが、前記第２のノードの前記設定処理の完了タイミングより早い場合、前記所定時間を短くすることを特徴とする請求項３または請求項４に記載の並列処理装置。
【請求項６】
前記設定処理後に前記第１のノードが実行する起動処理は、前記プログラムをロードして実行するプログラム起動処理と、前記プログラム起動処理後に実行される、前記第２のノードに前記プログラムを転送可能にする転送設定処理とを含み、
前記第１のノードの前記起動処理の完了タイミングは、前記転送設定処理の完了タイミングであることを特徴とする請求項１ないし請求項５のいずれか１項に記載の並列処理装置。
【請求項７】
プログラムが格納された記憶部を有し、前記記憶部からロードした前記プログラムを実行することで起動される第１のノードと、前記第１のノードの前記記憶部からロードした前記プログラムを実行することで起動される第２のノードとを有する並列処理装置のノード起動方法であって、
前記第１のノードに対して、前記プログラムをロード可能な状態に設定する設定処理を開始し、
前記第１のノードの前記設定処理の開始から所定時間後に前記第２のノードの前記設定処理を開始し、
前記所定時間は、前記第１のノードの起動完了タイミングと前記第２のノードの前記設定処理の完了タイミングとを揃える時間であることを特徴とするノード起動方法。
【請求項８】
プログラムが格納された記憶部を有し、前記記憶部からロードした前記プログラムを実行することで起動される第１のノードと、前記第１のノードの前記記憶部からロードした前記プログラムを実行することで起動される第２のノードとを有する並列処理装置のノード起動プログラムであって、
前記第１のノードに対して、前記プログラムをロード可能な状態に設定する設定処理を開始し、
前記第１のノードの前記設定処理の開始から所定時間後に前記第２のノードの前記設定処理を開始する、
処理をコンピュータに実行させ、
前記所定時間は、前記第１のノードの起動完了タイミングと前記第２のノードの前記設定処理の完了タイミングとを揃える時間であることを特徴とするノード起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置、ノード起動方法、ノード起動プログラムに関する。
【背景技術】
【０００２】
複数の計算機で処理を並列に実行する並列処理装置において、複数の計算機が同時に起動されると、共有ストレージからＯＳ（Operating  System）等のプログラムをダウンロードするためのアクセスが集中し、起動処理に多大な時間が掛かってしまう。そこで、計算機をグループ分けし、計算機をグループ毎に時間差をつけて起動することで、共有ストレージへのアクセスを分散させて起動時間を短縮する手法が提案されている（例えば、特許文献１参照）。
【０００３】
また、ＯＳイメージ等の起動データを管理する第１ノードと、第１ノードから取得した起動データを用いて起動する第２ノードと、第１ノードおよび第２ノードを管理する管理装置とを有する情報処理システムが知られている。この種の情報処理システムを動作させる場合、管理装置は、まず、第１ノードおよび第２ノードに起動を開始させる。起動を開始した第２ノードは、管理装置から取得した情報に基づいて第１ノードのＯＳの起動完了を検出した場合、第１ノードから起動データを取得し、取得した起動データを用いてＯＳを起動する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２４９９０８号公報
【特許文献２】特開２０１５−１１３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した情報処理システムでは、第２ノードは、第１ノードから起動データを取得した後、ＯＳの起動処理を実施する。このため、第２ノードは、第１ノードがＯＳの起動を完了した後でなければ、ＯＳの起動処理を開始できない。第１ノードと第２ノードとに起動処理を並列に実行させることで、第１ノードと第２ノードとに起動処理を順次実行させる場合に比べて、情報処理システムの起動時間を短くすることができる。しかしながら、第１ノードのＯＳの起動が完了するまで、第２ノードがＯＳの起動処理の開始を待つ場合、情報処理システムの起動時間が長くなり、情報処理システムの運用の開始が遅くなってしまう。
【０００６】
１つの側面では、本発明は、並列処理装置の起動時間を短縮することを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、並列処理装置は、プログラムが格納された記憶部を有し、前記記憶部からロードした前記プログラムを実行することで起動される第１のノードと、前記第１のノードの前記記憶部からロードした前記プログラムを実行することで起動される第２のノードと、前記第１のノードと前記第２のノードとのそれぞれに対して、前記プログラムをロード可能な状態に設定する設定処理を実行する制御部とを有し、前記制御部は、前記第１のノードの前記設定処理の開始から所定時間後に前記第２のノードの前記設定処理を開始し、前記所定時間は、前記第１のノードの起動完了タイミングと前記第２のノードの前記設定処理の完了タイミングとを揃える時間である。
【発明の効果】
【０００８】
１つの側面では、本発明は、並列処理装置の起動時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態における並列処理装置の一例を示す図である。
【図２】図１のサービスプロセッサによるディスク起動ノードおよびネットワーク起動ノードの起動の制御の一例を示す図である。
【図３】別の実施形態における並列処理装置の一例を示す図である。
【図４】図３のサービスプロセッサによる起動ノードおよび計算ノードの起動の制御の一例を示す図である。
【図５】ノードの並列数に応じた設定処理時間の変化の例を示す図である。
【図６】待ち時間と全ノード起動時間との関係の例を示す図である。
【図７】図３のサービスプロセッサが実行する待ち時間の初期値を設定する動作フローの一例を示す図である。
【図８】図３のサービスプロセッサが実行する待ち時間を収束させる動作フローの一例を示す図である。
【図９】図３のサービスプロセッサが実行する待ち時間を収束させる動作フローの別の例を示す図である。
【図１０】図３のサービスプロセッサが実行する並列処理装置の起動処理の動作フローの一例を示す図である。
【図１１】別の実施形態の並列処理装置のサービスプロセッサが実行する待ち時間を収束させる動作フローの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態が説明される。
【００１１】
図１は、一実施形態における並列処理装置の一例を示す。図１に示す並列処理装置１００は、ディスク起動ノード１０と、複数のネットワーク起動ノード１２と、サービスプロセッサ１４とを有する。ディスク起動ノード１０と複数のネットワーク起動ノード１２とは、通信線１６（例えば、ネットワーク）を介して相互に接続される。ディスク起動ノード１０および複数のネットワーク起動ノード１２と、サービスプロセッサ１４とは、通信線１８を介してそれぞれ接続される。ディスク起動ノード１０は、第１のノードの一例であり、ネットワーク起動ノード１２は、第２のノードの一例であり、サービスプロセッサ１４は、制御部およびコンピュータの一例である。なお、ネットワーク起動ノード１２の数は、１台でもよい。
【００１２】
ディスク起動ノード１０およびネットワーク起動ノード１２は、ＣＰＵ（Central  Processing  Unit）２０、メモリ２２および記憶部２４を有する。ＣＰＵ２０は、自ノード１０または自ノード１２のメモリ２２に保持されるＯＳ（Operating  System）およびアプリケーションプログラム等のプログラムを実行する。例えば、メモリ２２は、主記憶装置等であり、記憶部２４は、ＨＤＤ（Hard  Disk  Drive）またはＳＳＤ（Solid  State  Drive）等の補助記憶装置である。
【００１３】
ディスク起動ノード１０の記憶部２４には、ディスク起動ノード１０およびネットワーク起動ノード１２で実行されるＯＳ（例えば、ＯＳイメージ）が格納されている。なお、ディスク起動ノード１０上で動作するＯＳと、ネットワーク起動ノード１２上で動作するＯＳは、相違してもよい。ＯＳは、ディスク起動ノード１０およびネットワーク起動ノード１２の各々を起動するためにロードされて実行されるプログラムの一例である。
【００１４】
ディスク起動ノード１０は、サービスプロセッサ１４により電源が投入された後、サービスプロセッサ１４による設定処理により、ＯＳを実行可能な状態に設定される。ディスク起動ノード１０は、設定処理の完了後にハードディスク装置等の記憶部２４が保持するＯＳをメモリ２２上に展開して実行することで起動される。
【００１５】
各ネットワーク起動ノード１２は、ディスク起動ノード１０と同様に、サービスプロセッサ１４により電源が投入された後、サービスプロセッサ１４による設定処理により、ＯＳを実行可能な状態に設定される。但し、各ネットワーク起動ノード１２の記憶部２４にはＯＳは格納されていない。このため、各ネットワーク起動ノード１２は、通信線１６等のネットワークを介して、ディスク起動ノード１０の記憶部２４に格納されたＯＳを自ノードの記憶部２４にダウンロードしてメモリ２２上に展開した後、ＯＳを実行することで起動される。そして、各ネットワーク起動ノード１２は、ＣＰＵ２０による演算処理等の情報処理を実行可能な状態になる。したがって、各ネットワーク起動ノード１２は、ディスク起動ノード１０の起動が完了するまで、ＯＳのダウンロードを開始できない。
【００１６】
ディスク起動ノード１０は、自ノードのディスク（例えば、記憶部２４）が保持するＯＳを用いて起動されるノードである。ネットワーク起動ノード１２は、ネットワーク（例えば、通信線１６）を介して、ディスク起動ノード１０等の他のノードの記憶部２４が保持するＯＳをロードすることで起動されるノードである。
【００１７】
サービスプロセッサ１４は、ディスク起動ノード１０およびネットワーク起動ノード１２と同様に、ＣＰＵ２０、メモリ２２および記憶部２４を有する。なお、サービスプロセッサ１４は、後述する待ち時間ｔＷＡＩＴが格納されるフラッシュメモリ等の書き換え可能な不揮発性メモリ２６を含んでもよい。
【００１８】
例えば、サービスプロセッサ１４は、メモリ２２に記憶されたノード起動プログラムを実行することで、ディスク起動ノード１０およびネットワーク起動ノード１２のそれぞれに対して、初期設定等をするための設定処理を実行する。すなわち、ノード起動プログラムの実行により、ディスク起動ノード１０およびネットワーク起動ノード１２を起動するノード起動方法が実現される。例えば、サービスプロセッサ１４は、ディスク起動ノード１０の設定処理を開始した後、所定時間後にネットワーク起動ノード１２の設定処理を開始する。
【００１９】
サービスプロセッサ１４は、並列処理装置１００を管理する図示しない制御サーバ等からディスク起動ノード１０およびネットワーク起動ノード１２の全てを起動する指示を受けた場合、ディスク起動ノード１０およびネットワーク起動ノード１２の電源を投入する。そして、サービスプロセッサ１４は、ディスク起動ノード１０およびネットワーク起動ノード１２の設定処理を開始する。ここで、設定処理は、各ノード１０、１２の状態を、ＯＳをダウンロード可能な状態に設定する処理であり、例えば、ＣＰＵ２０等の各ノード１０、１２に含まれるハードウェア資源を初期設定する処理である。なお、制御サーバは、図１に示す並列処理装置１００だけでなく、図示しない他の並列処理装置１００に対して起動の指示を発行してもよい。
【００２０】
また、サービスプロセッサ１４は、図示しない制御プログラムを実行することで、ディスク起動ノード１０およびネットワーク起動ノード１２の状態を制御してもよい。例えば、サービスプロセッサ１４は、ＢＭＣ（Baseboard  Management  Controller）の機能を有し、ディスク起動ノード１０およびネットワーク起動ノード１２に対して、電源の管理、温度、電圧等の各種情報の取得、クロック周波数の管理等を実施可能である。なお、ノード起動プログラムは、制御プログラムに含まれてもよい。
【００２１】
図２は、図１のサービスプロセッサ１４によるディスク起動ノード１０およびネットワーク起動ノード１２の起動の制御の一例を示す。すなわち、図２は、サービスプロセッサ１４によるノード起動方法を示している。例えば、サービスプロセッサ１４による起動の制御は、サービスプロセッサ１４のＣＰＵ２０が実行するノード起動プログラムにより実現される。図２に示す下向きの三角は、サービスプロセッサ１４による設定処理の開始タイミングを示す。図２の下側のかぎ括弧内は、比較例として、後述する待ち時間ｔＷＡＩＴを変化させた場合の動作を示す。
【００２２】
サービスプロセッサ１４は、ディスク起動ノード１０およびネットワーク起動ノード１２の全てを起動する全ノード起動指示を受けた場合、まず、ディスク起動ノード１０の設定処理を開始する。サービスプロセッサ１４は、ディスク起動ノード１０の設定処理の開始から待ち時間ｔＷＡＩＴ後にネットワーク起動ノード１２の設定処理を開始する。待ち時間ｔＷＡＩＴは、所定時間の一例である。
【００２３】
ディスク起動ノード１０は、設定処理の完了に基づいて自ノード１０の記憶部２４が保持するＯＳをメモリ２２上に展開し、ＯＳを起動する起動処理を実行する。なお、ディスク起動ノード１０による起動処理は、ネットワーク起動ノード１２へのＯＳの転送を可能する通信インタフェース等の初期設定であって、ＯＳの起動後に実行される処理を含んでもよい。
【００２４】
待ち時間ｔＷＡＩＴだけ遅れて設定処理が開始されたネットワーク起動ノード１２の設定処理は、ディスク起動ノード１０の設定処理の完了よりも遅れて完了する。ここで、サービスプロセッサ１４は、ディスク起動ノード１０の起動完了タイミングと、ネットワーク起動ノード１２の設定処理の完了タイミングとの差（絶対値）が所定の閾値時間内に収まるように、待ち時間ｔＷＡＩＴを設定する。例えば、閾値時間は、後述するギャップｔＡ、ｔＢより短い。換言すれば、待ち時間ｔＷＡＩＴの設定により、ディスク起動ノード１０の起動完了タイミングと、ネットワーク起動ノード１２の設定処理の完了タイミングとが揃えられる。
【００２５】
これにより、ディスク起動ノード１０の起動処理の完了後、直ちにネットワーク起動ノード１２の起動処理を開始することができる。この結果、例えば、ディスク起動ノード１０とネットワーク起動ノード１２との設定処理を同時に開始する場合に比べて、全ノード起動指示からネットワーク起動ノード１２による情報処理が実行可能になるまでの時間を短縮することができる。すなわち、並列処理装置１００の起動時間を短縮することができる。
【００２６】
かぎ括弧内の上側は、待ち時間ｔＷＡＩＴを長くした場合の動作の例を示す。待ち時間ｔＷＡＩＴを長くした場合、ディスク起動ノード１０の設定処理とネットワーク起動ノード１２の設定処理とが重複する時間が短くなる。これにより、サービスプロセッサ１４において負荷が集中する時間が減少するため、各設定処理の時間は短くなる。但し、ディスク起動ノード１０とネットワーク起動ノード１２とで設定処理の削減量は異なる。
【００２７】
かぎ括弧内の上側では、ネットワーク起動ノード１２の設定処理の完了タイミングは、ディスク起動ノード１０の起動処理の完了タイミングに比べて、ほぼ待ち時間ｔＷＡＩＴの増加量に対応する時間だけ遅れる。ディスク起動ノード１０の起動処理が完了しているにもかかわらず、ネットワーク起動ノード１２は、設定処理が完了するまでディスク起動ノード１０からＯＳのダウンロードをできず、起動処理を開始できない。これにより、ディスク起動ノード１０の起動処理の完了からネットワーク起動ノード１２の起動処理の開始までの間に時間的なギャップｔＡが発生し、並列処理装置１００の起動時間が増加してしまう。
【００２８】
かぎ括弧内の下側は、待ち時間ｔＷＡＩＴを短くした場合の動作の例を示す。待ち時間ｔＷＡＩＴを短くした場合、ディスク起動ノード１０の設定処理とネットワーク起動ノード１２の設定処理とが重複する時間が長くなる。これにより、サービスプロセッサ１４において負荷が集中する時間が増加し、各設定処理の時間は長くなる。
【００２９】
かぎ括弧内の下側では、ディスク起動ノード１０の起動処理の完了タイミングは、ネットワーク起動ノード１２の設定処理の完了タイミングに比べて、ほぼ待ち時間ｔＷＡＩＴの減少量に対応する時間だけ遅れる。ネットワーク起動ノード１２は、ディスク起動ノード１０の起動処理が完了するまで、ディスク起動ノード１０からＯＳのダウンロードをできないため、起動処理を開始できない。これにより、ネットワーク起動ノード１２の設定処理の完了から起動処理の開始までの間に時間的なギャップｔＢが発生する。また、上述したように、待ち時間ｔＷＡＩＴを短くしたことで、ディスク起動ノード１０の設定処理時間は長くなる。したがって、ネットワーク起動ノード１２の起動処理の完了タイミングが遅くなり、並列処理装置１００の起動時間は増加してしまう。
【００３０】
なお、ディスク起動ノード１０の起動完了タイミングとネットワーク起動ノード１２の設定処理の完了タイミングとの差が所定の閾値時間内に収まる最適な待ち時間ｔＷＡＩＴは、並列処理装置１００に含まれるネットワーク起動ノード１２の数に応じて異なる。また、待ち時間ｔＷＡＩＴとギャップｔＡ、ｔＢとの関係は、並列処理装置１００に含まれるネットワーク起動ノード１２の数に応じて異なる。
【００３１】
このため、サービスプロセッサ１４は、並列処理装置１００の起動時に、ディスク起動ノード１０の起動完了タイミングと、ネットワーク起動ノード１２の設定処理の完了タイミングとの差であるギャップｔＡ（または、ｔＢ）を取得してもよい。ここで、ギャップｔＡが発生する場合、ギャップｔＢは発生せず（ｔＢ＝０）、ギャップｔＢが発生する場合、ギャップｔＡは発生しない（ｔＡ＝０）。したがって、ギャップｔＡ、ｔＢの差の絶対値を算出することで、ギャップｔＡ、ｔＢのいずれが”０”であるかを判定することなく、ギャップｔＡ（または、ｔＢ）を取得することができる。そして、サービスプロセッサ１４は、取得したギャップｔＡ（または、ｔＢ）が閾値時間を超える場合、差を閾値時間に収めるために待ち時間ｔＷＡＩＴを修正してもよい。閾値時間は、第２時間の一例である。
【００３２】
さらに、サービスプロセッサ１４は、待ち時間ｔＷＡＩＴの修正量が所定時間内に収まるまで、待ち時間ｔＷＡＩＴの修正を繰り返してもよい。あるいは、サービスプロセッサ１４は、差が閾値時間内に収まるまで、待ち時間ｔＷＡＩＴの修正を繰り返してもよい。以下では、上記差の取得および待ち時間ｔＷＡＩＴの修正は、待ち時間ｔＷＡＩＴの修正処理とも称される。待ち時間ｔＷＡＩＴの修正処理は、サービスプロセッサ１４が実行するノード起動プログラムにより実現されてもよい。
【００３３】
サービスプロセッサ１４は、ディスク起動ノード１０の起動完了タイミングが、ネットワーク起動ノード１２の設定処理の完了タイミングより早い場合、待ち時間ｔＷＡＩＴを短くする。また、サービスプロセッサ１４は、ディスク起動ノード１０の起動完了タイミングが、ネットワーク起動ノード１２の設定処理の完了タイミングより遅い場合、待ち時間ｔＷＡＩＴを長くする。これにより、最適な待ち時間ｔＷＡＩＴが未知の並列処理装置１００においても、最適な待ち時間ｔＷＡＩＴを設定することができる。また、並列処理装置１００のノード数等の構成にかかわらず、最適な待ち時間ｔＷＡＩＴを設定することができる。
【００３４】
例えば、サービスプロセッサ１４は、並列処理装置１００の出荷前の試験工程において、待ち時間ｔＷＡＩＴの修正処理を実行し、図２の上側の動作に示す最適な待ち時間ｔＷＡＩＴを決定してもよい。待ち時間ｔＷＡＩＴの修正処理は、例えば、並列処理装置１００の動作モードを通常モードから試験モードに移行して実行される。通常モードは、並列処理装置１００を使用するユーザ等が情報処理を実行する場合に設定されるモード（ユーザモード）である。例えば、ノード起動プログラムは、試験モード中、待ち時間ｔＷＡＩＴの修正処理を実行し、通常モード中、ディスク起動ノード１０の設定処理の開始から待ち時間ｔＷＡＩＴ遅れて、ネットワーク起動ノード１２の設定処理を開始する処理を実行する。
【００３５】
決定した待ち時間ｔＷＡＩＴは、サービスプロセッサ１４が有する不揮発性メモリ２６に格納されてもよい。そして、出荷先に設置された並列処理装置１００のサービスプロセッサ１４は、通常モードで動作する並列処理装置１００の起動時に、ディスク起動ノード１０の設定処理を開始する。さらに、サービスプロセッサ１４は、不揮発性メモリ２６に保持された待ち時間ｔＷＡＩＴを参照し、ディスク起動ノード１０の設定処理の開始から待ち時間ｔＷＡＩＴ遅れて、ネットワーク起動ノード１２の設定処理を開始する。
【００３６】
なお、待ち時間ｔＷＡＩＴの修正処理は、並列処理装置１００の出荷先で実行されてもよい。この場合、待ち時間ｔＷＡＩＴの修正処理は、並列処理装置１００のメンテナンス時に実行されてもよく、並列処理装置１００を管理する管理者が操作する端末装置からの指示に基づいて、任意のタイミングで実行されてもよい。
【００３７】
以上、図１および図２に示す実施形態では、待ち時間ｔＷＡＩＴの設定により、ディスク起動ノード１０の起動処理の完了後、直ちにネットワーク起動ノード１２の起動処理を開始することができる。この結果、例えば、ディスク起動ノード１０とネットワーク起動ノード１２との設定処理を同時に開始する場合に比べて、起動指示からネットワーク起動ノード１２による情報処理が実行可能になるまでの時間を短縮することができる。すなわち、並列処理装置１００の起動時間を短縮することができる。
【００３８】
また、サービスプロセッサ１４は、ディスク起動ノード１０の起動完了タイミングと、ネットワーク起動ノード１２の設定処理の完了タイミングとの差に基づいて、差を小さくするために待ち時間ｔＷＡＩＴを修正する。これにより、最適な待ち時間ｔＷＡＩＴが未知の並列処理装置１００においても、最適な待ち時間ｔＷＡＩＴを設定することができる。また、並列処理装置１００のノード数等の構成にかかわらず、最適な待ち時間ｔＷＡＩＴを設定することができる。換言すれば、構成の異なる並列処理装置１００毎に、最適な待ち時間ｔＷＡＩＴを設定することができる。
【００３９】
図３は、別の実施形態における並列処理装置の一例を示す。図１と同じ要素については、詳細な説明は省略する。図３に示す並列処理装置１０２は、複数のケーブル３０を介して相互に接続された起動ノード４０および複数の計算ノード４２と、ケーブル３２を介して起動ノード４０および計算ノード４２のそれぞれに接続されたサービスプロセッサ５０とを有する。ケーブル３０、３２は、通信線の一例である。起動ノード４０は、第１のノードの一例であり、計算ノード４２は、第２のノードの一例であり、サービスプロセッサ５０は、制御部およびコンピュータの一例である。
【００４０】
なお、図３の並列処理装置１０２は、起動ノード４０と複数の計算ノード４２とが２次元のトーラスネットワークで相互に接続されるが、ノードの総数およびネットワークのトポロジーは、図３に限定されない。また、起動ノード４０のネットワーク上での位置は、図３に限定されない。以下では、起動ノード４０と計算ノード４２とを区別する必要がない場合、単にノード４０、４２と称する。
【００４１】
起動ノード４０は、図１のディスク起動ノード１０に対応しており、図示を省略するが、ディスク起動ノード１０と同様に、ＣＰＵ２０、メモリ２２およびＯＳが格納された記憶部２４を有する。計算ノード４２は、図１のネットワーク起動ノード１２に対応しており、図示を省略するが、ネットワーク起動ノード１２と同様に、ＣＰＵ２０、メモリ２２および初期状態ではＯＳが格納されていない記憶部２４を有する。サービスプロセッサ５０は、図１のサービスプロセッサ１４と同様の機能を有しており、ノード４０、４２と同様に、図示しないＣＰＵ２０、メモリ２２および記憶部２４を有する。サービスプロセッサ５０は、不揮発性メモリ２６を有してもよい。
【００４２】
サービスプロセッサ５０は、ケーブル３２を介して全てのノード４０、４２に並列に接続され、全てのノード４０、４２とそれぞれ独立に通信が可能である。例えば、サービスプロセッサ５０は、メモリ２２（図示せず）が保持するノード起動プログラムを実行することで、ノード４０、４２の起動処理を実行する。サービスプロセッサ５０は、並列処理装置１０２の動作を管理する制御サーバ６０に接続される。制御サーバ６０は、ノード起動プログラムが記録されたＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disc）またはＵＳＢ（Universal  Serial  Bus）メモリ等の記録媒体ＲＭを接続する入出力インタフェースを有する。そして、ノード起動プログラムは、ノード起動プログラムを記録した記録媒体ＲＭから制御サーバを介してサービスプロセッサ５０にロードされてもよい。
【００４３】
例えば、並列処理装置１０２は、所定数のノード４０、４２をそれぞれ含む複数のシステムボードをラック（筐体）等に収納し、ノード４０、４２間をケーブル３０で相互に接続することで構築されてもよい。この際、サービスプロセッサ５０は、ラック内に収納されてもよい。
【００４４】
図４は、図３のサービスプロセッサ５０による起動ノード４０および計算ノード４２の起動の制御の一例を示す。図２と同様の処理については、詳細な説明は省略する。図４は、図２の上側に示す制御と同様に、待ち時間ｔＷＡＩＴが最適に設定された例を示す。
【００４５】
図４において、時間ｔＳＰ（１）’は、起動ノード４０の設定処理の一部と計算ノード４２の設定処理の一部とが重複する場合の起動ノード４０の設定処理時間を示す。時間ｔＳＰ（Ｎ−１）’は、起動ノード４０の設定処理の一部と計算ノード４２の設定処理の一部とが重複する場合の計算ノード４２の設定処理時間を示す。ここで（Ｎ−１）は、ネットワーク内の全てのノード４０、４２の数をＮとした場合、計算ノード４２の数が（Ｎ−１）であることを示す。
【００４６】
時間ｔＤＩＳＫは、起動ノード４０の設定処理後に起動ノード４０が実行する起動処理の時間を示す。例えば、時間ｔＤＩＳＫは、起動ノード４０が自ノードの記憶部２４からＯＳをダウンロードして起動（実行）する起動処理時間と、計算ノード４２によるＯＳのダウンロード（転送）を可能にする処理に掛かる時間との合計を示す。換言すれば、起動ノード４０による起動処理は、ＯＳをロードして実行するＯＳ起動処理と、ＯＳ起動処理後に実行される、計算ノード４２にＯＳを転送可能にする転送設定処理とを含む。ＯＳ起動処理は、プログラム起動処理の一例である。なお、記憶部２４からダウンロードしたＯＳは、メモリ２２上に展開される。
【００４７】
したがって、起動ノード４０による起動処理が完了するタイミングである起動完了タイミングは、転送設定処理の完了タイミングとなる。起動ノード４０の起動完了タイミングを転送設定処理の完了タイミングとすることで、計算ノード４２は、起動ノード４０の起動完了後、直ちにＯＳのダウンロードを開始することができる。この結果、サービスプロセッサ５０が起動ノード４０の設定処理を開始してから計算ノード４２によるＯＳの起動が完了するまでの時間を短縮することができる。
【００４８】
時間ｔＮＥＴは、各計算ノード４２が起動ノード４０の記憶部２４からＯＳをダウンロードし、ＯＳの起動が完了するまでの時間を示す。時間差は、図２に示したギャップｔＡまたはギャップｔＢに対応しており、待ち時間ｔＷＡＩＴが最適な場合、ゼロである。
【００４９】
「全ノード起動時間」は、サービスプロセッサ５０が起動ノード４０の設定処理を開始してから計算ノード４２によるＯＳの起動が完了するまでの時間を示す。「計算ノードの設定処理時間」は、サービスプロセッサ５０が起動ノード４０の設定処理を開始してから計算ノード４２の設定処理が完了するまでの時間を示す。
【００５０】
待ち時間ｔＷＡＩＴが最適に設定された場合、上記時間差はゼロとなるため、式（１）が成立する。
【００５１】
ｔＷＡＩＴ＋ｔＳＰ（Ｎ−１）’＝ｔＳＰ（１）’＋ｔＤＩＳＫ  ‥（１）
【００５２】
なお、ｔＳＰ（Ｎ−１）’およびｔＳＰ（１）’は、計算で直接導くことができない未知の変数であるため、式（１）だけでは、最適な待ち時間ｔＷＡＩＴを算出することができない。
【００５３】
図５は、ノード４０、４２の並列数に応じた設定処理時間の変化の例を示す。サービスプロセッサ５０が各ノード４０、４２のために使える負荷（資源）は、設定処理を並列に実行するノード４０、４２の数が多いほど少なくなる。このため、各ノード４０、４２の設定処理時間は、設定処理を並列に実行するノード４０、４２の数が多いほど長くなる。
【００５４】
設定処理の内容は、ノード４０、４２でほぼ同様である。このため、図５では、１並列での設定処理時間を、起動ノード４０単独で設定処理を実行した場合に掛かる設定処理時間ｔＳＰ（１）としている。また、複数のノード４０、４２に対して設定処理が同時かつ列に開始される場合、サービスプロセッサ５０が各ノード４０、４２のために使える負荷は、ほぼ同じになるため、設定処理時間は、各ノード４０、４２でほぼ同じになる。
【００５５】
図５では、全ての計算ノード４２（Ｎ−１個）の設定処理を並列に実行した場合に掛かる設定処理時間をｔＳＰ（Ｎ−１）としている。また、ネットワークに含まれる全てのノード４０、４２（Ｎ個）の設定処理を並列に実行した場合に掛かる設定処理時間をｔＳＰ（Ｎ）としている。
【００５６】
図６は、待ち時間ｔＷＡＩＴと全ノード起動時間との関係の例を示す。全ノード起動時間は、図４で説明したように、サービスプロセッサ５０が起動ノード４０の設定処理を開始してから計算ノード４２によるＯＳの起動が完了するまでの時間である。図６の右端のｍａｘは、起動ノード４０の設定処理の完了が計算ノード４２の設定処理の開始と一致するタイミングを示す。
【００５７】
全ノード起動時間は、図６の下側のかぎ括弧内に示すように、計算ノード４２の設定処理時間（図２）と、ギャップｔＢ（図２）と、各計算ノード４２が起動ノード４０からＯＳをダウンロードし、ＯＳの起動が完了するまでの時間ｔＮＥＴとの和で示される。計算ノード４２の設定処理時間は、待ち時間ｔＷＡＩＴを含むため、待ち時間ｔＷＡＩＴが長いほど長くなる。ギャップｔＢは、待ち時間ｔＷＡＩＴがゼロから最適値に向かうにしたがい徐々に減少し、待ち時間ｔＷＡＩＴが最適値になった時点で最小値”０”になる。その後、待ち時間ｔＷＡＩＴがさらに増加すると、図２で説明したギャップｔＡ（図示せず）が最小値”０”から徐々に増加する。
【００５８】
以下は、図４から図６に示した内容に基づいて説明される。待ち時間ｔＷＡＩＴは、ゼロより大きく、起動ノード４０の設定処理時間より短い。また、起動ノード４０単独で設定処理を実行する場合の設定処理時間ｔＳＰ（１）は、起動ノード４０と計算ノード４２との設定処理の一部が重複する場合の起動ノード４０の設定処理時間ｔＳＰ（１）’より短い。このため、式（２）が成立する。
【００５９】
また、Ｎ−１個の計算ノード４２が単独で設定処理を実行する場合の設定処理時間ｔＳＰ（Ｎ−１）は、起動ノード４０の設定処理時間と重複しない。このため、設定処理時間ｔＳＰ（Ｎ−１）は、Ｎ−１個の起動ノード４０と計算ノード４２との設定処理の一部が重複する場合の起動ノード４０の設定処理時間ｔＳＰ（Ｎ−１）’より短い。Ｎ−１個の計算ノード４２の設定処理時間ｔＳＰ（Ｎ−１）’が、Ｎ個の計算ノード４２の設定処理時間ｔＳＰ（Ｎ）より短いことは明らかである。このため、式（３）が成立する。さらに、図４より式（４）が成立する。
【００６０】
０＜ｔＷＡＩＴ＜ｔＳＰ（１）＜ｔＳＰ（１）’  ‥（２）
０＜ｔＳＰ（Ｎ−１）＜ｔＳＰ（Ｎ−１）’＜ｔＳＰ（Ｎ）  ‥（３）
０＜ｔＤＩＳＫ＜ｔＳＰ（Ｎ−１）’＜ｔＳＰ（Ｎ）  ‥（４）
【００６１】
式（４）の「ｔＳＰ（Ｎ−１）’＜ｔＳＰ（Ｎ）」は、式（３）から明らかである。
【００６２】
式（２）の「ｔＷＡＩＴ＜ｔＳＰ（１）＜ｔＳＰ（１）’」について、「ｔＳＰ（１）」を相加平均で近似すると式（５）が得られる。式（４）の「ｔＤＩＳＫ＜ｔＳＰ（Ｎ−１）’＜ｔＳＰ（Ｎ）」について、「ｔＳＰ（Ｎ−１）’」を相加平均で近似すると式（６）が得られる。さらに、（５）の「ｔＳＰ（１）’」と（６）の「ｔＳＰ（Ｎ−１）’」とを式（１）に代入すると式（７）が得られる。但し、式（７）において、待ち時間ｔＷＡＩＴは、負値になった場合にゼロに近似され、ｔＳＰ（１）以上になったときに「ｔＳＰ（１）」に近似される。
【００６３】
ｔＳＰ（１）≒（ｔＳＰ（１）’＋ｔＷＡＩＴ）／２  ‥（５）
ｔＳＰ（Ｎ−１）’≒（ｔＳＰ（Ｎ）＋ｔＤＩＳＫ）／２  ‥（６）
ｔＷＡＩＴ≒ｔＳＰ（１）＋（ｔＤＩＳＫ−ｔＳＰ（Ｎ））／４  ‥（７）
【００６４】
式（７）の右辺の各変数は測定可能であるため、式（７）を用いて待ち時間ｔＷＡＩＴを求めることができる。
【００６５】
なお、式（７）は、近似式であるため、式（７）から得られた待ち時間ｔＷＡＩＴにより、図２に示したギャップｔＡ、ｔＢがともにゼロになるとは限らない。ギャップｔＡは、待ち時間ｔＷＡＩＴが長く、計算ノード４２の設定処理の完了タイミングが、起動ノード４０の起動処理の完了タイミング（ｔＤＩＳＫの完了タイミング）より遅いときに発生する。一方、ギャップｔＢは、待ち時間ｔＷＡＩＴが短く、計算ノード４２の設定処理の完了タイミングが、起動ノード４０の起動処理の完了タイミング（ｔＤＩＳＫの完了タイミング）より早いときに発生する。
【００６６】
したがって、ギャップｔＡが発生した場合、待ち時間ｔＷＡＩＴを短くし、ギャップｔＢが発生した場合、待ち時間ｔＷＡＩＴを長くすることで、ギャップｔＡ、ｔＢの両方をゼロに近づけることができ、待ち時間ｔＷＡＩＴを最適値に収束させることができる。例えば、待ち時間ｔＷＡＩＴは、式（８）を用いて更新することができる。
【００６７】
ｔＷＡＩＴ（ｉ＋１）＝ｔＷＡＩＴ（ｉ）＋α×（ｔＢ（ｉ）−ｔＡ（ｉ））  ‥（８）
【００６８】
式（８）において、符号ｉは、更新回数（１以上の整数）を示し、ｉ＝０の場合のｔＷＡＩＴ（０）は、式（７）で算出した初回の待ち時間ｔＷＡＩＴを示す。ｉ＝０の場合、ギャップｔＡ（ｉ）、ｔＢ（ｉ）は”０”に設定される。αは所定の係数（例えば、０＜α＜１）を示す。
【００６９】
ｉ回目の待ち時間ｔＷＡＩＴ（ｉ）の設定時にギャップｔＡ（ｉ）が発生した場合、式（８）にしたがって、ギャップｔＡ（ｉ）に係数αを乗じた値が待ち時間ｔＷＡＩＴ（ｉ）から減じられ、次回（ｉ＋１）の待ち時間ｔＷＡＩＴが決定される。ｉ回目の待ち時間ｔＷＡＩＴ（ｉ）の設定時にギャップｔＢ（ｉ）が発生した場合、式（８）にしたがって、ギャップｔＢ（ｉ）に係数αを乗じた値が待ち時間ｔＷＡＩＴ（ｉ）に加えられ、次回（ｉ＋１）の待ち時間ｔＷＡＩＴが決定される。これにより、起動ノード４０の起動完了タイミングと計算ノード４２の設定処理の完了タイミングとの差が小さくなる方向に、待ち時間ｔＷＡＩＴが修正される。なお、ギャップｔＡ（ｉ）が発生する場合、ギャップｔＢ（ｉ）は”０”であり、ギャップｔＢ（ｉ）が発生する場合、ギャップｔＡ（ｉ）は”０”である。
【００７０】
係数αは、ギャップｔＡ、ｔＢが交互に発生することで、待ち時間ｔＷＡＩＴが収束しないことを抑止するために設定され、例えば、０．７から０．９程度の値が好ましい。しかしながら、係数αは、”０”より大きく”１”より小さければよい。
【００７１】
図７は、図３のサービスプロセッサ５０が実行する待ち時間ｔＷＡＩＴの初期値を設定する動作フローの一例を示す。すなわち、図７は、サービスプロセッサ５０によるノード起動方法の一例を示し、サービスプロセッサ５０が実行するノード起動プログラムの一例を示す。例えば、図７に示す処理は、並列処理装置１０２の出荷前の検査工程において、並列処理装置１０２の動作モードを通常モードから試験モードに移行して実行される。
【００７２】
まず、ステップＳ１０において、サービスプロセッサ５０は、起動ノード４０のみの設定処理を実行して設定処理時間ｔＳＰ（１）を計測し、設定処理に続いて起動ノード４０にＯＳの起動処理等を実行させ、時間ｔＤＩＳＫを計測する。また、サービスプロセッサ５０は、起動ノード４０と全ての計算ノード４２の設定処理を同時かつ並列に実行して設定処理時間ｔＳＰ（Ｎ）を計測する。次に、ステップＳ１２において、サービスプロセッサ５０は、計測した設定処理時間ｔＳＰ（１）、ｔＳＰ（Ｎ）および時間ｔＤＩＳＫを式（７）に代入して、初期の待ち時間ｔＷＡＩＴ（０）を算出する。
【００７３】
次に、ステップＳ１４において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（０）が負値の場合、処理をステップＳ１６に移行し、待ち時間ｔＷＡＩＴ（０）が０以上の場合、処理をステップＳ１８に移行する。ステップＳ１６において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（０）を”０”に設定し、処理をステップＳ２２に移行する。ステップＳ１８において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（０）が設定処理時間ｔＳＰ（１）より長い場合、処理をステップＳ２０に移行し、待ち時間ｔＷＡＩＴ（０）が設定処理時間ｔＳＰ（１）以下の場合、処理をステップＳ２２に移行する。
【００７４】
ステップＳ２０において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（０）を、ステップＳ１２で算出した設定処理時間ｔＳＰ（１）に設定し、処理をステップＳ２２に移行する。ステップＳ２２において、サービスプロセッサ５０は、算出または設定した待ち時間ｔＷＡＩＴ（０）を不揮発性メモリ２６等に保存し、処理を終了する。
【００７５】
図８は、図３のサービスプロセッサ５０が実行する待ち時間ｔＷＡＩＴを収束させる動作フローの一例を示す。すなわち、図８は、サービスプロセッサ５０によるノード起動方法の一例を示し、サービスプロセッサ５０が実行するノード起動プログラムの一例を示す。例えば、図８に示す処理は、並列処理装置１０２の出荷前の検査工程において、並列処理装置１０２の動作モードを通常モードから試験モードに移行して実行される。なお、図８に示す処理は、図7に示す処理に続いて実行されてもよく、並列処理装置１０２の出荷後に実行されてもよい。
【００７６】
まず、ステップＳ３０において、サービスプロセッサ５０は、係数αが並列処理装置１０２に入力されるのを待ち、係数αが入力された場合、処理をステップＳ４０に移行する。例えば、係数αは、制御サーバ６０からサービスプロセッサ５０に出力される。
【００７７】
ステップＳ４０において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴが収束するまで、または繰り返し回数ｉｍａｘになるまで、ステップＳ４２からステップＳ４８の動作を繰り返す。例えば、繰り返し回数ｉｍａｘは１０回程度である。
【００７８】
ステップＳ４２において、サービスプロセッサ５０は、起動ノード４０の設定処理を開始後、待ち時間ｔＷＡＩＴ（ｉ）の経過後に計算ノード４２の設定処理を開始し、ギャップｔＡ（ｉ）、ｔＢ（ｉ）を計測する。サービスプロセッサ５０は、計測したギャップｔＡ（ｉ）、ｔＢ（ｉ）を式（８）に代入して待ち時間ｔＷＡＩＴ（ｉ＋１）を算出する。なお、ｉ＝０の場合（初回）、サービスプロセッサ５０は、図７で算出して不揮発性メモリ２６に保存した待ち時間ｔＷＡＩＴ（０）を使用する。
【００７９】
次に、ステップＳ４４において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）が”０”未満または設定処理時間ｔＳＰ（１）を超えている場合、係数αが適正でないと判断し、処理をステップＳ３０に戻して、係数αの再入力を待つ。係数αの再入力は、サービスプロセッサ５０から制御サーバ６０に入力要求を発行することで行われてもよい。一方、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）が、”０”以上で設定処理時間ｔＳＰ（１）以下の場合、係数αが適正であると判断し、処理をステップＳ４６に移行する。
【００８０】
ステップＳ４６において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）、と待ち時間ｔＷＡＩＴｉとの差がｋ秒未満の場合、待ち時間ｔＷＡＩＴ（ｉ＋１）が収束したと判断し、処理をステップＳ５０に移行する。ステップＳ４０からステップＳ４６を繰り返し実行することで、起動ノード４０の起動完了タイミングと計算ノード４２の設定処理の完了タイミングとの差が小さくなる方向に、待ち時間ｔＷＡＩＴを修正することができる。
【００８１】
一方、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）と待ち時間ｔＷＡＩＴｉとの差がｋ秒以上の場合、待ち時間ｔＷＡＩＴ（ｉ＋１）が収束していないと判断し、処理をステップＳ４８に移行する。ｋ秒は、第１時間の一例であり、例えば、図４に示す全ノード起動時間が２０分である場合、ｋ秒は１秒程度である。このように、計算ノード４２の起動処理に使用する待ち時間ｔＷＡＩＴを使用して、図４に示したギャップが小さくなったことを間接的に判定することができる。
【００８２】
ステップＳ４８において、サービスプロセッサ５０は、繰り返し回数ｉｍａｘに到達しても待ち時間ｔＷＡＩＴ（ｉ＋１）が収束していない場合、係数αが適正でないと判断し、処理をステップＳ３０に戻して、係数αの再入力を待つ。一方、サービスプロセッサ５０は、繰り返し回数ｉｍａｘに到達していない場合、処理をステップＳ４０に戻す。
【００８３】
ステップＳ５０において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）を待ち時間ｔＷＡＩＴとして不揮発性メモリ２６に保存し、処理を終了する。最適な待ち時間ｔＷＡＩＴは、並列処理装置１０２の構成（ノード数）により決まるため、例えば、並列処理装置１０２の出荷前に一度算出し、不揮発性メモリ２６等に保持しておけばよい。そして、並列処理装置１０２の出荷後、起動ノード４０および計算ノード４２の全てを起動する場合、保持している待ち時間ｔＷＡＩＴを参照して、起動ノード４０と計算ノード４２とが順次起動される。
【００８４】
なお、サービスプロセッサ５０は、ステップＳ４２において計測したギャップｔＡ（ｉ）、ｔＢ（ｉ）が予め設定した所定の閾値時間以下になった場合に待ち時間ｔＷＡＩＴ（ｉ＋１）が収束したと判断してもよい。ギャップｔＡ（ｉ）、ｔＢ（ｉ）により待ち時間ｔＷＡＩＴの収束を判断する例は、図９に示される。
【００８５】
図９は、図３のサービスプロセッサ５０が実行する待ち時間ｔＷＡＩＴを収束させる動作フローの別の例を示す。図９は、図８に示すステップＳ４６の代わりに、ステップＳ４７が実行されることを除き、図８に示す処理と同じである。
【００８６】
ステップＳ４７では、サービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差（絶対値）が、予め設定された閾値時間以下になった場合、処理をステップＳ５０に移行する。またサービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差（絶対値）が閾値時間より大きい場合、処理をステップＳ４８に移行する。例えば、閾値時間は、第２時間の一例であり、図２に示したギャップｔＡ、ｔＢより短い。ステップＳ４０からステップＳ４７を繰り返し実行することで、起動ノード４０の起動完了タイミングと計算ノード４２の設定処理の完了タイミングとの差が小さくなる方向に、待ち時間ｔＷＡＩＴを修正することができる。
【００８７】
なお、図２で説明したように、ギャップｔＢ、ｔＡは、何れか一方が”０”になるため、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差（絶対値）は、ギャップｔＢ、ｔＡのいずれかを示す。すなわち、ステップＳ４７では、ギャップｔＢ、ｔＡのうち、”０”でないギャップが、閾値時間以下であるか否かが判定される。ギャップｔＢ（ｉ）、ｔＡ（ｉ）は、起動ノード４０の起動処理の実際の完了タイミングと計算ノード４２の設定処理の実際の完了タイミングとの差を示す。このため、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差と閾値時間との比較により、待ち時間ｔＷＡＩＴの最適値を決めることで、図４に示した時間差を最小にする待ち時間ｔＷＡＩＴを求めることができる。
【００８８】
図１０は、図３のサービスプロセッサ５０が実行する並列処理装置１０２の起動処理の動作フローの一例を示す。すなわち、図１０は、サービスプロセッサ５０によるノード起動方法の一例を示し、サービスプロセッサ５０が実行するノード起動プログラムの一例を示す。例えば、図１０に示す処理は、並列処理装置１０２の出荷後に、並列処理装置１０２が通常モードに設定された状態で実行される。
【００８９】
ます、ステップＳ６０において、サービスプロセッサ５０は、起動ノード４０および計算ノード４２の全てを起動する起動指示を制御サーバ６０から受信するのを待ち、起動指示を受けた場合、処理をステップＳ６２に移行する。ステップＳ６２において、サービスプロセッサ５０は、不揮発性メモリ２６に保持された待ち時間ｔＷＡＩＴを参照する。次に、ステップＳ６４において、サービスプロセッサ５０は、起動ノード４０の設定処理を開始する。
【００９０】
次に、ステップＳ６６において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴの経過を待ち、待ち時間ｔＷＡＩＴの経過に基づいて、処理をステップＳ６８に移行する。ステップＳ６８において、サービスプロセッサ５０は、計算ノード４２の設定処理を開始し、処理を終了する。
【００９１】
この後、計算ノード４２の設定処理に対して設定処理が先に完了した起動ノード４０は、ＯＳを起動するＯＳ起動処理と、計算ノード４２によるＯＳのダウンロードを可能にするための転送設定処理とを実行する。待ち時間ｔＷＡＩＴが最適化されているため、ＯＳが計算ノード４２によりダウンロード可能になるタイミングは、計算ノード４２の設定処理の完了タイミングとほぼ等しくなる。そして、計算ノード４２は、サービスプロセッサ５０による設定処理に完了に基づいて、起動ノード４０からＯＳをダウンロードし、ダウンロードしたＯＳの起動処理を実行する。この結果、待ち時間ｔＷＡＩＴが最適化されていない場合に比べて、起動ノード４０の設定処理の開始から計算ノード４２によるＯＳの起動処理が完了するまでの全ノード起動時間を短縮することができる。
【００９２】
以上、図３から図１０に示す実施形態においても、図１および図２に示す実施形態と同様の効果を得ることができる。例えば、起動ノード４０の起動処理の完了後、直ちに計算ノード４２の起動処理を開始することができ、起動指示から計算ノード４２による情報処理が実行可能になるまでの時間を短縮することができる。すなわち、並列処理装置１０２の起動時間を短縮することができる。
【００９３】
さらに、図３から図１０に示す実施形態では、近似式（７）を用いることで、直接測定できない変数が待ち時間ｔＷＡＩＴの算出式に含まれる場合にも待ち時間ｔＷＡＩＴを算出することができる。
【００９４】
待ち時間ｔＷＡＩＴ（ｉ＋１）、ｔＷＡＩＴ（ｉ）の差に基づいて、待ち時間ｔＷＡＩＴが最適値に近づいたか否かを判定することができる。換言すれば、計算ノード４２の起動処理に使用する待ち時間ｔＷＡＩＴを使用して、図４に示した時間差が小さくなったことを間接的に判定することができる。
【００９５】
また、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差に基づいて、起動ノード４０の起動処理の完了タイミングと計算ノード４２の設定処理の完了タイミングとの差が小さくなったか否かを判定することができる。換言すれば、起動ノード４０の起動処理の実際の完了タイミングと計算ノード４２の設定処理の実際の完了タイミングとの差に基づいて、図４に示した時間差を最小にする待ち時間ｔＷＡＩＴを求めることができる。
【００９６】
ギャップｔＡ、ｔＢの両方を用いることで、起動ノード４０の起動完了タイミングと計算ノード４２の転送設定の完了タイミングとのどちらが早い場合にも、両タイミングを近づける制御を実行することができる。
【００９７】
図１１は、別の実施形態の並列処理装置のサービスプロセッサ５０が実行する待ち時間ｔＷＡＩＴを収束させる動作フローの一例を示す。図１から図１０で説明した構成および機能と同様の構成および機能については、詳細な説明は省略する。図１１の処理を実行するサービスプロセッサ５０を含む並列処理装置は、サービスプロセッサ５０が実行するノード起動プログラムが異なることを除き、図３に示す並列処理装置１０２と同様の構成および同様の機能を有する。例えば、サービスプロセッサ５０が実行する待ち時間ｔＷＡＩＴの初期値を設定する動作フローは、図７と同じであり、サービスプロセッサ５０が実行する並列処理装置１０２の起動処理の動作フローは、図１０と同じである。
【００９８】
図１１に示す動作フローでは、図８のステップＳ４４とステップＳ４６の間にステップＳ４５が挿入され、ステップＳ４５２と、ステップＳ４４の”Ｎｏ”の判定時に実行されるステップＳ４４２とが、図８に対して追加される。その他の処理は、図８と同様である。図８と同一または同様の処理は、図８と同じステップ番号を付している。
【００９９】
ステップＳ４２では、図８と同様に、サービスプロセッサ５０は、起動ノード４０の設定処理を開始後、待ち時間ｔＷＡＩＴ（ｉ）に計算ノード４２の設定処理を開始し、ギャップｔＡ（ｉ）、ｔＢ（ｉ）を計測する。サービスプロセッサ５０は、計測したギャップｔＡ（ｉ）、ｔＢ（ｉ）を式（８）に代入して待ち時間ｔＷＡＩＴ（ｉ＋１）を算出する。
【０１００】
次に、ステップＳ４４において、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）が”０”未満または設定処理時間ｔＳＰ（１）を超えている場合、係数αが適正でないと判断し、処理をステップＳ４４２に移行する。一方、サービスプロセッサ５０は、待ち時間ｔＷＡＩＴ（ｉ＋１）が、”０”以上で設定処理時間ｔＳＰ（１）以下の場合、係数αが適正であると判断し、処理をステップＳ４５に移行する。
【０１０１】
ステップＳ４４２において、サービスプロセッサ５０は、係数αを小さくし（例えば、現在の係数αの０．９倍）、処理をステップＳ４２に移行する。この場合、ステップＳ４２では、サービスプロセッサ５０は、現在の係数αを用いて算出した待ち時間ｔＷＡＩＴ（ｉ）を破棄し、新たな係数αを用いて待ち時間ｔＷＡＩＴ（ｉ）を算出する。なお、係数αは、０．９倍以外の値（例えば、現在の係数αの０．９５倍や０．８５倍）に設定されてもよい。但し、係数αは、０＜α＜１である。
【０１０２】
ステップＳ４５において、サービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差（絶対値）が前回のギャップｔＢ（ｉ−１）、ｔＡ（ｉ−１）の差（絶対値）より小さいか否かを判定する。サービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差が前回のギャップｔＢ（ｉ−１）、ｔＡ（ｉ−１）の差より小さい場合、待ち時間ｔＷＡＩＴが収束しつつあると判断し、処理をステップＳ４６に移行する。サービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の差が前回のギャップｔＢ（ｉ−１）、ｔＡ（ｉ−１）の差以上の場合、待ち時間ｔＷＡＩＴが収束に向かっていないと判断し、処理をステップＳ４５２に移行する。なお、サービスプロセッサ５０は、ギャップｔＢ（ｉ）、ｔＡ（ｉ）の計測毎に、計測したギャップｔＢ（ｉ）、ｔＡ（ｉ）を不揮発性メモリ２６等に書き込んでおく。
【０１０３】
ステップＳ４５２において、サービスプロセッサ５０は、ステップＳ４４２と同様に、係数αを小さくし（例えば、現在の係数αの０．９倍）、処理をステップＳ４２に移行する。この場合、ステップＳ４２では、サービスプロセッサ５０は、現在の係数αを用いて算出した待ち時間ｔＷＡＩＴ（ｉ）を破棄し、新たな係数αを用いて待ち時間ｔＷＡＩＴ（ｉ）を算出する。
【０１０４】
ステップＳ４４２、Ｓ４５２において、サービスプロセッサ５０により、係数αの値を変更することで、外部からの係数αの入力を待つことなく、待ち時間ｔＷＡＩＴの算出処理を継続することができる。この結果、最適な待ち時間ｔＷＡＩＴを算出するまでの時間を短縮することができ、例えば、並列処理装置の試験工程でのコストを削減することができる。
【０１０５】
以上、図１１に示す実施形態においても、図１から図１０に示す実施形態と同様の効果を得ることができる。さらに、図１１に示す実施形態では、係数αが適正でないと判断した場合、外部からの係数αの入力を待つことなく、サービスプロセッサ５０により係数αの値を変更することができる。このため、待ち時間ｔ  ＷＡＩＴの算出処理の更新頻度を高くすることができ、最適な待ち時間ｔＷＡＩＴを算出するまでの時間を短縮することができる。これにより、例えば、並列処理装置の試験工程でのコストを削減することができる。
【０１０６】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１０７】
１０        ディスク起動ノード
１２        ネットワーク起動ノード
１４        サービスプロセッサ
１６、１８  通信線
２０        ＣＰＵ
２２        メモリ
２４        記憶部
２６        不揮発性メモリ
３０、３２  ケーブル
４０        起動ノード
４２        計算ノード
５０        サービスプロセッサ
６０        制御サーバ
１００、１０２  並列処理装置
ｔＡ、ｔＢ  ギャップ
ｔＳＰ      設定処理時間
ｔＷＡＩＴ  待ち時間
【図１】
2020119314.tif 000003
【図２】
2020119314.tif 000004
【図３】
2020119314.tif 000005
【図４】
2020119314.tif 000006
【図５】
2020119314.tif 000007
【図６】
2020119314.tif 000008
【図７】
2020119314.tif 000009
【図８】
2020119314.tif 000010
【図９】
2020119314.tif 000011
【図１０】
2020119314.tif 000012
【図１１】
2020119314.tif 000013