(57)【特許請求の範囲】
【請求項１】
プロセッサと通信部を含むノードを複数備え、前記複数のノードを接続するスイッチとを備えた並列計算機システムにおいて、
前記ノードとスイッチとを接続する第１のネットワークと、
前記複数のノードを部分的に接続する第２のネットワークと、
を備え、
前記第１のネットワークは、前記ノードと接続するスイッチを含み、
前記第２のネットワークは、前記スイッチに接続される複数のノードのうち隣り合う２つのノードでペアを構成し、前記ペアを構成したノード間のみを接続し、前記ペアを構成するノードはひとつのペアのみに所属し、他のペアと重複しないことを特徴とする並列計算機システム。
【請求項２】
前記第１のネットワークは、
ファットツリーまたは多段クロスバネットワークで構成したことを特徴とする請求項１に記載の並列計算機システム。
【請求項３】
前記第１のネットワークは、
前記ノードと接続する第１のスイッチと、
前記第１のスイッチ同士を接続する第２のスイッチと、を備え、
前記第２のネットワークは、
前記第１のスイッチに接続された複数のノードのうち隣り合う２つのノードでペアを構成し、かつ、各ノードはひとつのペアのみに所属し、前記ペアを構成したノード間のみを接続することを特徴とする請求項１に記載の並列計算機システム。
【請求項４】
前記第１のネットワークは、
前記ノードと接続する第１のスイッチと、
前記第１のスイッチ同士を接続する第２のスイッチと、を備え、
前記第２のネットワークは、
前記第２のスイッチを介して隣り合う２つの第１のスイッチ間のノードでペアを構成し、かつ、各ノードはひとつのペアのみに所属し、前記ペアを構成したノード間のみを接続することを特徴とする請求項１に記載の並列計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のプロセッサを備えた並列計算機システムに関し、特に、スーパーコンピュータのシステムおよびアーキテクチャに関する。
【背景技術】
【０００２】
プロセッサを含むノードを多数備えた並列計算機では、各ノードをファットツリー（FatTree）等のツリー状のネットワークや多段クロスバスイッチなどにより各ノードを接続し、ノード間のデータ転送などの通信を行いながら演算処理を実行する。特に、大量のノード数（例えば、１０００以上など）を備えたスーパーコンピュータなどの並列計算機では、ファットツリーや多段クロスバスイッチを用いて、並列計算機を複数の計算機領域に分割して複数のユーザに割り当てることで、計算機全体の利用効率向上させている。また、ファットツリーでは、離れたノード間を１：１で接続可能なため、通信を高速に行うことが可能である。しかし、このファットツリーでは、以下に述べる３Ｄトーラスなどに比べて、隣接ノード間でのデータ交換を高速に行うことが難しい、という問題がある。
【０００３】
また、スーパーコンピュータなどの並列計算機では、自然現象のシミュレーションなどが広く行われている。この種のアプリケーションでは、シミュレーション領域を３次元空間とする場合が多く、並列計算機の計算領域を３次元矩形に区切り、３次元空間（演算上の空間）内で隣接するノードと接続する３Ｄトーラスなどのネットワークが広く用いられている。３Ｄトーラスでは、隣接するノードが直接接続されているので、隣接する計算領域間でのデータ交換を高速に行うことができる。このため、自然現象のシミュレーションの３次元空間の演算などで頻繁に発生する隣接する計算領域間のデータ交換を高速に行うことができる。
【０００４】
また、スーパーコンピュータなどの大規模な並列計算機を構成する場合、ツリー状のネットワーク（グローバルツリー）とトーラスを組み合わせた技術が知られている（例えば、特許文献１）。
【特許文献１】特表２００４−５３８５４８
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、スーパーコンピュータなどの大量（例えば、数千）のノードを備えた並列計算機では、利用効率を向上させるために複数の計算機領域に分割し、計算機領域毎に異なるユーザのアプリケーションを実行する手法が広く採用されている。このため、スーパーコンピュータなどの並列計算機では、ファットツリーのように計算機領域の分割を容易にでき、かつ、トーラスのように隣接ノード間のデータ交換を高速で行うことが望ましい。
【０００６】
しかしながら、上記ファットツリーでは、上記のような大量のノードを備えた並列計算機において、全ノードでトーラス接続のように隣接ノード間で高速にデータ交換を行おうとすると、多段の巨大なクロスバスイッチが必要となり、莫大な設備投資が必要となってしまい実現するのが困難である。
【０００７】
一方、上記特許文献１の場合では、グローバルツリーと３Ｄトーラスの２つの独立したネットワークで各ノードを接続しているが、グローバルツリーは多対多または１対多の集合通信に使用されるため、これを用いて隣接ノード間のデータ交換を高速に行うことができない、という問題がある。
【０００８】
そこで本発明は、上記問題点に鑑みてなされたもので、既存のファットツリーや多段クロスバスイッチなどのネットワークを利用しながら、隣接ノード間でのデータ交換を高速に行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサと通信部を含むノードを複数備え、前記複数のノードを接続するスイッチとを備えた並列計算機システムにおいて、前記ノードとスイッチとを接続する第１のネットワークと、前記複数のノードを部分的に接続する第２のネットワークと、を備え、前記第１のネットワークは、前記ノードと接続するスイッチを含み、前記第２のネットワークは、前記スイッチに接続される複数のノードのうち隣り合う２つのノードでペアを構成し、前記ペアを構成したノード間のみを接続し、前記ペアを構成するノードはひとつのペアのみに所属し、他のペアと重複しない。
【００１０】
また、前記第１のネットワークは、ファットツリーまたは多段クロスバネットワークで構成する。
【発明の効果】
【００１２】
したがって、本発明は、既存のファットツリーや多段クロスバスイッチなどの第１のネットワークを利用しながら、第２のネットワークを付加するだけで隣接ノード間でのデータ交換を高速で行うことが可能となる。特に、多次元矩形領域で演算を行う場合に、隣接ノード間のデータ交換を既存のファットツリーや多段クロスバスイッチなどに比して高速に行うことが可能となる。これにより、既存の第１のネットワークを利用することで、低コストで高性能な並列計算機システムを構築することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１４】
図１は、本発明を適用する並列計算機システムを示し、３段ファットツリーを含む並列計算機システムのブロック図である。
【００１５】
図１の例は、３階層（３段）のクロスバスイッチ群でファットツリーを構成した例を示す。最下層（１段目）のクロスバスイッチ（以下、リーフスイッチとする）Ａ〜Ｐにはそれぞれ、４つのノードＸがポイントツーポイントのネットワークＮＷ０を介して接続される。なお、以下の説明では、ノードの全般的な説明をするときには単にノードとし、ノードを特定する場合には０〜ｎ３などの添え字を付す。
【００１６】
図１においてリーフスイッチＡは、ノードＸ０〜Ｘ３と接続する４つのポートと、中層（２段目）のクロスバスイッチ群と接続するための４つのポートを備える。なお、他のクロスバスイッチも同様に構成される。ここで、図１の並列計算機システムでは、１つのリーフスイッチＡ〜Ｐに４つのノードが接続され、４つのリーフスイッチＡ〜Ｄ（Ｅ〜Ｈ、Ｉ〜Ｌ、Ｍ〜Ｐ）が１つのノード群として構成され、ひとつのノード群を１６のノードで構成する場合を示す。
【００１７】
ここで、リーフスイッチＡは、ネットワークＮＷ１を介して２段目のクロスバスイッチＡ１〜Ｄ１に接続しており、同様にリーフスイッチＢ〜Ｄも２段目のクロスバスイッチＡ１〜Ｄ１にそれぞれ接続される。
【００１８】
リーフスイッチＡ〜Ｄに接続されたノード間で通信を行う場合には、リーフスイッチＡ〜Ｄと２段目のクロスバスイッチＡ〜Ｄを介して通信を行う。例えば、リーフスイッチＡのノードＸ０がリーフスイッチＤのノード（図示省略）と通信するときには、リーフスイッチＡ、２段目のクロスバスイッチＡ１、リーフスイッチＤを介して通信する。
【００１９】
２段目のクロスバスイッチＡ１〜Ｐ１は、ネットワークＮＷ２を介して上層（３段目）のクロスバスイッチＡ２〜Ｐ２に接続される。図１において、２段目のクロスバスイッチＡ１は、３段目のクロスバスイッチＡ２〜Ｄ２に接続され、２段目のクロスバスイッチＢ１は３段目のクロスバスイッチＥ２〜Ｈ２に接続され、中層のクロスバスイッチＣ１は３段目のクロスバスイッチＩ２〜Ｌ２に接続され、２段目のクロスバスイッチＤ１は３段目のクロスバスイッチＭ２〜Ｐ２に接続される。ひとつのノード群を構成する２段目のクロスバスイッチＡ１〜Ｄ１は、３段目の全てのクロスバスイッチＡ２〜Ｐ２に接続される。他のノード群（Ｅ〜Ｈ、Ｉ〜Ｌ、Ｍ〜Ｐ）の２段目のクロスバスイッチＥ１〜Ｐ１も、同様にして各ノード群毎に全ての３段目のクロスバスイッチＡ２〜Ｐ２に接続される。
【００２０】
そして、あるノードが他のノード群のノードと通信する際には、３段目のクロスバスイッチＡ２〜Ｐ２を介して通信を行う。例えば、リーフスイッチＡのノードＸ０がリーフスイッチＰのノードＸｎ０と通信するときには、リーフスイッチＡ、２段目のクロスバスイッチＡ１、３段目のクロスバスイッチＤ２、２段目のクロスバスイッチＭ１、リーフスイッチＰを介して通信する。
【００２１】
以上のように、ファットツリーでは、全ノードが相互に直接通信することが可能となっている。
【００２２】
図２は、ノードとネットワークＮＷ０の構成を示し、ノードはひとつのリンク（ネットワークＮＷ０）でリーフスイッチと接続し、同時に双方向（上り及び下り）の通信を行う。ネットワークＮＷ０〜ＮＷ２は、双方向通信が可能なネットワークであれば良く、例えば、ＩｎｆｉｎｉＢａｎｄ等で構成することができる。
【００２３】
図３は、図１に示したノードの構成を示すブロック図である。
【００２４】
ノードは、演算処理を行うプロセッサＰＵと、データやプログラムを格納する主記憶ＭＭと、ネットワークＮＷ０と双方向で通信を行うネットワークインターフェースＮＩＦから構成される。ネットワークインターフェースＮＩＦは、単一のポートを介してネットワークＮＷ０に接続され、パケットにより送受信を行う。ネットワークインターフェースＮＩＦは、パケットの経路を制御するためにルーティング部ＲＵを備える。ルーティング部ＲＵは、ノード群の構成や各ノードの識別子などを記憶したテーブルを有し、送信するパケットの宛先を制御する。
【００２５】
プロセッサＰＵは、演算コアとキャッシュメモリなどを含んで構成され、他のノードと通信を行うためのパケットを生成する通信パケット生成部ＤＵを実行する。通信パケット生成部ＤＵは、主記憶ＭＭやキャッシュメモリなどに格納されたプログラムや、ネットワークインターフェースＮＩＦのハードウェアを含んで実行されても良い。なお、主記憶ＭＭは、本実施形態では各ノードに配置したが、他のノードとする共有メモリあるいは分散共有メモリとしてもよい。
【００２６】
また、プロセッサＰＵは、主記憶ＭＭに格納したユーザプログラムやＯＳを実行し、必要に応じて他のノードと通信を行う。
【００２７】
なお、プロセッサＰＵは、シングルコアやマルチコアで構成することができ、さらに、マルチコアの場合ではホモジニアスの構成や、ヘテロジニアスの構成をとることができる。
【００２８】
図４は、ノードが送受信するパケットのフォーマットの一例を示す説明図である。パケットは、先頭にコマンドを格納し、宛先となるノードの識別子を格納する宛先ＩＤと、送信元のノードの識別子を格納する送信元ＩＤと、データから構成される。
【００２９】
図５は、従来の３Ｄトーラスの構成を示すブロック図で、演算空間のＸ軸、Ｙ軸、Ｚ軸の各軸方向に４つのノードを備えた６４ノードの例を示す。３次元で接続された各プロセッサは、Ｘ、Ｙ、Ｚの各軸方向のネットワークで環状に接続される。Ｘ軸方向では、ネットワークＮｘ０〜Ｎｘ１６がＸ軸方向の４つのノードを接続し、Ｙ軸方向ではネットワークＮｙ０〜Ｎｙ１５が、Ｚ軸方向ではネットワークＮｚ０〜Ｎｚ１５が、それぞれ４つのノードを各軸方向で接続する。
【００３０】
ノード間を接続する各軸のネットワークＮｘ、Ｎｙ、Ｎｚは、図６で示すように各軸（Ｎｘ〜Ｎｚ）でそれぞれ２方向（＋方向と−方向）の通信を行うことができ、トーラス接続では、隣接するノードと６方向で接続されることになる。
【００３１】
図７は、隣接ノード間で一次元のデータ転送を行うユーザプログラム（ソースコード）の一例を示す。図中（１）のｍｐｉ＿ｓｅｎｄ命令は、図６のＸ軸の場合、Ｘｐｌｕｓ（図中Ｎｘ＋方向）へデータを送信し、ｍｐｉ＿ｒｅｃｖ命令は、Ｘｍｉｎｕｓ（図中、Ｎｘ−方向）からデータを受信する。なお、実際にはプロセッサＰＵがＸｐｌｕｓ、Ｘｍｉｎｕｓに隣接ノードの識別子またはアドレスを代入し、図４に示すパケットを生成する。この（１）のユーザプログラムを実行することで図６のＮｘ＋方向へのデータ転送を行うことができる。
【００３２】
次に、図中（２）のｍｐｉ＿ｓｅｎｄ命令は、図６のＸ軸の場合、Ｘｍｉｎｕｓ（図中、Ｎｘ−方向）へデータを送信し、ｍｐｉ＿ｒｅｃｖ命令は、Ｘｐｌｕｓ（図中Ｎｘ＋方向）からデータを受信する。この（２）のユーザプログラムを実行することで図６のＮｘ−方向へのデータ転送を行うことができる。
【００３３】
図８は、図６に示した３Ｄトーラスのうち、Ｘ軸のネットワークＮｘ０を示し、４つのノードＸ０〜Ｘ３が接続されている場合に、上記図７のユーザプログラムを各ノードＸ０〜Ｘ３で実行した例を示している。
【００３４】
トーラスで接続された４つのノードＸ０〜Ｘ３は、ネットワークＮｘ０が双方向通信可能であるので、図７の（１）に示した正方向へのデータ転送と、（２）に示した負方向へのデータ転送を同時に実行することができる。つまり、トーラスの場合は、ひとつのノードがひとつの軸方向で−方向の接続と、＋方向の接続の２つの接続を有するため、正方向へのデータ転送（循環）と、負方向へのデータ転送（循環）を同時に行うことで、自然現象のシミュレーションを行うユーザプログラムにおける隣接領域のデータ交換を最小の時間で行うことができる。
【００３５】
図９は、図１に示したファットツリーのうち、リーフスイッチＡの４つのノードＸ０〜Ｘ３で上記図７のユーザプログラムを実行した例を示している。なお、各クロスバスイッチは、パケットを最短の経路で送受信を行うルーティング部ＸＲＵを備える。
【００３６】
リーフスイッチＡとネットワークＮＷ０で接続された４つのノードＸ０〜Ｘ３は、ネットワークＮｘ０が双方向通信が可能である。ここで、ファットツリーのノードは、リーフスイッチＡとひとつの接続しかないため、同時に実行可能な通信処理は、一接続の送信と一接続の受信となる。
【００３７】
したがって、リーフスイッチＡに接続されたノードＸ０〜Ｘ３では、上記図７の（１）に示した正方向へのデータ転送を実行すると、ノードとリーフスイッチＡを接続するネットワークＮＷ０は隣り合うノードとの正方向へのデータ転送に占有される。このため、各ノードＸ０〜Ｘ３では、図７の（２）に示した負方向へのデータ転送を同時に実行することができない。つまり、上記図７の（１）に示した正方向へのデータ転送が完了した後、図７の（２）に示した負方向へのデータ転送を実行することになる。すなわち、ファットツリーで隣接ノードのデータ交換を行うと、図９に示した３Ｄトーラスの２倍の時間を要することになる。
【００３８】
このため、ファットツリーでは、全ノードが１：１で通信可能であり、ノード群の構成を容易に変更可能であるため、複数の計算機領域を複数のユーザに割り当てて、計算機資源を有効に利用できるものの、自然現象のシミュレーションのように隣接ノードでデータ交換を行うようなアプリケーションには不向きであるという特性となる。
【００３９】
＜第１実施形態＞
図１０は、本発明の第１の実施形態を示し、前記図１に示したファットツリーのうち、リーフスイッチＡと４つのノードＸ０〜Ｘ３の一部を変更した並列計算機システムのブロック図である。
【００４０】
各ノードＸ０〜Ｘ３は、前記図１と同様に、双方向通信が可能なネットワークＮＷ０により接続される。そして、隣り合う２つのノードでペアを構成し、ペアを構成したノード間のみを直接接続する部分ネットワークＮＷ３を設ける。ただし、各ノードはひとつのペアのみに所属し、他のペアと重複しない。
【００４１】
図１０の例では、ノードＸ０とＸ１でペアを構成し、ノードＸ２とノードＸ３でペアを構成する。そして、ペアを構成したノードＸ０とＸ１を部分ネットワークＮＷ３で直接接続し、同様に、ペアを構成したノードＸ０とＸ１を部分ネットワークＮＷ３で直接接続する。ここで、ノードＸ１とノードＸ２は隣り合うノードではあるが、ひとつのノードは複数のペアに参加させないため、ノードＸ１とＸ２の接続関係は前記図１と同様となる。なお、図１に示した他のリーフスイッチＢ〜Ｐの各ノードも、上記と同様にペアを構成してペア内で部分ネットワークＮＷ３によりノード間を直接接続する。なお、部分ネットワークＮＷ３は、他のネットワークと同様に、ＩｎｆｉｎｉＢａｎｄ等で構成することができる。
【００４２】
図１１は、図１０に示したノードの構成を示すブロック図である。図１１のノードの構成は、前記図３に示したノードのネットワークインターフェースＮＩＦにペアを構成するノード間を直接接続する部分ネットワークＮＷ３を設けたものであり、その他の構成は上記図３と同様である。ルーティング部ＲＵは、パケットの宛て先ノードＩＤを見て、宛て先ノードが直接接続されている場合は部分ネットワークＮＷ３にパケットを送出し、そうでない場合はネットワークＮＷ０に送出する。
【００４３】
図１２は、図１０に示したノードＸ０〜Ｘ３で、上記図７に示したデータ交換のユーザプログラムを実施した例を示す。
【００４４】
リーフスイッチＡに接続された４つのノードＸ０〜Ｘ３は、部分ネットワークＮＷ３でペア間を直接接続し、ネットワークＮＷ０とリーフスイッチＡを介してペア間のノードで双方向通信を行うことができる。つまり、ペアを組んだノードＸ０とＸ１は部分ネットワークＮＷ３により双方向通信であり、同様に、ペアを組んだノードＸ２とＸ３は部分ネットワークＮＷ３により双方向通信である。そして、他のペアと隣接するノードＸ１とＸ２は、ネットワークＮＷ０とリーフスイッチＡにより双方向通信であり、同じく、リーフスイッチＡの両端に位置する異なるペアに属するノードＸ０とＸ３もネットワークＮＷ０とリーフスイッチＡを介して双方向通信が可能となる。
【００４５】
したがって、各ノードＸ０〜Ｘ３では、図７の（１）に示した正方向へのデータ転送と、（２）に示した負方向へのデータ転送を同時に実行することができる。つまり、図８に示した１次元のトーラス接続と同様に、正方向と負方向でデータ交換を同時に実現でき、自然現象のシミュレーションを行うユーザプログラムにおける隣接領域のデータ交換を最小の時間で行うことができる。
【００４６】
すなわち、本発明によれば、ファットツリーや多段クロスバスイッチのネットワーク構成にペア間の部分ネットワークＮＷ３（部分ネットワーク）を加えるだけで、図９に示した既存のリーフスイッチＡとノードＸ０〜Ｘ３の転送容量の２倍の転送容量を確保することができるのである。
【００４７】
したがって、本第１実施形態によれば、既存のファットツリーや多段クロスバスイッチなどのネットワークを利用しながら、ペアを構成するノード間を直接接続する部分ネットワークを加えるだけで、隣接ノード間の通信容量（バンド幅）を２倍にでき、隣接ノード間でのデータ交換をトーラスと同様に高速で行うことが可能となって、設備投資を抑制しながらも高性能な並列計算機システムを構築することが可能となる。また、本第１実施形態の並列計算機システムでは、ファットツリーなどが備える計算機領域の分割の容易さと、トーラスが備える隣接ノード間の高速なデータ交換を享受することが可能となり、利用効率と演算性能の双方に優れた並列計算機システムまたはスーパーコンピュータを安価に提供することが可能となる。
【００４８】
なお、上記第１実施形態では、リーフスイッチＡに接続するノードを４つとしたが、奇数のノードの場合には、ペアを構成できないノードが発生する。このため、図１３に示すように、ペアを構成できないノードＸ５にも部分ネットワークＮＷ３を設け、この部分ネットワークＮＷ３をリーフスイッチＡに接続する。これにより、ノード数が奇数の場合でも、上記と同様に正方向のデータ交換と負方向のデータ交換を同時に行うことが可能となる。
【００４９】
なお、図１０の構成では、全てのノードがファットツリーにも接続されているが、間にファットツリーに接続されないノードがあっても、上記と同様の隣接転送性能を実現できることは明らかである。
【００５０】
＜第２実施形態＞
本発明の前記第１実施形態を３次元矩形領域における隣接ノード間のデータ転送に適用したものを、本発明の第２の実施形態として以下に説明する。なお、以下では、本第２実施形態と比較を行うファットツリーと３Ｄトーラスの例を説明した後に、本発明の第２の実施形態を説明する。
【００５１】
＜３次元矩形領域＞
図１４は、前記図５に示した３Ｄトーラスと同様に、各軸を４つのノードで構成した３次元矩形領域で、各ノードで所定のアプリケーションを実行したときの各ノードのプロセスＩＤを示す。図示の例では、アプリケーションのプロセスＩＤとして、３次元矩形領域のＸ軸、Ｙ軸、Ｚ軸の順にプロセスＩＤが増大する例を示しており、図示の例ではプロセスＩＤを０〜６３に割り当てる。３次元矩形領域における隣接ノード間のデータ交換は、上記プロセスＩＤに基づいて図中Ｘ軸方向、Ｙ軸方向及びＺ軸方向で隣接ノード間のデータ交換を行うプログラム（アプリケーション）を各ノードで実行する。このプログラムの一例を、図１５に示す。
【００５２】
図１５において、（０）のソースコードは、Ｘ、Ｙ、Ｚの各軸方向のデータ転送先のＩＤを決定するもので、図中「ｐｌｕｓ」は正方向を意味し、「ｍｉｎｕｓ」は負方向を示す。そして、「ｍｙｉｄ」は自ノードのプロセスＩＤを示し、「ＮＸ」はＸ軸方向のノード数を示し、「ＮＹ」はＹ軸方向のノード数を示しており、図１４に置いては、ＮＸ＝ＮＹ＝４となる。
【００５３】
図１５の（１）〜（６）は、前記図７に示したｍｐｉ＿ｓｅｎｄ命令と、ｍｐｉ＿ｒｅｃｖ命令により、Ｘ、Ｙ、Ｚの各軸方向で隣り合うノードとの間で正方向へのデータ転送と負方向へのデータ転送を行うプログラムを示している。
【００５４】
一方、各ノードには、図１６で示すようにノードＩＤが予め設定される。図１６では、ノードＩＤを３桁で表現した例を示す。ノードＩＤの３桁目（百の位）はＸ軸方向におけるノードＩＤの連番で、図中左から右へ向けて０〜３へ増大する。ノードＩＤの２桁目（十の位）はＹ軸方向におけるノードＩＤの連番で、図中上から下へ向けて０〜３へ増大する。ノードＩＤの１桁目（一の位）はＺ軸方向におけるノードＩＤの連番で、図中手前から奥へ向けて０〜３へ増大する。
【００５５】
図１７は、３Ｄトーラスの場合の各ノードの構成を示すブロック図である。ノードの構成は、前記第１実施形態の図３に示したノードと同様であり、通信パケット生成部ＤＵがプロセスＩＤとノードＩＤの対応付けを行うものとする。このため、各ノードには、プロセスＩＤとノードＩＤの関連を予め定義したテーブルを備える。
【００５６】
なお、図１７のネットワークインターフェースＮＩＦは、Ｎｘ＋〜Ｎｚ−の６方向のリンク（ネットワーク接続）を有する。
【００５７】
各ノードでは、図１５に示したプログラムを実行して各軸方向へデータ転送を行う。例えば、図１４においてプロセスＩＤ＝１のノード（＝図１６のノードＩＤ＝１００）が、図１５の（３）のｍｐｉ＿ｓｅｎｄ命令を実行すると、宛先のプロセスＩＤは、
Ｙｐｌｕｓ＝１＋４
となり、図１４のプロセスＩＤ＝５のノードがデータの転送先となる。プロセスＩＤ＝１のノードの通信パケット生成部ＤＵは、所定のテーブルから転送先のノードＩＤ＝１１０（図１６参照）を取得し、図４に示すパケットの送信元フィールドに自ノードＩＤ＝１００を設定し、宛先ＩＤフィールドに１１０を設定し、所定のデータを含めてパケットを生成する。そして、ネットワークインターフェースＮＩＦが当該パケットをノードＩＤ＝１１０へ向けて送信する。
【００５８】
＜３Ｄトーラス＞
次に、上記図１４〜図１６の３次元矩形領域における隣接ノードのデータ交換を、図５に示した３Ｄトーラスで行う例を説明する。
【００５９】
図５に示した各軸方向のネットワークＮｘ０〜Ｎｘ３，Ｎｙ０〜Ｎｙ３、Ｎｚ０〜Ｎｚ３は、図１６のノードＩＤの連番に沿って各ノードを接続することになる。例えば、ネットワークＮｘ０は、ノードＩＤ＝０００，１００，２００，３００を接続する。つまり、Ｘ軸方向のネットワークＮｘ０〜３は、ノードＩＤの１桁目（Ｚ軸）と２桁目（Ｙ軸）が同一のノードを、３桁目のＸ軸方向のノードＩＤの番号順に接続する。Ｙ軸方向及びＺ軸方向のネットワークＮｙ、Ｎｚも同様である。
【００６０】
３Ｄトーラスでは、図８で示したように、各軸方向が同時に正方向と、負方向のデータ転送を実行可能であり、３Ｄトーラスにおける隣接ノードのデータ交換に要する時間を１Ｔとする。
【００６１】
＜３段ファットツリー＞
次に、図１４、図１６に示した３次元矩形領域を、図１に示した３段ファットツリーで実現する例について説明する。
【００６２】
図１に示したファットツリーで、図１４、図１６に示したようにノードを、Ｘ、Ｙ、Ｚの各軸方向に接続するためには、例えば、図１のリーフスイッチＡ〜Ｐに接続する図１６のノードＩＤの関係は図１８のように設定する。
【００６３】
図１８のリーフスイッチ対するノードの割り付けは、次のように行う。なお、この割り当ては、並列計算機システムの管理者などが行う。
【００６４】
まず、図１６において、Ｘ軸方向に連番となる全てのノードは同一のリーフスイッチに接続される。具体的には、ノードＩＤの１桁目と２桁目の値が同一で、３桁目のみが異なるノードの全てを同一のリーフスイッチに接続する。これらのノードは、スイッチ段数＝１＝リーフスイッチＡ〜Ｐ内で互いに通信可能である。例えば、リーフスイッチＡには、１桁目と２桁目が「００」となり、３桁目が連番となるノードＩＤ＝０００，１００、２００，３００を接続する。
【００６５】
続いて、リーフスイッチＡ〜Ｐを、スイッチ段数＝２（クロスバスイッチＡ１〜Ｐ１）でお互いに通信可能なグループに分類する。図１から明らかなように、リーフスイッチＡ〜Ｄ、Ｅ〜Ｈ、Ｉ〜Ｌ、Ｍ〜Ｐがそれぞれ同一のグループとなる。図１８の接続では、各グループ内の各リーフスイッチに対して、Ｙ軸方向で連番となるプロセッサ群を割り当てる。
【００６６】
具体的には、各グループのリーフスイッチＡ〜Ｄ、Ｅ〜Ｈ、Ｉ〜Ｌ、Ｍ〜Ｐには、それぞれ、ノードＩＤの２桁目（Ｙ軸方向）が連番となり、１桁目（Ｚ軸方向）が同一のノードを接続する。例えば、リーフスイッチＡ〜Ｄには、ノードＩＤの２桁目が連番となるように、０００，０１０，０２０、０３０が接続される。他のグループのリーフスイッチも同様である。これらのプロセッサは、スイッチ段数＝２で互いに通信可能である。例えば、リーフスイッチＡのノードＩＤ＝０００と、リーフスイッチＢのノードＩＤ＝０１０は、スイッチ段数＝２のクロスバスイッチＡ１またはＢ１、Ｃ１、Ｄ１を介して通信可能に接続されている。図１８で示すように接続することにより、Ｚ軸方向の連番、すなわちノードＩＤの１桁目めが異なるノードは、スイッチ段数＝３で互いに通信可能となる。例えば、リーフスイッチＡのノードＩＤ＝０００とリーフスイッチＥのノードＩＤ＝００１のようにＺ軸方向で連番のノードは、スイッチ段数＝３のクロスバスイッチＡ２〜Ｐ２のいずれかを介して通信を行うことができる。
【００６７】
なお図１８で示したような接続は、Ｎ段ファットツリーにおいて、Ｎが１以上で同様に行なうことが可能である。
【００６８】
次に、図１８に示した３段ファットツリーによる３次元矩形領域の隣接ノードのデータ交換を行う例を以下に示す。
【００６９】
図１９は、リーフスイッチＡでＸ軸方向のデータ転送を行う例を示す。なお、各クロスバスイッチのルーティング部ＸＲＵは、図１８に示した接続情報を保持している。
【００７０】
Ｘ軸方向のデータ転送は、１，２桁目のノードＩＤが同一で、ノードＩＤの３桁目が異なるため、リーフスイッチＡは１段目のスイッチで折り返す。この例では、図９と同様であり、正方向のデータ転送が完了するまで負方向のデータ転送を実行することはできない。
【００７１】
図２０は、Ｙ軸方向のデータ転送を示し、１段目のリーフスイッチＡ〜Ｄのルーティング部ＸＲＵは、ノードＩＤの２桁目が異なるので、パケットを２段めのスイッチ段数Ａ１〜Ｄ１に転送する。２段目のクロスバスイッチＡ１〜Ｄ１のルーティング部ＸＲＵは、宛先ノードＩＤの１桁目が同一であるので、リーフスイッチＡ〜Ｄへ折り返す。
【００７２】
図２１は、Ｚ軸方向のデータ転送を示し、１段目と２段目のクロスバスイッチは、パケットの宛先に含まれるノードＩＤの１桁目が異なるので３段目のクロスバスイッチＡ２へ転送してから、２段目、１段目へ順次転送する。
【００７３】
３段ファットツリーでＸ、Ｙ、Ｚ軸方向の隣接ノードのデータ転送は、以上の図１９〜図２１のように行われ、図１５に示した（１）〜（６）の各軸の正方向と負方向のデータ交換を完了するのに、上記３Ｄトーラスのデータ交換の６倍の６Ｔの時間を要することになる。
【００７４】
＜３段ファットツリー＋メッシュ結合＞
図２２〜図２３は、本発明の第２の実施形態の構成を示すブロック図である。図２２は、ノード間の接続を示すブロック図で、図２３は３段ファットツリーとノード間の接続を示すブロック図で、図２４はノード間とリーフスイッチの接続を示すブロック図である。
【００７５】
本第２実施形態は、前記図１の３段ファットツリーと図１６に示した３次元矩形領域に配置したノードを、図１８に示した接続関係でリーフスイッチとノードを接続し、さらに、第１実施形態と同様にしてＹ軸方向で隣り合うノード及びＺ軸方向で隣り合うノードを部分ネットワークＮＷ３で直接接続したものである。Ｘ軸方向については、前記第１実施形態の図１０と同様である。
【００７６】
図２３において、各リーフスイッチＡ〜Ｐには図１８に従って各ノードをネットワークＮＷ０で接続する。各ノードの３次元矩形領域における関係は、図１６と同様である。
【００７７】
そして、図１６に示した３次元矩形領域で、Ｘ軸方向、Ｙ軸方向及びＺ軸方向で隣り合うノードを、図２２で示すように部分ネットワークＮＷ３で直接接続し、メッシュ結合したものである
部分ネットワークＮＷ３で結合されたノードのうち、外側の面に属するノード間のみをファットツリーのリーフスイッチＡ〜Ｐに接続する。ここで外側の面とは、３次元メッシュの場合、ノード間のリンク（リーフスイッチとのリンクは含めない）を６本有さないノードを指す。ただし、本第２実施形態では２×２×２のメッシュ結合のため、全てのノードが外側となりリーフスイッチに接続される。
【００７８】
図２２において、例えば、ノードＩＤ＝０００は図１６において、Ｘ軸方向でノードＩＤ＝１００と隣り合い、Ｙ軸方向でノードＩＤ＝０１０隣り合い、Ｚ軸方向でノードＩＤ＝００１と隣り合う。これらの隣り合うノード間を部分ネットワークＮＷ３で直接接続し、かつ、図１８の接続関係に基づいてメッシュ結合で外側となるノード（本第２実施形態の場合は全て）をリーフスイッチＡ〜Ｐに接続する。
【００７９】
ここで、メッシュ結合の外側の面を構成するノードは、図２５で示すように、ネットワークインターフェースＮＩＦに、リーフスイッチと接続するネットワークＮＷ０と、隣り合うＸ軸方向のノード間を接続する部分ネットワークＮＷ３（Ｘ）と、Ｙ軸方向で隣り合うノード間を接続する部分ネットワークＮＷ３（Ｙ）とＺ軸方向で隣り合うノード間を接続する部分ネットワークＮＷ３（Ｚ）を備える。またルーティング部ＲＵは、パケットの宛て先ノードＩＤを見て、宛て先ノードが直接接続されている場合は部分ネットワークＮＷ３(Ｘ)、部分ネットワークＮＷ３（Ｙ）、部分ネットワークＮＷ３（Ｚ）のいずれかにパケットを送出し、そうでない場合はネットワークＮＷ０に送出する。その他は、前記第１実施形態の図１１と同様である。
【００８０】
図２４（Ａ）〜（Ｄ）で示すように、各ノードは図１８で示したように、２段目のクロスバスイッチＡ１〜Ｄ１で４つのグループに分けて、Ｙ軸方向のノード間の部分ネットワークＮＷ３はグループ内で接続し、Ｚ軸方向のノード間の部分ネットワークＮＷ３は、隣り合うグループ間で接続する。
【００８１】
例えば、図２４（Ａ）において、ノードＩＤ＝０００は、Ｙ軸方向では同一グループ内で隣り合うノードＩＤ＝０１０と接続し、Ｚ軸方向では隣り合うグループのノードＩＤ＝００１と接続する。
【００８２】
つまり、前記第１実施形態に示した、
・隣り合う２つのノードでペアを構成し、ペアを構成したノード間のみを直接接続する部分ネットワークＮＷ３を設ける。
・ただし、各ノードはひとつのペアのみに所属し、他のペアと重複しない。
という接続ルールを、リーフスイッチのグループの内側と外側で適用したことになる。
【００８３】
ここで、リーフスイッチＡ〜Ｐを４つのスイッチグループ（グループ０〜３）に分けた場合、図１８に示した各リーフスイッチＡ〜Ｐの先頭のノードのＹ軸方向及びＺ軸方向の部分ネットワークＮＷ３を図２６に示す。
【００８４】
すなわち、部分ネットワークＮＷ３は、図２６で示すように、各リーフスイッチＡ〜Ｐの先頭のノードは、Ｙ軸方向の接続は長円で囲まれたペアで接続し、Ｚ軸方向の接続は実線のペア毎に接続される。なお、各リーフスイッチＡ〜Ｐの他のノードも同様である。
【００８５】
Ｙ軸方向では、同一スイッチグループ内で隣り合う２つのノードでペアを構成し、かつ、各ノードはひとつのペアのみに所属し、他のペアと重複せず、ペアを構成したノード間のみを直接接続する部分ネットワークＮＷ３を設ける。
【００８６】
Ｚ軸方向では、隣り合う２つのスイッチグループ間のノードでペアを構成し、かつ、各ノードはひとつのペアのみに所属し、他のペアと重複せず、ペアを構成したノード間のみを直接接続する部分ネットワークＮＷ３を設ける。Ｚ軸方向でペアを構成するノードは、ノードＩＤの３桁目と２桁目が一致するものでペアを構成する。
【００８７】
以上のように、３段ファットツリーにメッシュ結合を組み合わせた場合の、３次元矩形領域における隣接ノードのデータ交換について以下に説明する。
【００８８】
まず、Ｘ軸方向の隣接ノードのデータ交換は、図２７で示すように、前記第１実施形態と同様にして、ペアを構成した隣り合うノードと部分ネットワークＮＷ３で双方向通信を行い、かつ、各ノードがリーフスイッチとネットワークＮＷ０で双方向通信を行うことで、図中（１）の正方向のデータ転送と、（２）の負方向のデータ転送を同時に行って、Ｘ軸方向における隣接ノードのデータ交換の所要時間を１Ｔとすることができる。
【００８９】
ルーティング部ＸＲＵは、通常の３段ファットツリーの場合と同様に動作する。すなわち、図２７においては、パケットの宛先ノードＩＤと送元ノードＩＤの１、２桁目が同一で、３桁目が異なるので、リーフスイッチで折り返す。
【００９０】
Ｙ軸方向の隣接ノードのデータ交換を図２８に示す。図２８において、ファットツリー内では、パケットの宛先ノードＩＤと送元ノードＩＤの２桁目が異なり１桁目が同じため、前記図２０と同様にして２段目のクロスバスイッチで折り返す。さらに、隣り合うスイッチグループのペア間（図中０００と０１０及び０２０と０３０）に設けた部分ネットワークＮＷ３で双方向通信を行うことで、図中（１）の正方向のデータ転送と、（２）の負方向のデータ転送を同時に行って、Ｙ軸方向における隣接ノードのデータ交換の所要時間を１Ｔとすることができる。
【００９１】
Ｚ軸方向の隣接ノードのデータ交換を図２９に示す。図２９において、ファットツリー内では、パケットの宛先ノードＩＤと送元ノードＩＤの１桁目が異なるため、前記図２１と同様にして３段目のクロスバスイッチで折り返す。さらに、隣り合うスイッチグループのペア間（図中０００と００１及び００２と００３）に設けた部分ネットワークＮＷ３で双方向通信を行うことで、正方向のデータ転送と負方向のデータ転送を同時に行って、Ｚ軸方向における隣接ノードのデータ交換の所要時間を１Ｔとすることができる。
【００９２】
以上の図２７〜図２９より、３段ファットツリーにメッシュ結合を加えた３次元矩形領域の接続では、Ｘ、Ｙ、Ｚ軸方向の隣接ノードのデータ交換に要する所要時間は各軸が１Ｔとなり、図１９〜図２１に示した３段ファットツリーのみの場合（６Ｔ）に比して２倍のバンド幅を提供することが可能となる。
【００９３】
この場合、部分ネットワークＮＷ３のスループットは、ファットツリーのネットワークＮＷ０〜２のスループットの１／３であっても、時間３TでＸ、Ｙ、Ｚ軸のデータ交換を処理することが可能である。なぜなら、ファットツリーを介してＸ軸方向の隣接通信(図１５の(1)及び(2))と、Ｙ軸方向の隣接通信(図１５の(3)及び(4))と、Ｚ軸方向の隣接通信(図１５の(5)及び(6))を逐次的に実行するのと同時に、メッシュ結合したノード間では、部分ネットワークＮＷ３を介した隣接通信を、Ｘ、Ｙ、Ｚ軸方向の正方向と負方向の６方向で同時に行なうことが可能なためである。例えば、図２４（Ａ）において、ノードＩＤ＝０００とリーフスイッチＡを接続するネットワークＮＷ０の転送速度を１０Ｇｂｐｓとすると、ノードＩＤ＝０００は、部分ネットワークＮＷ３で接続されたノードＩＤ＝１００、０１０、００１の３つのノードと同時に通信が可能であるため、部分ネットワークＮＷ３の転送速度は、約３．３Ｇｂｐｓであれば済むことになる。
【００９４】
したがって、本第２実施形態によれば、既存のファットツリーに部分ネットワークＮＷ３を加えるだけで、３次元矩形領域のデータ交換を行う場合には従来のファットツリーの２倍のバンド幅を容易に確保できるのに加え、部分ネットワークＮＷ３のバンド幅をリーフスイッチ側のバンド幅よりも狭くできるので、ネットワークインターフェースＮＩＦのコストを抑制することが可能となる。したがって、大量のノードを使用するスーパーコンピュータなどの並列計算機システムを構築する際には、既存のファットツリーを利用し、かつ低コストのネットワークインターフェースＮＩＦを採用することで設備投資を抑制しながら、運用の柔軟性に優れ、かつ、データ転送速度の高い計算機システムを提供することができる。
【００９５】
なお、メッシュ結合の外側の面に属さないノードが存在する２×２×２より大きなメッシュ結合ノード群を用いても、上記同様の動作が可能なことは自明である。
【００９６】
＜第３実施形態＞
図３０は、第３の実施形態を示し、前記第２実施形態の部分ネットワークＮＷ３をスター型スイッチに置き換えたもので、その他の構成は前記第２実施形態と同様である。
【００９７】
各ノードとファットツリーのリーフスイッチとの接続は、前記図１８と同じである。この場合も、前記第２実施形態と同様に、従来のファットツリーに比して高速に３次元矩形領域のデータ交換を実現することができる。
【００９８】
この場合、ノード群内でＸ軸方向の隣接通信と、Ｙ軸方向の隣接通信と、Ｚ軸方向の隣接通信を同時に行なうことはできない。例えば、ノードＩＤ＝０００と１００のＸ軸方向通信と、ノードＩＤ＝０００と０１０のＹ軸方向通信は、ノードＩＤ＝０００とスイッチ間のパスが競合するため同時に通信を行うことはできない。
【００９９】
従って、上記第２実施形態と同様の効果を得るためには、部分ネットワークＮＷ３のスループットは、ファットツリーのスループットと同じ必要がある。
＜第４実施形態＞
上記第２実施形態では、３段ファットツリーと３次元メッシュ結合ノードの例を述べた。本接続と動作が、Ｎ次元メッシュ結合で接続されたノード群を、Ｍ段ファットツリー（ＮはＭ以上）に接続してもよいことは自明である。
【０１００】
例えば、図２２に示した３次元メッシュの部分ネットワークＮＷ３で接続されたノード群を、図３１に示す２段ファットツリーに接続してもよい。この場合、リーフスイッチＡ〜Ｄと各ノードの接続は、図３２のようになる。
【０１０１】
３段ファットツリーの下２段が１段に縮退された形となるので、Ｘ軸方向及びＹ軸方向に連番となるノードを、同一のスイッチに接続する。すなわち、ノードＩＤの３桁目（百の位）と２桁目（十の位）が異なり、１桁目（一の位）が同じノードが全て同一のスイッチに接続される。
【０１０２】
ノード内部のルーティング部は、上記第２実施形態と同様に、宛先ノードが部分ネットワークＮＷ３で接続されていない場合にファットツリー側へパケットを送出すればよい。なお、Ｚ軸正方向の隣接ノードのデータ交換は、ノードＩＤ＝０００から送出されたパケットは、部分ネットワークＮＷ３を介してノードＩＤ＝００１に送られる。ノードＩＤ＝００１からのパケットは、リーフスイッチＢ、クロスバスイッチＡ１、リーフスイッチＣを介してノードＩＤ＝００２に送られる。ノードＩＤ＝００２から送出されたパケットは、部分ネットワークＮＷ３を介してノードＩＤ＝００３に送られる。ノードＩＤ＝００３からのパケットは、リーフスイッチＤ、クロスバスイッチＡ１、リーフスイッチＡを介してノードＩＤ＝０００に送られて矩形領域を一巡する。逆方向のデータ転送も同様の経路で行われる。このように、Ｎ次元メッシュ結合で接続されたノード群を、Ｍ段ファットツリーに接続した場合も上記第２実施形態と同様の効果を得ることができる。
【産業上の利用可能性】
【０１０３】
以上のように、本発明に係る並列計算機システムでは、大量のノードを備えたスーパーコンピュータや超並列計算機に適用することができる。
【図面の簡単な説明】
【０１０４】
【図１】本発明を適用する並列計算機システムを示し、３段ファットツリーを含む並列計算機システムのブロック図である。
【図２】ノードとネットワークＮＷ０の構成を示すブロック図である。
【図３】ノードの構成を示すブロック図である。
【図４】ノードが送受信するパケットのフォーマットの一例を示す説明図である。
【図５】従来の３Ｄトーラスの構成を示すブロック図である。
【図６】３Ｄトーラスのノードとネットワークの構成を示すブロック図である。
【図７】隣接ノード間で一次元のデータ転送を行うユーザプログラム（ソースコード）の一例を示す説明図である。
【図８】図６に示した３Ｄトーラスのうち、Ｘ軸のネットワークで隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図９】図１に示したファットツリーで隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図１０】本発明の第１の実施形態を示し、図１に示したファットツリーのうち、ひとつのリーフスイッチとノードの構成を示す並列計算機システムのブロック図である。
【図１１】同じく、第１実施形態を示し、ノードの構成を示すブロック図である。
【図１２】同じく、第１実施形態を示し、隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図１３】同じく、第１実施形態を示し、奇数のノードで隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図１４】各軸を４つのノードで構成した３次元矩形領域で、各ノードで所定のアプリケーションを実行したときの各ノードのプロセスＩＤを示す説明図。
【図１５】隣接ノード間で３次元のデータ転送を行うユーザプログラム（ソースコード）の一例を示す説明図である。
【図１６】各軸を４つのノードで構成した３次元矩形領域で、各ノードのノードＩＤを示す説明図。
【図１７】３Ｄトーラスにおけるノードの構成を示すブロック図である。
【図１８】リーフスイッチＡ〜ＰとノードＩＤの接続関係を示す説明図。
【図１９】３段ファットツリーのリーフスイッチＡでＸ軸方向のデータ転送を行う例を示す説明図。
【図２０】３段ファットツリーでＹ軸方向のデータ転送を行う例を示す説明図。
【図２１】３段ファットツリーでＺ軸方向のデータ転送を行う例を示す説明図。
【図２２】本発明の第２の実施形態の構成を示し、ノード間の接続を示すブロック図。
【図２３】同じく、第２の実施形態の構成を示し、３段ファットツリーと部分ネットワークの一例を示すブロック図。
【図２４】同じく、第２の実施形態の構成を示し、ノード間とリーフスイッチの接続を示すブロック図で。（Ａ）はノードＩＤ＝０００を中心とした接続関係を示し、（Ｂ）はノードＩＤ＝２００を中心とした接続関係を示し、（Ｃ）はノードＩＤ＝０２０を中心とした接続関係を示し、（Ｄ）はノードＩＤ＝２２０を中心とした接続関係を示す。
【図２５】同じく、第２の実施形態の構成を示し、ノードの構成を示すブロック図。
【図２６】同じく、第２の実施形態の構成を示し、リーフスイッチのグループと、Ｙ軸方向及びＺ軸方向のノードの接続関係を示す説明図。
【図２７】同じく、第２の実施形態の構成を示し、Ｘ軸方向で隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図２８】同じく、第２の実施形態の構成を示し、Ｙ軸方向で隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図２９】同じく、第２の実施形態の構成を示し、Ｚ軸方向で隣接ノードのデータ交換を行う場合のデータの流れを示す説明図。
【図３０】本発明の第３の実施形態の構成を示し、ノード間の接続を示すブロック図。
【図３１】同じく、第４の実施形態の構成を示し、２段ファットツリーと部分ネットワークを示すブロック図。
【図３２】同じく、第４の実施形態の構成を示し、２段ファットツリーのリーフスイッチとノードの接続関係を示す説明図。
【符号の説明】
【０１０５】
Ａ〜Ｐ  リーフスイッチ
ＭＭ  主記憶
ＮＷ０，１，２  ネットワーク
ＮＷ３  部分ネットワーク
ＮＩＦ  ネットワークインターフェース
ＰＵ  プロセッサ
【図１】
0004676463.tif 000002
【図２】
0004676463.tif 000003
【図３】
0004676463.tif 000004
【図４】
0004676463.tif 000005
【図５】
0004676463.tif 000006
【図６】
0004676463.tif 000007
【図７】
0004676463.tif 000008
【図８】
0004676463.tif 000009
【図９】
0004676463.tif 000010
【図１０】
0004676463.tif 000011
【図１１】
0004676463.tif 000012
【図１２】
0004676463.tif 000013
【図１３】
0004676463.tif 000014
【図１４】
0004676463.tif 000015
【図１５】
0004676463.tif 000016
【図１６】
0004676463.tif 000017
【図１７】
0004676463.tif 000018
【図１８】
0004676463.tif 000019
【図１９】
0004676463.tif 000020
【図２０】
0004676463.tif 000021
【図２１】
0004676463.tif 000022
【図２２】
0004676463.tif 000023
【図２３】
0004676463.tif 000024
【図２４】
0004676463.tif 000025
【図２５】
0004676463.tif 000026
【図２６】
0004676463.tif 000027
【図２７】
0004676463.tif 000028
【図２８】
0004676463.tif 000029
【図２９】
0004676463.tif 000030
【図３０】
0004676463.tif 000031
【図３１】
0004676463.tif 000032
【図３２】
0004676463.tif 000033