(57)【特許請求の範囲】
【請求項１】
各々複数のネットワークアダプタを有する３つ以上のノードと、
前記各ノードのネットワークアダプタ間を接続するクロスバースイッチとを有し、
各前記ノードは、保持しているデータを、前記複数のネットワークアダプタの数＋１の数の分割数で、複数個のデータに分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、前記クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送し、
前記ノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、
前記複数のノードは、前記ネットワークアダプタから、前記クロスバースイッチを介し、少なくとも１つの前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、前記少なくとも１つのノードで、演算結果を集約する
ことを特徴とする並列計算機。
【請求項２】
前記複数のノードは、前記ネットワークアダプタから、前記クロスバースイッチを介し、他の複数の前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、全前記複数のノードで、演算結果を集約する
ことを特徴とする請求項１の並列計算機。
【請求項３】
複数のネットワークアダプタを有する複数のノードの保持するデータを集約して、データをリダクションする並列計算機のリダクション処理方法において、
各前記ノードが、保持しているデータを、前記複数のネットワークアダプタの数＋１の数の分割数で、複数個のデータに分割するステップと、
前記各ノードが、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送するステップと、
前記ノードの各々が、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行するステップと、
前記複数のノードが、前記ネットワークアダプタから、前記クロスバースイッチを介し、少なくとも１つの前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、前記少なくとも１つのノードで、演算結果を集約するステップとを有する
ことを特徴とする並列計算機のリダクション処理方法。
【請求項４】
前記集約ステップは、前記複数のノードが、前記ネットワークアダプタから、前記クロスバースイッチを介し、他の複数の前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、全前記複数のノードで、演算結果を集約するステップを有する
ことを特徴とする請求項３の並列計算機のリダクション処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータノードがネットワークで接続された並列計算機において、複数のコンピュータノードの計算結果を集約し、リダクションするリダクション処理方法及び並列計算機に関し、特に、各コンピュータノードに設けた複数のネットワークアダプタを利用して、効率良くリダクション処理する並列計算機のリダクション処理方法及び並列計算機に関する。
【背景技術】
【０００２】
計算機システムの処理の高速化の要求に伴い、コンピュータを含むノードを複数設け、これら複数のノードをネットワークで接続した並列計算型コンピュータシステムが提供されている。例えば、並列計算機の分野では、複数のノードで並列に計算処理し、これらの処理データを、ネットワークを介し、やりとりする。このような並列計算機においては、大規模なものでは、数百〜数千ノードで構成される。
【０００３】
このように、並列計算機において、複数のノードの持つデータを集めて、指定された演算を実行する。これをリダクション処理という。このようなリダクション処理としては、全ノードのデータの総和を求める演算や、全ノードのデータの最大値や最小値を求める演算などがある。
【０００４】
図１１及び図１２は、従来の並列計算機のリダクション処理の説明図である。図１１に示すように、複数（ここでは、４つ）のノード１００，１０１，１０２，１０３が、図示しないネットワークで接続される。この各ノード１００，１０１，１０２，１０３は、並列転送を可能とするため、複数（ここでは、３つ）のネットワークアダプタ１１０Ａ，１１０Ｂ，１１０Ｃを有する。尚、図では、ノード１００のみ、ネットワークアダプタに参照番号を付しているが、他のノード１０１，１０２，１０３も同一である。
【０００５】
この構成において、複数のノード１００〜１０３が持っているデータを、集めて、指定された演算（例えば、総和等）を実施する場合には、ノード１０１からノード１００に、ノード１０１のデータを転送し、ノード１０３からノード１０２に、ノード１０３のデータを転送し、先ず、ノード１００で、ノード１００と１０１のデータの演算を、ノード１０２で、ノード１０２と１０３のデータの演算を、各々実行する。次に、ノード１０２の演算結果を、ノード１００に転送し、ノード１００で、ノード１００のデータとノード１０２のデータとの演算を行う。
【０００６】
例えば、図１２の１２ブロックの例で説明する。尚、図中、Ｄ０，Ｄ１，Ｄ２，Ｄ３は、各ノード１００，１０１，１０２，１０３が持つデータであり、Ｄ０１，Ｄ２３は、ノード１００と１０１のデータの演算結果、ノード１０２と１０３のデータの演算結果であり、Ｄ０１２３は、ノード１００〜１０３の演算結果である。
【０００７】
図１２に示すように、各ノード１００〜１０３が持っている１２ブロックのデータを、３つに分割し、３つのネットワークアダプタ１１０Ａ，１１０Ｂ，１１０Ｃを使用して、ノード１０１，１０３からノード１００，１０２に、データ演算結果Ｄ１〜Ｏ１，Ｄ３〜Ｏ３を転送する。ノード１００，１０２では、ノード１００と１０１のデータの演算結果Ｄ０１〜Ｏ０１、ノード１０２と１０３のデータの演算結果Ｄ２３〜Ｏ２３を演算する。
【０００８】
次に、ノード１０２から演算結果Ｄ２３〜Ｏ２３を、ノード１００に転送する。ノード１００は、演算結果Ｄ０１〜Ｏ１と演算結果Ｄ２３〜Ｏ２３から、ノード１００〜１０３の演算結果Ｄ０１２３〜Ｏ０１２３を演算する。
【０００９】
このように、従来技術では、ノード１００，１０１，１０２，１０３が、ネットワークアダプタを複数持つことで、並列転送により、リダクション処理に要する時間を短縮していた（例えば、特許文献１）。
【特許文献１】特開２００１−３２５２３９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来技術では、第１回目の転送後、２つのノードが演算を実行し、他の２つのノードは、転送するのみであり、演算を実行していない。このため、演算するノードが限られ、リダクション処理の高速化が困難である。
【００１１】
従って、本発明の目的は、多数のノードのデータを集めて、演算するリダクション処理を高速化するための並列計算機のリダクション処理方法及び並列計算機を提供することにある。
【００１２】
又、本発明の他の目的は、多数のノードがリダクション処理の演算に参加して、リダクション処理を高速化するための並列計算機のリダクション処理方法及び並列計算機を提供することにある。
【００１３】
更に、本発明の他の目的は、リダクション処理を高速化し、並列計算の能力を向上するための並列計算機のリダクション処理方法及び並列計算機を提供することにある。
【課題を解決するための手段】
【００１４】
この目的の達成のため、本発明の並列計算機は、各々複数のネットワークアダプタを有する３つ以上のノードと、前記各ノードのネットワークアダプタ間を接続するクロスバースイッチとを有し、各前記ノードは、保持しているデータを、前記複数のネットワークアダプタの数＋１の数の分割数で、複数個のデータに分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、前記クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送し、前記ノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数のノードは、前記ネットワークアダプタから、前記クロスバースイッチを介し、少なくとも１つの前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、前記少なくとも１つのノードで、演算結果を集約する。
【００１５】
又、本発明は、複数のネットワークアダプタを有する複数のノードの保持するデータを集約して、データをリダクションする並列計算機のリダクション処理方法であって、各前記ノードが、保持しているデータを、前記複数のネットワークアダプタの数＋１の数の分割数で、複数個のデータに分割するステップと、前記各ノードが、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送するステップと、前記ノードの各々が、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行するステップと、前記複数のノードが、前記ネットワークアダプタから、前記クロスバースイッチを介し、少なくとも１つの前記ノードの異なる複数のネットワークアダプタに、前記リダクション演算結果を転送し、前記少なくとも１つのノードで、演算結果を集約するステップとを有する。
【００１６】
更に、本発明では、好ましくは、前記各ノードは、保持しているデータを、複数個のデータに分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタを介し、他の複数のノードに転送する。
【００１７】
更に、本発明では、好ましくは、前記複数のノードは、前記ネットワークアダプタを介し、他の複数の前記ノードに、前記リダクション演算結果を転送する。
【００１８】
更に、本発明では、好ましくは、前記各ノードは、前記リダクション処理するデータを、前記ネットワークアダプタの数に従った分割数で、分割して、前記分割データを作成する。
【００１９】
更に、本発明では、好ましくは、前記各ノードは、前記分割データを、前記ネットワークアダプタの数の前記複数のノードに、転送する。
【００２０】
更に、本発明では、好ましくは、前記各ノードは、前記ネットワークアダプタの数＋１の数の分割数で、分割して、前記分割データを作成する。
【００２１】
更に、本発明では、好ましくは、前記ノードの各々は、前記分割されたデータを、前記複数のノード間で、前記ネットワークアダプタを重複使用しないように決められたネットワークアダプタを介し、前記他のノードに転送する。
【００２２】
更に、本発明では、好ましくは、前記各ネットワークアダプタが、前記クロスバースイッチと、ネットワークを介し接続される。
【００２３】
更に、本発明では、好ましくは、前記各ノードが、少なくともＣＰＵと、メモリと、前記複数のネットワークアダプタとで構成される。
【００２４】
更に、本発明では、好ましくは、前記複数のノードを複数のノードグループにグループ化した各ノードグループ内で、前記各ノードが、保持しているデータを、複数個のデータに分割し、前記分割したデータを、前記ノードグループ内の他の複数のノードに転送し、前記ノードグループ内のノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数のノードは、少なくとも１の前記ノードに、前記リダクション演算結果を転送し、集約し、前記集約した各ノードが、複数個のデータに分割し、前記分割したデータを、前記集約した他の複数のノードに転送し、前記集約したノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数の集約したノードは、少なくとも１つの前記集約したノードに、前記リダクション演算結果を転送し、ノードグループ間のリダクション演算結果を集約する。
【発明の効果】
【００２５】
各ノードは、保持しているデータを、複数のネットワークアダプタの数＋１の数の分割数で、分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送し、各ノードは、自身のデータと受信したデータを集約して、演算し、次に、各ノードが、それぞれの演算結果を、集約ノードに転送する。このため、全ノードが、それぞれ分割されたデータの演算を実行しているため、全体の計算量が同じであれば、それだけ処理が早く終了する。しかも、１回目、２回目のデータ転送で、より多くのノード（ネットワークアダプタ）が、データ転送に参加するようにしているため、高速に転送処理を実現でき、転送時間も短縮できる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を、並列計算機の構成、第１の実施の形態、第２の実施の形態、第３の実施の形態、他の実施の形態の順で説明するが、本発明は、この実施の形態に限られない。
【００２７】
――並列計算機の構成――
図１は、本発明の並列計算機の一実施の形態の構成図、図２は、図１のノードのブロック図、図３は、図１のネットワークアダプタのブロック図、図４は、図１の転送データのフレームフォーマット図である。
【００２８】
図１に示すように、並列計算機は、複数（ここでは、４つ）のノード１０，１１，１２，１３と、３つのクロスバースイッチ（図中、ＳＷＡ，ＳＷＢ，ＳＷＣ）２０，２１，２２とを有する。各ノード１０，１１，１２，１３は、３つのネットワークアダプタ（図中、Ａ，Ｂ，Ｃで示す）１４Ａ，１４Ｂ，１４Ｃを有する。各ノード１０，１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃは、各々クロスバースイッチ２０，２１，２２を介して、相互に通信する。即ち、各ノード１０，１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃのそれぞれは、Ｅｔｈｅｒｎｅｔ（登録商標）等の伝送路を介し、クロスバースイッチ２０，２１，２２に接続される。
【００２９】
このノード１０（１１，１２，１３）は、図２に示すように、ＣＰＵ４０と、メモリ４４と、ＩＯアダプタ４６と、前述のネットワークアダプタ１４Ａ〜１４Ｃとが、システムコントローラ４２を介して接続された計算機である。又、このＣＰＵ４０，メモリ４４、ＩＯアダプタ４６、ネットワークアダプタ１４Ａ〜１４Ｃの数は、このノードに必要な処理能力に応じて、複数設けても良い。
【００３０】
図１及び図２のネットワークアダプタ１４Ａ（１４Ｂ，１４Ｃ）は、図３に示すように、システムコントローラ４２と接続するホストインターフェイス制御回路５０と、送信制御回路５２と、伝送路に接続されるネットワークインターフェイス制御回路５４と、受信制御回路５６とで構成される。このネットワークアダプタ１４Ａ（１４Ｂ，１４Ｃ）は、ノード間のデータ通信を担当する。
【００３１】
ネットワークアダプタ１４Ａ（１４Ｂ，１４Ｃ）を介してノード間のデータ転送をする場合には、図４に示すようなフレーム形式で通信する。図４に示すフレーム形式は、Ｅｔｈｅｒｎｅｔ（登録商標）で使用されるフレーム形式を示しており、宛先アドレスと、送信元アドレスと、フレームタイプ（例えば、コマンド種別、データサイズ等）と、データ、フレームチエックサム（例えば、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）)とからなる。データ領域のデータ長（データサイズ）は、可変であり、ノード間を転送するデータは、必要に応じて、複数個のフレームに分割して、転送する。
【００３２】
――第１の実施の形態――
図５は、本発明のリダクション処理の第１の実施の形態の説明図、図６は、図５のリダクション処理のデータの流れを示す図、図７は、図５のノードの転送／演算処理フロー図、図８は、ノードの集約処理フロー図である。
【００３３】
図５に示すように、各ノード１０，１１，１２，１３は、リダクション処理すべきデータブロックをｎ分割し、各ノード１０、１１，１２、１３に、別々のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃを介して、転送する。受信したノード１０，１１，１２，１３は、１／ｎずつのデータを集約して、演算する（１）。次に、各ノード１１，１２，１３は、自分が演算した結果を、ノード１０に転送し、ノード１０は、受信した結果と、自身で演算した結果を集約する（２）。
【００３４】
図６も参照して、図１２と同一のデータ量の例で説明する。尚、図中、Ｄ０〜Ｄ３、Ｅ０〜Ｅ３，・・・、Ｏ０〜Ｏ３は、各ノード１０，１１，１２，１３が持つ１２ブロックのデータであり、Ｄ０１２３〜Ｏ１２３は、リダクション処理の演算結果を示す。
【００３５】
図６に示すように、各ノード１０〜１３が持っている１２ブロックのデータＤ０〜Ｏ０、Ｄ１〜Ｏ１，Ｄ２〜Ｏ２、Ｄ３〜Ｏ３を、４つに分割する。ノード１０，１１，１２，１３は、３つのネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃを使用して、４つに分割されたデータ群の３つのデータ群を、別々のノード１０，１１，１２、１３に転送する。
【００３６】
例えば、ノード１０は，１２ブロックのデータＤ０〜Ｏ０の内、データＧ０〜Ｉ０，Ｊ０〜Ｌ０，Ｍ０〜Ｏ０を、各々、ノード１１，１２，１３に転送する。同様に、ノード１１は，１２ブロックのデータＤ１〜Ｏ１の内、データＤ１〜Ｆ１，Ｊ１〜Ｌ１，Ｍ１〜Ｏ１を、各々、ノード１０，１２，１３に転送する。ノード１２は，１２ブロックのデータＤ２〜Ｏ２の内、データＤ２〜Ｆ２，Ｇ２〜Ｉ２，Ｍ２〜Ｏ２を、各々、ノード１０，１１，１３に転送する。ノード１３は，１２ブロックのデータＤ３〜Ｏ３の内、データＤ３〜Ｆ３，Ｇ３〜Ｉ３，Ｊ３〜Ｌ３を、各々、ノード１０，１１，１２に転送する。
【００３７】
従って、ノード１０は、データＤ０〜Ｆ０，データＤ１〜Ｆ１、データＤ２〜Ｆ２、データＤ３〜Ｆ３を集約し、ノード１１は、データＧ０〜Ｉ０，データＧ１〜Ｉ１、データＧ２〜Ｉ２、データＧ３〜Ｉ３を集約し、ノード１２は、データＪ０〜Ｌ０，データＪ１〜Ｌ１、データＪ２〜Ｌ２、データＪ３〜Ｌ３を集約し、ノード１３は、データＭ０〜Ｏ０，データＭ１〜Ｏ１、データＭ２〜Ｏ２、データＭ３〜Ｏ３を集約する。
【００３８】
ノード１０は、データＤ０〜Ｆ０，データＤ１〜Ｆ１、データＤ２〜Ｆ２、データＤ３〜Ｆ３を集約して、演算（例えば、総和）し、演算結果Ｄ０１２３〜Ｆ０１２３を得る。同様に、ノード１１は、データＧ０〜Ｉ０，データＧ１〜Ｉ１、データＧ２〜Ｉ２、データＧ３〜Ｉ３を集約して、演算（例えば、総和）し、演算結果Ｇ０１２３〜Ｉ０１２３を得る。ノード１２は、データＪ０〜Ｌ０，データＪ１〜Ｌ１、データＪ２〜Ｌ２、データＪ３〜Ｌ３を集約して、演算（例えば、総和）し、演算結果Ｊ０１２３〜Ｌ０１２３を得る。ノード１３は、データＭ０〜Ｏ０，データＭ１〜Ｏ１、データＭ２〜Ｏ２、データＭ３〜Ｏ３を集約して、演算（例えば、総和）し、演算結果Ｍ０１２３〜Ｏ０１２３を得る。
【００３９】
次に、各ノードで演算した結果を、ノード１０に集約する。即ち、各ノード１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃからノード１０に、演算結果Ｇ０１２３〜Ｉ０１２３，Ｊ０１２３〜Ｌ０１２３、Ｍ０１２３〜Ｏ０１２３を転送する。
【００４０】
このように、各ノード１０，１１，１２，１３は、４分割したデータの３つのデータを、他のノードに転送し、各ノードは、１／４ずつのデータを集約して、演算する。次に、ノード１１，１２，１３が、それぞれの演算結果を、ノード１０に転送する。
【００４１】
即ち、リダクション処理の演算内容は、従来技術と本発明で同一とすると、演算量に変わりない。従来例では、実際に演算しているのは、ノード１０，１２であり、ノード１１，１３は、データ転送するのみである。本発明では、全ノードが、それぞれ分割されたデータの演算を実行しているため、全体の計算量が同じであれば、それだけ処理が早く終了する。
【００４２】
しかも、本発明では、１回目、２回目のデータ転送で、より多くのノード（ネットワークアダプタ）が、データ転送に参加するようにしているため、高速に転送処理を実現でき、転送時間も短縮できる。
【００４３】
例えば、ネットワーク全体の総転送量に対する従来技術と本実施例との転送時間を比較すると、従来技術では、総転送量÷３×２＝２／３となるのに対し、本実施例では、総転送量÷４×２＝１／２となる。従って、本実施例では、従来技術の３／４の時間で、データ転送が可能となる。
【００４４】
又、この実施例では、第１回目、第２回目の転送において、送信ネットワークアダプタと受信ネットワークアダプタとの接続関係を、重複しないように、選択することにより、１回の転送で済むようにしている。
【００４５】
図７は、各ノードの処理フロー図である。
【００４６】
（Ｓ１０）各ノード１０，１１，１２，１３のＣＰＵ４０は、リダクションするデータブロックを、複数（図６では、４つ）に分割する。この分割数は、転送先ノード数やネットワークアダプタ数であると、前述のリダクション演算処理の効果を最大限発揮する。
【００４７】
（Ｓ１２）次に、ノード１０，１１，１２，１３のＣＰＵ４０は、ネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃに、分割されたデータブロック（図６では、３ブロック）を、別々のノード１０、１１，１２，１３に転送するように、指示する。これにより、ノード１０，１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃは、分割されたデータブロックを、ノード１０，１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃに転送する。
【００４８】
（Ｓ１４）各ノード１０，１１，１２，１３のＣＰＵ４０は、転送しなかったデータと、他のノードから受け取ったデータをリダクション演算処理して、演算結果を得る。
【００４９】
次に、図８は、ノードの集約処理フロー図である。
【００５０】
（Ｓ２０）各ノード１１，１２，１３は、集約ノード１０を宛先として、演算結果を、転送すべきノード１０に転送する。
【００５１】
このように、各ノード１０，１１，１２，１３のＣＰＵ４０が、データ分割、転送、演算処理を並列に実行することにより、容易に、リダクション処理時間を短縮できる。
【００５２】
――第２の実施の形態――
図９は、本発明の第２の実施の形態のリダクション処理の説明図である。第１の実施の形態は、演算結果は、１つの集約ノード１０で、集約しているが、他のノードでも、演算結果を知りたい場合がある。この実施の形態は、第２回目のデータ転送で、全ノードで演算結果を得ることにより、全ノードで、演算結果を共有する。
【００５３】
図９は、図６の第２回目のデータ転送を示しており、第１回目の転送／演算処理は、図６と同一である。
【００５４】
図９に示すように、第２回目の転送において、各ノードで演算した結果を、各ノード１０，１１，１２，１３に転送する。即ち、各ノード１０，１１，１２，１３のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃからノード１０，１１，１２，１３に、演算結果Ｇ０１２３〜Ｉ０１２３，Ｊ０１２３〜Ｌ０１２３、Ｍ０１２３〜Ｏ０１２３を転送する。
【００５５】
この例でも、各ノード１０，１１，１２，１３は、４分割したデータの３つのデータを、他のノードに転送し、各ノードは、１／４ずつのデータを集約して、演算する。次に、全ノード１０、１１，１２，１３が、それぞれの演算結果を、全ノード１０，１１，１２，１３に転送する。
【００５６】
即ち、第１の実施の形態では、ノード１０の全ネットワークアダプタ、ノード１１のネットワークアダプタ１４Ａ，１４Ｂ，ノード１２のネットワークアダプタ１４Ａ，１４Ｃ，ノード１３のネットワークアダプタ１４Ｂ，１４Ｃは、使用されていないので、これを使用して、演算結果の共有のため、データ転送を行う。
【００５７】
――第３の実施の形態――
図１０は、本発明の第３の実施の形態のブロードキャスト処理の説明図である。この例は、各々ネットワークアダプタを３つ持つ１６個のノード０〜１５で構成された並列計算機において、ノード０〜１５のリダクション処理を行う例である。尚、図１０では、図１及び図５と同一の各ノードを、連番を符って、示してある。
【００５８】
先ず、１６個のノードを、４つのノードグループ０〜３，４〜７，８〜１１，１２〜１５に分け、各ノードグループを対象に、第１の実施の形態と同様の処理を実行する。
【００５９】
即ち、各ノードグループ０〜３，４〜７，８〜１１，１２〜１５内で、ノード０〜３，４〜７，８〜１１，１２〜１５は、リダクション処理すべきデータをｎ分割し、グループ内の各ノード０〜３、４〜７、８〜１１，１２〜１５に、別々のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃで、転送する。受信したノード０〜３，４〜７，８〜１１，１２〜１５は、１／ｎずつのデータを集約して、演算する（１）。次に、各ノード１〜３，５〜７，９〜１１、１３〜１５は、自分が演算した結果を、ノード０，４，８、１２に転送し、ノード０，４，８、１２で、受信した結果と、自身で演算した結果を集約する（２）。
【００６０】
次に、各グループのデータを集約したノード０，４，８，１２は、第１の実施の形態と同様に、リダクション処理すべきデータをｎ分割し、各ノード０、４、８，１２に、別々のネットワークアダプタ１４Ａ，１４Ｂ，１４Ｃで、転送する。受信したノード０，４，８，１２は、１／ｎずつのデータを集約して、演算する（３）。次に、ノード４，８，１２は、自分が計算した結果を、ノード０に転送し、ノード０は、受信した結果と、自身で演算した結果を集約する（４）。
【００６１】
このように、第１の実施の形態の処理を繰り返すことにより、ノード数が増加しても、同様に、リダクション処理を実行できる。即ち、第１の実施の形態を、２段階実行すれば、最大１６ノードまで対応でき、３段階実行すれば、最大６４ノードまで対応できる。これにより、段階を増やすことにより、ノード数の増加に対応できる。
【００６２】
このように、１度に、リダクション処理できる最大のノード数は、ネットワークアダプタの数＋１であり、ノード数が更に増える場合には、２回の処理を、２段、３段と行うことにより、リダクション処理できるノード数を増加できる。
【００６３】
――他の実施の形態――
前述の実施の形態では、４ノードの並列計算機で説明したが、３ノード以上の並列計算機に適用できる。又、ノードの構成を、ＣＰＵ，メモリ等のコンピュータユニットで説明したが、他のコンピュータ構成のものでも良い。更に、伝送路のフォーマットは、Ｅｔｈｅｒｎｅｔ（登録商標）に限らず、他のネットワークプロトコルを適用できる。
【００６４】
（付記１）各々複数のネットワークアダプタを有する３つ以上のノードと、前記各ノードのネットワークアダプタ間を接続するクロスバースイッチとを有し、各前記ノードは、保持しているデータを、複数個のデータに分割し、前記分割したデータを、各々異なるネットワークアダプタを介し、他の複数のノードに転送し、前記ノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数のノードは、前記ネットワークアダプタを介し、少なくとも１つの前記ノードに、前記リダクション演算結果を転送し、集約することを特徴とする並列計算機。
【００６５】
（付記２）前記各ノードは、保持しているデータを、複数個のデータに分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタを介し、他の複数のノードに転送することを特徴とする付記１の並列計算機。
【００６６】
（付記３）前記複数のノードは、前記ネットワークアダプタを介し、他の複数の前記ノードに、前記リダクション演算結果を転送することを特徴とする付記１の並列計算機。
【００６７】
（付記４）前記各ノードは、前記リダクション処理するデータを、前記ネットワークアダプタの数に従った分割数で、分割して、前記分割データを作成することを特徴とする付記１の並列計算機。
【００６８】
（付記５）前記各ノードは、前記分割データを、前記ネットワークアダプタの数の前記複数のノードに、転送することを特徴とする付記１の並列計算機。
【００６９】
（付記６）前記各ノードは、前記ネットワークアダプタの数＋１の数の分割数で、分割して、前記分割データを作成することを特徴とする付記４の並列計算機。
【００７０】
（付記７）前記ノードの各々は、前記分割されたデータを、前記複数のノード間で、前記ネットワークアダプタを重複使用しないように決められたネットワークアダプタを介し、前記他のノードに転送することを特徴とする付記１の並列計算機。
【００７１】
（付記８）前記各ネットワークアダプタが、前記クロスバースイッチと、ネットワークを介し接続されたことを特徴とする付記１の並列計算機。
【００７２】
（付記９）前記各ノードが、少なくともＣＰＵと、メモリと、前記複数のネットワークアダプタとで構成されたことを特徴とする付記１の並列計算機。
【００７３】
（付記１０）前記複数のノードを複数のノードグループにグループ化した各ノードグループ内で、前記各ノードが、保持しているデータを、複数個のデータに分割し、前記分割したデータを、前記ノードグループ内の他の複数のノードに転送し、前記ノードグループ内のノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数のノードは、少なくとも１つの前記ノードに、前記リダクション演算結果を転送し、集約し、前記集約したノードが、複数個のデータに分割し、前記分割したデータを、前記集約した他の複数のノードに転送し、前記集約したノードの各々は、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行し、前記複数の集約したノードは、少なくとも１つの前記集約したノードに、前記リダクション演算結果を転送し、ノードグループ間のリダクション演算結果を集約することを特徴とする並列計算機。
【００７４】
（付記１１）複数のネットワークアダプタを有する複数のノードの保持するデータを集約して、データをリダクションする並列計算機のリダクション処理方法において、各前記ノードが、保持しているデータを、複数個のデータに分割するステップと、前記各ノードが、前記分割したデータを、各々異なるネットワークアダプタを介し、他の複数のノードに転送するステップと、前記ノードの各々が、前記受け取った分割されたデータと保持したデータとのリダクション演算を実行するステップと、前記複数のノードが、前記ネットワークアダプタを介し、少なくとも１つの前記ノードに、前記リダクション演算結果を転送し、集約するステップとを有することを特徴とする並列計算機のリダクション処理方法。
【００７５】
（付記１２）前記転送ステップは、前記各ノードは、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタを介し、他の複数のノードに転送するステップからなることを特徴とする付記１１の並列計算機のリダクション処理方法。
【００７６】
（付記１３）前記集約ステップは、前記複数のノードが、前記ネットワークアダプタを介し、他の複数の前記ノードに、前記リダクション演算結果を転送するステップを有することを特徴とする付記１１の並列計算機のリダクション処理方法。
【００７７】
（付記１４）前記分割ステップは、前記各ノードが、前記リダクション処理するデータを、前記ネットワークアダプタの数に従った分割数で、分割して、前記分割データを作成するステップからなることを特徴とする付記１１の並列計算機のリダクション処理方法。
【００７８】
（付記１５）前記転送ステップは、前記各ノードが、前記分割データを、前記ネットワークアダプタの数の前記複数のノードに、転送するステップからなることを特徴とする付記１１の並列計算機のリダクション処理方法。
【００７９】
（付記１６）前記分割ステップは、前記各ノードが、前記ネットワークアダプタの数＋１の数の分割数で、分割して、前記分割データを作成するステップからなることを特徴とする付記１４の並列計算機のリダクション処理方法。
【００８０】
（付記１７）前記転送ステップは、前記受け取った分割されたデータを、前記複数のノード間で、前記ネットワークアダプタを重複使用しないように決められたネットワークアダプタを介し、前記分割データを他のノードに転送するステップからなることを特徴とする付記１１の並列計算機のリダクション処理方法。
【００８１】
（付記１８）前記各ネットワークアダプタが、前記クロスバースイッチと、ネットワークを介し接続されたことを特徴とする付記１１の並列計算機のリダクション処理方法。
【００８２】
（付記１９）前記各ノードが、少なくともＣＰＵと、メモリと、前記複数のネットワークアダプタとで構成されたことを特徴とする付記１１の並列計算機のリダクション処理方法。
【００８３】
（付記２０）前記複数のノードを複数のノードグループにグループ化した各ノードグループ内で、前記分割ステップ、前記転送ステップ、前記演算ステップ、前記集約ステップを実行するステップと、前記集約した複数のノードが、前記分割ステップ、前記転送ステップ、前記演算ステップ、前記集約ステップを実行するステップとを更に有することを特徴とする付記１１の並列計算機のリダクション処理方法。
【産業上の利用可能性】
【００８４】
並列計算機を構成する各ノードは、保持しているデータを、複数のネットワークアダプタの数＋１の数の分割数で、分割し、自身でリダクション演算するデータ以外の分割したデータを、各々異なるネットワークアダプタから、クロスバースイッチを介し、他の複数のノードの対応するネットワークアダプタに転送し、各ノードは、自身のデータと受信したデータを集約して、演算し、次に、各ノードが、それぞれの演算結果を、集約ノードに転送する。このため、全ノードが、それぞれ分割されたデータの演算を実行しているため、全体の計算量が同じであれば、それだけ処理が早く終了する。しかも、１回目、２回目のデータ転送で、より多くのノード（ネットワークアダプタ）が、データ転送に参加するようにしているため、高速に転送処理を実現でき、転送時間も短縮できる。
【図面の簡単な説明】
【００８５】
【図１】本発明の一実施の形態の並列計算機の構成図である。
【図２】図１のノードの構成図である。
【図３】図１及び図２のネットワークアダプタの構成図である。
【図４】図１の伝送フレームのフォーマット図である。
【図５】本発明の第１の実施の形態のリダクション処理の説明図である。
【図６】図５の第１の実施の形態のデータの流れ図である。
【図７】図５の第１の実施の形態のノードの転送／演算処理フロー図である。
【図８】図５の第１の実施の形態のノードの転送／集約処理フロー図である。
【図９】本発明の第２の実施の形態のリダクション処理の説明図である。
【図１０】本発明の第３の実施の形態のリダクション処理の説明図である。
【図１１】従来技術のリダクション処理の説明図である。
【図１２】図１１のデータの流れ図である。
【符号の説明】
【００８６】
１０，１１，１２，１３，１００，１０１，１０２，１０３  ノード
１４Ａ，１４Ｂ，１４Ｃ、１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄ  ネットワークアダプタ
２０，２１，２２  クロスバースイッチ
４０  ＣＰＵ
４２  システムコントローラ
４４  メモリ
４６  ＩＯアダプタ
５０  ホスト  インターフェイス回路
５２  送信制御回路
５４  ネットワーク  インターフェイス回路
５６  受信制御回路
【図１】
0004546413.tif 000002
【図２】
0004546413.tif 000003
【図３】
0004546413.tif 000004
【図４】
0004546413.tif 000005
【図５】
0004546413.tif 000006
【図６】
0004546413.tif 000007
【図７】
0004546413.tif 000008
【図８】
0004546413.tif 000009
【図９】
0004546413.tif 000010
【図１０】
0004546413.tif 000011
【図１１】
0004546413.tif 000012
【図１２】
0004546413.tif 000013