(57)【要約】【課題】リンク故障に伴う競合発生を抑止し性能の劣化を防ぐ。【解決手段】複数のノードと、該複数のノードを接続される複数の第１スイッチと、複数のリンクを介して各第１スイッチを接続される複数の第２スイッチと、を有する情報処理システムにおいて、所定数のノードを用いるジョブの実行開始時に複数のノードのうちの所定数のノードにジョブを割り当てる処理部を有する。処理部は、複数の第１スイッチの中から、所定数以上の空きノードが接続される第１スイッチを検索する。所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、処理部は、二以上の第１スイッチのそれぞれにおいて、各第１スイッチに接続される空きノードであって、各第１スイッチに接続されるリンクのうち有効なリンクの数を超えない数の空きノードに、ジョブを割り当てる。【選択図】図４
2018128858.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる処理部を有し、
前記処理部は、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、情報処理装置。
【請求項２】
前記処理部は、
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が多い順にソートしてから、
ソートした順に、各第１スイッチに前記所定数以上の空きノードが接続されているかを判断することによって、前記所定数以上の空きノードが接続される第１スイッチの検索を行なう、請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が少ない順にソートしてから、
ソートした順に、各第１スイッチに接続される前記有効なリンクの数を超えない数の空きノードに対する、前記ジョブの割り当てを行なう、請求項１または請求項２に記載の情報処理装置。
【請求項４】
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する、情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる際、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、
処理を、コンピュータに実行させる、プログラム。
【請求項５】
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する、情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる際、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理装置、プログラム、および情報処理方法に関する。
【背景技術】
【０００２】
プロセッサを含む複数のノードを備える並列コンピュータシステムにおいて、各ノードは、例えば、leaf（リーフ）スイッチやspine（スパイン）スイッチによって構成されるファットツリー（fat tree）のごときトポロジーネットワークを介して相互に通信可能に接続される（図１参照）。
【０００３】
このとき、複数のleafスイッチのそれぞれには複数のノードが接続され、複数のspineスイッチは、複数のリンクを介して複数のleafスイッチのそれぞれに接続される（図１参照）。
【０００４】
ファットツリーにおいて、各leafスイッチの配下に接続されるノードの数と、各leafスイッチに接続されるspineスイッチの数（リンク数）とは同一である。これにより、leafスイッチとspineスイッチとの間でリンクを介して行なわれるノード間通信に際し、バンド幅（帯域）を確保することができる。
【０００５】
上述のような並列コンピュータシステムにおいて、ユーザジョブは、ジョブスケジューラによって、当該ユーザジョブを処理する一以上のノードに割り当てられ、バッチ処理によって処理される。
【０００６】
その際、複数のノードにはシリアルナンバが付与されており、ユーザジョブを二以上のノードに割り当てる場合、ジョブスケジューラは、ジョブを割り当てられていない空き状態のノード（空きノード）のうち連番の二以上のノードを確保する。そして、ジョブスケジューラは、確保した連番の二以上のノードにユーザジョブを割り当てる（図２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１２−５３２４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
システムの運用中、leafスイッチとspineスイッチとの間の全てのリンクが正常に動作するわけではなく、リンクの中には故障したリンクも存在する。leafスイッチとspineスイッチとの間のリンクが故障すると、ジョブ割り当て後の通信において、帯域が狭くなって競合が発生し（図３参照）、システム性能の劣化を招く。
【０００９】
一つの側面では、本件明細書に開示の発明は、リンク故障に伴う競合発生を抑止し性能の劣化を防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
本件の情報処理装置は、複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる処理部を有する。そして、前記処理部は、前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索する。前記処理部は、前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる。一方、前記処理部は、前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、前記スケジューラは、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる。
【発明の効果】
【００１１】
リンク故障に伴う競合発生を抑止し性能の劣化を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】並列コンピュータシステムの構成の一例を示すブロック図である。
【図２】図１に示す並列コンピュータシステムにおける各ノードへのジョブ割り当て例を示す図である。
【図３】図１に示す並列コンピュータシステムにおいてリンク故障に伴い競合が発生する状態の例を示す図である。
【図４】図１に示す並列コンピュータシステムに適用される本実施形態のジョブスケジューリング手法の概要を説明する図である。
【図５】本発明の一実施形態としてのジョブスケジューリング機能を実現する情報処理装置のハードウェア構成の一例を示すブロック図である。
【図６】本発明の一実施形態としてのジョブスケジューリング機能を有する情報処理装置の機能構成の一例を示すブロック図である。
【図７】図６に示す本実施形態の情報処理装置を適用される並列コンピュータシステムの全体構成の一例を示すブロック図である。
【図８】図７に示す並列コンピュータシステムにおけるサブネットマネージャの動作を説明するブロック図である。
【図９】本実施形態の情報処理装置によるジョブスケジューリング動作を説明するフローチャートである。
【図１０】単一のleafスイッチ配下のノードにジョブを割り当てる際のジョブスケジューリング動作を説明するフローチャートである。
【図１１】複数のleafスイッチ配下のノードにジョブを割り当てる際のジョブスケジューリング動作を説明するフローチャートである。
【図１２】本実施形態による並列コンピュータシステムの性能改善例を説明する図である。
【図１３】単一のleafスイッチ配下のノードにジョブを割り当てる際のジョブスケジューリング動作の変形例を説明するフローチャートである。
【図１４】図１３に示すジョブスケジューリング動作の変形例による並列コンピュータシステムの性能改善例を説明する図である。
【図１５】複数のleafスイッチ配下のノードにジョブを割り当てる際のジョブスケジューリング動作の変形例を説明するフローチャートである。
【図１６】図１５に示すジョブスケジューリング動作の変形例による並列コンピュータシステムの性能改善例を説明する図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照し、本願の開示する情報処理装置、プログラム、および情報処理方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１４】
〔１〕本実施形態の概要
図１は、並列コンピュータシステム（情報処理システム，スーパーコンピュータシステム）１の構成の一例を示すブロック図である。図１に示すように、並列コンピュータシステム１においては、プロセッサを含む複数のノード１００が備えられる。各ノード１００は、例えば、leafスイッチ２００やspineスイッチ３００によって構成されるファットツリーのごときトポロジーネットワークを介して相互に通信可能に接続される。
【００１５】
このとき、複数のleafスイッチ２００のそれぞれには複数のノード１００が接続され、複数のspineスイッチ３００は、複数のリンクＬを介して複数のleafスイッチ２００のそれぞれに接続される。つまり、各leafスイッチ２００は、複数のノード１００を直接接続され、各leafスイッチ２００に直接接続された複数のノード１００の間を相互に通信可能に接続する。各spineスイッチ３００は、複数のリンクＬおよび複数のleafスイッチ２００を介して全てのノード１００の間を相互に通信可能に接続する。
【００１６】
例えば、図１に示す並列コンピュータシステム１では、１６個のノードが備えられ、各ノード１００には、ノード番号＃１〜＃１６がシリアルに付与される。ここで、任意のノードを指す場合、符号１００を用いて“ノード１００”と表記する。特定のノードを指す場合、ノード番号＃ｋ（ｋ＝１〜１６の整数）を用いて“ノード＃ｋ”と表記する。
【００１７】
また、図１に示す例では、４個のleafスイッチ２００および４個のspineスイッチ３００が備えられ、各スイッチ２００または３００には、スイッチ番号＃１〜＃４がシリアルに付与される。ここで、任意のleafスイッチまたはspineスイッチを指す場合、符号２００または３００を用いて“leafスイッチ２００”または“spineスイッチ３００”と表記する。特定のleafスイッチまたはspineスイッチを指す場合、スイッチ番号＃ｉ，＃ｊ（ｉ，ｊ＝１〜４の整数）を用いて“leaf＃ｉ”または“spine＃ｊ”と表記する。なお、leafスイッチおよびspineスイッチは、それぞれ、第１スイッチおよび第２スイッチに相当し、leafＳＷおよびspineＳＷと表記される場合もある。
【００１８】
さらに、図１に示す例では、leafスイッチ２００とspineスイッチ３００との間は、並列計算用高速ネットワーク（InfiniBand）４００（図７参照）によるリンクＬによって接続される。ここで、任意のリンクを指す場合、符号Ｌを用いて“リンクＬ”と表記する。leaf＃ｉとleaf＃ｊとを結ぶ特定のリンクを指す場合、スイッチ番号＃ｉ，＃ｊを用いて“リンクＬｉｊ”と表記する。図１に示す例では、１６本のリンクＬ１１〜Ｌ１４，Ｌ２１〜Ｌ２４，Ｌ３１〜Ｌ３４およびＬ４１〜Ｌ４４が備えられる。
【００１９】
ファットツリーにおいて、各leafスイッチ２００の配下に接続されるノード１００の数と、各leafスイッチ２００に接続されるspineスイッチ３００の数（リンク数）とは同一になっている。図１に示す例では、各leafスイッチ２００の配下には４個のノード１００が接続され、各spineスイッチ３００の配下には４個のleafスイッチ２００が接続される。つまり、spine＃１の配下には、それぞれリンクＬ１１〜Ｌ１４を介して４個のleaf＃１〜leaf＃４が接続され、spine＃２の配下には、それぞれリンクＬ２１〜Ｌ２４を介して４個のleaf＃１〜leaf＃４が接続される。同様に、spine＃３の配下には、それぞれリンクＬ３１〜Ｌ３４を介して４個のleaf＃１〜leaf＃４が接続され、spine＃４の配下には、それぞれリンクＬ４１〜Ｌ４４を介して４個のleaf＃１〜leaf＃４が接続される。また、leaf＃１の配下には４個のノード＃１〜＃４が接続され、leaf＃２の配下には４個のノード＃５〜＃８が接続され、leaf＃３の配下には４個のノード＃９〜＃１２が接続され、leaf＃４の配下には４個のノード＃１３〜＃１６が接続される。このような構成により、leafスイッチ２００とspineスイッチ３００との間でリンクＬを介して行なわれるノード間通信に際し、バンド幅（帯域）を確保することができる。
【００２０】
上述した並列コンピュータシステム１において、ユーザジョブは、ジョブスケジューラによって、当該ユーザジョブを処理する一以上のノード１００に割り当てられ、バッチ処理によって処理される。
【００２１】
その際、ノード１００に付与されるシリアルナンバに従ってユーザジョブを二以上のノード１００に割り当てる場合、既存技術では、ジョブを割り当てられていない空き状態のノードのうち連番の二以上のノード１００が確保される。そして、確保された連番の二以上のノード１００にユーザジョブが割り当てられる。
【００２２】
例えば、ノード＃１〜＃１６が全て空き状態である時に、８個のノード１００を使用するジョブＡ、４個のノード１００を使用するジョブＢ、および２個のノード１００を使用するジョブＣをこの順で割り当てると、その割り当ては図２に示すように行なわれる。つまり、まず、ジョブＡについて、leaf＃１およびleaf＃２の配下における空き状態の８個のノード＃１〜＃８が確保され、これらのノード＃１〜＃８にジョブＡが割り当てられる（図２の最上段参照）。ついで、ジョブＢについて、leaf＃３の配下における空き状態の４個のノード＃９〜＃１２が確保され、これらのノード＃９〜＃１２にジョブＢが割り当てられる（図２の中段参照）。そして、ジョブＣについて、leaf＃４の配下における空き状態の２個のノード＃１３，＃１４が確保され、これらのノード＃１３，１４にジョブＣが割り当てられる（図２の最下段参照）。なお、図２は、図１に示す並列コンピュータシステム１における各ノード１００へのジョブ割り当て例を示す図である。
【００２３】
ところで、並列コンピュータシステム１の運用中、leafスイッチ２００とspineスイッチ３００との間の全てのリンクＬが正常に動作するわけではなく、リンクＬの中には故障（リンクダウン）したリンクも存在する。leafスイッチ２００とspineスイッチ３００との間のリンクＬが故障（リンクダウン）すると、ジョブ割り当て後の通信において、帯域が狭くなって、図３に示すように競合が発生し、システム性能の劣化を招く。
【００２４】
図３は、図１に示す並列コンピュータシステム１においてリンク故障（リンクダウン）に伴い競合が発生する状態の例を示す図である。図３に示す例では、リンク２１，Ｌ２２，Ｌ３２，Ｌ３３において故障（リンクダウン）が発生した状態で、図２の最上段のごとくノード＃１〜＃８にジョブＡを割り当てた状態が示されている。このとき、例えば、正常（有効）なリンクＬ１１，Ｌ１２，Ｌ４２において、競合が発生し、システム性能の劣化を招くことになる。
【００２５】
そこで、本実施形態では、図１に示すような情報処理システム１において、所定数のノードを用いるジョブをノード１００に割り当てる際、まず、複数のleafスイッチ２００の中から、所定数以上の空きノード１００が接続されるleafスイッチ２００が検索される。なお、空きノード１００は、ジョブを割り当てられていない空き状態のノード１００である。
【００２６】
所定数以上の空きノード１００が接続される一のleafスイッチ２００が検索された場合、検索されたleafスイッチ２００に接続される所定数の空きノード１００に、ジョブが割り当てられる。
【００２７】
一方、所定数以上の空きノード１００が接続されるleafスイッチ２００が検索されなかった場合、以下の割り当て動作が行なわれる。つまり、二以上のleafスイッチ２００のそれぞれにおいて、各leafスイッチ２００に接続される空きノード１００であって、各leafスイッチ２００に接続されるリンクＬのうち有効なリンクの数を超えない数の空きノード１００に、ジョブが割り当てられる。
【００２８】
例えば、ノード＃１〜＃１６が全て空き状態であるが、leaf＃１〜leaf＃４に接続される４本のリンクのうち故障リンク数がそれぞれ１，２，１，０である時に、図２と同様のジョブ割り当てを行なった場合の、本実施形態によるジョブ割り当て動作を図４に示す。図４は、図１に示す並列コンピュータシステム１に適用される本実施形態のジョブスケジューリング手法の概要を説明する図である。なお、故障リンク数がそれぞれ１，２，１，０ということは、換言すると、leaf＃１〜leaf＃４に接続される４本のリンクのうち有効なリンク数は、それぞれ３，２，３，４である。
【００２９】
図４に示すように、８個のノード１００を使用するジョブＡについては、leaf＃１配下の３個のノード＃１〜＃３と、leaf＃２配下の２個のノード＃５，＃６と、leaf＃３配下の３個のノード＃９〜＃１１とに割り当てられる（図４の最上段参照）。
【００３０】
このように、本実施形態では、一つのジョブＡを、異なるleafスイッチ２００を跨いで割り当てる際、各leafスイッチ２００において、上位側の有効なリンク（経路）の数を超えない数の空きノード１００にジョブＡが割り当てられる。つまり、異なるleafスイッチ２００に属するノード１００に割り当てる際、各leafスイッチ２００において、上位側の有効なリンクの数を超えない数の空きノード１００にしか、ジョブＡが割り当てられないように、ジョブ割り当てが制御される。これにより、ジョブ割り当て後の通信において、リンク故障に伴う競合発生が抑止され、システム性能の劣化、例えば単位時間あたりのデータ転送量の低下を、防ぐことができる。
【００３１】
ついで、図４に示すように、ジョブＡの割り当て後に４個のノード１００を使用するジョブＢを割り当てる際には、４個の空きノード１００が接続される一のleaf＃４が検索される。したがって、ジョブＢは、leaf＃４配下の４個のノード＃１３〜＃１６に割り当てられる（図４の中段参照）。
【００３２】
また、図４に示すように、ジョブＢの割り当て後に２個のノード１００を使用するジョブＣを割り当てる際には、２個の空きノード１００が接続される一のleaf＃２が検索される。したがって、ジョブＣは、leaf＃２配下の２個のノード＃７，＃８に割り当てられる（図４の最下段参照）。
【００３３】
このとき、leaf＃２においては、故障リンク数が２である状態で、４個のノード＃５〜＃８の全てにジョブが割り当てられている。しかし、リンクＬ１２，Ｌ２２，Ｌ３２，Ｌ４２を使用する可能性の高いノードは、ジョブＡを割り当てられた２個のノード＃５，＃６であり、２個のノードしか使用しないジョブＣを割り当てられた２個のノード＃７，＃８がリンクＬ１２，Ｌ２２，Ｌ３２，Ｌ４２を使用する可能性は低い。したがって、図４の最下段に示すように、故障リンク数が２である状態で４個のノード＃５〜＃８の全てにジョブを割り当てたとしても、図３に示すような競合が発生する可能性は低い。
【００３４】
〔２〕ジョブスケジューリング機能を実現する本実施形態の情報処理装置のハードウェア構成
まず、図５を参照しながら、本実施形態のジョブスケジューリング機能を実現する情報処理装置（コンピュータ，ジョブスケジューラ）１０のハードウェア構成について説明する。図５は、当該ハードウェア構成の一例を示すブロック図である。
【００３５】
コンピュータ１０は、例えば、プロセッサ１１，ＲＡＭ（Random Access Memory）１２，ＨＤＤ（Hard Disk Drive）１３，グラフィック処理装置１４，入力インタフェース１５，光学ドライブ装置１６，機器接続インタフェース１７およびネットワークインタフェース１８を構成要素として有する。これらの構成要素１１〜１８は、バス１９を介して相互に通信可能に構成される。
【００３６】
プロセッサ（処理部）１１は、コンピュータ１０全体を制御する。プロセッサ１１は、マルチプロセッサであってもよい。プロセッサ１１は、例えばＣＰＵ（Central Processing Unit），ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）のいずれか一つであってもよい。また、プロセッサ１１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００３７】
ＲＡＭ（記憶部）１２は、コンピュータ１０の主記憶装置として使用される。ＲＡＭ１２には、プロセッサ１１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２には、プロセッサ１１による処理に必要な各種データが格納される。アプリケーションプログラムには、コンピュータ１０によって本実施形態のジョブスケジューリング機能を実現するためにプロセッサ１１によって実行されるジョブスケジューリングプログラム（プログラム；図６の符号３１参照）が含まれてもよい。
【００３８】
ＨＤＤ（記憶部）１３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう。ＨＤＤ１３は、コンピュータ１０の補助記憶装置として使用される。ＨＤＤ１３には、ＯＳプログラム，アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、ＳＣＭ（Storage Class Memory）や、フラッシュメモリ等の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３９】
グラフィック処理装置１４には、モニタ（表示部，出力部）１４ａが接続されている。グラフィック処理装置１４は、プロセッサ１１からの命令に従って、画像をモニタ１４ａの画面に表示させる。モニタ１４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置等が挙げられる。
【００４０】
入力インタフェース１５には、キーボード１５ａおよびマウス１５ｂが接続されている。入力インタフェース１５は、キーボード１５ａやマウス１５ｂから送られてくる信号をプロセッサ１１に送信する。なお、マウス１５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル，タブレット，タッチパッド，トラックボール等が挙げられる。
【００４１】
光学ドライブ装置１６は、レーザ光等を利用して、光ディスク１６ａに記録されたデータの読み取りを行なう。光ディスク１６ａは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク１６ａには、ＤＶＤ（Digital Versatile Disc），ＤＶＤ−ＲＡＭ，ＣＤ−ＲＯＭ（Compact Disc Read Only Memory8），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。
【００４２】
機器接続インタフェース１７は、コンピュータ１０に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース１７には、メモリ装置１７ａやメモリリーダライタ１７ｂを接続することができる。メモリ装置１７ａは、機器接続インタフェース１７との通信機能を搭載した非一時的な記録媒体、例えばＵＳＢ（Universal Serial Bus）メモリである。メモリリーダライタ１７ｂは、メモリカード１７ｃへのデータの書き込み、またはメモリカード１７ｃからのデータの読み出しを行なう。メモリカード１７ｃは、カード型の非一時的な記録媒体である。
【００４３】
ネットワークインタフェース１８は、ネットワーク１８ａに接続される。ネットワークインタフェース１８は、ネットワーク１８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行なう。
【００４４】
以上のようなハードウェア構成を有するコンピュータ１０によって、本実施形態のジョブスケジューリング機能を実現することができる。
【００４５】
なお、コンピュータ１０は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム（後述するジョブスケジューリングプログラム３１等）を実行することにより、本実施形態のジョブスケジューリング機能を実現する。コンピュータ１０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ１０に実行させるプログラムをＨＤＤ１３に格納しておくことができる。プロセッサ１１は、ＨＤＤ１３内のプログラムの少なくとも一部をＲＡＭ１２にロードし、ロードしたプログラムを実行する。
【００４６】
また、コンピュータ１０（プロセッサ１１）に実行させるプログラムを、光ディスク１６ａ，メモリ装置１７ａ，メモリカード１７ｃ等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１１からの制御により、ＨＤＤ１３にインストールされた後、実行可能になる。また、プロセッサ１１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４７】
〔３〕ジョブスケジューリング機能を有する本実施形態の情報処理装置の機能構成
次に、図６を参照しながら、本実施形態のジョブスケジューリング機能を有する情報処理装置（コンピュータ，ジョブスケジューラ）１０の機能構成について説明する。図６は、当該機能構成の一例を示すブロック図である。
【００４８】
コンピュータ１０は、ジョブスケジューリング機能を果たす。つまり、コンピュータ１０は、図１と同様の情報処理システム１において、所定数のノード１００を用いるジョブを複数のノード１００のうちの一以上のノード１００に割り当てるジョブスケジューラ１０としての機能を果たす。このため、コンピュータ１０は、図６に示すように、少なくとも処理部２０，記憶部３０，入力部４０および表示部５０としての機能を有している。
【００４９】
処理部２０は、例えば図５に示すようなプロセッサ１１である。処理部２０は、ジョブスケジューリングプログラム３１を実行することで、後述する検索部２１，割当部２２およびソート部２３としての機能を果たす。
【００５０】
記憶部３０は、例えば図５に示すようなＲＡＭ１２，ＨＤＤ１３であり、ジョブスケジューリング機能を実現するための各種情報を記憶し保存する。当該各種情報としては、上述したジョブスケジューリングプログラム３１のほか、故障箇所情報３２，ジョブ情報３３，ノード情報３４などが含まれる。
【００５１】
ジョブスケジューリングプログラム３１は、前述の通り、処理部２０（プロセッサ１１）に、後述する検索部２１，割当部２２およびソート部２３としての機能を実行させるものである。
【００５２】
故障箇所情報３２は、図７および図８を参照しながら後述するサブネットマネージャ５００によって検出される、故障（リンクダウン）したリンクに関する情報であり、例えば故障したリンクを特定するリンク識別情報を含む。
【００５３】
ジョブ情報３３は、並列コンピュータシステム１のノードに割り当てられるジョブに関する情報であり、例えば、ジョブを特定するジョブ識別情報や、当該ジョブの処理に使用するノード１００の数などを含む。
【００５４】
ノード情報３４は、ジョブ割当対象である、例えば図１に示すような並列コンピュータシステム１を構成するノード１００に関する情報である。ノード情報３４は、例えば、各ノード１００を特定するノード識別情報や、各ノード１００に割り当てられたジョブの情報や、各ノード１００が空きノードであるか否かを示す情報や、ノード１００間を接続するleafスイッチ２００やspineスイッチ３００に関する情報を含む。
【００５５】
入力部４０は、例えば図５に示すようなキーボード１５ａおよびマウス１５ｂであり、ユーザによって操作され、ジョブスケジューリングに係る各種指示を行なう。なお、マウス１５ｂに代え、タッチパネル，タブレット，タッチパッド，トラックボール等が用いられてもよい。
【００５６】
表示部５０は、例えば図５に示すようなモニタ１４ａであり、その表示状態を、グラフィック処理装置１４を介して制御される。本実施形態において、表示部５０は、例えば、ジョブスケジューリングに係る各種情報を表示出力する。
【００５７】
次に、処理部２０（プロセッサ１１）によって実現される、検索部２１，割当部２２およびソート部２３としての機能について説明する。
【００５８】
検索部２１は、所定数のノードを用いるジョブをノード１００に割り当てる際、複数のleafスイッチ２００の中から、所定数以上の空きノード１００が接続されるleafスイッチ２００を検索する。このとき、検索部２１は、例えば、記憶部３０のノード情報３４における空きノードであるか否かを示す情報や各leafスイッチ２００に関する情報を参照してleafスイッチ２００の検索を行なう。
【００５９】
割当部２２は、検索部２１によって所定数以上の空きノード１００が接続される単一のleafスイッチ２００が検索された場合、当該単一のleafスイッチ２００に接続される所定数の空きノード１００に、ジョブを割り当てる（図４の中段および最下段参照）。
【００６０】
一方、検索部２１によって所定数以上の空きノード１００が接続されるleafスイッチ２００が検索されなかった場合、割当部２２は、以下の割り当て動作を行なう。つまり、割当部２２は、二以上のleafスイッチ２００のそれぞれにおいて、各leafスイッチ２００に接続される空きノード１００であって、各leafスイッチ２００に接続されるリンクＬのうち有効なリンクの数を超えない数の空きノード１００に、ジョブを割り当てる（図４の最上段参照）。このとき、割当部２２によるジョブ割り当ては、記憶部３０の故障箇所情報３２，ジョブ情報３３およびノード情報３４を参照して行なわれる。
【００６１】
なお、割当部２２によるジョブ割り当て結果は、記憶部３０のノード情報３４などに登録される。また、検索部２１および割当部２２によって行なわれる、本実施形態のジョブスケジューリング動作については、図９〜図１２を参照しながら後述する。
【００６２】
ソート部２３としての機能は、図１３〜図１６を参照しながら後述する二つの変形例において用いられるものである。
【００６３】
ソート部２３の一例は、検索部２１による検索動作に先立ち、複数のleafスイッチ２００を、各leafスイッチ２００に接続されるリンクＬのうち故障したリンクの数が多い順にソートする。検索部２１は、ソート部２３によってソートした順に、各leafスイッチ２００に所定数以上の空きノードが接続されているかを判断することによって、所定数以上の空きノードが接続されるleafスイッチ２００の検索を行なう。当該ソート部２３の一例の動作については、図１３および図１４を参照しながら後述する。
【００６４】
ソート部２３の他例は、割当部２２による割り当て動作に先立ち、複数のleafスイッチ２００を、各leafスイッチ２００に接続されるリンクＬのうち故障したリンクの数が少ない順にソートする。割当部２２は、ソート部２３によってソートした順に、各leafスイッチ２００に接続される有効なリンクの数を超えない数の空きノードに対する、ジョブの割り当てを行なう。当該ソート部２３の他例の動作については、図１５および図１６を参照しながら後述する。
【００６５】
〔４〕本実施形態の情報処理装置を適用される並列コンピュータシステムの構成
次に、図７および図８を参照しながら、本実施形態のジョブスケジューラ１０を適用される並列コンピュータシステム１の構成について説明する。図７は、その全体構成の一例を示すブロック図であり、図８は、図７に示す並列コンピュータシステム１におけるサブネットマネージャ（ＳＭ）５００の動作を説明するブロック図である。
【００６６】
図７に示すように、本実施形態の並列コンピュータシステム１において、図１に示す例と同様、各ノード１００は、leafスイッチ２００およびspineスイッチ３００によって構成されるファットツリーのごときトポロジーネットワークを介して相互に通信可能に接続される。また、leafスイッチ２００とspineスイッチ３００との間は、並列計算用高速ネットワーク（InfiniBand）４００によるリンクＬによって接続される。
【００６７】
そして、本実施形態の並列コンピュータシステム１においては、後述するサブネットマネージャ（ＳＭ）５００と、前述したジョブスケジューラ１０と、が備えられる。
【００６８】
サブネットマネージャ（ＳＭ）５００は、並列計算用高速ネットワーク４００（リンクＬ）の状態を監視し、リンク故障（リンク故障）を検出した場合に迂回路を設定する機能を有する。サブネットマネージャ５００は、例えばleaf＃４に接続され、leaf＃４およびリンクＬを介して並列計算用高速ネットワーク４００の状態を監視する。サブネットマネージャ５００の具体的な動作、例えば故障箇所検出動作や迂回路設定動作については、図８を参照しながら後述する。
【００６９】
ジョブスケジューラ１０は、制御系ネットワーク（Ethernet:登録商標）６００を介して各ノード１００に接続されており、当該制御系ネットワーク６００を介して各ノード１００に対するジョブの割り当て・投入を行なう。ジョブスケジューラ１０には、サブネットマネージャ５００によって検出された故障箇所に関する情報が、サブネットマネージャ５００から通知され、ジョブスケジューラ１０の記憶部３０に故障箇所情報３２として保存される。
【００７０】
図７に示す並列コンピュータシステム１において、サブネットマネージャ５００とジョブスケジューラ１０とは、別筐体のコンピュータ等として構成しているが、単一のコンピュータ等が、サブネットマネージャ５００およびジョブスケジューラ１０の両方の機能を果たすように構成してもよい。
【００７１】
図７では、リンクＬ２１，Ｌ２２，Ｌ３２，Ｌ３３で故障が発生している例が示されており、これらのリンク故障箇所は、サブネットマネージャ５００によって検出され、ジョブスケジューラ１０に通知される。ここで、サブネットマネージャ５００によって行なわれる、故障箇所であるリンクＬ２１の検出動作や、リンクＬ２１の迂回路の設定動作について、図８を参照しながら説明する。
【００７２】
まず、リンクＬ２１の故障（リンクダウン）は、spine＃２およびleaf＃１によって検出されると、トラップ動作によってサブネットマネージャ５００に通知される。このとき、spine＃２による故障検出は、リンクＬ２４およびleaf＃４を介してサブネットマネージャ５００に通知され、leaf＃１による故障検出は、リンクＬ３１，spine＃３，リンクＬ３４およびleaf＃４を介してサブネットマネージャ５００に通知される。
【００７３】
spine＃２およびleaf＃１からの故障通知を受けたサブネットマネージャ５００は、leaf＃４およびリンクＬ２４を介して、spine＃２のポート状態を確認するとともに、leaf＃４，リンクＬ３４，spine＃３およびリンクＬ３１を介して、leaf＃１のポート状態を確認する。
【００７４】
これにより、サブネットマネージャ５００は、リンクＬ２１が切断されたことを検知し、その旨をジョブスケジューラ１０に故障箇所情報３２として通知する。また、サブネットマネージャ５００は、故障したリンクＬ２１を迂回する新しいルーティングを、リンクＬ２４を介してleaf＃４およびspine＃２に設定するとともに、leaf＃４，リンクＬ３４，spine＃３およびリンクＬ３１を介してleaf＃１に設定する。
【００７５】
〔５〕ジョブスケジューリング機能を有する本実施形態の情報処理装置の動作
次に、図９〜図１２を参照しながら、本実施形態のジョブスケジューラ１０による具体的なジョブスケジューリング動作について説明する。
【００７６】
まず、図９に示すフローチャート（ステップＳ１〜Ｓ３）に従って、本実施形態のジョブスケジューラ（情報処理装置）１０によるジョブスケジューリング動作について説明する。ジョブスケジューラ１０は、ステップＳ１において、単一のleafスイッチ配下のノード１００にジョブを割り当てることが可能な場合、当該単一のleafスイッチ配下のノード１００に当該ジョブを割り当てる。ステップＳ１の処理については、図１０を参照しながら後述する。
【００７７】
単一のleafスイッチ２００配下のノード１００にジョブを割り当てることができない場合、つまりジョブを複数のleafスイッチ配下に跨って割り当てる場合、ジョブスケジューラ１０は、ステップＳ２の処理を行なう。ステップＳ２において、ジョブスケジューラ１０は、当該ジョブを割り当てる各leafスイッチ２００において、割り当てジョブ数（一のleafスイッチ２００において当該ジョブを割り当てられるノードの数）が、有効な上位リンク数を超えないように、ジョブを割り当てる。ステップＳ２の処理については、図１１を参照しながら後述する。
【００７８】
ステップＳ１およびＳ２のいずれにおいてもジョブを割り当てることができなかった場合、ジョブスケジューラ１０は、上位リンクの有効／無効に関係なく、とにかくジョブを空きノードに割り当てて（ステップＳ３）、ジョブスケジューリング動作（ジョブ割り当て処理）を終了する。
【００７９】
ついで、図１０に示すフローチャート（ステップＳ１１〜Ｓ１４）に従って、単一のleafスイッチ配下のノード１００にジョブを割り当てる際のジョブスケジューリング動作（図９のステップＳ１の処理）について説明する。
【００８０】
ジョブスケジューラ１０（検索部２１）は、ステップＳ１１において、処理対象の一のleafスイッチ（対象leafスイッチ）配下の空きノード１００の数（空きノード数）と、割り当て対象のジョブで用いるノード１００の数（ジョブノード数；上記所定数）と、を比較する。ここで、対象leafスイッチ２００は、複数のleafスイッチ２００の中から、例えばスイッチ番号＃ｉの昇順あるいは降順に選択されてよい。
【００８１】
対象leafスイッチ２００の空きノード数がジョブノード数以上である場合（ステップＳ１１のＹＥＳルート）、対象leafスイッチ２００が、所定数以上の空きノード１００が接続される単一のleafスイッチ２００として検索される。このとき、ジョブスケジューラ１０（割当部２２）は、ステップＳ１２において、対象leafスイッチ２００に接続される空きノード１００に、割り当て対象のジョブを割り当てて、ジョブ割り当て処理を終了する。
【００８２】
一方、対象leafスイッチ２００の空きノード数がジョブノード数未満である場合（ステップＳ１１のＮＯルート）、ジョブスケジューラ１０（検索部２１）は、ステップＳ１３において、全てのleafスイッチ２００に対しステップＳ１１の処理を行なったか否かを確認する。
【００８３】
全てのleafスイッチ２００に対しステップＳ１１の処理を行なっていない場合（ステップＳ１３のＮＯルート）、ジョブスケジューラ１０（検索部２１）は、ステップＳ１４において、次のleafスイッチ２００を対象leafスイッチ２００として選択し、ステップＳ１１の処理に戻る。
【００８４】
全てのleafスイッチ２００に対しステップＳ１１の処理を行なった場合（ステップＳ１３のＹＥＳルート）、割り当て対象のジョブを単一のleafスイッチ配下のノード１００に割り当てることができない場合であると判断される。つまり、ジョブスケジューラ１０（割当部２２）は、割り当て対象のジョブが複数のleafスイッチ配下に跨って割り当てられる場合に相当すると判断する。そして、ジョブスケジューラ１０は、図９のステップＳ２（図１１のステップＳ２１）の処理へ移行する。
【００８５】
ついで、図１１に示すフローチャート（ステップＳ２１〜Ｓ２７）に従って、複数のleafスイッチ配下のノード１００にジョブを割り当てる際のジョブスケジューリング動作（図９のステップＳ２の処理）について説明する。
【００８６】
まず、ジョブスケジューラ１０（割当部２２）は、ステップＳ２１において、ノード残数Ｒestをジョブノード数（上記所定数）に設定する。この後、ジョブスケジューラ１０（割当部２２）は、ステップＳ２２において、Ｎ＝Ｍin（対象leafＳＷ配下の空きノード数，上位有効リンク数）を演算する。ここで、Ｎ＝Ｍin（ｘ，ｙ）は、ｘ＞ｙのときＮ＝ｙとなり、ｘ＝ｙのときＮ＝ｘ＝ｙとなり、ｘ＜ｙのときＮ＝ｘとなる関数である。
【００８７】
そして、ジョブスケジューラ１０（割当部２２）は、ステップＳ２３において、ノード残数ＲestをＲest−Ｎに置き換えてから、ステップＳ２４において、ノード残数Ｒestが０以下であるか否かを判断する。
【００８８】
ノード残数Ｒestが０以下である場合（ステップＳ２４のＹＥＳルート）、ジョブスケジューラ１０（割当部２２）は、必要な数（つまり上記所定数）のノード１００を確保できたものと判断する。そして、ジョブスケジューラ１０（割当部２２）は、ステップＳ２５において、走査済みのleafＳＷ配下のノード１００に、割り当て対象のジョブを割り当てて、ジョブ割り当て処理を終了する。
【００８９】
一方、ノード残数Ｒestが０よりも大きい場合（ステップＳ２４のＮＯルート）、ジョブスケジューラ１０（割当部２２）は、まだノードが足りないと判断し、ステップＳ２６において、全てのleafスイッチ２００に対しステップＳ２２〜Ｓ２４の処理を行なったか否かを確認する。
【００９０】
全てのleafスイッチ２００に対しステップＳ２２〜Ｓ２４の処理を行なっていない場合（ステップＳ２６のＮＯルート）、ジョブスケジューラ１０（割当部２２）は、ステップＳ２７において、次のleafスイッチ２００を対象leafスイッチ２００として選択し、ステップＳ２２の処理に戻る。ここでも、対象leafスイッチ２００は、複数のleafスイッチ２００の中から、例えばスイッチ番号＃ｉの昇順あるいは降順に選択されてよい。
【００９１】
全てのleafスイッチ２００に対しステップＳ２２〜Ｓ２４の処理を行なった場合（ステップＳ２６のＹＥＳルート）、割り当て対象のジョブを複数のleafスイッチ配下に跨って割り当てることができない場合に相当すると判断する。そして、ジョブスケジューラ１０は、図９のステップＳ３の処理へ移行し、上位リンクの有効／無効に関係なく、とにかくジョブを空きノードに割り当てて、ジョブ割り当て処理を終了する。
【００９２】
ここで、図４に示した例について、図１０および図１１に示すフローチャートに従ってジョブ割り当て処理を行なった場合の、ジョブスケジューラ１０の具体的な動作は、以下の通りである。なお、ここでも、ノード＃１〜＃１６が全て空き状態であるが、leaf＃１〜leaf＃４に接続される４本のリンクのうち故障リンク数がそれぞれ１，２，１，０である時に、図２と同様のジョブ割り当てを行なった場合について説明する。このとき、leaf＃１〜leaf＃４に接続される４本のリンクのうち有効なリンク数はそれぞれ３，２，３，４である。
【００９３】
ジョブスケジューラ１０は、最初に、８個のノード１００を使用するジョブＡの割り当てを行なうと、図１０のステップＳ１３のＹＥＳルートから図１１に示す処理（図９のステップＳ２の処理）へ移行する。そして、ノード残数Ｒestがジョブノード数８に設定され（ステップＳ２１）、対象leaf＃１について、Ｎ＝Ｍin（空きノード数４，上位有効リンク数３）＝３が算出される（ステップＳ２２）。したがって、ノード残数Ｒest＝Ｒest−Ｎ＝８−３＝５が算出され（ステップＳ２３）、ノード残数Ｒest＝５＞０であると判断される（ステップＳ２４のＮＯルート）。このとき、ステップＳ２６でＮＯ判定となり、次のleaf＃２が対象leafスイッチ２００として選択される（ステップＳ２７）。
【００９４】
この後、対象leaf＃２について、Ｎ＝Ｍin（空きノード数４，上位有効リンク数２）＝２が算出される（ステップＳ２２）。したがって、ノード残数Ｒest＝Ｒest−Ｎ＝５−２＝３が算出され（ステップＳ２３）、ノード残数Ｒest＝３＞０であると判断される（ステップＳ２４のＮＯルート）。このときも、ステップＳ２６でＮＯ判定となり、次のleaf＃３が対象leafスイッチ２００として選択される（ステップＳ２７）。
【００９５】
そして、対象leaf＃３について、Ｎ＝Ｍin（空きノード数４，上位有効リンク数３）＝３が算出される（ステップＳ２２）。したがって、ノード残数Ｒest＝Ｒest−Ｎ＝３−３＝０が算出され（ステップＳ２３）、ノード残数Ｒest＝５は０以下であると判断される（ステップＳ２４のＹＥＳルート）。このとき、走査済みのleaf＃１〜＃３配下のノード＃１〜＃３，＃５，＃６，＃９〜＃１１に、ジョブＡが割り当てられる（ステップＳ２５；図４の最上段および図１２参照）。
【００９６】
ジョブＡの割り当て後、ジョブスケジューラ１０は、４個のノード１００を使用するジョブＢの割り当てを行なうと、対象leafスイッチ２００がleaf＃４のとき、空きノード数４がジョブノード数４以上となる（ステップＳ１１のＹＥＳルート）。このとき、対象leaf＃４が、所定数４の空きノード１００が接続される単一のleafスイッチ２００として検索される。これに伴い、対象leaf＃４に接続される空きノード＃１３〜＃１６に、ジョブＢが割り当てられる（ステップＳ１２；図４の中段および図１２参照）。
【００９７】
ジョブＢの割り当て後、ジョブスケジューラ１０は、２個のノード１００を使用するジョブＣの割り当てを行なうと、対象leafスイッチ２００がleaf＃２のとき、空きノード数２がジョブノード数２以上となる（ステップＳ１１のＹＥＳルート）。このとき、対象leaf＃２が、所定数２の空きノード１００が接続される単一のleafスイッチ２００として検索される。これに伴い、対象leaf＃２に接続される空きノード＃７，＃８に、ジョブＣが割り当てられる（ステップＳ１２；図４の最下段および図１２参照）。
【００９８】
このように、本実施形態によれば、図４や図１２に示すように、一つのジョブＡを、異なるleafスイッチ２００を跨いで割り当てる際、各leafスイッチ２００において、上位側の有効なリンクの数を超えない数の空きノード１００にジョブＡが割り当てられる。つまり、異なるleafスイッチ２００に属するノード１００に割り当てる際、各leafスイッチ２００において、上位側の有効なリンクの数を超えない数の空きノード１００にしか、ジョブＡが割り当てられないように、ジョブ割り当てが制御される。これにより、ジョブ割り当て後の通信において、リンク故障に伴う競合発生が抑止され、システム性能の劣化、例えば単位時間あたりのデータ転送量の低下を、防ぐことができる。
【００９９】
ここで、図１２は、本実施形態による並列コンピュータシステム１の性能改善例を説明する図である。図１２に示すように、リンクＬ２１，Ｌ２２，Ｌ３２，Ｌ３３において故障（リンクダウン）が発生したとしても、ジョブ割り当て後の通信において、矢印Ａ１〜Ａ３，Ｂ１，Ｂ２，Ｃ１〜Ｃ３に示すごとく、競合の発生を抑止することができる。
【０１００】
なお、leaf＃２配下のノード＃７，＃８に割り当てられたジョブＣは、２個のノードを用いるジョブであり、ジョブ割り当て後の通信において、ノード＃７，＃８は、ノード＃７，＃８以外のノードと通信する可能性は低く、リンク競合を発生させる可能性も低い。同様に、leaf＃４配下のノード＃１３〜＃１６に割り当てられたジョブＢは、４個のノードを用いるジョブであり、ジョブ割り当て後の通信において、ノード＃１３〜＃１６は、ノード＃１３〜＃１６以外のノードと通信する可能性は低く、リンク競合を発生させる可能性も低い。
【０１０１】
〔６〕変形例
上述した本実施形態では、検索部２１による検索動作に際し、対象leafスイッチ２００を、例えばスイッチ番号＃ｉの昇順あるいは降順に選択する場合について説明した。
【０１０２】
〔６−１〕第１変形例
これに対し、第１変形例では、前述したソート部２３の一例が用いられ、検索部２１による検索動作に先立ち、複数のleafスイッチ２００は、各leafスイッチ２００に接続されるリンクＬのうち故障したリンクの数が多い順にソートされる。そして、検索部２１は、ソート部２３によってソートした順に、各leafスイッチ２００に所定数以上の空きノードが接続されているかを判断することによって、所定数以上の空きノードが接続されるleafスイッチ２００の検索を行なう。
【０１０３】
ここで、図１３は、単一のleafスイッチ配下のノードにジョブを割り当てる際（図９のステップＳ１）のジョブスケジューリング動作の変形例（第１変形例）を説明するフローチャートである。図１３に示すように、第１変形例のフローチャートでは、図１０に示す本実施形態のフローチャートにおいて、leafスイッチ２００を故障リンク数が多い順にソートするステップＳ１０をステップＳ１１の前段に備えた点のみが異なる。
【０１０４】
これにより、ジョブを単一のleafスイッチ配下のノード１００に割り当てる際、leafスイッチ２００は、ステップＳ１４において、故障リンク数の多いleafスイッチ２００から順に対象leafスイッチ２００として選択される。なお、図１３におけるステップＳ１１〜Ｓ１４の処理は、図１０におけるステップＳ１１〜Ｓ１４の処理と同様であるので、その説明は省略する。
【０１０５】
図１４は、図１３に示すジョブスケジューリング動作の変形例（第１変形例）による並列コンピュータシステムの性能改善例を説明する図である。なお、図１４では、ノード＃１〜＃１２が全て空き状態であるが、leaf＃１〜leaf＃３に接続される４本のリンクのうち故障リンク数がそれぞれ０，２，３である時に、以下のようなジョブ割り当てが行なわれる。つまり、４個のノード１００を使用するジョブＤ、２個のノード１００を使用するジョブＥ、および６個のノード１００を使用するジョブＦが、この順で割り当てられる。なお、leaf＃１〜leaf＃３における有効リンク数はそれぞれ４，２，１である。
【０１０６】
また、図１４の（Ａ）では、検索部２１による検索動作に際し対象leafスイッチ２００をスイッチ番号＃ｉの昇順に選択する場合が示される。つまり、図１４の（Ａ）では、leafスイッチ２００が、leaf＃１，leaf＃２，leaf＃３の順で対象leafスイッチとして選択される場合が示される。
【０１０７】
図１４の（Ｂ）では、検索部２１による検索動作に際し対象leafスイッチ２００を故障リンク数が多い順に選択する場合が示される。つまり、図１４の（Ｂ）では、leafスイッチ２００が、leaf＃３，leaf＃２，leaf＃１の順で対象leafスイッチとして選択される場合が示される。
【０１０８】
図１４の（Ａ）に示す例では、まず、ジョブＤについて、leaf＃１の配下における４個の空きノード＃１〜＃４が確保され、これらのノード＃１〜＃４にジョブＤが割り当てられる（図１４の（Ａ）の最上段参照）。ついで、ジョブＥについて、leaf＃２の配下における２個の空きノード＃５，＃６が確保され、これらのノード＃５，＃６にジョブＥが割り当てられる（図１４の（Ａ）の中段参照）。そして、ジョブＦについて、leaf＃２の配下における２個の空きノード＃７，＃８とleaf＃３の配下における４個の空きノード＃９〜＃１２とが確保され、これらのノード＃７〜＃１２にジョブＦが割り当てられる（図１４の（Ａ）の最下段参照）。
【０１０９】
このとき、ジョブＦで使用される６個のノード＃７〜＃１２は、二つのleaf＃２とleaf＃３に跨っているため、leaf＃２とleaf＃３との間の通信が頻繁に生じる可能性が高い。その上、leaf＃２の故障リンク数は２つまり有効リンク数が２であり、leaf＃３の故障リンク数は３つまり有効リンク数が１であるため、leaf＃２とleaf＃３との間のリンクで競合が発生する可能性が高く、システム性能の劣化を招くおそれがある。
【０１１０】
これに対し、図１４の（Ｂ）に示す例では、まず、ジョブＤについて、故障リンク数が一番多いleaf＃３の配下における４個の空きノード＃９〜＃１２が確保され、これらのノード＃９〜＃１２にジョブＤが割り当てられる（図１４の（Ｂ）の最上段参照）。ついで、ジョブＥについて、故障リンク数が２番目に多いleaf＃２の配下における２個の空きノード＃５，＃６が確保され、これらのノード＃５，＃６にジョブＥが割り当てられる（図１４の（Ｂ）の中段参照）。そして、ジョブＦについて、leaf＃２の配下における２個の空きノード＃７，＃８とleaf＃１の配下における４個の空きノード＃１〜＃４とが確保され、これらのノード＃１〜＃４，＃７，＃８にジョブＦが割り当てられる（図１４の（Ｂ）の最下段参照）。
【０１１１】
このように、第１変形例では、単一のleafスイッチ配下にジョブを割り当てる際、故障リンク数の多いleafスイッチ２００から優先的にジョブが割り当てられる。これにより、単一のleafスイッチ配下へのジョブ割り当て後に二以上のleafスイッチ２００を跨ぐジョブ割り当てを行なった場合、故障リンクが使用される可能性を低くすることができる。したがって、リンク故障に伴う競合発生が抑止され、システム性能の劣化をより確実に防ぐことができる。
【０１１２】
〔６−２〕第２変形例
また、第２変形例では、前述したソート部２３の他例が用いられ、割当部２２による割り当て動作に先立ち、複数のleafスイッチ２００は、各leafスイッチ２００に接続されるリンクＬのうち故障したリンクの数が少ない順にソートされる。そして、割当部２２は、ソート部２３によってソートした順に、各leafスイッチ２００に接続される有効なリンクの数を超えない数の空きノードに対する、ジョブの割り当てを行なう。
【０１１３】
ここで、図１５は、複数のleafスイッチ配下のノードにジョブを割り当てる際（図９のステップＳ２）のジョブスケジューリング動作の変形例（第２変形例）を説明するフローチャートである。図１５に示すように、第２変形例のフローチャートでは、図１１に示す本実施形態のフローチャートにおいて、leafスイッチ２００を故障リンク数が少ない順にソートするステップＳ２０をステップＳ２１の前段に備えた点のみが異なる。
【０１１４】
これにより、ジョブを複数のleafスイッチ配下のノードに跨って割り当てる際、leafスイッチ２００は、ステップＳ２７において、故障リンク数の少ないleafスイッチ２００から順に対象leafスイッチ２００として選択される。なお、図１５におけるステップＳ２１〜Ｓ２７の処理は、図１１におけるステップＳ２１〜Ｓ２７の処理と同様であるので、その説明は省略する。
【０１１５】
図１６は、図１５に示すジョブスケジューリング動作の変形例（第２変形例）による並列コンピュータシステムの性能改善例を説明する図である。なお、図１６では、ノード＃１〜＃１２が全て空き状態であるが、leaf＃１〜leaf＃３に接続される４本のリンクのうち故障リンク数がそれぞれ３，２，０である時に、以下のようなジョブ割り当てが行なわれる。つまり、６個のノード１００を使用するジョブＧ、３個のノード１００を使用するジョブＨ、および３個のノード１００を使用するジョブＩが、この順で割り当てられる。なお、leaf＃１〜leaf＃３における有効リンク数はそれぞれ１，２，４である。
【０１１６】
また、図１６の（Ａ）では、複数のleafスイッチ配下のノードにジョブを割り当てる際に対象leafスイッチ２００をスイッチ番号＃ｉの昇順に選択する場合が示される。つまり、図１６の（Ａ）では、leafスイッチ２００が、leaf＃１，leaf＃２，leaf＃３の順で対象leafスイッチとして選択される場合が示される。
【０１１７】
図１６の（Ｂ）では、複数のleafスイッチ配下のノードにジョブを割り当てる際に対象leafスイッチ２００を故障リンク数が少ない順に選択する場合が示される。つまり、図１６の（Ｂ）では、leafスイッチ２００が、leaf＃３，leaf＃２，leaf＃１の順で対象leafスイッチとして選択される場合が示される。
【０１１８】
図１６の（Ａ）に示す例では、まず、ジョブＧについて、３個のleaf＃１〜＃３のそれぞれにおいて有効リンク数を超えない数の空きノード＃１，＃５，＃６，＃９〜＃１１が確保され、これらのノード＃１，＃５，＃６，＃９〜＃１１にジョブＧが割り当てられる（図１６の（Ａ）の最上段参照）。ついで、ジョブＨについて、leaf＃１の配下における３個の空きノード＃２〜＃４が確保され、これらのノード＃２〜＃４にジョブＨが割り当てられる（図１６の（Ａ）の中段参照）。そして、ジョブＩについて、leaf＃２の配下における２個の空きノード＃７，＃８とleaf＃３の配下における１個の空きノード＃１２とが確保され、これらのノード＃７，＃８，＃１２にジョブＩが割り当てられる（図１６の（Ａ）の最下段参照）。
【０１１９】
このとき、ジョブＧで使用される６個のノード＃１，＃５，＃６，＃９〜＃１１は、３個のleaf＃１〜leaf＃３に跨っているため、leaf＃１〜leaf＃３間の通信が頻繁に生じる可能性が高い。その上、leaf＃１の故障リンク数は３つまり有効リンク数が１であり、leaf＃２の故障リンク数は２つまり有効リンク数が２であるため、leaf＃１〜leaf＃３間のリンクで競合が発生する可能性が高く、システム性能の劣化を招くおそれがある。
【０１２０】
これに対し、図１６の（Ｂ）に示す例では、まず、ジョブＧについて、故障リンク数が一番少ないleaf＃３と故障リンク数が二番目に少ないleaf＃２とのそれぞれにおいて有効リンク数を超えない数の空きノード＃９〜＃１２，＃５，＃６が確保され、これらのノード＃９〜＃１２，＃５，＃６にジョブＧが割り当てられる（図１６の（Ｂ）の最上段参照）。ついで、ジョブＨについて、leaf＃１の配下における３個の空きノード＃１〜＃３が確保され、これらのノード＃１〜＃３にジョブＨが割り当てられる（図１６の（Ｂ）の中段参照）。そして、ジョブＩについて、leaf＃１の配下における１個の空きノード＃４とleaf＃２の配下における２個の空きノード＃７，＃８とが確保され、これらのノード＃４，＃７，＃８にジョブＩが割り当てられる（図１６の（Ｂ）の最下段参照）。
【０１２１】
このように、第２変形例では、複数のleafスイッチ配下のノードにジョブを割り当てる際、故障リンク数の少ないleafスイッチ２００から優先的にジョブが割り当てられる。これにより、同一ジョブが跨るleafスイッチ２００の数をできるだけ少なくすることが可能になり、故障リンクが使用される可能性を低くすることができる。したがって、リンク故障に伴う競合発生が抑止され、システム性能の劣化をより確実に防ぐことができる。
【０１２２】
なお、第１変形例と第２変形例との両方が、図９〜図１１を参照しながら上述した本実施形態のジョブスケジューリング動作に適用されてもよいし、一方のみが、図９〜図１１を参照しながら上述した本実施形態のジョブスケジューリング動作に適用されてもよい。
【０１２３】
〔７〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１２４】
〔８〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる処理部を有し、
前記処理部は、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、情報処理装置。
【０１２６】
（付記２）
前記処理部は、
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が多い順にソートしてから、
ソートした順に、各第１スイッチに前記所定数以上の空きノードが接続されているかを判断することによって、前記所定数以上の空きノードが接続される第１スイッチの検索を行なう、付記１に記載の情報処理装置。
【０１２７】
（付記３）
前記処理部は、
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が少ない順にソートしてから、
ソートした順に、各第１スイッチに接続される前記有効なリンクの数を超えない数の空きノードに対する、前記ジョブの割り当てを行なう、付記１または付記２に記載の情報処理装置。
【０１２８】
（付記４）
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する、情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる際、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、
処理を、コンピュータに実行させる、プログラム。
【０１２９】
（付記５）
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が多い順にソートしてから、
ソートした順に、各第１スイッチに前記所定数以上の空きノードが接続されているかを判断することによって、前記所定数以上の空きノードが接続される第１スイッチの検索を行なう、
処理を、前記コンピュータに実行させる、付記４に記載のプログラム。
【０１３０】
（付記６）
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が少ない順にソートしてから、
ソートした順に、各第１スイッチに接続される前記有効なリンクの数を超えない数の空きノードに対する、前記ジョブの割り当てを行なう、
処理を、前記コンピュータに実行させる、付記４または付記５に記載のプログラム。
【０１３１】
（付記７）
複数のノードと、前記複数のノードを接続される複数の第１スイッチと、複数のリンクを介して前記複数の第１スイッチのそれぞれを接続される複数の第２スイッチと、を有する、情報処理システムにおいて、所定数のノードを用いるジョブを前記複数のノードのうちのノードに割り当てる際、
前記複数の第１スイッチの中から、前記所定数以上の空きノードが接続される第１スイッチを検索し、
前記所定数以上の空きノードが接続される第１スイッチが検索された場合、検索された第１スイッチに接続される前記所定数の空きノードに、前記ジョブを割り当てる一方、
前記所定数以上の空きノードが接続される第１スイッチが検索されなかった場合、二以上の前記第１スイッチのそれぞれにおいて、各第１スイッチに接続される前記空きノードであって、各第１スイッチに接続される前記リンクのうち有効なリンクの数を超えない数の空きノードに、前記ジョブを割り当てる、情報処理方法。
【０１３２】
（付記８）
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が多い順にソートしてから、
ソートした順に、各第１スイッチに前記所定数以上の空きノードが接続されているかを判断することによって、前記所定数以上の空きノードが接続される第１スイッチの検索を行なう、付記７に記載の情報処理方法。
【０１３３】
（付記９）
前記複数の第１スイッチを、各第１スイッチに接続される前記リンクのうち故障したリンクの数が少ない順にソートしてから、
ソートした順に、各第１スイッチに接続される前記有効なリンクの数を超えない数の空きノードに対する、前記ジョブの割り当てを行なう、付記７または付記８に記載の情報処理方法。
【符号の説明】
【０１３４】
１    並列コンピュータシステム（情報処理システム）
１０    コンピュータ（情報処理装置，ジョブスケジューラ，スケジューラ）
１１    プロセッサ（処理部）
１２    ＲＡＭ（記憶部）
１３    ＨＤＤ（記憶部）
１４    グラフィック処理装置
１４ａ    モニタ（表示部，出力部）
１５    入力インタフェース
１５ａ    キーボード（入力部）
１５ｂ    マウス（入力部）
１６    光学ドライブ装置
１６ａ    光ディスク
１７    機器接続インタフェース
１７ａ    メモリ装置
１７ｂ    メモリリーダライタ
１７ｃ    メモリカード
１８    ネットワークインタフェース
１８ａ    ネットワーク
１９    バス
２０    処理部
２１    検索部
２２    割当部
２３    ソート部
３０    記憶部
３１    プログラム（ジョブスケジューリングプログラム）
３２    故障箇所情報
３３    ジョブ情報
３４    ノード情報
４０    入力部
５０    表示部（出力部）
１００    ノード
２００    leafＳＷ（leafスイッチ，leaf＃１〜leaf＃４，第１スイッチ）
３００    spineＳＷ（spineスイッチ，spine＃１〜spine＃４，第２スイッチ）
４００    並列計算用高速ネットワーク（InfiniBand）
５００    制御系ネットワーク（Ethernet）
６００    サブネットマネージャ（ＳＭ）
Ｌ，Ｌ１１〜Ｌ１４，Ｌ２１〜Ｌ２４，Ｌ３１〜Ｌ３４，Ｌ４１〜Ｌ４４    リンク
【図１】
2018128858.tif 000003
【図２】
2018128858.tif 000004
【図３】
2018128858.tif 000005
【図４】
2018128858.tif 000006
【図５】
2018128858.tif 000007
【図６】
2018128858.tif 000008
【図７】
2018128858.tif 000009
【図８】
2018128858.tif 000010
【図９】
2018128858.tif 000011
【図１０】
2018128858.tif 000012
【図１１】
2018128858.tif 000013
【図１２】
2018128858.tif 000014
【図１３】
2018128858.tif 000015
【図１４】
2018128858.tif 000016
【図１５】
2018128858.tif 000017
【図１６】
2018128858.tif 000018