(57)【要約】      （修正有）【課題】マルチノードＪＯＢの高速実行を可能とするシステム及び方法の提供。【解決手段】ノードは、ＣＰＵ１１と転送制御部１２を有し、リクエスト元ノードの転送制御部がＣＰＵから発行されたＭＰＩ専用命令を受け取り、専用命令待合せバッファ１３に情報を格納し、クロスバースイッチ２０に対して、マスク情報を通知し、クロスバースイッチではデータ通知フラグレジスタ２２にマスク情報を設定し、ブロードキャスト通信により、全ノードに対して演算実行指示を通知し、演算実行する全てのノード間の演算が終了すると、通知終了部２６は演算結果を、全ノードにブロードキャスト通知し、各ノードでは、返却データＪＩＤ比較部１８で要求した演算結果に対応するものであるかチェックし、要求したデータの場合にはＣＰＵに返却し、そうでない場合には受け取った演算結果を廃棄する。【選択図】図１
2006277635.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードと、クロスバースイッチとを備え、
前記クロスバースイッチは、複数のノードのうちのリクエスト元のノードからの要求を受け、他のノードに対して、前記要求に対応した演算指示を、ブロードキャスト通信で分配する手段と、
前記演算指示が分配されたノードで実行された演算結果を集めて演算する演算手段と、
前記演算手段での演算結果を、少なくとも前記リクエスト元のノードに通知する手段と、
を備えている、ことを特徴とする情報処理システム。
【請求項２】
前記クロスバースイッチは、前記演算手段での演算結果を、ブロードキャスト通信で、複数のノードに通知する、ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記各ノードは、前記クロスバースイッチから受け取った演算結果が、自ノードで発行した命令に対応する演算結果であるか否か確認し、自ノードで要求したものでない場合には、前記クロスバースイッチから受け取った演算結果を廃棄する手段を備えている、ことを特徴とする請求項２記載の情報処理システム。
【請求項４】
前記クロスバースイッチにおいて、前記演算手段は、前記ノードから集めた演算結果が１つになるまで演算を行う制御を行う、ことを特徴とする請求項１又は２記載の情報処理システム。
【請求項５】
前記クロスバースイッチは、前記ノードから受け取った演算結果を格納し前記演算手段に供給する記憶手段、及び、前記演算手段から出力される演算結果を記憶する記憶手段が、前記要求に対応したＩＤにしたがったアドレスにデータを記憶管理する、ことを特徴とする請求項４記載の情報処理システム。
【請求項６】
演算結果を命令種に応じて、要求元のノードのＣＰＵのほか、全ノードのＣＰＵへ返却する、ことを特徴とする請求項１記載の情報処理システム。
【請求項７】
前記各ノードは、それぞれ、ＣＰＵと転送制御部とを備え、
前記転送制御部は、前記ＣＰＵから発行されたＭＰＩ（メッセージ・パッシング・インタフェース）専用命令と、その関連情報を格納する専用命令待合せバッファと、
前記クロスバースイッチに対して、演算に使用せず演算結果の待ち合わせを行わないノードを指定するマスク情報を通知するマスク情報作成部と、
前記ＣＰＵからの通知専用命令を受け、前記クロスバースイッチに対して送信する通知命令を生成する通知命令作成部と、
前記クロスバースイッチから通知された演算結果が、自ノードのＣＰＵが発行した命令に対応するものであるか判定し、自ノードのＣＰＵが発行した命令に対応する場合、演算結果を前記ＣＰＵに通知し、発行した命令に対応しない場合には、廃棄する制御を行う返却データ比較部と、
を備えている、ことを特徴とする請求項１又は２記載の情報処理システム。
【請求項８】
前記クロスバースイッチは、データ通知フラグレジスタと、演算部と、終了通知部と、ノードからの通知データを格納する通知受信格納バッファ及び演算結果データを格納する演算結果格納バッファよりなるデータ格納バッファを備え、
前記クロスバースイッチにおいて、前記データ通知フラグレジスタには、前記リクエスト元のノードから受け取ったマスク情報が設定され、
リクエスト元ノードからの演算実行指示を受けブロードキャスト通信により、複数のノードに対して演算実行を通知し、
演算実行した複数のノードにおいて、通知専用命令が前記各ノードのＣＰＵから送られてきた時に、前記各ノードから演算結果が、前記クロスバースイッチの前記演算部に通知され、
前記クロスバースイッチにおいて、前記演算部では、各ノードの通知命令作成部からの通知を受け取り、前記データ通知フラグレジスタの設定により、各ノード間の演算を実行し、
前記演算部において、前記データ通知フラグレジスタの設定にしたがい、演算実行する全てのノード間の演算が終了すると、前記終了通知部は、演算結果を、前記複数のノードにブロードキャスト通知する、ことを特徴とする請求項７記載の情報処理システム。
【請求項９】
前記データ通知フラグレジスタが、要求に関係付けられるジョブのＩＤ（「ＪＯＢＩＤ」という）毎に設けられ、前記複数のノードの個数分のビット数を有するレジスタを備え、
前記演算部は、前記データ通知フラグレジスタの前記ジョブに対応する前記レジスタのビットに第１の値がある限り、前記ビットに対応するノードからの通知データの待ち合わせをして演算を行うように制御する、ことを特徴とする請求項８記載の情報処理システム。
【請求項１０】
演算のリクエスト元ノードから、分配されたノードでの演算が始まる前に、ジョブで使用しないノードの演算結果を待ち合わせしないために、前記データ通知フラグレジスタにマスク情報の設定が通知され、
前記データ通知フラグレジスタの対応するレジスタにマスク情報として、無効ノードビットに第２の値が設定される、ことを特徴とする請求項９記載の情報処理システム。
【請求項１１】
前記データ通知フラグレジスタにおいて、前記ノードからの通知データの到着の完了により、前記ジョブに対応するレジスタのノードに対応するビットが第２の値に設定される、ことを特徴とする請求項９記載の情報処理システム。
【請求項１２】
前記通知受信格納バッファ及び前記演算結果格納バッファとが、ジョブを識別するジョブＩＤに応じてバッファ内アドレスが管理される、ことを特徴とする請求項８記載の情報処理システム。
【請求項１３】
前記演算部は、前記データ通知フラグレジスタの設定により、各ノード間の演算を実行し、前記演算部は、演算の都度、前記演算結果格納バッファにジョブＩＤとともに演算結果を渡し、指定したジョブＩＤのアドレスにデータを格納する、ことを特徴とする請求項８記載の情報処理システム。
【請求項１４】
前記終了通知部は、前記データ通知フラグレジスタがもつ、ジョブＩＤに対応するレジスタのビットが全て第２の値の場合、出力通知を有効とし、前記演算部での演算完了とともに、ブロードキャストで全ノードに対して最終結果を通知する制御を行う、ことを特徴とする請求項８記載の情報処理システム。
【請求項１５】
前記専用命令待ち合わせバッファには、前記ＭＰＩ専用命令の実行に関連するジョブのＩＤと、返却先情報と、ＭＰＩ専用命令の発行元ノードであることを示す命令発行元フラグをオンにして保存され、
前記返却データ比較部は、前記専用命令待合せバッファの中に、ジョブ毎に指定されたＩＤが、前記クロスバースイッチから受け取ったジョブIＤと等しいものがあるかを確認し、等しいものが存在する場合には、さらに、前記専用命令待ち合わせバッファ内に格納されている命令発行元フラグの情報を参照し、命令発行元フラグより、当該ノードが命令発行元でなければ、前記クロスバースイッチより通知された返却情報、および専用命令待合せバッファの格納情報を廃棄し、命令発行元であれば、前記ＣＰＵに、クロスバースイッチからの演算結果を返却し、前記専用命令待合せバッファの情報のみ廃棄する、ことを特徴とする請求項７記載の情報処理システム。
【請求項１６】
前記データ通知フラグレジスタは、ジョブＩＤごとに、カウンタを備え、演算の対象となるノード数を前記カウンタに設定し、
ジョブＩＤに対応して前記演算部で演算が実行されるたびに、対応する前記カウンタをカウントダウンしていき、カウント値が０になったときに、終了とみなして、前記終了通知部が演算結果を各ノードに通知する、ことを特徴とする請求項８記載の情報処理システム。
【請求項１７】
前記データ通知フラグレジスタは、ジョブＩＤごとに、カウンタを備え、
ジョブＩＤに対応して前記演算部で演算が実行されるたびに、対応する前記カウンタをカウントアップしていき、カウント値が演算の対象となるノード数に達したときに、終了とみなして、前記終了通知部が演算結果を各ノードに通知する、ことを特徴とする請求項８記載の情報処理システム。
【請求項１８】
複数のノードと、クロスバースイッチとを備えたマルチノードシステムのジョブ実行方法であって、
前記各ノードは、ＣＰＵと転送制御部を有し、
リクエスト元ノードの前記転送制御部が、前記ＣＰＵから発行されたＭＰＩ（メッセージ・パッシング・インタフェース）専用命令を受け取り、専用命令待合せバッファに情報を格納する工程と、
前記リクエスト元ノードの転送制御部が、前記クロスバースイッチに対して、無効とするノードを指定するマスク情報を通知する工程と、
前記クロスバースイッチが、データ通知フラグレジスタにマスク情報を設定する工程と、
前記クロスバースイッチがブロードキャスト通信により、全ノードに対して演算実行指示を通知する工程と、
演算実行を行った各ノードにおいて、通知専用命令が前記ＣＰＵから送られてきた時に、演算結果を、前記クロスバースイッチの演算部に通知する工程と、
前記クロスバースイッチにおいて、前記演算部は、各ノードの通知命令作成部からの通知を受け取り、データ通知フラグレジスタの設定により、各ノード間の演算を実行し、演算実行する全てのノード間の演算が終了すると、演算結果を、全ノードにブロードキャスト通知する工程と、
を含む、ことを特徴とするマルチノードシステムのジョブ実行方法。
【請求項１９】
各ノードでは、専用命令待合せバッファのジョブ毎に指定されたジョブＩＤのアドレスに格納される命令発行元フラグの情報を参照し、命令発行元ノードであるか否かを確認し、命令発行元フラグが発行元であることを示していない場合、前記クロスバースイッチからの返却情報を廃棄し、発行元であれば、前記ＣＰＵにその情報を返却する、ことを特徴とする請求項１８記載のマルチノードシステムのジョブ実行方法。
【請求項２０】
クロスバースイッチに接続するノードであって、
ＣＰＵと転送制御部を備え、
前記転送制御部は、前記ＣＰＵから発行された転送専用命令とその関連情報を格納する専用命令待合せバッファと、
前記クロスバースイッチに対して、演算に使用せず演算結果の待ち合わせを行わないノードを指定するマスク情報を通知するマスク情報作成部と、
前記ＣＰＵからの通知専用命令を受け、前記クロスバースイッチに送信する通知命令を生成する通知命令作成部と、
前記クロスバースイッチから通知された演算結果が、自ノードのＣＰＵが発行した命令に対応するものであるか判定し、発行した命令に対応しない場合に、廃棄する制御を行う返却データ比較部と、
を備えている、ことを特徴とするノード。
【請求項２１】
複数のノードに接続するクロスバースイッチであって、
データ通知フラグレジスタと、
演算部と、
終了通知部と、
ノードからの通知データを格納する通知受信バッファと、演算結果データを格納する演算結果格納バッファよりなるデータ格納バッファを備え、
前記要求元のノードからマスク情報を受け取り、前記データ通知フラグレジスタに設定し、
前記要求元のノードからの要求を受けて、ブロードキャスト通信により、複数のノードに対して演算実行を通知し、
演算実行した複数のノードにおいて、通知専用命令が前記ノードのＣＰＵから送られてきた時に、演算結果が、前記クロスバースイッチの前記演算部に通知され、
前記演算部では、各ノードの通知命令作成部からの通知を受け取り、前記データ通知フラグレジスタの設定により、各ノード間の演算を実行し、
前記演算部で演算実行する全てのノード間の演算が終了すると、前記終了通知部は、演算結果を、全ノードにブロードキャスト通知する、ことを特徴とするクロスバースイッチ。
【請求項２２】
前記データ通知フラグレジスタが、ジョブＩＤ毎に設けられ、前記複数のノード数分のビットをもつレジスタを備え、
前記レジスタの各ビットに第１の値がある限り、前記演算部は、前記ノードからのデータを待ち合わせして演算を行い続けるように制御する、ことを特徴とする請求項２１記載のクロスバースイッチ。
【請求項２３】
演算のリクエスト元ノードから各ノードの演算が始まる前に、ジョブで使用しないノードの演算結果を待ち合わせしないために、前記データ通知フラグレジスタにマスク設定が通知され、前記データ通知フラグレジスタの対応するレジスタにマスク情報として、ジョブで使用しないノードに対応するビットが、無効ノードビットとして、第２の値に設定される、ことを特徴とする請求項２１又は２２記載のクロスバースイッチ。
【請求項２４】
前記データ通知フラグレジスタには、ノードからの演算データの到着の完了で、前記ジョブに対応するレジスタのノードに対応するビットが第２の値に設定される、ことを特徴とする請求項２１又は２２記載のクロスバースイッチ。
【請求項２５】
前記通知受信格納バッファと演算結果格納バッファとは、ジョブを識別するジョブＩＤに応じて、データを格納するバッファ内アドレスが管理される、ことを特徴とする請求項２１記載のクロスバースイッチ。
【請求項２６】
前記演算部は、前記データ通知フラグレジスタの設定により、各ノード間の演算を実行し、
前記演算部は、前記演算結果格納バッファにジョブＩＤとともに演算結果を渡し、指定したジョブＩＤのアドレスにデータを格納する、ことを特徴とする請求項２５記載のクロスバースイッチ。
【請求項２７】
前記終了通知部は、前記データ通知フラグレジスタがもつ、ジョブＩＤに対応するレジスタのビットが全て第２の値の場合、出力通知を有効とし、前記演算部での演算完了とともに、ブロードキャスト通信で全ノードに対して最終結果を通知する制御を行う、ことを特徴とする請求項２１記載のクロスバースイッチ。
【請求項２８】
前記データ通知フラグレジスタは、ジョブＩＤごとに、カウンタを備え、演算の対象となるノード数を前記カウンタに設定し、
ジョブＩＤに対応して、前記演算部で演算が実行されるたびに、対応する前記カウンタをカウントダウンしていき、カウント値が０になったときに、終了とみなして、前記終了通知部が、演算結果を各ノードに通知する、ことを特徴とする請求項２１記載のクロスバースイッチ。
【請求項２９】
前記データ通知フラグレジスタは、ジョブＩＤごとに、カウンタを備え、
ジョブＩＤに対応して前記演算部で演算が実行されるたびに、対応する前記カウンタをカウントアップしていき、カウント値が演算の対象となるノード数に達したときに、終了とみなして、前記終了通知部が演算結果を各ノードに通知する、ことを特徴とする請求項２１記載のクロスバースイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、計算機が複数集まり１つのシステムを構成するマルチノードシステムとＪＯＢ実行方法に関する。
【背景技術】
【０００２】
計算機が複数集まり１つのシステムを構成するマルチノードシステムにおける、ＭＰＩ（Message Passing Interface）の機能を使ったマルチノードのＪＯＢ実行として、ＭＰＩの転送機能（関数）であるＭＰＩ＿ＲＥＤＵＣＥ、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令について、図４を参照して説明する。図４（Ａ）は、処理フロー、図４（Ｂ）は、マルチノードシステムのデータ通信を模式的に示している。
【０００３】
図４おいて、このＭＰＩ転送命令は、
（１）の命令の分配フェーズ、
（２）の各ノードの演算フェーズ、
（３）の結果の転送フェーズ
の３つに大別されることが示されている。
【０００４】
（１）の命令の分配フェーズでは、上記命令を実行する際に、リクエスト元のノードのＣＰＵは、各ノードに、ノード内のＭａｘ／Ｓｕｍの演算を実行するように、演算指示を、各ノードに通知する（図４（Ａ）のステップＳ２１、Ｓ２２、図４（Ｂ）の（１）分配参照）。
【０００５】
その際、該演算を終了したときに、結果をどのノードに送るかの情報も付随して、演算指示を送る。このため、各ノードへの指示は、別々になり、命令発行元のノードから１：１（１対１）で各ノードに通知を送ることになる。
【０００６】
この通知の転送のためのデータ通信時間が無視できないため、上記命令の実装において、（１）の分配フェーズでは、発行元ノードが全てのノードに通知をするのではなく、例えば２分岐ツリー状に、指示を分担させ、複数のノードから分配通知を行うことで、転送の負荷を軽減するようにしている。
【０００７】
（２）の各ノードの演算フェーズでは、各ノードで、ノード内のＭａｘ／Ｓｕｍの演算を各々実行し、ノード内の最終値を求める（ステップＳ２３）。
【０００８】
（３）の転送フェーズでは、（１）と逆方向に、Ｍａｘ／Ｓｕｍの結果の転送を行いＭａｘ／Ｓｕｍ値を求め（ステップＳ２４）、Ｍａｘ／Ｓｕｍがリクエスト元ノードに全て集まると（ステップＳ２５のｙｅｓ分岐）、最終的に、リクエスト元ノードプロセスで集まったＭａｘ／Ｓｕｍを求め、最終的なＭａｘ／Ｓｕｍ値を求める（ステップＳ２６）。ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令では、全ノードが、この結果値を得る必要性があるため、この結果値を、全ノードにブロードキャストするなどしている。
【０００９】
ＭＰＩの機能を使ったマルチノードＪＯＢ実行（複数ノードでのＪＯＢの実行）は、性能が重視されるが、ノード間の転送時間が性能のネックとなる。特に、マルチノードＪＯＢでは、各ノードに分散したデータの合計値やＭａｘ値を求めることが多々発生するが、その演算の実行時の転送時間が、演算時間に対して、割合的に、無視できなくなる、という問題が生じていた。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来のマルチノードシステムは、ＭＰＩの転送機能の実現において、次のような課題がある。
【００１１】
リクエスト元ノードへの演算結果の転送フェーズにおいて、分配フェースと逆方向に、Ｍａｘ／Ｓｕｍの結果の転送を行い、最終的に、リクエスト元ノードでＭａｘ／Ｓｕｍの結果値を求めている。コネクション型のネットワークでは、全ノード（ノード数をＮとする）から、１つのノードにデータを通知するために、通常、Ｎ：１（２分岐ツリーでノード間転送の効率化を行った場合でも、ＬｏｇＮ：１）の通信が発生し、１つの転送ごとにコネクションをし直すネットワークでは、転送時間が多くかかる（第１の課題）。
【００１２】
分配フェーズにおいて返却値を返却するルート（ノード）を通知するために、ブロードキャスト通信して一括して演算の実行を指示することができない、ということである（第２の課題）。
【００１３】
したがって、本発明の目的は、ノード内の演算結果転送や、演算指示の分配フェーズで、コネクション型ネットワークをもつゆえの上記課題を解消し、高速なマルチノードＪＯＢ実行を可能とする情報処理システムと方法を提供することにある。
【課題を解決するための手段】
【００１４】
本願で開示される発明は、上記目的を達成するため、概略以下の構成とされる。
【００１５】
本発明の１つのアスペクトに係るシステムは、複数のノードと、クロスバースイッチとを備え、前記クロスバースイッチは、１のリクエスト元のノードからの演算要求を受け、他のノードに前記要求をブロードキャスト通信で分配し、前記クロスバースイッチが、前記分配されたノードでのそれぞれの演算結果を集めて演算し、演算結果をブロードキャストで複数のノードに通知する構成とされる。本発明において、各ノードでは、前記クロスバースイッチから取った演算結果が、自ノードで要求したものに対応する演算結果であるかチェックし、自ノードで要求したものでない場合には、廃棄する。
【００１６】
本発明において、前記クロスバースイッチは、前記ノードから集めた演算結果が１つになるまで演算を行う演算部と、結果が１つなるまで演算される間、複数ノードから要求に応じて、並列に動作できるように、ＪＯＢ毎に指示されるシステムにユニークなＩＤで管理された多重実行手段を備える。
【００１７】
本発明の他のアスペクトに係る方法は、複数のノードと、クロスバースイッチとを備えたマルチノードシステムのジョブ実行方法であって、
前記各ノードは、ＣＰＵと転送制御部を有し、
リクエスト元ノードの前記転送制御部が、前記ＣＰＵから発行されたＭＰＩ（メッセージ・パッシング・インタフェース）専用命令を受け取り、専用命令待合せバッファに情報を格納する工程と、
前記リクエスト元ノードの転送制御部が、前記クロスバースイッチに対して、無効とするノードを指定するマスク情報を通知する工程と、
前記クロスバースイッチが、データ通知フラグレジスタにマスク情報を設定する工程と、
前記クロスバースイッチがブロードキャスト通信により、全ノードに対して演算実行指示を通知する工程と、
演算実行を行った各ノードにおいて、通知専用命令が前記ＣＰＵから送られてきた時に、演算結果を、前記クロスバースイッチの演算部に通知する工程と、
前記クロスバースイッチにおいて、前記演算部は、各ノードの通知命令作成部からの通知を受け取り、データ通知フラグレジスタの設定により、各ノード間の演算を実行し、演算実行する全てのノード間の演算が終了すると、演算結果を、全ノードにブロードキャスト通知する工程と、を含む。
【００１８】
本発明の他のアスペクトに係るノードは、クロスバースイッチに接続するノードであって、ＣＰＵと転送制御部を備え、前記転送制御部は、前記ＣＰＵから発行された転送専用命令とその関連情報を格納する専用命令待合せバッファと、前記クロスバースイッチに対して、演算結果の待ち合わせを行わないノードを指定するマスク情報を通知するマスク情報作成部と、前記ＣＰＵからの通知専用命令を受け、前記クロスバースイッチに送信する通知命令を生成する通知命令作成部と、前記クロスバースイッチから通知された演算結果が、自ノードのＣＰＵが発行した命令に対応するものであるか判定し、発行した命令に対応しない場合に廃棄する制御を行う返却データ比較部と、を備えている。
【００１９】
本発明の他のアスペクトに係るクロスバースイッチは、データ通知フラグレジスタと、演算部と、終了通知部と、ノードからの通知データを格納する通知受信バッファと、演算結果データを格納する演算結果格納バッファよりなるデータ格納バッファを備え、前記要求元のノードからマスク情報を受け取り、前記データ通知フラグレジスタに設定し、前記要求元のノードからの要求を受けて、ブロードキャスト通信により、複数のノードに対して演算実行を通知し、演算実行した複数のノードにおいて、通知専用命令がノードのＣＰＵから送られてきた時に、演算結果が、前記クロスバースイッチの前記演算部に通知され、前記演算部では、各ノードの通知命令作成部からの通知を受け取り、前記データ通知フラグレジスタの設定により、各ノード間の演算を実行し、前記演算部で演算実行する全てのノード間の演算が終了すると、前記終了通知部は、演算結果を、全ノードにブロードキャスト通知する構成とされる。
【発明の効果】
【００２０】
本発明によれば、コネクション・ロックを持たずに、転送を行うことで、ＭＰＩ転送機能であるＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、及びＭＰＩ＿ＲＥＤＵＣＥの機能を、高速に実行することができる。
【００２１】
また、本発明によれば、ブロードキャスト通信して一括して演算の実行を指示することができる。
【発明を実施するための最良の形態】
【００２２】
［発明の原理］
本発明は、データの転送時に、データの転送先ノードが同時に２つ以上のノードからデータを転送されないように、転送先をロック（１つの転送元ノードしかロックが取れない）してから、データを転送するコネクション型のノード間のデータ転送ネットワークを具備し、これをクロスバースイッチで実現しているマルチノードシステムにおいて、ノード間転送の手段として使用される、ＭＰＩ転送機能であるＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、及びＭＰＩ＿ＲＥＤＵＣＥの機能を、高速に実行可能とするものである。
【００２３】
コネクション型のネットワークは、データの転送先ノードに、他のノードからの転送が同時に行われないように、転送先のノードをロック（「コネクション・ロック」と呼ぶ）する必要があるが、クロスバースイッチまでの転送であれば、コネクション・ロックの必要がなく、ノードからいつでも転送可能である。
【００２４】
本発明は、この点に着目し、コネクション・ロックを持たずに、転送を行うことで、転送時間を短縮している。
【００２５】
具体的には、
・ノードへではなく、クロスバースイッチ内に、ノードに転送データを送る転送制御機構を備える。
【００２６】
・クロスバースイッチ内で１つの結果になるまで演算を行えるように、演算部をクロスバー内に備える。
【００２７】
・結果が１つになるまで演算される間、クロスバースイッチ内の演算部が、複数ノードからのリクエストに応じて、並列に動作できるように、ＪＯＢ毎に指示される、システムにユニークなＩＤ（「ＪＯＢＩＤ」、あるいは「ＪＩＤ」とも略記される）で管理された多重実行機構を備える。
【００２８】
・結果を命令種に応じ、リクエスト元ノードのＣＰＵのほか、全ノードのＣＰＵへ返却する機構をもつ。
【００２９】
図１のリクエスト元ノード１０１において、ＣＰＵ１１は、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ／ＭＰＩ＿ＲＥＤＵＣＥ命令を処理するＭＰＩ専用命令を発行する。
【００３０】
同様に、各ノード１０ｉのＣＰＵ１１は、演算したＭａｘ／Ｓｕｍ（最大値／総和）の結果を、マルチノード間を接続するクロスバースイッチ２０に通知するために、通知専用命令を発行する。
【００３１】
リクエスト元ノード１０１の転送制御部１２は、ＣＰＵ１１から発行されたＭＰＩ専用命令／通知専用命令を受け取り、ＭＰＩ専用命令の場合、転送制御部１２内の専用命令待合せバッファ（バッファ）１３が、この情報を格納し、同時に、転送制御部１２内のマスク情報作成部１４が、クロスバースイッチ２０内のデータ通知フラグレジスタ２２に対して、マスク情報を通知し、クロスバースイッチ２０内のデータ通知フラグレジスタ２２でマスク情報を設定をする（マスク情報の設定については後に詳述される）。
【００３２】
さらに、ブロードキャスト通信により、クロスバースイッチ２０を介して、全ノードに対して、Ｍａｘ／Ｓｕｍの演算実行指示を通知する。その際、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ/ＭＰＩ＿ＲＥＤＵＣＥのどちらの命令実行中かは、各ノード１０ｉのＣＰＵ１１に通知される。
【００３３】
また、同様に、各ノード１０ｉの通知命令作成部１５では、ノード１０ｉのＣＰＵ１１から通知専用命令（ＣＰＵ１１で実行した演算結果を通知するための命令）が送られてきた時に、Ｍａｘ／Ｓｕｍの結果を、クロスバースイッチ２０内のＭａｘ／Ｓｕｍ演算部２４に通知する。この通知の際、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令の実行時には、ノード１０ｉのＣＰＵ１１から、専用待ち合わせバッファ１３の具備する命令発行元フラグをセットし、結果値返却ＣＰＵ情報を格納する。
【００３４】
クロスバースイッチ２０において、データ格納バッファは、データが滞留し、デッドロックになるのを避けるために、ＪＯＢ識別するシステムにユニークなＩＤ（ＪＩＤ）でバッファ内アドレスを管理する機能を持つ。
【００３５】
また、クロスバースイッチ２０において、データ通知フラグレジスタ２２は、
・各ノードから演算データが送られてきたことや演算完了を管理する演算フラグを格納すると共に、
・ノード１０１のマスク情報作成部１４からの通知により、演算に使用しないノードのフラグをセットする。
【００３６】
クロスバースイッチ２０において、Ｍａｘ／Ｓｕｍ演算部２４は、各ノード１０ｉの通知命令作成部１５からの通知を受け取り、データ通知フラグレジスタ２２の設定により、各ノード間のＭａｘ／Ｓｕｍ演算を実行する。
【００３７】
この際、クロスバースイッチ２０において、Ｍａｘ／Ｓｕｍ演算部２４は、毎回、演算結果格納バッファ２５の指定されたジョブＩＤ（ＪＩＤ）のアドレスに、データを格納する。
【００３８】
クロスバースイッチ２０において、終了通知部２６は、演算実行する全てのノード間の演算が終了すると、演算完了を検出し、全ノードに対して演算結果をブロードキャスト通知する。
【００３９】
再び、各ノード１０１、１０ｉの返却データＪＩＤ比較部１８では、専用命令待合せバッファ１３のＪＯＢ毎に指定されたＩＤのアドレスに格納される命令発行元フラグの情報を参照し、命令発行元ノードであるか否かを確認する。返却データＪＩＤ比較部１８は、命令発行元フラグが発行元であることを示していない場合、クロスバースイッチ２０からの返却情報を廃棄し、一方、発行元であれば、ＣＰＵ１１にその情報を返却する。
【００４０】
このようにして、複数ＪＯＢで、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令、ＭＰＩ＿ＲＥＤＵＣＥ命令を発行した際に、各ノード１０ｉに、ノード１０ｉ内のＣＰＵにＭａｘ／Ｓｕｍの演算をするように指示し、その結果を、クロスバースイッチ２０上で、デッドロックを生じさせないように考慮されたハードウェア機構により、Ｍａｘ／Ｓｕｍ演算し、各ノード１０ｉからのコネクションを接続せずに、全ノードを対象としたＭａｘ／Ｓｕｍの演算結果を、全ノード（または発行元ノードにのみ）に返却することができる。
【００４１】
コネクション型のネットワークのネックとなる１：１でコネクションしないデータ転送ができない問題を回避し、高速に、ＭＰＩ専用命令のＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、ＭＰＩ＿ＲＥＤＵＣＥを演算でき、マルチノードシステムの演算性能を向上することができる。
【００４２】
本発明においては、「コネクション型のネットワークは、データの転送先ノードに他のノードからの転送が同時に行われないように、コネクション・ロックをする必要があるが、クロスバースイッチまでの転送であれば、コネクション・ロックの必要がなく、Nodeからいつでも転送可能である。」という点に着目し、クロスバースイッチに、Node内転送データを送り、クロスバースイッチ内で１つの結果になるまで演算を行えるように、演算部を、クロスバースイッチ内に備える。
【００４３】
また、本発明においては、１つに演算されるまでの間、その演算機構が複数ノードからのリクエストに応じて並列に動作できるように、ＪＯＢのＩＤで（ＪＯＢＩＤ）管理された多重実行機構を備える。
【００４４】
さらに、本発明においては、クロスバースイッチ２０から演算結果を、全ノードにブロードキャストすることで、コネクション・ロックを行わずに、転送フェーズの動作を実現する。
【００４５】
さらにまた、本発明においては、クロスバースイッチ２０から全ノードに結果をブロードキャストし、その通知を、命令種によって選択して、ＣＰＵ１１に伝える転送制御部１２を備え、分配フェーズでルートを通知する必要がなくなり、分配フェーズについても、ブロードキャストでのノードの演算開始を指示することが出来る（分配フェーズを簡略化できる）。
【００４６】
このように、本発明においては、各ノードが、ＣＰＵ１１と転送制御部１２を備え、複数ＪＯＢのＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令、ＭＰＩ＿ＲＥＤＵＣＥ命令を発行した際に、クロスバースイッチ２０を介して、各ノードに、ノード内のＭａｘ／Ｓｕｍの演算をするよう指示し、その結果を、クロスバースイッチ２０上でデッドロックを生じさせないように考慮されたハードウェア機構により、Ｍａｘ／Ｓｕｍ演算し、各ノードからのコネクションを接続せずに、全ノードを対象としたＭａｘ／Ｓｕｍの演算結果を、全ノード（または、発行元ノードにのみ）返却することができる構成としたことで、コネクション型のネットワークのネックとなる１：１でコネクションしないデータ転送ができないという問題を回避し、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ／ＭＰＩ＿ＲＥＤＵＣＥ命令を処理する転送時間を大幅に減少させることで、高速なマルチノードＪＯＢを実現している。以下、実施例に即して説明する。
【実施例】
【００４７】
図１は、本発明の一実施例のマルチノードシステムの構成を示す図である。図１には、複数のノード１０１、１０ｉ（ノード数がＮ（ただし、Ｎは２以上の整数）の場合、ｉは２〜Ｎの整数）と、１つのクロスバースイッチ２０によるマルチノードシステムが示されており、各ノード１０１、１０ｉは、同一構成とされ、それぞれが、少なくとも１つ以上のＣＰＵ１１をもち演算を処理し、各々一部分を分担しながらマルチノードＪＯＢを実行する。
【００４８】
複数のノードは、どのノードからも、同様な命令が発行でき処理できる能力をもつが、構成例は説明のため、リクエスト元のノード１０１からのみ命令が発行されているとして、構成を説明する。
【００４９】
ノード１０１、１０ｉは、１つ以上のＣＰＵ１１、メモリおよび転送制御部１２を備えている。
【００５０】
図１のリクエスト元ノード１０１において、ＣＰＵ１１は、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ／ＭＰＩ＿ＲＥＤＵＣＥ命令を処理するＭＰＩ専用命令を、転送制御部１２に対して発行する。
【００５１】
ＭＰＩ専用命令は、
・マルチノードＪＯＢのシステムにユニークなＩＤ（ＪＯＢＩＤ）と、
・命令を演算実行する配列情報や命令を実行するノードの情報、
・命令の種類（命令種１：ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥか、ＭＰＩ＿ＲＥＤＵＣＥか、命令種２：Ｍａｘ演算、Ｓｕｍ演算か）、
・命令の返却先情報
を有し、これらの情報は、転送制御部１２に通知される。
【００５２】
また、その他のノード１０ｉ（ｉは２以上の整数）内のＣＰＵ１１は、ＣＰＵ１１で演算したＭａｘ／Ｓｕｍの結果を、マルチノード間を接続するクロスバースイッチ２０に通知するために、通知専用命令を発行する機能を備えている。なお、ＣＰＵ自体は任意の公知の構成が用いられるが、ＣＰＵは、最終的な返却値を演算結果として持つためにその演算実行終了を待ちあわせることになる。ＣＰＵが参照するメモリ（不図示）等の構成についても、任意の公知の構成が用いられる。
【００５３】
転送制御部１２は、専用命令待ち合わせバッファ１３、マスク情報作成部１４、通知命令作成部１５、データ受信部１６、データ送信部１７、返却データＪＩＤ比較部１８、既設他命令発行機構１９を備えている。なお、既設他命令発行機構１９は、ＭＰＩ専用命令、通知専用命令以外の他の命令の発行を制御するユニットであり、本発明の主題とは直接関係しないため、説明は省略する。
【００５４】
また、図１では、動作の説明の容易化のため、リクエスト元ノード１０１の転送制御部１２がマスク情報作成部１４を備え、その他の各ノード１０ｉの転送制御部１２が通知命令作成部１５を備えた構成とされているが、各ノードとも同一構成とされ、マスク情報作成部１４、通知命令作成部１５を備えている。
【００５５】
リクエスト元ノード１０１の転送制御部１２は、当該ノード１０１のＣＰＵ１１から発行された上記ＭＰＩ専用命令を受け取り、ＭＰＩ専用命令の場合、転送制御部１２内に具備する専用命令待合せバッファ１３に、ＪＯＢＩＤ（ＪＩＤ）と、返却先情報を格納し、自ノードがＭＰＩ専用命令の発行元であることを示す命令発行元フラグをＯＮにして保存する。
【００５６】
リクエスト元ノード１０１の転送制御部１２では、上記ＭＰＩ専用命令と同時にＣＰＵ１１から通知されるノード情報（演算を実行するノードの情報）より、マスク情報作成部１４にて、クロスバースイッチ２０内のデータ通知フラグレジスタ２２に対して通知するマスク情報を作成し、データ送信部１７より、作成したマスク情報をクロスバースイッチ２０に対して通知する。
【００５７】
リクエスト元ノード１０１の転送制御部１２のマスク情報作成部１４では、命令種１、２や、演算実行する配列情報、ＪＯＢＩＤをその内容としてもつブロードキャスト通信命令を作成し、データ送信部１７より、クロスバースイッチ２０に対して通知する。
【００５８】
なお、ブロードキャスト通信については、クロスバースイッチがもつ公知の機能であり、クロスバースイッチ２０を経由し、全ノードのＣＰＵに対して通知される。
【００５９】
一方、ノード１０ｉの転送制御部１２では、通知専用命令がノード１０ｉ内のＣＰＵ１１から送られてきた時に、通知命令作成部１５にて、通知専用命令を送信できる形状（形式）に変え、Ｍａｘ／Ｓｕｍの演算結果を、データ送信部１７から、クロスバースイッチ２０内のＭａｘ／Ｓｕｍ演算部２４に通知する。
【００６０】
この通知の際に、ノード１０ｉ内の専用待ち合わせバッファ１３に対して、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令実行時にはＣＰＵ１１から、ＪＯＢＩＤと返却先情報、および発行元フラグをＯＮにして情報を格納する。
【００６１】
各ノード（リクエスト元ノード１０１、その他のノード１０ｉ）の転送制御部１２において、クロスバースイッチ２０より、Ｍａｘ／Ｓｕｍ演算結果が、データ受信部１６を経由して、返却データＪＩＤ比較部１８に通知される。
【００６２】
返却データＪＩＤ比較部１８では、Ｍａｘ／Ｓｕｍ演算結果と専用命令待ち合わせバッファ１３の情報について、比較を行い、ＣＰＵ１１へＭａｘ／Ｓｕｍ演算結果を通知するか、もしくはデータの廃棄を行う。具体的には、専用命令待合せバッファ１３の中に、ＪＯＢ毎に指定されたＩＤ（ＪＯＢＩＤ）が、クロスバースイッチ２０からデータ受信部１６を通して受け取ったＪＯＢＩＤと等しいものがあるかを確認し、等しいものが存在する場合には、さらに、専用命令待ち合わせバッファ１３内に格納されている命令発行元フラグの情報（命令発行元フラグは、ＭＰＩ専用命令の発行元である場合、オンとされる）を参照し、命令発行元フラグより、当該ノードが命令発行元でなければ、クロスバースイッチ２０より通知された返却情報、および専用命令待合せバッファ１３の格納情報を廃棄し、命令発行元（リクエスト元ノード）であれば、該当ＣＰＵ１１に、情報（Ｍａｘ／Ｓｕｍ演算結果）を返却し、専用命令待合せバッファ１３の情報のみ廃棄する。
【００６３】
各ノードの転送制御部１２は、クロスバースイッチ２０からの通信情報を、データ受信部１６で受け取ると、ブロードキャスト通信ならば、無条件で、これをＣＰＵ１１に通知する。
【００６４】
なお、上記ブロードキャスト通信命令（命令種１、２や、演算実行する配列情報、ＪＯＢＩＤをもつ）は、クロスバースイッチ２０を介して、Ｍａｘ／Ｓｕｍの演算実行のリクエストを各ノード１０ｉのＣＰＵ１１に通知し、Ｍａｘ／Ｓｕｍの演算を、各ノードのＣＰＵ１１が実行する。各ノードのＣＰＵ１１は、Ｍａｘ／Ｓｕｍの演算実行後、得られたＭａｘ／Ｓｕｍ演算結果を、ＪＯＢＩＤや命令種別とともに、各ノードのＣＰＵ１１から転送制御部１２に、通知専用命令で通知する。
【００６５】
次に、本実施例のクロスバースイッチ２０について説明する。クロスバースイッチ２０は、ブロードキャスト実行制御部とコネクション型転送実行部（いずれも不図示）と、データフラグ通知レジスタ２２と、データ格納バッファ（２３、２５）と、Ｍａｘ／Ｓｕｍ演算部２４と、終了通知部２６を備えている。
【００６６】
クロスバースイッチ２０内のデータ通知フラグレジスタ２２は、ＪＯＢＩＤ毎に、Ｎノード数分のビットをもつレジスタを備え、この各ビットに０がある限り、Ｍａｘ／Ｓｕｍ演算部２４では、該当ノードからのデータを待ち合わせして、Ｍａｘ／Ｓｕｍ演算を行い続けるように制御する。
【００６７】
演算のリクエスト元ノード１０１から各ノードの演算が始まる前に、そのＪＯＢで使用しないノードのＭａｘ／Ｓｕｍ演算結果を待ち合わせしないために、データ通知フラグレジスタ２２にマスク設定が通知され、これに従い、ＪＯＢＩＤに対応するレジスタ２２にマスク情報を設定し（無効ノードに対応する位置のビットに１を立てる）、もしくは、ノードのＭａｘ／Ｓｕｍの演算データ到着の完了で、該ノードに対応する位置のビットが１にセットされる。
【００６８】
データ格納バッファは、各ノード１０ｉの通知命令作成部１５からの通知を受け取り管理するバッファであり、通知受信格納バッファ２３と演算結果格納バッファ２５を備え、各々のバッファは、ＪＯＢ識別するシステムにユニークなＩＤ（ＪＯＢＩＤ）によって、データを格納するバッファ内アドレスが管理される（多重実行理機構）。
【００６９】
各ノードから通知されたデータは、一旦、通知受信格納バッファ２３に格納され、複数のＪＯＢＩＤの演算結果が同ノードから通知された場合でも、異なるＪＯＢＩＤのデータは別のアドレスに格納されるため、消えることがなく、かつ、演算優先順序により、可変に、Ｍａｘ／Ｓｕｍ演算部２４より読み出しが可能なため、先行する演算データが原因でデッドロックもしくはデータの消失は発生しない。
【００７０】
Ｍａｘ／Ｓｕｍ演算部２４は、各ノード、データ通知フラグレジスタ２２の設定により、優先順位を決め、各ノード間のＭａｘ／Ｓｕｍ演算を実行する。この際、Ｍａｘ／Ｓｕｍ演算部２４は、毎回、データ格納バッファの演算結果格納バッファ２５にＪＯＢＩＤとともに演算結果を渡し、指定したＩＤのアドレスにデータを格納させる。演算の優先順位の決め方が固定的に、若番のＪＯＢＩＤ及びノード番号から実行する方法や、優先順位を可変にして負荷を均等にする等、任意の方法が用いられる。
【００７１】
終了通知部２６は、演算実行する全てのノード間の演算が終了すると、演算完了を検出し、演算結果を、全ノードにブロードキャスト通知する。
【００７２】
具体的には、データ通知フラグレジスタ２２がもつＪＯＢＩＤ毎のＮビットのレジスタの各ビットが全て１の場合、終了通知部２６において、ＡＮＤ演算結果が１になり、出力通知の出力が有効（Ｖａｌｉｄ）になり、演算完了とともに、ブロードキャストで全ノードに対して最終結果を通知する。
【００７３】
なお、上記実施例では、返却先は、ＣＰＵとしたが、データ通信の返却先をメモリ（不図示）として、ＣＰＵは、該メモリ領域を参照することで、命令実行終了を知る構成としてもよい。
【００７４】
また、演算種類に関しては、特に、制限されるものでなく、最大値を求めるＭａｘ演算のみ、総和を求めるＳｕｍ演算のみとしてもよく、さらに、それ以外の四則演算やスクエアルート（ＳＱＲＴ）等の関数演算を行うものであってもよい。
【００７５】
次に、図１のマルチノードシステムの動作を、図２に示す動作フローを参照して説明する。なお、図１及び図２において、複数のノードと１つのクロスバースイッチによるマルチノードシステムが示されており、どのノードも少なくとも１つ以上のＣＰＵを備え、演算処理し、各々一部分を分担しながら、マルチノードＪＯＢを実行する。各ノードがどのノードからも同様な命令が発行でき処理できる能力をもつが、図に示した例では、説明のため、リクエスト元のノードからのみ命令が発行されているものとして、説明する。
【００７６】
図２（Ａ）及び図２（Ｂ）の（１）分配のフェーズにおいて、マスタプロセス（リクエスト元ノードのＣＰＵ（プロセス））から各プロセス（ＣＰＵ）へのクロスバースイッチ２０を介してのブロードキャスト通信を実行する（ステップＳ１１）。全プロセス（ＣＰＵ）への通知が完了すると（ステップＳ１２のｙｅｓ分岐）、各ノードでの演算が実行される。
【００７７】
より詳細には、図１のリクエスト元ノード１０１内において、ＣＰＵ１１は、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ／ＭＰＩ＿ＲＥＤＵＣＥ命令を処理するＭＰＩ専用命令を転送制御部１２に対して発行する。
【００７８】
ＭＰＩ専用命令は、
・マルチノードＪＯＢのシステムにユニークなＩＤ（ＪＯＢＩＤ）と、
・命令を演算実行する配列情報や命令を実行するノードの情報、
・命令の種類（命令種１：ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥか、ＭＰＩ＿ＲＥＤＵＣＥか、命令種２：Ｍａｘ演算、Ｓｕｍ演算等）、及び、
・返却先情報を持つ。ＭＰＩ専用命令は転送制御部１２に通知される。
【００７９】
次に、リクエスト元ノードの転送制御部１２は、ＣＰＵ１１から発行された上記ＭＰＩ専用命令を受け取り、転送制御部１２内に具備する専用命令待合せバッファ１３に、ＪＯＢＩＤと返却先情報を格納し、命令発行元フラグをＯＮにして保存する。
【００８０】
また、実行するノード情報より、マスク情報作成部１４が、クロスバースイッチ２０のデータ通知フラグレジスタ２２に対して通知するマスク情報を作成し、データ送信部１７よりクロスバースイッチ２０に対して通知する。
【００８１】
同様にして、マスク情報作成部１４では、命令種１、２や演算実行する配列情報及びＪＯＢＩＤをもつブロードキャスト通信命令を作成し、データ送信部１７より、クロスバースイッチに対して通知する。
【００８２】
クロスバースイッチ２０のデータ通知フラグレジスタ２２は、通知されたマスク情報により該当ＪＯＢＩＤの該当ノードの各ビット（ビットフラグ）にマスク情報を設定する。
【００８３】
ブロードキャスト通信については、既にクロスバースイッチが従来技術としてもつ機能であるクロスバースイッチの通信機構が動作し、クロスバースイッチ２０を経由し全ノードのＣＰＵ１１に対して通知される。
【００８４】
図２（Ａ）及び図２（Ｂ）の（２）演算フェーズにおいて、各ノードでは、ブロードキャスト通信によりクロスバーを介してＭａｘ／Ｓｕｍの演算実行のリクエストが、転送制御部１２のデータ受信部１６に通知される。
【００８５】
これを、データ受信部１６はＣＰＵ１１に通知し、ＣＰＵ１１にてＭａｘ／Ｓｕｍの演算が実行される。各ノードのＣＰＵ１１でＭａｘ／Ｓｕｍの演算実行後、得られたＭａｘ／Ｓｕｍの演算結果を、ＪＯＢＩＤや命令種別とともに、各ノードのＣＰＵ１１から転送制御部１２に通知専用命令として通知する。
【００８６】
図２（Ａ）及び図２（Ｂ）の（３）転送フェーズにおいて、クロスバースイッチ２０に各ノードから非ブロードキャスト通信で演算結果を通知する（ステップＳ１４）。各ノードの出力がそろったところで、各ノードのＭａｘ／Ｓｕｍをクロスバースイッチ２０で一括演算する（ステップＳ１６）。リクエスト元ノードを含め、全ノードにＭａｘ／Ｓｕｍ演算結果を通知し、リクエスト元ノードはＭａｘ／Ｓｕｍ演算結果を得る（ステップＳ１７）。
【００８７】
より詳細には、演算実行指示を受け取り演算を実行した各ノード内の転送制御部１２内に具備する通知命令作成部１５は、通知専用命令がＣＰＵ１１から送られてきた時に、通知情報を作成し、データ送信部よりＭａｘ／Ｓｕｍの結果をクロスバースイッチ２０のＭａｘ／Ｓｕｍ演算部２４に通知する。通知の際に、ノード内の専用待ち合わせバッファ１３に対してＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ命令実行時には、ＣＰＵ１１から、ＪＯＢＩＤと、返却先情報、および、命令発行元フラグをＯＮにして、情報を格納する。
【００８８】
クロスバースイッチ２０において、データ格納バッファで、データが滞留しデッドロックになるのを避けるために、ＪＯＢを識別するシステムにユニークなＩＤ（ＪＯＢＩＤ）でバッファ内アドレスを管理する機能を持つ。また、データ通知フラグレジスタ２２は、各ノードから演算データが送られてきたことや、演算完了を管理する演算フラグ（ＪＯＢＩＤに対応するレジスタ（Ｎビット）のノードに対応して設けられるビット）を格納すると共に、マスク情報作成部１４からの通知により、演算に使用しないノードのフラグをセットする。
【００８９】
クロスバースイッチ２０のＭａｘ／Ｓｕｍ演算部２４は、各ノードの通知命令作成部からの通知をデータ送信部経由で受け取り、演算結果格納バッファ（データ格納バッファ）２５のＪＯＢＩＤのアドレスに格納する。
【００９０】
クロスバースイッチ２０のＭａｘ／Ｓｕｍ演算部２４は、データ通知フラグレジスタ２２の設定により、データ格納バッファより計算中のＭａｘ／Ｓｕｍ値及び各ノードのＭａｘ／Ｓｕｍ値を取り出し、各ノード間のＭａｘ／Ｓｕｍ演算を実行し、この結果を、再び、演算結果格納バッファ（データ格納バッファ）２５のＪＯＢＩＤのアドレスに格納する。これを、ノード数分繰り返し実行し、対象とする全ノードのＭａｘ／Ｓｕｍ演算を実行する。
【００９１】
この際、Ｍａｘ／Ｓｕｍ演算部２４は、毎回、演算結果格納バッファ（データ格納バッファ）２５の指定されたＩＤのアドレスにデータを格納する。
【００９２】
終了通知部２６は、演算実行する全てのノード間の演算が終了すると、演算完了を検出し、演算結果を全ノードに通知する（終了通知が出力される際に該当ＪＯＢＩＤアドレスのデータ格納バッファの値はクリアされる）。
【００９３】
各ノードでは、返却データＪＩＤ比較部１８が、クロスバースイッチ２０からデータ受信部を通して通信を受け取り通信内容と等しいＪＩＤが、専用命令待合せバッファ１３の中にもあるか確認する。等しいものが存在する場合、返却データＪＩＤ比較部１８は、さらに、専用命令待合せバッファ１３内に格納されている命令発行元フラグの情報を参照し、命令発行元フラグより発行元でなければ、クロスバースイッチ２０より通知された返却情報、及び専用命令待合せバッファ１３の格納情報を廃棄し、命令の発行元であれば、該当ＣＰＵ１１に、その情報を返却し、専用命令待合せバッファ１３の情報のみ廃棄する。
【００９４】
以上のように動作することで、マルチノードＪＯＢのＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、ＭＰＩ＿ＲＥＤＵＣＥ命令を高速に実行する。
【００９５】
以上説明したように、本実施例においては、下記記載の作用効果を奏する。
【００９６】
マルチノードＪＯＢでのＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、ＭＰＩ＿ＲＥＤＵＣＥ命令の実行過程において、コネクション型のネットワークでは、全ノード（ノード数をＮとする）から１つのノードにデータを通知するために、通常Ｎ：１（２分岐ツリーでノード間転送の効率化を行った場合でも、ＬｏｇＮ：１）の通信が発生する。１つの転送ごとにコネクションをしなおすネットワークでありながら、クロスバースイッチまでの転送であれば、コネクション・ロックの必要がなく、ノードからいつでも転送可能である。
【００９７】
そこで、本発明は、クロスバースイッチに、ノード内転送データを送り、クロスバースイッチ内で、１つの結果になるまで、演算を行えるように演算部を、クロスバースイッチ内に具備したことにより、コネクション・ロックを要しなくし、コネクション・ロックのために費やされていた時間を、大幅に短縮し、マスチノードシステムのＪＯＢの実行を効率化、高速化することができる。
【００９８】
また、ノードの転送制御部において、ＭＰＩ＿ＡＬＬ＿ＲＥＤＵＣＥ、ＭＰＩ＿ＲＥＤＵＣＥ命令時のＣＰＵとの通信を行うため、ソフトウェア（ＳＷ）として、従来技術の延長線上（かつソフトウェア処理が減る）形で、機能を実現しているので、修正が容易に対応でき、ソフトウェア資産を有効に活用することができる。
【００９９】
次に、本発明の他の実施例について説明する。本発明の第２の実施例として、その基本的構成は上記の通りであるが、クロスバースイッチ２０のデータ通知フラグレジスタ２２についてさらに工夫が施されている。なお、ノードは、図１の前記実施例と同一構成とされる。
【０１００】
図３は、本発明の第２の実施例の構成を示す図である。図３において、データ通知フラグレジスタ２２は、ＪＯＢＩＤごとに、Ｍａｘ／Ｓｕｍデータ通知カウンタ２８を備えることで、図１に示したように、フラグを持つ場合よりも、ハードウェア量を削減し、ほぼ同様な機能を実現する。
【０１０１】
本実施例では、マスク設定時に、図１の前記実施例のように、演算に関与しないノードのビットを１にする代わりに、演算に関与する（対象となる）ノード数をカウンタに設定する。例えば１０個のノードに演算指示を行う場合、Ｍａｘ／Ｓｕｍデータ通知カウンタを１０とする。
【０１０２】
また、特に制限されないが、Ｍａｘ／Ｓｕｍデータ通知カウンタ２８としてダウンカウンタを用いた場合、ＪＯＢＩＤの演算が実行されるたびに、Ｍａｘ／Ｓｕｍデータ通知カウンタ２８を減算していき、Ｍａｘ／Ｓｕｍデータ通知カウンタ２８のカウント値が０になったときに、終了とみなして、出力を各ノードに通知するように変更する。なお、ダウンカウンタを用いた場合と比較して、ハードウェア量は多くなるが、Ｍａｘ／Ｓｕｍデータ通知カウンタ２８の構成を変え、設定値を格納するレジスタと別に、加算するカウンタを設け、終了を判定する回路を備えて構成するようにしてもよい。
【０１０３】
このように、本実施例では、データ通知フラグレジスタをカウンタという構成で実現しているので、ハードウェア量を削減することができる、という効果が得られる。
【０１０４】
以上本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみに限定されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図面の簡単な説明】
【０１０５】
【図１】本発明の一実施例の構成を示す図である。
【図２】（Ａ）、（Ｂ）は本発明の一実施例の動作を説明するための図である。
【図３】本発明の第２の実施例の構成を示す図である。
【図４】（Ａ）、（Ｂ）は従来のマルチノードシステムのＪＯＢ実行動作を説明するための図である。
【符号の説明】
【０１０６】
１０  ノード
１１  ＣＰＵ
１２  転送制御部
１３  専用命令待ち合わせバッファ
１４  マスク情報作成部
１５  通知命令作成部
１６  データ受信部
１７  データ送信部
１８  返却データＪＩＤ比較部
１９  他の命令発行機構
２０  クロスバースイッチ
２２  データ通知フラグレジスタ
２３  通知受信格納バッファ
２４  Ｍａｘ／Ｓｕｍ演算部
２５  演算結果格納バッファ
２６  終了通知部
２８  Ｍａｘ／Ｓｕｍデータ通知カウンタ
【図１】
2006277635.tif 000003
【図２】
2006277635.tif 000004
【図３】
2006277635.tif 000005
【図４】
2006277635.tif 000006