(57)【要約】【課題】並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題を解決すること。【解決手段】第１のプロセススケジューラと第２のプロセススケジューラとは、互いに通信可能なよう構成されており、第１のプロセススケジューラは、第２のプロセススケジューラが検出した第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第１のプロセス処理部の動作を制御し、第２のプロセススケジューラは、第１のプロセススケジューラが検出した第１のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第２のプロセス処理部の動作を制御する。【選択図】図３
2016181016.tif 000002
【特許請求の範囲】
【請求項１】
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有し、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項２】
請求項１に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項３】
請求項１又は２に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの前記第２の処理部で処理する優先度を下げる制御を行う
並列処理システム。
【請求項４】
請求項１乃至３の何れかに記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを復元する際に、プロセスが割り当てられた旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、割り当てられたプロセスと関連するプロセスの前記第２の処理部で処理する優先度を上げる制御を行う
並列処理システム。
【請求項５】
請求項１乃至４の何れかに記載の並列処理システムであって、
前記第２のプロセススケジューラは、受信した前記状態通知情報が示すプロセスと関連するプロセスが前記第１のプロセス処理部の処理待ち状態である場合に、当該処理待ち状態のプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項６】
請求項１乃至５の何れかに記載の並列処理システムであって、
オペレーションシステムが組み込まれ、前記第１のプロセス処理部と、前記第１のプロセススケジューラと、前記第２のプロセススケジューラと、を有する第１のノードと、
オペレーティングシステムが組み込まれておらず、前記第２のプロセス処理部を有する第２のノードと、
を有し、
前記第２のプロセス処理部は、前記第１のノードが有する前記第２のプロセススケジューラからの制御に基づいてプロセスを実行する
並列処理システム。
【請求項７】
請求項６に記載の並列処理システムであって、
前記第２のプロセススケジューラは、前記第２のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第１のプロセススケジューラに送信するよう構成され、
前記第１のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御する
並列処理システム。
【請求項８】
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記複数の処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【請求項９】
請求項８に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【請求項１０】
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
ことを実現させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムであって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理システム、並列処理方法、プログラムに関する。
【背景技術】
【０００２】
データの高速処理を可能とするため、複数のコアを同時に動かして並列処理を行う技術が知られている。
【０００３】
上記のような並列処理を行う際の技術の一つとして、例えば、特許文献１がある。特許文献１には、第１のアプリケーションプログラムが動作するオペレーティングシステムと、ＯＬリモート制御手段と、を有する第１のプロセッサコアと、オペレーティングシステムを稼働させずに、ＯＬリモート制御手段からの要求に基づき第２のアプリケーションプログラムを動作させる軽量スケジューラを含む第２のプロセッサコアと、を有するプログラム並列実行システムが記載されている。特許文献１によると、上記構成を有することにより、第２のプロセッサコアにおける処理においてＯＳ介在によるオーバーヘッドの影響を低減した並列処理を行うことが可能となる。
【０００４】
また、並列計算機における並列プロセススケジューリングの方法の一つとして、例えば、特許文献２が知られている。特許文献２には、並列プロセスの並列同期待ち状態になった装置において、別のプロセスを動作させる、という技術が記載されている。つまり、特許文献２によると、並列同期待ち状態にある並列プロセスはディスパッチせず、代わりに実行可能な他のジョブのプロセスをディスパッチすることで、システムのスループット性能が低下することを防ぐことが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５４５３８２５号公報
【特許文献２】特開Ｈ９−１２８３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術の場合、第２のプロセッサコアを制御する軽量スケジューラは、メインシステム側と独立して形成されている。そのため、特許文献１の技術の場合、軽量スケジューラがメインシステム側のスケジューリングと連携した制御を行うことは難しかった。その結果、システム全体として効率的なスケジューリングを行うことが難しくなる場合があった。
【０００７】
また、特許文献２の技術はプログラムが自ら待ち状態になった場合の制御であり、他の装置のスケジューリング状況に応じた制御を行うことは難しい。そのため、特許文献２の技術の場合でも、コンテキストスイッチが行われた場合など他の装置のスケジューリング状況によっては、システム全体として効率的なスケジューリングを行うことが難しくなる場合があった。
【０００８】
このように、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題が生じていた。
【０００９】
そこで、本発明の目的は、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題を解決する並列処理システムを提供することにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態である並列処理システムは、
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有し、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
という構成を採る。
【００１１】
また、本発明の他の形態である並列処理方法は、
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが実行するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
という構成を採る。
【００１２】
また、本発明の他の形態であるプログラムは、
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、
ことを実現させるためのプログラムである。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題を解決する並列処理システムを提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係る並列計算機の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態に係る並列計算機で実行されるプログラムの一例を示す図である。
【図３】本発明の第１の実施形態に係る並列計算機の詳細な構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態に係るプロセススケジューラの構成の一例を示す図である。
【図５】本発明の第１の実施形態に係るプロセススケジューラがコンテキストスイッチを行う際の動作の一例を示すフローチャートである。
【図６】本発明の第１の実施形態に係るメインプロセッサ用プロセススケジューラが状態通知情報を受信した際の動作の一例を示すフローチャートである。
【図７】本発明の第１の実施形態に係るコプロセッサ用プロセススケジューラが状態通知情報を受信した際の動作の一例を示すフローチャートである。
【図８】本発明の第１の実施形態に係るプロセススケジューラが行う優先度の変更の一例を示す図である。
【図９】本発明の第１の実施形態に係るプロセススケジューラが行う優先度の変更の一例を示す図である。
【図１０】本発明の第２の実施形態に係る並列計算機の構成の一例を示すブロック図である。
【図１１】本発明の第３の実施形態に係る並列計算機の構成の一例を示すブロック図である。
【図１２】本発明の第４の実施形態に係る並列処理システムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
図１は、並列計算機４の構成の一例を示すブロック図である。図２は、並列計算機４で実行されるプログラムの一例を示す図である。図３は、並列計算機４の詳細な構成の一例を示すブロック図である。図４は、メインプロセッサ用プロセススケジューラの構成の一例を示す図である。図５は、プロセススケジューラがコンテキストスイッチを行う際の動作の一例を示すフローチャートである。図６は、メインプロセッサ用プロセススケジューラ１２が状態通知情報を受信した際の動作の一例を示すフローチャートである。図７は、コプロセッサ用プロセススケジューラ１４が状態通知情報を受信した際の動作の一例を示すフローチャートである。図８、図９は、プロセススケジューラが行う優先度の変更の一例を示す図である。
【００１６】
本発明の第１の実施形態では、メインプロセッサノード１と、アクセラレータなどのコプロセッサノード２と、を有する並列計算機４について説明する。本実施形態における並列計算機４は、メインプロセッサノード１上で実行されるプロセスと、コプロセッサノード２上で実行されるプロセスと、を独立したプロセススケジューラで管理するよう構成されている。後述するように、それぞれのプロセスを管理するプロセススケジューラ間で所定の情報を通信することで、システム全体としての効率的なスケジューリングを実現することになる。
【００１７】
図１を参照すると、本実施形態における並列計算機４は、１つのメインプロセッサノード１（第１のノード）と、１つ以上のコプロセッサノード２（第２のノード）と、を有している。また、メインプロセッサノード１と１つ以上のコプロセッサノード２とは、通信バス３で接続されており、互いに通信可能なよう構成されている。
【００１８】
メインプロセッサノード１は、メインプロセッサ１１と図示しない記憶装置とを有している。また、メインプロセッサノード１上では、オペレーティングシステム（ＯＳ、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が動作する。メインプロセッサノード１上で動作するＯＳは、Ｌｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）などに代表される計算機に用いられるコモディティのオペレーティングシステムであって構わない。
【００１９】
メインプロセッサノード１のオペレーティングシステム上では、メインプロセッサ１１、後述するコプロセッサ２１、で実行されるプロセスを管理するプロセススケジューラが動作する。本実施形態においては、メインプロセッサ１１、コプロセッサ２１、それぞれのプロセッサが実行するプロセスは、メインプロセッサノード１上で動作するＯＳ上の別のプロセススケジューラでそれぞれ管理される。従って、オペレーティングシステム上には、メインプロセッサ１１とコプロセッサ２１の数に応じたプロセススケジューラが動作することになる。
【００２０】
コプロセッサノード２は、コプロセッサ２１と図示しない記憶装置とを有している。また、コプロセッサノード２上では、ＯＳが動作しない。コプロセッサ２１の制御ソフトウェアを含むＯＳは、全てメインプロセッサノード１上で動作することになる。また、コプロセッサ２１のプロセス状態（レジスタなどのコンテキスト）は、通信バス３を介してメインプロセッサノード１側の記憶装置に退避される。
【００２１】
本実施形態においては、上記のようなメインプロセッサノード１とコプロセッサノード２とで、排他的に動作するプログラムを実行する。つまり、メインプロセッサノード１とコプロセッサノード２とでは、相互に依存関係にあるなど、所定の対応するプログラムが実行されることになる。具体的には、例えば、図２で示すように、プロセス１をメインプロセッサ１１で実行するとともに、プロセス１の演算結果に依存するプロセス２をコプロセッサ２１で実行する。上記のように、メインプロセッサノード１で実行されるプロセスとコプロセッサノード２で実行されるプロセスとはそれぞれ排他的に動作する。従って、メインプロセッサ１１でプロセス１を実行している間は、コプロセッサノード２側は待ち状態になることになる。また、コプロセッサ２１でプロセス２を実行している間は、メインプロセッサノード１側は待ち状態になることになる。なお、待ち状態である間は、相手プロセッサの状態をポーリング監視することがある。
【００２２】
また、本実施形態においては、プロセススケジューラ間でプロセスＩＤを一致させておくなどの方法により、各プロセススケジューラは対応する（排他的な動作をする）プロセスを判断することが出来るものとする。なお、対応するプロセスを判別可能であれば、具体的な判別方法は特に限定されない。
【００２３】
次に、図３を参照して、並列計算機４のより具体的な構成について説明する。図３は、本実施形態における並列計算機４のより詳細な構成の一例を示している。
【００２４】
図３を参照すると、メインプロセッサノード１は、メインプロセッサ１１（例えば、第１のプロセス処理部。ただし、第２のプロセス処理部でも構わない。）と、メインプロセッサ用プロセススケジューラ１２（第１のプロセススケジューラ又は第２のプロセススケジューラ）と、状態通知手段１３と、コプロセッサ用プロセススケジューラ１４（第１のプロセススケジューラ又は第２のプロセススケジューラ）と、ノード間通信手段１５と、を有している。
【００２５】
メインプロセッサ１１は、１つ以上のプロセッサコア１１１を有している。メインプロセッサ１１が有するプロセッサコア１１１は、メインプロセッサ用プロセススケジューラ１２からの制御に基づいて、プロセスを実行する。
【００２６】
メインプロセッサ用プロセススケジューラ１２は、プロセッサコア１１１で実行するプロセスの処理状況を検出して管理する。
【００２７】
例えば、メインプロセッサ用プロセススケジューラ１２は、後述するスケジューリングポリシ１２２に基づいて、コンテキストスイッチを行う。つまり、メインプロセッサ用プロセススケジューラ１２は、プロセッサコア１１で実行されるプロセスを切り替える。また、本実施形態におけるメインプロセッサ用プロセススケジューラ１２は、コンテキストスイッチを実行する際に、状態通知手段１３を用いて、コンテキストスイッチを実行する旨を示す状態通知情報を他のプロセススケジューラ（コプロセッサ用プロセススケジューラ１４）に通知する。
【００２８】
具体的には、例えば、メインプロセッサ用プロセススケジューラ１２は、コンテキストスイッチによりプロセスコンテキストを退避させると、プロセスが待機状態に遷移した旨を示す状態通知情報をコプロセッサ用プロセススケジューラ１４に通知する。また、メインプロセッサ用プロセススケジューラ１２は、例えば、コンテキストスイッチによりプロセスコンテキストを復元させると、プロセスがディスパッチされた旨を示す状態通知情報をコプロセッサ用プロセススケジューラ１４に通知する。
【００２９】
また、メインプロセッサ用プロセススケジューラ１２は、他のプロセススケジューラから状態通知情報を受信すると、優先度制御手段１２１を用いて、プロセッサコア１１１で実行するプロセスの優先度を制御する。これにより、メインプロセッサ用プロセススケジューラ１２は、プロセッサコア１１１にディスパッチされるプロセスを制御する。
【００３０】
具体的には、例えば、メインプロセッサ用プロセススケジューラ１２は、コプロセッサ用プロセススケジューラ１４からプロセスが待機状態に遷移した旨を示す状態通知情報を受信する。すると、メインプロセッサ用プロセススケジューラ１２は、当該状態通知情報が示すプロセスと対応する（排他的な動作をする）プロセスが待ち状態にあるか否かを、後述する状態情報１２５１を確認することで確認する。そして、当該対応するプロセスが待ち状態にある場合、メインプロセッサ用プロセススケジューラ１２の優先度制御手段１２１は、待ち状態にあるプロセスの優先度を通常より低くなるよう制御する（図８参照）。また、メインプロセッサ用プロセススケジューラ１２は、例えば、コプロセッサ用プロセススケジューラ１４からプロセスがディスパッチされた旨を示す状態通知情報を受信する。すると、メインプロセッサ用プロセススケジューラ１２は、当該状態通知情報が示すプロセスと対応するプロセスが待ち状態にあるか否かを、状態情報１２５１を確認することで確認する。そして、当該対応するプロセスが待ち状態にある場合、メインプロセッサ用プロセススケジューラ１２の優先度制御手段１２１は、待ち状態にあるプロセスの優先度を高くすることにより、優先度を元に戻す（図９参照）。
【００３１】
このように、メインプロセッサ用プロセススケジューラ１２は、プロセッサコア１１１で実行されるプロセスの処理状況（プロセスの切り替え）を検出して、他のプロセススケジューラに対して状態通知情報を送信するよう構成されている。また、メインプロセッサ用プロセススケジューラ１２は、受信した状態通知情報に基づいて、プロセッサコア１１１の動作を制御する（プロセッサコア１１１で実行されるプロセスの優先度を制御する）ように構成されている。
【００３２】
なお、メインプロセッサ用プロセススケジューラ１２が該当プロセスの優先度をどの程度上げるか、下げるか、は任意である。メインプロセッサ用プロセススケジューラ１２が制御する優先度の変更度合を示すパラメータは、変更可能なよう構成されても構わない。
【００３３】
図４は、メインプロセッサ用プロセススケジューラ１２がコンテキストスイッチを実行する際に用いる構成の一例を示している。図４を参照すると、メインプロセッサ用プロセススケジューラ１２は、スケジューリングポリシ１２２と、プロセススイッチ手段１２３と、プロセスコンテキスト１２４と、プロセス構造体１２５と、を有している。
【００３４】
スケジューリングポリシ１２２は、コンテキストスイッチのタイミングや、コンテキストスイッチを実行する際に次に実行すべきプロセスを選定するためのポリシを示している。スケジューリングポリシ１２２は、優先度によるスケジューリングが可能であれば、特に限定せず公知なものが適用可能である。
【００３５】
プロセススイッチ手段１２３は、プロセッサコア１１１で実行されるプロセスを切り替える手段である。例えば、プロセススイッチ手段１２３は、コンテキストスイッチで入れ替える対象となるプロセスが動作しているプロセッサコア１１１のコンテキストをプロセスコンテキスト１２４として保存する。そして、プロセススイッチ手段１２２は、ディスパッチ対象のプロセスコンテキスト１２４を対象のプロセッサコア１１１に復元する。
【００３６】
プロセスコンテキスト１２４は、プロセススイッチ手段１２３がプロセッサコア１１１で実行されているプロセスをコンテキストスイッチした際にプロセッサコア１１１から退避されたコンテキストデータである。
【００３７】
プロセス構造体１２５は、プロセスの情報を示す構造体であり、状態情報１２５１を有している。上述したように、本実施形態における並列計算機４では、メインプロセッサノード１とコプロセッサノード２とで排他的に動作するプログラムを実行する。そのため、例えば、メインプロセッサノード１側のプロセスが実行されている間、コプロセッサノード２側は待ち状態になることになる。このような待ちの状態をプロセススケジューラから判別するため、メインプロセッサ用プロセススケジューラ１２が管理するプロセス構造体１２５は、相手側プロセスを待っているか否か（待ち状態であるか否か）の情報である状態情報１２５１を持つことになる。状態情報１２５１は、プロセス構造体１２５が示すプロセスが関連するプロセスの処理待ちである場合に、処理待ちである旨を示すよう制御される。
【００３８】
状態通知手段１３は、メインプロセッサ用プロセススケジューラ１２とコプロセッサ用プロセススケジューラ１４との間で状態通知情報を送受信する際に用いられる。例えば、メインプロセッサ用プロセススケジューラ１２は、状態通知手段１３を用いて、コプロセッサ用プロセススケジューラ１４に対して状態通知情報を送信する。また、例えば、コプロセッサ用プロセススケジューラ１４は、状態通知手段１３を用いて、メインプロセッサ用プロセススケジューラ１２と他のコプロセッサ用プロセススケジューラ１４に対して状態通知情報を送信する。
【００３９】
コプロセッサ用プロセススケジューラ１４は、対応するコプロセッサノード２のプロセッサコア２１１で実行するプロセスを管理する。コプロセッサ用プロセススケジューラ１４は、コプロセッサノード２の数に応じた数が設けられている。
【００４０】
コプロセッサ用プロセススケジューラ１４は、メインプロセッサ用プロセススケジューラ１２と同様の構成を有している。すなわち、コプロセッサ用プロセススケジューラ１４は、下記で示す処理を実行可能なよう構成されている。
・対応するコプロセッサノード２で実行されるプロセスをコンテキストスイッチする（なお、この処理は、通信バス３を介して行われる）。
・コンテキストスイッチを実行する際に、他のプロセススケジューラ（メインプロセッサ用プロセススケジューラ１２と他のコプロセッサ用プロセススケジューラ１４）に対して状態通知情報を送信する。
・他のプロセススケジューラから受信した状態通知情報に応じて、優先度制御手段１４１により優先度を制御する。
【００４１】
また、コプロセッサ用プロセススケジューラ１４は、図４で示すメインプロセッサ用プロセススケジューラ１２と同様の構成を有している。つまり、コプロセッサ用プロセススケジューラ１４は、スケジューリングポリシと、プロセススイッチ手段と、プロセスコンテキストと、プロセス構造体と、を有している。また、コプロセッサ用プロセススケジューラ１４が有するプロセス構造体は、状態情報を有している。
【００４２】
このように、コプロセッサ用プロセススケジューラ１４は、メインプロセッサ用プロセススケジューラ１２と同様に構成されている。そのため、コプロセッサ用プロセススケジューラ１４についての詳細な説明は省略する。
【００４３】
ノード間通信手段１５は、メインプロセッサ１１及びコプロセッサ用プロセススケジューラ１４がコプロセッサノード２と通信を行う際に用いられる。例えば、メインプロセッサ１１は、プロセッサコア１１１で実行するプロセスを処理する際にノード間通信手段１５を介してコプロセッサノード２のプロセッサコア２１１と通信する。また、コプロセッサ用プロセススケジューラ１４は、ノード間通信手段１５を介してコプロセッサノード２のプロセッサコア２１１で実行されるプロセスの管理を行う。つまり、メインプロセッサノード１側からは、ノード間通信手段１５を用いてコプロセッサノード２と通信することになる。
【００４４】
また、図３を参照すると、コプロセッサノード２は、コプロセッサ２１と、ノード間通信手段２２と、を有している。コプロセッサノード２の数は、１以上の任意の数であって構わない。
【００４５】
コプロセッサ２１は、１つ以上のコプロセッサコア２１１を有している。コプロセッサ２１が有するプロセッサコア２１１は、対応するコプロセッサ用プロセススケジューラ１４からの制御に基づいて、プロセスを実行する。
【００４６】
ノード間通信手段２２は、コプロセッサ２１がメインプロセッサノード１と通信を行う際に用いられる。例えば、コプロセッサ２１は、プロセッサコア２１１で実行するプロセスを処理する際にノード間通信手段２２を介してメインプロセッサノード１のプロセッサコア１１１と通信する。また、コプロセッサノード２のプロセッサコア２１１で実行されるプロセスは、ノード間通信手段２２を介して接続されたコプロセッサ用プロセススケジューラ１４で管理される。つまり、コプロセッサノード２側からは、ノード間通信手段２２を用いてメインプロセッサノード１と通信することになる。
【００４７】
以上が、並列計算機４の構成についての説明である。次に、並列計算機４の動作について説明する。まず、図５を参照して、メインプロセッサ用プロセススケジューラ１２がメインプロセッサ１１内のプロセッサコア１１１についてコンテキストスイッチする際の動作について説明する。
【００４８】
図５を参照すると、メインプロセッサ用プロセススケジューラ１２は、スケジューリングポリシ１２２に従って、コンテキストスイッチで入れ替えるプロセスを決定する（ステップＳ１０１）。上述したように、メインプロセッサ用プロセススケジューラ１２が参照するスケジューリングポリシ１２２は、公的なものが適用可能であり特に限定しない。また、メインプロセッサ用プロセススケジューラ１２が用いるスケジューリングアルゴリズムも公的なものが適用可能であり特に限定しない。
【００４９】
次に、プロセススイッチ手段１２３が、コンテキストスイッチの対象となったプロセスが動作しているプロセッサコア１１１のコンテキストをプロセスコンテキスト１２４として保存する。そして、プロセススイッチ手段１２３は、ディスパッチ対象のプロセスコンテキスト１２４をコンテキストスイッチの対象となるプロセッサコア１１１に復元する。メインプロセッサ用プロセススケジューラ１２は、このような動作によりコンテキストスイッチを実行する（ステップＳ１０２）。
【００５０】
その後、メインプロセッサ用プロセススケジューラ１２は、状態通知手段１３を用いて、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を他のプロセススケジューラ（コプロセッサ用プロセススケジューラ１４）に通知する（ステップＳ１０３）。
【００５１】
なお、メインプロセッサ用プロセススケジューラ１２が状態通知情報を送信するタイミングは上記場合に限定されない。例えば、メインプロセッサ用プロセススケジューラ１２は、プロセスが待機状態に遷移した旨を示す状態通知情報とプロセスがディスパッチされた旨を示す状態通知情報とを、異なるタイミングで送信することが出来る。例えば、メインプロセッサ用プロセススケジューラ１２は、対象のプロセッサコア１１１のコンテキストをプロセスコンテキスト１２４として保存した後（又は保存するとともに）、プロセスが待機状態に遷移した旨を示す状態通知情報を送信する。その後、メインプロセッサ用プロセススケジューラ１２は、ディスパッチ対象のプロセスコンテキスト１２４をコンテキストスイッチの対象となるプロセッサコア１１１に復元した後（又は復元するとともに）、プロセスがディスパッチされた旨を示す状態通知情報を送信する。メインプロセッサ用プロセススケジューラ１２は、例えば、上記のように動作することが出来る。また、メインプロセッサ用プロセススケジューラ１２は、プロセスが待機状態に遷移した旨と、プロセスがディスパッチされた旨とを、１つの状態通知情報で同時に通知するように構成しても構わない。
【００５２】
続いて、コプロセッサ用プロセススケジューラ１４がコプロセッサ２１内のコプロセッサコア２１１についてコンテキストスイッチする際の動作について説明する。
【００５３】
コプロセッサ用プロセススケジューラ１４がコプロセッサ２１内のコプロセッサコア２１１についてコンテキストスイッチする際の動作は、概ね図５で示すメインプロセッサ用プロセススケジューラ１２がコンテキストスイッチする際の動作と同様である。
【００５４】
すなわち、コプロセッサ用プロセススケジューラ１４は、コプロセッサ用プロセススケジューラ１４が有するスケジューリングポリシに従って、コンテキストスイッチで入れ替えるプロセスを決定する（ステップＳ１０１、図５参照）。
【００５５】
続いて、コプロセッサ用プロセススケジューラ１４のプロセススイッチ手段は、コンテキストスイッチの対象となったプロセスが動作しているプロセッサコア２１１のコンテキストを、コプロセッサ用プロセススケジューラ１４内にプロセスコンテキストとして保存する。つまり、コプロセッサ２１のプロセッサコア２１１のプロセス状態は、メインプロセッサノード１側に退避されることになる。そして、コプロセッサ用プロセススケジューラ１４のプロセススイッチ手段は、ディスパッチ対象のプロセスコンテキストをコンテキストスイッチの対象となるプロセッサコア２１１に復元する。コプロセッサ用プロセススケジューラ１４は、ノード間通信手段１５を用いて通信バス３を介することで、コプロセッサノード２のプロセッサコア２１１のコンテキストにアクセスして上記のような動作を実行することになる（ステップＳ１０２、図５参照）。
【００５６】
その後、コプロセッサ用プロセススケジューラ１４は、状態通知手段１３を用いて、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を他のプロセススケジューラ（メインプロセッサ用プロセススケジューラ１２と他のコプロセッサ用プロセススケジューラ１４）に通知する（ステップＳ１０３、図５参照）。なお、コプロセッサ用プロセススケジューラ１４が状態通知情報を通知する際の構成は、メインプロセッサ用プロセススケジューラ１２の場合と同様にさまざまな形を採ることが出来る。
【００５７】
次に、図６を参照して、メインプロセッサ用プロセススケジューラ１２が他のプロセススケジューラ（コプロセッサ用プロセススケジューラ１４）から状態通知情報を受信した際の動作について説明する。
【００５８】
図６を参照すると、メインプロセッサ用プロセススケジューラ１２は、状態通知手段１３により、コプロセッサ用プロセススケジューラ１４からプロセスを切り替える旨を示す状態通知情報を受信する（ステップＳ２０１）。具体的には、メインプロセッサ用プロセススケジューラ１２は、コプロセッサ用プロセススケジューラ１４から、プロセスが待機状態に遷移した旨を示す状態通知情報、又は、プロセスがディスパッチされた旨を示す状態通知情報を受信する。なお、メインプロセッサ用プロセススケジューラ１２は、コプロセッサ用プロセススケジューラ１４から、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を同時に受信しても構わない。
【００５９】
続いて、メインプロセッサ用プロセススケジューラ１２は、プロセス構造体１２５の状態情報１２５１を参照する。これにより、メインプロセッサ用プロセススケジューラ１２は、コプロセッサ用プロセススケジューラ１４側で切り替えられたプロセスと対応するメインプロセッサノード１側のプロセスが、待ち状態であるか否かを確認する（ステップＳ２０２）。
【００６０】
そして、メインプロセッサ用プロセススケジューラ１２は、当該プロセスが待ち状態でなかった場合（ステップＳ２０２、ｎｏ）、その処理を終了する。
【００６１】
一方、当該プロセスが待ち状態であった場合（ステップＳ２０２、ｙｅｓ）、メインプロセッサ用プロセススケジューラ１２は、受信した状態通知情報が、プロセスが待機状態に遷移した旨を示すか、又は、プロセスがディスパッチされた旨を示すか、を確認する（ステップＳ２０３）。
【００６２】
そして、メインプロセッサ用プロセススケジューラ１２は、プロセスが待機状態に遷移した旨を示す状態通知情報を受信していた場合（ステップＳ２０３、待機状態に遷移）、図８で示すように、メインプロセッサノード１側の対応するプロセスを処理する優先度（プロセス優先度）を通常より下げる（ステップＳ２０５）。
【００６３】
一方、メインプロセッサ用プロセススケジューラ１２は、プロセスがディスパッチされた旨を示す状態通知情報を受信していた場合（ステップＳ２０３、ディスパッチ）、図９で示すように、メインプロセッサノード１側の対応するプロセスを処理する優先度（プロセス優先度）を上げて元に戻す（ステップＳ２０４）。
【００６４】
メインプロセッサ用プロセススケジューラ１２は、例えば上記のような動作により、受け取った状態通知情報に応じて優先度を制御する。その結果、プロセッサコア１１１が実行するプロセスが制御されることになる。
【００６５】
次に、図７を参照して、コプロセッサ用プロセススケジューラ１４が他のプロセススケジューラ（メインプロセッサ用プロセススケジューラ１２と他のコプロセッサ用プロセススケジューラ１４）から状態通知情報を受信した際の動作について説明する。なお、コプロセッサ用プロセススケジューラ１４が他のプロセススケジューラから状態通知情報を受信した際の動作は、メインプロセッサ用プロセススケジューラ１２が他のプロセススケジューラから状態通知情報を受信した際の動作と概ね同様である。
【００６６】
図７を参照すると、コプロセッサ用プロセススケジューラ１４は、状態通知手段１３により、他のプロセススケジューラ（メインプロセッサ用プロセススケジューラ１２又は他のコプロセッサ用プロセススケジューラ１４）からプロセスを切り替える旨を示す状態通知情報を受信する（ステップＳ３０１）。具体的には、コプロセッサ用プロセススケジューラ１４は、他のプロセススケジューラから、プロセスが待機状態に遷移した旨を示す状態通知情報、又は、プロセスがディスパッチされた旨を示す状態通知情報を受信する。なお、コプロセッサ用プロセススケジューラ１４は、他のプロセススケジューラから、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を同時に受信しても構わない。
【００６７】
続いて、コプロセッサ用プロセススケジューラ１４は、当該コプロセッサ用プロセススケジューラ１４が有するプロセス構造体の状態情報を参照する。これにより、コプロセッサ用プロセススケジューラ１４は、他のプロセススケジューラ側で切り替えられたプロセスと対応する当該コプロセッサノード２側のプロセスが、待ち状態であるか否かを確認する（ステップＳ３０２）。
【００６８】
そして、コプロセッサ用プロセススケジューラ１４は、当該プロセスが待ち状態でなかった場合（ステップＳ３０２、ｎｏ）、その処理を終了する。
【００６９】
一方、当該プロセスが待ち状態であった場合（ステップＳ３０２、ｙｅｓ）、コプロセッサ用プロセススケジューラ１４は、受信した状態通知情報が、プロセスが待機状態に遷移した旨を示すか、又は、プロセスがディスパッチされた旨を示すか、を確認する（ステップＳ３０３）。
【００７０】
そして、コプロセッサ用プロセススケジューラ１４は、プロセスが待機状態に遷移した旨を示す状態通知情報を受信していた場合（ステップＳ３０３、待機状態に遷移）、図８で示すように、当該コプロセッサノード２側の対応するプロセスを処理する優先度（プロセス優先度）を通常より下げる（ステップＳ３０５）。
【００７１】
一方、コプロセッサ用プロセススケジューラ１４は、プロセスがディスパッチされた旨を示す状態通知情報を受信していた場合（ステップＳ３０３、ディスパッチ）、図９で示すように、コプロセッサノード２側の対応するプロセスを処理する優先度（プロセス優先度）を上げて元に戻す（ステップＳ３０４）。
【００７２】
コプロセッサ用プロセススケジューラ１４は、例えば上記のような動作により、受け取った状態通知情報に応じて優先度を制御する。その結果、コプロセッサ用プロセススケジューラ１４に応じたコプロセッサノード２上のプロセッサコア２１１が実行するプロセスが制御されることになる。
【００７３】
このように、本実施形態における並列計算機４は、プロセッサコア１１１で実行されるプロセスを管理するメインプロセッサ用プロセススケジューラ１２と、プロセッサコア２１１で実行されるプロセスを管理するコプロセッサ用プロセススケジューラ１４と、を有している。そして、メインプロセッサ用プロセススケジューラ１２とコプロセッサ用プロセススケジューラ１４とは、状態通知手段１３を介して通信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、コンテキストスイッチする際に状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。これにより、不必要なプロセスのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）割り当てを低減し、並列計算機４全体でのスケジューリング効率化を実現することが可能となる。また、その結果として、ＣＰＵをより効率的に利用することが可能となる。
【００７４】
また、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、プロセスが待機状態に遷移した旨を示す状態通知情報を送信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、コンテキストスイッチによりプロセスコンテキストを退避する際に、その旨を示す状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、上記状態通知情報を受け取った側が上記状態通知情報に応じた制御を実行することで、プロセスコンテキストが退避したプロセスと関連するプロセスの優先度を下げることが可能となる。これにより、例えば、不要なポーリング監視を実行することなどを防ぐことが可能となり、不要なプロセスが実行されることで別のプロセスの実行が妨げられることを防ぐことが可能となる。
【００７５】
また、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、プロセスがディスパッチされた旨を示す状態通知情報を送信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、コンテキストスイッチによりプロセスコンテキストをディスパッチする際に、その旨を示す状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、上記状態通知情報を受け取った側が上記状態通知情報に応じた制御を実行することで、プロセスコンテキストがディスパッチされたプロセスと関連するプロセスの優先度を上げることが可能となる。これにより、例えば、必要に応じてプロセスの優先度を元に戻すことが可能となる。
【００７６】
なお、本実施形態においては、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、他のプロセススケジューラに対して状態通知情報を送信するとした。しかしながら、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、例えば、関連するプロセスを管理するプロセススケジューラに対して状態通知情報を送信するように構成しても構わない。
【００７７】
また、本実施形態においては、並列計算機４は、メインプロセッサノード１とコプロセッサノード２とを有するとした。しかしながら、本発明は上記メインプロセッサノード１とコプロセッサノード２とを有する場合に限定されず適用可能である。本発明は、例えば、別々のアクセラレータにそれぞれ得意なことをやらせる場合に、それぞれのアクセラレータで実行されるプロセスを管理するプロセススケジューラ同士で状態通知情報を送信するよう構成しても構わない。このように、関連するプロセスを制御するスケジューラ同士で状態通知情報を送信可能であれば、本発明は具体的な構成を限定せず実施可能である。本発明は、例えば、複数のコプロセッサノード２をそれぞれ管理するコプロセッサ用プロセススケジューラ同士で状態通知情報を送信するよう構成しても構わない。
【００７８】
また、本実施形態においては、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、状態通知情報に応じて、対応するプロセスの優先度を制御するとした。しかしながら、メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４が行う状態通知情報に応じた制御は、優先度に対する制御に限定されない。メインプロセッサ用プロセススケジューラ１２、コプロセッサ用プロセススケジューラ１４は、例えば、優先度を制御せずに、状態通知情報に応じたプロセスをディスパッチしないように制御するよう構成しても構わない。
【００７９】
また、本実施形態においては、メインプロセッサノード１とコプロセッサノード２とで、排他的に動作するプログラムを実行するとした。しかしながら、メインプロセッサノード１とコプロセッサノード２とで動作するプログラムは、必ずしも排他的に動作するプログラムに限られない。メインプロセッサノード１とコプロセッサノード２とでは、一方の動作が他方にも影響する、対応するプログラムが実行されていれば構わない。
【００８０】
［第２の実施形態］
本発明の第２の実施形態では、第１の実施形態で説明した並列計算機４の他の構成例について説明する。
【００８１】
図１０を参照すると、本実施形態における並列計算機５は、メインプロセッサノード５１と、１以上のコプロセッサノード５２と、を有している。
【００８２】
メインプロセッサノード５１は、メインプロセッサ５１１と、メインプロセッサ用プロセススケジューラ５１２と、を有している。また、コプロセッサノード５２は、コプロセッサ５２１と、コプロセッサ用プロセススケジューラ５２２と、を有している。そして、メインプロセッサ用プロセススケジューラ５１２とコプロセッサ用プロセススケジューラ５２２とは、状態通知手段５３で接続されており、通信可能なよう構成されている。
【００８３】
このように、本実施形態における並列計算機５は、第１の実施形態で説明した並列計算機４とほぼ同様の構成を有しており、コプロセッサ用プロセススケジューラ５２２をコプロセッサ用ノード５２が有している点が、並列計算機４の構成と異なっている。
【００８４】
上記のような構成により、メインプロセッサ用プロセススケジューラ５１２は、コンテキストスイッチを実行する際に、状態通知手段５３を用いて、コプロセッサ用プロセススケジューラ５２２に対して状態通知情報を送信する。また、コプロセッサ用プロセススケジューラ５２２は、コンテキストスイッチを実行する際に、状態通知手段５３を用いて、メインプロセッサ用プロセススケジューラ５１２と他のコプロセッサ用プロセススケジューラ５２２に対して状態通知情報を送信する。
【００８５】
また、メインプロセッサ用プロセススケジューラ５１２は、他のプロセススケジューラから状態通知情報を受信すると、メインプロセッサ５１１で実行するプロセスの優先度を制御する。また、コプロセッサ用プロセススケジューラ５２２は、他のプロセススケジューラから状態通知情報を受信すると、コプロセッサ５２１で実行するプロセスの優先度を制御する。
【００８６】
このように、メインプロセッサノード５１がメインプロセッサ用プロセススケジューラ５１２を有し、コプロセッサノード５２がコプロセッサ用プロセススケジューラ５２２を有する場合であっても、本発明は適用可能である。つまり、メインプロセッサ用プロセススケジューラ５１２とコプロセッサ用プロセススケジューラ５２２とを有しているノードが異なっている場合でも、メインプロセッサ用プロセススケジューラ５１２とコプロセッサ用プロセススケジューラ５２２とを状態通知手段５３で接続することで、状態通知情報に基づいた制御を行うことを可能とすることが出来る。その結果、メインプロセッサ用プロセススケジューラ５１２、コプロセッサ用プロセススケジューラ５１２は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。
【００８７】
なお、第２の実施形態における並列計算機５も、第１の実施形態における並列計算機４と同様に様々な変形例を採用することが出来る。
【００８８】
［第３の実施形態］
本発明の第３の実施形態では、第１の実施形態で説明した並列計算機４、第２の実施形態で説明した並列計算機５の他の構成例について説明する。本実施形態においては、ノードが１つの場合について説明する。具体的には、例えば、コプロセッサノードがメインプロセッサノード内の１つ以上のプロセッサコアで構成されている場合について説明する。
【００８９】
図１１を参照すると、本実施形態における並列計算機６は、プロセッサ６１を有している。また、プロセッサ６１はプロセッサコア６１１を有しており、プロセッサコア６１１で実行するプロセスは、メインプロセッサ用プロセススケジューラ６２で管理されている。さらに、プロセッサ６１は、コプロセッサノードに相当するプロセッサコア６１２を有しており、プロセッサコア６１２で実行するプロセスは、コプロセッサ用プロセススケジューラ６３で管理されている。そして、メインプロセッサ用プロセススケジューラ６２とコプロセッサ用プロセススケジューラ６３とは、状態通知手段６４で接続されており、通信可能なよう構成されている。
【００９０】
このように、本実施形態における並列計算機６は、１つのノード上に、異なるプロセススケジューラで管理する複数のプロセッサコアを有している。このような構成であったとしても、状態通知手段６４を有することで、メインプロセッサ用プロセススケジューラ６２は、コンテキストスイッチを実行する際に、状態通知手段６４を用いて、コプロセッサ用プロセススケジューラ６３に対して状態通知情報を送信することが出来る。また、コプロセッサ用プロセススケジューラ６３は、コンテキストスイッチを実行する際に、状態通知手段６４を用いて、メインプロセッサ用プロセススケジューラ６２と他のコプロセッサ用プロセススケジューラ６３に対して状態通知情報を送信することが出来る。また、メインプロセッサ用プロセススケジューラ６２は、他のプロセススケジューラから状態通知情報を受信すると、プロセッサコア６１１で実行するプロセスの優先度を制御することが出来る。また、コプロセッサ用プロセススケジューラ６３は、他のプロセススケジューラから状態通知情報を受信すると、プロセッサコア６１２で実行するプロセスの優先度を制御することが出来る。
【００９１】
その結果、メインプロセッサ用プロセススケジューラ６２、コプロセッサ用プロセススケジューラ６３は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。このように、本発明は、１つのノードのみを有する場合でも適用可能である。
【００９２】
なお、第３の実施形態における並列計算機６も、第１の実施形態における並列計算機４、第２の実施形態における並列計算機５、と同様に様々な変形例を採用することが出来る。
【００９３】
［第４の実施形態］
本発明の第４の実施形態では、関連するプロセスを複数の処理部（第１のプロセス処理部７１と第２のプロセス処理部７３）で実行する並列処理システム７について説明する。本実施形態においては、並列処理システム７の構成の概要について説明する。
【００９４】
図１２を参照すると、本実施形態における並列処理システム７は、第１のプロセス処理部７１と、第１のプロセススケジューラ７２と、第２のプロセス処理部７３と、第２のプロセススケジューラ７４と、を有している。
【００９５】
第１のプロセス処理部７１は、所定のプロセスを実行するよう構成されている。また、第１のプロセススケジューラ７２は、第１のプロセス処理部７１で実行されるプロセスの処理状況を検出して管理するよう構成されている。
【００９６】
第２のプロセス処理部７３は、第１のプロセス処理部７１で実行されるプロセスと関連するプロセスを実行するよう構成されている。また、第２のプロセススケジューラ７４は、第２のプロセス処理部７３で実行されるプロセスの処理状況を検出して管理するよう構成されている。
【００９７】
また、第１のプロセススケジューラ７２と第２のプロセススケジューラ７４とは、互いに通信可能なよう構成されている。
【００９８】
このような構成により、第１のプロセススケジューラ７２は、第１のプロセス処理部７１の処理状況を検出する。そして、第１のプロセススケジューラ７２は、検出した第１のプロセス処理部７１の処理状況を、第２のプロセススケジューラ７４に対して送信する。また、第２のプロセススケジューラ７４は、第２のプロセス処理部７３の処理状況を検出する。そして、第２のプロセススケジューラ７４は、検出した第２のプロセス処理部７３の処理状況を、第１のプロセススケジューラ７２に対して送信する。
【００９９】
また、第１のプロセススケジューラ７２は、第２のプロセススケジューラ７４から受信した第２のプロセス処理部７３の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第１のプロセス処理部７１の動作を制御する。また、第２のプロセススケジューラ７４は、第１のプロセススケジューラ７２から受信した第１のプロセス処理部７１の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第２のプロセス処理部７３の動作を制御する。
【０１００】
このように、本実施形態における並列処理システム７は、第１のプロセス処理部７１を管理する第１のプロセススケジューラ７２と、第２のプロセス処理部７３を管理する第２のプロセススケジューラ７４と、を有している。また、第１のプロセススケジューラ７２と第２のプロセススケジューラ７４とは、互いに通信可能なよう構成されている。このような構成により、第１のプロセススケジューラ７２は、検出した処理状況を第２のプロセススケジューラ７４に対して送信することが出来る。また、第２のプロセススケジューラ７４は、検出した処理状況を第１のプロセススケジューラ７２に対して送信することが出来る。その結果、第１のプロセススケジューラ７２は、第２のプロセス処理部７３の処理状況に応じて、関連するプロセスを実行する第１のプロセス処理部７１の動作を制御することが出来る。また、第２のプロセススケジューラ７４は、第１のプロセス処理部７１の処理状況に応じて、関連するプロセスを実行する第２のプロセス処理部７３の動作を制御することが出来る。これにより、不必要なプロセスが割り当てられることを防止することが可能となり、並列処理システム７全体でのスケジューリング効率化を実現することが可能となる。
【０１０１】
また、上述した並列処理システム７は、情報処置装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、関連するプロセスを複数の処理部で実行し、処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、ことを実現させるためのプログラムである。
【０１０２】
また、上述した並列処理システム７が作動することにより実行される並列処理方法は、関連するプロセスを複数の処理部で実行する並列処理方法であって、複数の処理部で実行するプロセスは複数のスケジューラで管理されており、自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、という方法である。
【０１０３】
上述した構成を有する、プログラム、又は、並列処理方法、の発明であっても、上記並列処理システム７と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１０４】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における並列処理システムなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１０５】
（付記１）
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有し、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【０１０６】
（付記２）
付記１に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【０１０７】
（付記３）
付記１又は２に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの前記第２の処理部で処理する優先度を下げる制御を行う
並列処理システム。
【０１０８】
（付記４）
付記１乃至３の何れかに記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを復元する際に、プロセスが割り当てられた旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、割り当てられたプロセスと関連するプロセスの前記第２の処理部で処理する優先度を上げる制御を行う
並列処理システム。
【０１０９】
（付記５）
付記１乃至４の何れかに記載の並列処理システムであって、
前記第２のプロセススケジューラは、受信した前記状態通知情報が示すプロセスと関連するプロセスが前記第１のプロセス処理部の処理待ち状態である場合に、当該処理待ち状態のプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【０１１０】
（付記６）
付記１乃至５の何れかに記載の並列処理システムであって、
オペレーションシステムが組み込まれ、前記第１のプロセス処理部と、前記第１のプロセススケジューラと、前記第２のプロセススケジューラと、を有する第１のノードと、
オペレーティングシステムが組み込まれておらず、前記第２のプロセス処理部を有する第２のノードと、
を有し、
前記第２のプロセス処理部は、前記第１のノードが有する前記第２のプロセススケジューラからの制御に基づいてプロセスを実行する
並列処理システム。
【０１１１】
（付記７）
付記６に記載の並列処理システムであって、
前記第２のプロセススケジューラは、前記第２のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第１のプロセススケジューラに送信するよう構成され、
前記第１のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御する
並列処理システム。
【０１１２】
（付記８）
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記複数の処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【０１１３】
（付記９）
付記８に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【０１１４】
（付記９−１）
付記８又は９に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を他のプロセススケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの優先度を下げる制御を行う
並列処理方法。
【０１１５】
（付記９−２）
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有する情報処理装置で実現される並列処理方法であって、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとは、互いに通信し、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理方法。
【０１１６】
（付記１０）
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
ことを実現させるためのプログラム。
【０１１７】
（付記１１）
請求項１０に記載のプログラムであって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
プログラム。
【０１１８】
（付記１１−１）
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有する情報処理装置において、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとを互いに通信させ、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
ことを実現させるためのプログラム。
【０１１９】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１２０】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１２１】
１、５１  メインプロセッサノード
１１、５１１  メインプロセッサ
１１１、２１１、６１１、６１２  プロセッサコア
１２、５１２、６２  メインプロセッサ用プロセススケジューラ
１２１  優先度制御手段
１２２  スケジューリングポリシ
１２３  プロセススイッチ手段
１２４  プロセスコンテキスト
１２５  プロセス構造体
１２５１  状態情報
１３、５３、６４  状態通知手段
１４、５２２、６３  コプロセッサ用プロセススケジューラ
１４１  優先度制御手段
１５  ノード間通信手段
２、５２  コプロセッサノード
２１、５２１  コプロセッサ
２２  ノード間通信手段
３  通信バス
４、５、６  並列計算機
６１  プロセッサ
７  並列処理システム
７１  第１のプロセス処理部
７２  第１のプロセススケジューラ
７３  第２のプロセス処理部
７４  第２のプロセススケジューラ
【図１】
2016181016.tif 000003
【図２】
2016181016.tif 000004
【図３】
2016181016.tif 000005
【図４】
2016181016.tif 000006
【図５】
2016181016.tif 000007
【図６】
2016181016.tif 000008
【図７】
2016181016.tif 000009
【図８】
2016181016.tif 000010
【図９】
2016181016.tif 000011
【図１０】
2016181016.tif 000012
【図１１】
2016181016.tif 000013
【図１２】
2016181016.tif 000014
【手続補正書】
【提出日】平成28年7月21日(2016.7.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第１のプロセス処理部と、
前記第１のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第１のプロセススケジューラと、
前記第１のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第２のプロセス処理部と、
前記第２のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第２のプロセススケジューラと、を有し、
前記第１のプロセススケジューラと前記第２のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第１のプロセススケジューラは、前記第２のプロセススケジューラが検出した前記第２のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御し、
前記第２のプロセススケジューラは、前記第１のプロセススケジューラが検出した前記第１のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御し、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスの処理状況を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項２】
請求項１に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項３】
請求項１又は２に記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの前記第２のプロセス処理部で処理する優先度を下げる制御を行う
並列処理システム。
【請求項４】
請求項１乃至３の何れかに記載の並列処理システムであって、
前記第１のプロセススケジューラは、前記第１のプロセス処理部で実行するプロセスコンテキストを復元する際に、プロセスが割り当てられた旨を示す状態通知情報を前記第２のプロセススケジューラに送信するよう構成され、
前記第２のプロセススケジューラは、受信した前記状態通知情報に基づいて、割り当てられたプロセスと関連するプロセスの前記第２のプロセス処理部で処理する優先度を上げる制御を行う
並列処理システム。
【請求項５】
請求項１乃至４の何れかに記載の並列処理システムであって、
前記第２のプロセススケジューラは、受信した前記状態通知情報が示すプロセスと関連するプロセスが前記第１のプロセス処理部の処理待ち状態である場合に、当該処理待ち状態のプロセスを実行する前記第２のプロセス処理部の動作を制御する
並列処理システム。
【請求項６】
請求項１乃至５の何れかに記載の並列処理システムであって、
オペレーションシステムが組み込まれ、前記第１のプロセス処理部と、前記第１のプロセススケジューラと、前記第２のプロセススケジューラと、を有する第１のノードと、
オペレーティングシステムが組み込まれておらず、前記第２のプロセス処理部を有する第２のノードと、
を有し、
前記第２のプロセス処理部は、前記第１のノードが有する前記第２のプロセススケジューラからの制御に基づいてプロセスを実行する
並列処理システム。
【請求項７】
請求項６に記載の並列処理システムであって、
前記第２のプロセススケジューラは、前記第２のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第１のプロセススケジューラに送信するよう構成され、
前記第１のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第１のプロセス処理部の動作を制御する
並列処理システム。
【請求項８】
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記複数の処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御し、
各スケジューラは、自己が管理する処理部で実行するプロセスの処理状況を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【請求項９】
請求項８に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
【請求項１０】
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御させ、
各スケジューラは、自己が管理する処理部で実行するプロセスの処理状況を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
ことを実現させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムであって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
プログラム。