図面 (/)

技術 並列計算機システム、並列計算機システムの制御方法、及びプログラム

出願人 日本電気株式会社技術研究組合光電子融合基盤技術研究所富士通株式会社
発明者 水谷健二賣野豊臼杵達哉
出願日 2018年9月14日 (2年2ヶ月経過) 出願番号 2018-172320
公開日 2020年3月26日 (7ヶ月経過) 公開番号 2020-046713
状態 未査定
技術分野 マルチプロセッサ
主要キーワード 通信順 分配動作 演算コア 保有データ 計算ノード間 総リンク数 通信種類 配線コスト
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年3月26日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信利用効率を高くし、並列計算における通信時間を短縮する。

解決手段

送信ノード704と受信ノード705との間を直接接続する直接リンク701と、送信ノードと受信ノードとの間を、送信ノード、受信ノード以外の折り返しノード706を経由して接続する1ホップリンク702と、送信ノードから受信ノードへデータを転送する際、直接リンクのみを使用するリンクと、1ホップリンクのみを使用するリンクと、直接リンクと1ホップリンクとを組み合わせて使用するリンクとの中から、送信ノードと受信ノードとを接続するリンクを選定する通信制御部703と、を備えた。

概要

背景

並列計算機システムでは、複数のCPU(Central Processing Unit)コアを使用して並列に計算を行うことで、プログラム高速に実行することができる。ここで、図45を参照しつつ、関連する並列計算機システムの構成例について説明する。図45は、関連する並列計算機システムの構成例を示す図である。
並列計算機システム100を構成する計算ノード101−1から101−8(以下の説明において、単に計算ノード101ともいう。)は、少なくとも、単数又は複数の演算コアを有するプロセッサと、そのプロセッサに広帯域で接続されたメモリとを有する。そして、関連する並列計算機システム100は、図45に示すように、複数の計算ノード101の各々が、リンク102を介して電気スイッチ103と接続される。そして、この複数の計算ノード101は並列計算を行う。なお、図45には、フラットツリー型ネットワークを記載しているが、リング型トーラス型など複数のトポロジーが使われる。

並列計算では、2つの計算ノード間で行う1対1通信の高速化だけでなく、3つ以上の計算ノード間で同時にデータをやりとりする集合通信の高速化が重要となる。集合通信には、例えば、次のようなものが存在する。
まず、集合通信には、データを複数の計算ノードに分配するマルチキャストブロードキャスト(以下、この2つをマルチキャストとして表現する。)がある。また、集合通信には、各計算ノードにあるデータを、1つ又は複数の計算ノードに集め、かつ、演算も行うレデュース又はオールレデュースがある。さらに、集合通信には、1つの計算ノードにある異なるデータを、それぞれ別の計算ノードに配送するスキャタがある。そして、集合通信には、各計算ノードにある異なるデータを1つの計算ノードに集めるギャザがある。さらに、集合通信には、複数の計算ノード間で異なるデータをやり取りするオールトゥーオール(全交換)等がある。
なお、マルチキャストとレデュース(オールレデュース)、及び、スキャタとギャザは、演算を除く通信は逆過程であり、通信時間は同じである。

人工知能の1つであるディープラーニングの並列計算学習を例に、具体的に使われる集合通信を紹介する。ディープラーニングの並列計算を使った学習方法として、モデルパラレルとデータパラレルとの2つがある。モデルパラレルは、ニューラルネットワーク自体を分割するものである。そして、モデルパラレルは、それぞれ異なる計算ノード101で計算を行う。モデルパラレルは、各ニューラルネットワークの層毎に、演算結果をオールギャザする。そして、モデルパラレルは、各計算ノードで演算結果を共有する。
一方、データパラレルは、入力する複数のデータを分割するものである。データパラレルは、複数の計算ノード101で同一のニューラルネットワークの計算を行う。この場合、ニューラルネットワークのパラメータを最適化するために、データパラレルでは、パラメータの変化分をギャザやレデュースで1つの計算ノードに集める。そして、データパラレルは、パラメータ自体を複数の計算ノードにマルチキャストする。

一般に、各計算ノード101と電気スイッチ103間とのリンク102の帯域幅を増やすことで、通信時間を短くすることができる。しかし、一度に複数の通信を行う集合通信では、ネットワーク内で輻輳が発生し易くなる。また、一度に複数の通信を行う集合通信では、最悪、データの一部が損失してしまう。この場合、データを再送する必要がある。そして、データを再送する場合、データのやり取りでさらに時間がかかってしまう。そのため、リンク102の帯域幅を増やしても、集合通信は高速化されない。

集合通信の高速化方法として、図46に示すように、ツリー構造で複数のステップに分けて順に通信を行うことで、輻輳を回避する方法がある。しかし、この方法では、通信回数の増加が問題となる。例えば、1回の通信における遅延がLであると仮定すると、集合通信でM回の通信ステップが必要な場合、集合通信全体ではM×Lと大きな遅延が発生してしまう。図46に示すように、既存の計算ノード101として、計算ノード101−1から101−N(図46の場合、N=8)のN台が繋がったツリー構造のネットワークでは、通信ステップ回数Mは少なくともlog2Nに比例する。したがって、この通信ステップ回数Mによる遅延の増加は無視できない。なお、リング型やトーラス型のネットワークの通信ステップ回数Mは、さらに大きい。

この問題に対し、IBM(登録商標)らは、制御用に、通信回数が少ない低遅延なネットワークを別途用意する方法を提案している(特許文献1)。これは、データ通信用のネットワーク以外に、通信ステップ回数Mの小さい制御用の専用ネットワークを用意する方法である。具体的には、専用ネットワークを用いてメモリアクセスリードライト)に関する指示書事前配布することとしている。これにより、より早くメッセージの受信に向けたメモリの準備が可能となる。その結果、通信の遅延が削減される。
さらに通信回数を削減する方法として、以下のような提案もされている。それは、例えば、すべての計算ノード間を直接繋ぐフルメッシュで接続する方法である。この方法では、集合通信を1回で実現することとしている。電気配線でフルメッシュ接続を実現する場合、配線数が非常に大きくなることが課題であった。しかし、周回AWG(Arrayed Waveguide Grating)を用いることで、少ない配線数でフルメッシュ接続を実現する方法が提案されている(特許文献2、特許文献3)。

概要

フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信の利用効率を高くし、並列計算における通信時間を短縮する。送信ノード704と受信ノード705との間を直接接続する直接リンク701と、送信ノードと受信ノードとの間を、送信ノード、受信ノード以外の折り返しノード706を経由して接続する1ホップリンク702と、送信ノードから受信ノードへデータを転送する際、直接リンクのみを使用するリンクと、1ホップリンクのみを使用するリンクと、直接リンクと1ホップリンクとを組み合わせて使用するリンクとの中から、送信ノードと受信ノードとを接続するリンクを選定する通信制御部703と、を備えた。

目的

本発明は、上述した課題を鑑み、フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信の利用効率を高くし、並列計算における通信時間を短縮するという課題を解決する並列計算機システム、並列計算機システムの制御方法、及びプログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

送信ノード受信ノードとの間を直接接続する直接リンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクと、前記送信ノードから前記受信ノードへデータを転送する際、前記直接リンクのみを使用するリンクと、前記1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードと前記受信ノードとを接続するリンクを選定する通信制御手段と、を備えた並列計算機システム

請求項2

前記通信制御手段は、前記直接リンクのみを使用するデータの転送において未使用のノードを前記折り返しノードとして選定する、請求項1に記載の並列計算機システム。

請求項3

前記折り返しノードは、前記送信ノードから送信されたデータを前記受信ノードへ転送する折り返し手段を備える、請求項1又は2に記載の並列計算機システム。

請求項4

並列計算プログラムを実行する制御手段をさらに備え、前記通信制御手段が、前記送信ノードと前記受信ノードとを接続するリンクとして前記1ホップリンクを選定するとき、前記折り返し手段は、前記制御手段を介すことなく、前記送信ノードから送信されたデータを前記受信ノードへ転送する、請求項3に記載の並列計算機システム。

請求項5

前記通信制御手段と前記折り返し手段とは、単一の集積素子に搭載されており、前記通信制御手段は前記折り返し手段を制御する、請求項3又は4に記載の並列計算機システム。

請求項6

前記通信制御手段は、前記送信ノードと前記受信ノードと間で転送されるデータ量に応じて、前記直接リンクのみを使用するリンクと、前記1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記転送に要する時間が短いリンクを、前記送信ノードと前記受信ノードとを接続するリンクとして選定する、請求項1から5の何れか1項に記載の並列計算機システム。

請求項7

前記送信ノード、前記受信ノード、及び前記折り返しノードのそれぞれは計算ノードであり、前記通信制御手段は、前記計算ノード間通信の状況を管理する通信管理テーブルと、前記計算ノード間を繋ぐすべてのリンクの使用状況を管理するリンク管理テーブルとを格納する、請求項1から6の何れか1項に記載の並列計算機システム。

請求項8

少なくともN台(Nは3以上の整数)の前記計算ノードが、光ファイバを介して前記直接リンクを用いて個別にすべて接続されたフルメッシュ接続で構成され、前記通信制御手段は、前記通信管理テーブルに格納された前記計算ノード間の通信の状況と、前記リンク管理テーブルに格納された前記計算ノード間を繋ぐすべてのリンクの使用状況とに基づいて、前記通信が1対1通信の場合、1≦K≦N−2、マルチキャスト通信の場合、1≦K≦N、レデュース又はオールレデュース通信の場合、1≦K≦N、をそれぞれ満たすK台の折り返しノードを選定する、請求項7に記載の並列計算機システム。

請求項9

送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する工程を備えた並列計算機システムの制御方法

請求項10

コンピュータに、送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する処理を実行させるためのプログラム。

技術分野

0001

本発明は、並列計算機システム、並列計算機システムの制御方法、及びプログラムに関する。

背景技術

0002

並列計算機システムでは、複数のCPU(Central Processing Unit)コアを使用して並列に計算を行うことで、プログラムを高速に実行することができる。ここで、図45を参照しつつ、関連する並列計算機システムの構成例について説明する。図45は、関連する並列計算機システムの構成例を示す図である。
並列計算機システム100を構成する計算ノード101−1から101−8(以下の説明において、単に計算ノード101ともいう。)は、少なくとも、単数又は複数の演算コアを有するプロセッサと、そのプロセッサに広帯域で接続されたメモリとを有する。そして、関連する並列計算機システム100は、図45に示すように、複数の計算ノード101の各々が、リンク102を介して電気スイッチ103と接続される。そして、この複数の計算ノード101は並列計算を行う。なお、図45には、フラットツリー型ネットワークを記載しているが、リング型トーラス型など複数のトポロジーが使われる。

0003

並列計算では、2つの計算ノード間で行う1対1通信の高速化だけでなく、3つ以上の計算ノード間で同時にデータをやりとりする集合通信の高速化が重要となる。集合通信には、例えば、次のようなものが存在する。
まず、集合通信には、データを複数の計算ノードに分配するマルチキャストブロードキャスト(以下、この2つをマルチキャストとして表現する。)がある。また、集合通信には、各計算ノードにあるデータを、1つ又は複数の計算ノードに集め、かつ、演算も行うレデュース又はオールレデュースがある。さらに、集合通信には、1つの計算ノードにある異なるデータを、それぞれ別の計算ノードに配送するスキャタがある。そして、集合通信には、各計算ノードにある異なるデータを1つの計算ノードに集めるギャザがある。さらに、集合通信には、複数の計算ノード間で異なるデータをやり取りするオールトゥーオール(全交換)等がある。
なお、マルチキャストとレデュース(オールレデュース)、及び、スキャタとギャザは、演算を除く通信は逆過程であり、通信時間は同じである。

0004

人工知能の1つであるディープラーニングの並列計算学習を例に、具体的に使われる集合通信を紹介する。ディープラーニングの並列計算を使った学習方法として、モデルパラレルとデータパラレルとの2つがある。モデルパラレルは、ニューラルネットワーク自体を分割するものである。そして、モデルパラレルは、それぞれ異なる計算ノード101で計算を行う。モデルパラレルは、各ニューラルネットワークの層毎に、演算結果をオールギャザする。そして、モデルパラレルは、各計算ノードで演算結果を共有する。
一方、データパラレルは、入力する複数のデータを分割するものである。データパラレルは、複数の計算ノード101で同一のニューラルネットワークの計算を行う。この場合、ニューラルネットワークのパラメータを最適化するために、データパラレルでは、パラメータの変化分をギャザやレデュースで1つの計算ノードに集める。そして、データパラレルは、パラメータ自体を複数の計算ノードにマルチキャストする。

0005

一般に、各計算ノード101と電気スイッチ103間とのリンク102の帯域幅を増やすことで、通信時間を短くすることができる。しかし、一度に複数の通信を行う集合通信では、ネットワーク内で輻輳が発生し易くなる。また、一度に複数の通信を行う集合通信では、最悪、データの一部が損失してしまう。この場合、データを再送する必要がある。そして、データを再送する場合、データのやり取りでさらに時間がかかってしまう。そのため、リンク102の帯域幅を増やしても、集合通信は高速化されない。

0006

集合通信の高速化方法として、図46に示すように、ツリー構造で複数のステップに分けて順に通信を行うことで、輻輳を回避する方法がある。しかし、この方法では、通信回数の増加が問題となる。例えば、1回の通信における遅延がLであると仮定すると、集合通信でM回の通信ステップが必要な場合、集合通信全体ではM×Lと大きな遅延が発生してしまう。図46に示すように、既存の計算ノード101として、計算ノード101−1から101−N(図46の場合、N=8)のN台が繋がったツリー構造のネットワークでは、通信ステップ回数Mは少なくともlog2Nに比例する。したがって、この通信ステップ回数Mによる遅延の増加は無視できない。なお、リング型やトーラス型のネットワークの通信ステップ回数Mは、さらに大きい。

0007

この問題に対し、IBM(登録商標)らは、制御用に、通信回数が少ない低遅延なネットワークを別途用意する方法を提案している(特許文献1)。これは、データ通信用のネットワーク以外に、通信ステップ回数Mの小さい制御用の専用ネットワークを用意する方法である。具体的には、専用ネットワークを用いてメモリアクセスリードライト)に関する指示書事前配布することとしている。これにより、より早くメッセージの受信に向けたメモリの準備が可能となる。その結果、通信の遅延が削減される。
さらに通信回数を削減する方法として、以下のような提案もされている。それは、例えば、すべての計算ノード間を直接繋ぐフルメッシュで接続する方法である。この方法では、集合通信を1回で実現することとしている。電気配線でフルメッシュ接続を実現する場合、配線数が非常に大きくなることが課題であった。しかし、周回AWG(Arrayed Waveguide Grating)を用いることで、少ない配線数でフルメッシュ接続を実現する方法が提案されている(特許文献2、特許文献3)。

0008

米国特許出願公開第2011/270942号明細書
特許第3292843号公報
米国特許第09401774号明細書
特許第3568878号公報

先行技術

0009

原田啓司、外3名,“スター型WDMシステムの開発”,[online],平成15年10月,NTT技術ジャーナル,[平成29年5月2日検索],インターネット<URL:http://www.ntt.co.jp/journal/0310/files/jn200310046.pdf>

発明が解決しようとする課題

0010

特許文献1に記載された技術は、複数のネットワークを用意する必要がある。そのため、ネットワークのコストが大きくなる。また、特許文献1に記載された技術は、複数のネットワークを同時に管理する必要がある。そのため、管理コストが大きくなる。特に、並列計算機システムでは、高速に並列処理する必要がある。そのため、ネットワーク間の高度な同期が必要である。しかし、この同期にかかる時間も、通信の遅延に付加されてしまう。

0011

一方、特許文献2、特許文献3に記載されたフルメッシュ接続されたシステムにおける課題は、1対1通信の帯域が小さいことである。図47に、N台の計算ノード301がフルメッシュ接続された並列計算機システム300の例を示す(図47の場合、N=8)。それぞれの計算ノード300−x(xは1以上の整数)からは、N−1本の双方向リンク302が出ている。このN−1本の双方向リンク302は、それぞれ異なる計算ノード301に接続される。例えば、1リンクの一方向あたりの帯域が20Gbpsの場合、1つの計算ノード301から出る総帯域は140Gbpsと大きくなる。しかし、各計算ノード301間のリンクの帯域は、僅か20Gbpsと小さい。

0012

通常のネットワークを用いた通信は、データに付加される送信先アドレス情報に基づいて、経路最短となる1つのリンクを使う。例えば、計算ノード1 301−1から計算ノード5 301−5へ1対1通信でメッセージを送ろうとした場合、ネットワークは計算ノード5 301−5のアドレス情報に基づいてリンク351の1本だけを使用して通信する。その間、他の6本のリンク352から357は待機状態にある。したがって、リンクの利用効率が悪い。
NTT(登録商標)らは、トラフィックが増加した場合に、超過した分のトラフィックを、別の経路に迂回する方法を提案している(特許文献4)。しかし、この方法は、帯域不足による輻輳が生じてから、迂回路を考慮したネットワークの再設計を行うものである。したがって、その再設計に多大な時間が必要である。そのため、並列計算には活用できない。

0013

本発明は、上述した課題を鑑み、フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信の利用効率を高くし、並列計算における通信時間を短縮するという課題を解決する並列計算機システム、並列計算機システムの制御方法、及びプログラムを提供することにある。

課題を解決するための手段

0014

本発明の並列計算機システムは、送信ノード受信ノードとの間を直接接続する直接リンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクと、前記送信ノードから前記受信ノードへデータを転送する際、前記直接リンクのみを使用するリンクと、前記1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードと前記受信ノードとを接続するリンクを選定する通信制御手段と、を備える。

0015

また、本発明の並列計算機システムの制御方法は、送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する工程を備える。

0016

さらに、本発明のプログラムは、コンピュータに、送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する処理を実行させる。

発明の効果

0017

本発明によれば、フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信の利用効率を高くし、並列計算における通信時間を短縮することが可能な並列計算機システム、並列計算機システムの制御方法、及びプログラムを提供できる。

図面の簡単な説明

0018

第1実施形態の並列計算機システムの構成の一例を示す模式図である。
第1実施形態の並列計算機システムでの1ホップリンクを用いた1対1通信の一例を示す模式図である。
第1実施形態の1対1通信における通信時間がデータサイズに依存する一例を示す図である。
第1実施形態の並列計算機システムのメインの計算ノードの制御フローの一例を示す図である。
第1実施形態の提案並列計算機システムのその他の計算ノードの制御フローの一例を示す図である。
第2実施形態の並列計算機システムの構成の一例を示す模式図である。
第2実施形態の並列計算機システムでの1ホップリンクを用いた1対1通信の一例を示す模式図である。
第2実施形態の1対1通信における通信時間がデータサイズに依存する一例を示す図である。
第3実施形態の並列計算機システムの構成の一例を示す模式図である。
第3実施形態の分散スイッチと折り返し機能部の構成の一例を示す模式図である。
第3実施形態の計算ノード間通信におけるパケット構成の一例を示す模式図である。
第3実施形態のマルチキャスト通信における高速化手法の一例を示す図である。
第3実施形態のマルチキャスト通信における分散スイッチ結線例の送信ノードの第1ステップについて説明する図である。
第3実施形態のマルチキャスト通信における分散スイッチ結線例の送信ノードの第2ステップについて説明する図である。
第3実施形態のマルチキャスト通信における分散スイッチ結線例の受信ノードの第1ステップについて説明する図である。
第3実施形態のマルチキャスト通信における分散スイッチ結線例の受信ノードの第2ステップについて説明する図である。
第3実施形態のマルチキャスト通信における通信時間がデータサイズに依存する一例を示す図である。
第3実施形態の通信管理テーブルの一例を示す図である。
第3実施形態のリンク管理テーブルの一例を示す図である。
第3実施形態の通信制御フロー全体像の一例を示す図である。
第3実施形態の新規通信発生時の通信制御フローの一例を示す図である。
第3実施形態のリンク検証と通信開始の判断の制御フローの一例を示す図である。
第3実施形態の通信管理テーブルの一例を示す図である。
第3実施形態のリンク管理テーブルの一例を示す図である。
第3実施形態の通信管理テーブルの一例を示す図である。
第3実施形態のリンク管理テーブルの一例を示す図である。
第3実施形態の通信完了時の通信制御フローの一例を示す図である。
第3実施形態の通信管理テーブルの1つの通信が完了したときの一例を示す図である。
第3実施形態のリンク管理テーブルの1つの通信が完了したときの一例を示す図である。
第3実施形態の複数プログラム実行時のスキャタのデータの流れの一例を示す図である。
第4実施形態の並列計算機システムの構成の一例を示す模式図である。
第4実施形態の分散スイッチの構成の一例を示す模式図である。
第4実施形態のレデュースのデータの流れの一例を示す図である。
第4実施形態のオールレデュースのデータの流れの一例を示す図である。
第4実施形態のレデュースの最初の通信での分散スイッチのデータの流れの一例を示す図である。
第4実施形態のレデュースの2回目の通信での分散スイッチのデータの流れの一例を示す図である。
第4実施形態のレデュース又はオールレデュースにおける通信時間がデータサイズに依存性する一例を示す図である。
第5実施形態の分散スイッチの構成の一例を示す模式図である。
第5実施形態のレデュース又はオールレデュースにおける通信時間がデータサイズに依存する一例を示す図である。
第6実施形態の1対1通信におけるデータの流れの一例を示す図である。
第6実施形態のマルチキャスト通信におけるデータの流れの一例を示す図である。
第6実施形態のマルチキャスト通信における通信時間がデータサイズに依存する一例を示す図である。
第6実施形態のレデュースにおけるデータの流れの一例を示す図である。
第6実施形態のオールレデュースにおけるデータの流れの一例を示す図である。
第6実施形態のリンク検証と通信開始の判断の制御フローの一例を示す図である。
第7実施形態の並列計算機システムの構成の一例を示す模式図である。
第8実施形態の並列計算機システムの構成の一例を示す模式図である。
関連する並列計算機システムの構成例を示す図である。
関連する並列計算機システムでの集合通信の高速化方法の例を示す図である。
フルメッシュ接続された並列計算機システムの一例を示す模式図である。

実施例

0019

(第1実施形態)
以下、図面を参照しながら本発明の第1の実施形態について詳しく説明する。

0020

図1は、本発明の第1実施形態の並列計算機システム400システムの構成の一例を示す模式図である。簡単のため、計算ノードの台数Nは4台とする。並列計算機システム400において、N台の計算ノード401の各々が、複数の送受信器403と接続されている。また、並列計算機システム400は、N台の計算ノード401の各々が、複数のケーブル402で直接繋がれたシステムである。そして、計算ノード401は、少なくともプロセッサ/メモリ451と、通信制御部452とを有する。

0021

通信制御部452は、計算ノード401が1対1の通信を行うとき、使用するリンクを決定する機能を有する。ここで、直接リンクと1ホップリンクとについて説明する。直接リンクとは、異なる2つ以上の計算ノード間のデータの通信において、1つ以上の直接接続された計算ノード間のリンクである。また、1ホップリンクとは、1つ以上の1台の計算ノードを経由したリンクである。そして、通信制御部452は、異なる2つ以上の計算ノード間のデータの通信において、直接リンクのみを使用するリンクと、1ホップリンクのみを使用するリンクと、直接リンクと1ホップリンクとを組み合わせて使用するリンクとの中から、計算ノード間を接続するリンクを決定する機能を有する。

0022

例えば、通信制御部452は、異なる2つ以上の計算ノード間のデータ通信において、計算ノード間で転送されるデータ量に応じて、使用するリンクを決定するようにしてもよい。すなわち、異なる2つ以上の計算ノード間で転送されるデータ量に応じて、直接リンクのみを使用するリンクと、1ホップリンクのみを使用するリンクと、直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、転送に要する時間が短いリンクを、計算ノード間を接続するリンクとして決定する。
また、通信制御部452は、異なる2つ以上の計算ノード間のデータの通信において、直接リンクと、1ホップリンクとの組み合わせの中から、通信時間が短くなる1つ以上のリンクからなるリンク群を選定する機能も有する。

0023

例えば、計算ノード401−2から計算ノード401−4へ大容量(>80kbit)のデータを送る場合、図2に示すように、通信制御部452は、直接リンク500だけでなく、本来1対1通信とは関係しない計算ノード401−1、401−3を折り返しノードに設定する。そして、通信制御部452は、折り返しノードを経由する1ホップリンク501、502も使用する決定を行う。また、通信制御部452は、小容量(≦80kbit)のデータを送る場合、直接リンク500のみを使用する決定を行う。なお、データサイズが大容量か小容量かを判断する基準は、通信制御部452が、事前に1対1通信のデータサイズと通信時間との関係を計測した上で決定する。
このように、本実施形態では、データのサイズに基づいて1ホップリンクを適用するかどうかを判断することとしている。これにより、データのサイズに依存することなく高速な並列計算機システムを提供することができる。

0024

図3に、本実施形態での1対1通信の通信時間とデータサイズとの関係を示す。比較例のフルメッシュ接続された並列計算機システム300(図47)では、データサイズが大きいと、直接リンクの帯域に律速されデータ通信時間が長くなっている。しかし、本実施形態では、1ホップリンク501、502を最大(N−2)個活用することができる。その結果、直接リンクと合わせて(N−1)倍の広帯域化が可能である。これにより、本実施形態では、比較例よりもデータ通信時間を1/(N−1)に短縮できた。

0025

なお、図1では、計算ノード401内の機能をブロックで示している。しかしながら、各機能部は、個別のデバイス又はチップである必要はない。例えば、通信制御部452は、プロセッサ/メモリ451のチップの中にあっても良い。
また、プロセッサ/メモリ451は、周知の構成を適用することが可能である。例えば、プロセッサ/メモリ451は、複数の大容量DDR4 SDRAM(Double-Data-Rate4 Synchronous Dynamic Random Access Memory)メモリが接続されたIntel(登録商標)のXEON(登録商標)などのプロセッサとすることができる。あるいは、より多くの演算コアが搭載されたXEON Phiなどのプロセッサとすることもできる。さらには、Intelのプロセッサに接続された、HBM(High Bandwidth Memory)などの広帯域I/O(Input/Output)で接続された広帯域メモリを有するGPGPU(General‐Purpose computing on Graphics Processing Units)プロセッサとすることもできる。プロセッサ/メモリ451として、如何なる構成を採用したとしても、本発明を限定するものではない。
以上説明したように、本実施形態によれば、フルメッシュで接続された並列計算機システムにおいて、1ホップリンクを活用したリンクの広帯域化が可能となる。その結果、通信時間が短縮されるという効果が得られる。

0026

(第1実施形態の制御方法)
本実施形態では、瞬時に未使用のリンクを選定することができるように、計算ノード401−1の1台をメインの計算ノードとしている。そして、本実施形態では、計算ノード401のプロセッサ/メモリ451が、すべての計算ノード401間の通信と、リンクの使用状況とを管理している。図4Aに、メインの計算ノード401−1の制御フローの一例を示す。図4Bに、その他の計算ノード401の制御フローの一例を示す。

0027

(フロー:F01)
まず、メインの計算ノード401−1の動作について説明する。図4Aにおいて、メインの計算ノード401−1は、プロセッサ/メモリ451において動作する並列計算プログラムを実行する。並列計算プログラム実行中に計算ノード401間の通信が必要となったとき、プロセッサ/メモリ451は、通信制御部452にその通信の内容を提示する。そして、通信制御部452はその通信の内容を確認する。

0028

(フロー:F02)
メインの計算ノード401−1の通信制御部452は、実施する通信の内容とリンクの使用状況とに基づいて、通信に使用するリンク群(以下、通信リンク群という。)を選定する。通信リンク群の選定として、通信制御部452は、先ず、直接リンクを選定する。
次に、1対1の通信の場合、通信制御部452は、送信ノードからのリンクと受信ノードへのリンクとが未使用な計算ノード401を折り返しノードとする。そして、通信制御部452は、その折り返しノードを経由する送信ノードから受信ノードへのリンクを1ホップリンクとする。このように、通信制御部452は、利用できる1つ以上の1ホップリンクを選定する。
直接リンクと1ホップリンクとの何れか一方しか使えない場合、通信制御部452は、その使用可能なリンクを通信リンク群に選定する。一方、直接リンクと1ホップリンクとが両方使える場合、通信制御部452は、通信リンク群を以下のように選定する。直接リンクのみでの通信時間が、直接リンクと1ホップリンクとの両方を使って通信するときの通信時間よりも短い場合、通信制御部452は、直接リンクのみを通信リンク群に選定する。直接リンクのみでの通信時間が、直接リンクと1ホップリンクとの両方を使って通信するときの通信時間よりも長い場合、通信制御部452は、直接リンクと1ホップリンクとの両方を通信リンク群に選定する。

0029

(フロー:F03)
その後、メインの計算ノード401−1の通信制御部452は、通信リンク群を使って通信をするための通信指示書を作成する。通信制御部452は、作成した通信指示書をその他の計算ノード401に送付する。メインの計算ノード401−1が送付する通信指示書に記載された通信リンク群は他の通信で使用中の可能性もある。したがって、この通信指示書を送付する場合には専用のヘッダを用意する。そして、通信指示書を送付する通信方式は、他の通信よりも優先する方式とする。次に、その他の計算ノード401の動作について説明する。図4Bにおいて、通信指示書を受信するその他の計算ノード401の通信制御部452は、この専用のヘッダを確認すると、優先して通信指示書の動作を実行する(フロー:F04)。なお、計算ノード401はフルメッシュ接続である。ここで、フルメッシュ接続とは、計算ノード401が、光ファイバを介して、上記した直接リンクを用いて個別にすべて接続された状態をいう。したがって、メインの計算ノード401−1は、一度にすべての計算ノード401に対して通信指示書を送付できる。さらに、通信指示書は、各計算ノード401で使用するリンクに関する指示だけでよい。したがって、通信指示書のデータサイズは、送受リンク数である2N程度と小さい。そのため、通信指示書の送付に要する時間は短い。また、通信指示書の送付が与えるデータ通信への時間軸上の影響は無視できる。

0030

(フロー:F04、F05)
メインの計算ノード401−1以外の他の計算ノード401の通信制御部452は、メインの計算ノード401−1から送付された通信指示書を受信する。そして、他の計算ノード401の通信制御部452は、使用するリンクを確認する。さらに、他の計算ノード401の通信制御部452は、自身に対して発せられた通信指示と併せてプロセッサ/メモリ451を設定する。このようにして、他の計算ノード401の通信制御部452は、通信の準備を行う。

0031

(フロー:F06)
その後、メインの計算ノード401−1及びその他の計算ノード401は、通信の準備が完了後、通信指示書にしたがった計算ノード間の通信を実施する。

0032

このように、フロー:F01からフロー:F06に記載の各フローを実行することで、N台の計算ノード401がフルメッシュで接続された並列計算機システムにおいて、1ホップリンクを活用するシステムを提供することができる。この並列計算機システム400では、折り返しノードの数Kを、1≦K≦N−2まで設定することができる。本実施形態では、図3に示すように、直接リンクと合わせて、1対1通信の帯域幅を最大N−1倍まで向上できる。なお、本実施形態では、通信指示書を送付する際に専用のヘッダを用意するものとして説明を行っている。しかしながら、通信指示書を送付する方式は、他の方式であっても良い。例えば、通信指示書を送付するメインの計算ノード401−1が、並列計算を行う方式を採用するようにしても良い。これにより、専用のヘッダを用意する必要が無くなる。その結果、通信指示書の送付時間のさらなる削減が可能になる。

0033

(第2実施形態)
以下、図面を参照しながら本発明の第2実施形態について詳しく説明する。

0034

図5は、本発明の第2実施形態の並列計算機システム800の構成の一例を示す模式図である。簡単のため、計算ノードの台数Nは4台で示す。第2実施形態の並列計算機システム800の第1実施形態と異なる点は、各計算ノード801が、分散スイッチ853と折り返し機能部854とを有する点である。

0035

図6に、第2実施形態において1ホップリンクを使用した1対1通信のときのデータの流れを示す。第1実施形態と同様に、第2実施形態においても、直接リンク900だけでなく、本来1対1通信とは関係しない計算ノード801−1、801−3を折り返す1ホップリンク901、902も通信リンク群として使用する。この折り返しは、新たに追加した分散スイッチ853と折り返し機能部854とを用いてデータを折り返すこととしている。このデータの折り返しは、プロセッサ/メモリ851の外部で行っている。したがって、通信の負荷が、プロセッサ/メモリ851で行われる計算に与える影響を最小限に抑えることができる。さらに、データの折り返しは、プロセッサ/メモリ851のメモリを介さないで行っている。したがって、1ホップリンクでの遅延時間を2.1μsecまで削減することができる。
なお、第1実施形態のように1ホップリンクでメモリを介する場合、直接リンクと比較して2回分の遅延時間が加わる。その結果、4μsecの遅延が生じる。本実施形態の1ホップリンクではメモリを介していない。図7に示すように、第1実施形態ではデータサイズが80kbit以上でないと1ホップリンク適用の効果(データ転送時間の短縮化)を得ることができなかった。これに対して、本実施形態では、データサイズがより小さい20kbit以上であってもデータ転送時間の短縮化を図ることができる。すなわち、小さいデータサイズであっても十分通信時間を短くすることができる。そのため、データサイズに依存することなく1ホップリンクを活用して通信を行うようにしても良い。
以上説明したように、本実施形態によれば、演算などを行うプロセッサ/メモリを介すことなく、1ホップリンクを活用した遅延の小さい通信を実現することができる。

0036

(第3実施形態)
以下、図面を参照しながら本発明の第3実施形態について詳しく説明する。

0037

図8は、本発明の第3実施形態の並列計算機システム1100の構成の一例を示す模式図である。簡単のため、計算ノード数Nは4としている。本実施形態は、すべての計算ノード1101が、同じプログラムが動作しながら並列計算を行うMPI(Message Passing Interface)を使用する方式としている。MPIとは、並列コンピューティングを利用するための標準化された規格である。また、MPIとは、1つの計算ノードにおけるインターフェースに関する規格である。なお、MPI以外に、他の周知の構成を適用することも可能であり、如何なる構成を採用したとしても、本発明を限定するものではない。

0038

並列計算機システム1100は、計算ノード1101間を接続する送受信器として、λ1、λ2、λ3といった波長が異なる光送受信器1103−1、1103−2、1103−3を有する。さらに、並列計算機システム1100は、複数の波長の光信号波長多重するAWG1102−1を有する。また、並列計算機システム1100は、複数の波長の光信号を波長多重するAWG1102−1を接続する周回性AWG1102−3を有する。そして、並列計算機システム1100は、AWG1102−1と周回性AWG1102−3との間を接続する光ファイバ1102−2を有する。

0039

光送受信器1103の波長は、特許文献1から特許文献3、及び非特許文献1に開示されているように、周回性AWG1102−3のルーティング特性に合わせて決定される。そして、各計算ノード1101間をフルメッシュ接続している。図47に示した関連するフルメッシュ接続の計算機システム300では、光ファイバは約N2本必要である。そのため、Nが大きいほど光ファイバの本数が非常に多くなる。その結果、ネットワークの構築コスト莫大となっていた。これに対して、本実施形態の並列計算機システム1100では、光ファイバ1102−2の本数を2N本に抑えることができる。その結果、ネットワーク構築コストを大幅に削減することができる。なお、周回性AWG1102−3は、ポート数を40×40まで容易に拡張することが可能である。したがって、本実施形態でも、計算ノード数Nを40台まで対応することが可能である。なお、特許文献3に開示されている方式を採用することで、Nを80台、120台と拡大することができる。
このように、本実施形態では、計算ノードを、周回性AWGに対してAWGと光ファイバとを介して接続する構成としている。これにより、計算ノードがフルメッシュで接続された並列計算機システムよりも光ファイバの本数を削減することが可能になる。さらに、配線コストを低減することができる。

0040

また、並列計算機システム1100は、通信制御部1152と分散スイッチ1153とを1つの集積素子上に搭載している。そして、通信制御部1152から分散スイッチ1153を直接、かつ、高速に制御できる構造としている。さらに、通信制御部1152内にメモリを有している。このメモリは、並列計算機システム1100で発生する通信を管理する通信管理テーブル1155と、計算ノード間を繋ぐ全リンクを管理するためのリンク管理テーブル1156とを格納する。通信制御部1152は、これらの管理テーブルに高速にアクセスする。そして、通信制御部1152は、分散スイッチ1153を使用したリンクの選定を行う。本実施形態では、数10ナノ秒といった高速なリンクの選定動作を実現できた。
このように、本実施形態によれば、通信制御部1152が、分散スイッチ1153と、通信管理テーブル1155と、リンク管理テーブル1156とに高速にアクセスすることができる。これにより、瞬時にリンクの選定と設定とを行うことができる。

0041

なお、プロセッサ/メモリ1151と分散スイッチ1153との間は、共通バスで接続している。また、共通バスのポートは、接続される計算ノード数と同じN−1個用意している。これにより、他のN−1個の計算ノード1101間で、独立にリンク制御を行うことができる。さらに、他のN−1個の計算ノード1101間で、メモリを介した高速なメッセージのやり取りを実現することができる。なお、プロセッサ/メモリ1151と分散スイッチ1153とを、プロセッサ−分散スイッチ1153を組み合わせたものと、メモリ−分散スイッチ1153を組み合わせたものとを、それぞれ独立のバスで接続しても良い。この場合、後述する分散スイッチ1153内に用意されるクロスバースイッチのスイッチ規模が大きくなる。しかしながら、バスの制御が不要となるため、通信の遅延を小さくすることができる。

0042

図9に分散スイッチ1153と折り返し機能部1154との構成の一例を示す。

0043

折り返し機能部1154は、ポート1154−1と、分配器1154−2と、N個の出力ポート1154−Nとを有する。ポート1154−1は、分散スイッチ1153から信号を入力する。分配器1154−2は、入力された信号をN分配する(図9の場合、N=4)。出力ポート1154−Nは、再び分散スイッチ1153にデータを戻す。
N個の出力ポート1154−Nのうち、N−1個の出力ポート1154−3は、他の計算ノード1101にデータを送信するためのものである。残りの1個の出力ポート1154−4は、自計算ノード1101にデータを戻すためのものである。これにより、メモリの書き換えなしで、高速に、複数のデータを同時に折り返す機能を実現している。

0044

分散スイッチ1153は、送信用クロスバースイッチ1201と、受信用クロスバースイッチ1202との、2つのクロスバースイッチを有する。

0045

送信用クロスバースイッチ1201の入力ポートのうち、N−1個の入力ポート1201−1は、プロセッサ/メモリ1151と接続する。残りのN−1個の入力ポート1201−2は、折り返し機能部1154の出力ポートであるN−1個の出力ポート1154−3と接続する。そして、送信用クロスバースイッチ1201の出力ポートのうち、N−1個の出力ポート1201−3は、外部の計算ノード1101と接続する光送受信器1103の送信機と接続する。そして、1個の出力ポート1201−4は、受信用クロスバースイッチ1202の入力ポートの1つである1202−1と接続する。受信用クロスバースイッチ1202のその他の入力ポートのうち1個の入力ポート1202−2は、折り返し機能部1154の出力ポート1154−4と接続する。そして、受信用クロスバースイッチ1202の残りのN−1個の入力ポート1202−3は、外部のN−1台の計算ノード1101と接続するN−1台の光送受信器1103の受信機と接続する。受信用クロスバースイッチ1202のN−1個の出力ポート1202−4は、プロセッサ/メモリ1151と接続する。受信用クロスバースイッチ1202の残りの1個の出力ポート1202−5は、折り返し機能部1154の入力ポート1154−1と接続する。

0046

通信制御部1152(図8)は、計算ノード1101間の通信が必要なデータに対して、適切なサイズにパケット化する。また、通信制御部1152は、計算ノード1101間通信用の制御信号を付加する機能と、それを読み込む機能とを有する。制御信号を付加する機能と制御信号を読み込む機能とを実現するため、送信用クロスバースイッチ1201の入力ポート1201−1のプロセッサ/メモリ1151に対向する側には、バッファAを配置している。また、受信用クロスバースイッチ1202の入力ポート1202−3の計算ノード1101に対向する側には、バッファBを配置している。
図10に、計算ノード1101間通信用の制御信号の構成の一例を示す。計算ノード1101間通信において付加する制御信号は、図10に示すように、通信管理番号1301と、ステップ番号1302と、リンク管理情報1303と、送信プロセスID番号1304とを有する。なお、図10ペイロード内に、必要なメッセージなどのデータを入力する。また、図10FCSフレームチェックシーケンス)は、データの誤り検出及び訂正に用いるためのものである。図10に示す制御信号は、計算ノード1101が最初にプロセッサ/メモリ1151からデータを取り出すときにのみ付加する形態とする。そして、この制御信号は、計算ノード1101において1ホップリンクで折り返すときにも変更しないこととしている。これにより、1ホップリンクを用いた折り返しに基づいて発生する遅延を最小限に抑えることとしている。

0047

図10に示す通信管理番号1301は、通信制御部1152(図8)が通信管理テーブル1155で管理する番号の1つである。この番号を用いることで、計算ノード1101と、通信の種類、送信ノード、受信ノード等の情報とが紐付けされる。通信管理番号1301は、番号管理を行うため10ビット分用意し、1024個までの通信を管理できるようにしている。通信管理番号1301を10ビット分用意しているのは、数十の計算ノード1101を有する並列計算機システム1100で同時に発生する通信数は、精々数百程度であるからである。

0048

図10に示すステップ番号1302は、送信するデータが、1ホップリンクを用いた折り返しにおいて、ホップ前の通信データなのか、ホップ後の通信データなのかを判別するためのものである。ステップ番号1302として、1ビット分用意している。

0049

図10に示すリンク管理情報1303は、自計算ノード1101が接続しているすべての送信リンク稼働状況を示すものである。リンク管理情報1303として、送信リンクが未使用であるか稼動中であるかを示す1ビットのデータ(未使用:0、稼働中:1)を使用する。各計算ノード1101は、他の計算ノード1101から得たリンク管理情報1303と、自計算ノード1101のリンク管理情報1303とを、リンク管理テーブル1156に常時反映させる。
本実施形態では、自計算ノード1101から得た送信リンクの稼働状況といった少ない情報のみで、すべての計算ノード1101は、すべての送信リンクを常時把握することができる。例えば、32台の計算ノード1101が1本ずつフルメッシュ接続された並列計算機システムでは、総リンク数である約1000本の稼働状況を、1通信あたり31ビットといった少ないリンク管理情報1302を用いることで管理することができる。
通常の分散型のシステムでは、並列計算プログラムによっては、他の計算ノードが設定した通信に基づいて輻輳が発生し、大きな遅延が発生する場合がある。これに対して、本実施形態の送信リンク管理を用いれば、輻輳のない低遅延な通信システムを実現することができる。本実施形態の管理方法は、複数の並列計算プログラムが同時に動作する場合においても適用することができる。

0050

図10に示す送信プロセスID番号1304は、MPI通信で規定されるパラメータである。送信プロセスID番号1304は、受信側で、そのデータが必要とするデータか否かを確認するための番号である。本実施形態では単精度で扱うものとし、32ビット分用意している。

0051

図10に示すパケットのサイズは、通常の電気スイッチを用いた信号の通過時間よりも短い時間として、約50ナノ秒とした。本実施形態では、関連する並列計算機システム(図45)において計算ノードの間に設けられていた電気スイッチ103をなくしている。この電気スイッチを用いた信号の通過時間よりも短い時間で、すべてのリンクの使用状況を把握できるようにしている。これにより、リンクを管理することで生じる遅延時間は、電気スイッチを使用したシステムと同等にすることができた。また、本実施形態では、追加される制御信号の情報量は100ビットと小さい。したがって、各計算ノード間のリンクの通信速度が25Gbpsである場合であっても、図10に示すパケットにおける制御信号の割合は10%以下に小さくすることができる。
このように、本実施形態では、すべてのリンクの使用状況を容易に判別することとしている。これにより、他の通信においてリンクが使用されているため通信を行うことができないといった輻輳の生じないネットワークを実現することができる。

0052

また、通信制御部1152には、付加された制御信号の組み合わせに応じたクロスバースイッチ1201、1202の状態を事前に登録する図示しない経路管理テーブルも用意している。経路管理テーブルを用いることで、瞬時に、クロスバースイッチ1201、1202の設定を反映することができる。

0053

図11に、計算ノード1 1101−1を送信ノードとし、すべての計算ノード1101−1、2、3、4を折り返しノードと受信ノードとの双方に設定したときの、大きなデータをマルチキャストする場合のデータの流れを示す。計算ノード1 1101−1は、自計算ノード1101−1から自計算ノード1101−1へデータ1を送った上でデータを折り返すこととしている。すなわち、計算ノード1 1101−1を折り返しノードとしている。データの流れは、以下の(1)から(5)の各ステップとなる。
(1)送信ノードでデータをK分割する。本実施形態では、K=4である。図11の場合、送信ノード1101−1は、データを、データ1からデータ4に分割する。
(2)送信ノードからすべての折り返しノードへ、分割されたデータ(以下、分割データという。)が個別に送信される。図11の場合、送信ノード1101−1から折り返しノード1101−2に対してデータ2が送信される。送信ノード1101−1から折り返しノード1101−3に対してデータ3が送信される。送信ノード1101−1から折り返しノード1101−4に対してデータ4が送信される。そして、各折り返しノードにおいて、送信ノード1101−1から送信された分割データを受信する。
(3)各折り返しノード(計算ノード)の分散スイッチ1153は、分割データをプロセッサ/メモリ1151に送信する。分散スイッチ1153は、分割データを複製する。各折り返しノードがN台にマルチキャストする場合、分割データを複製する数は、送信ノードと自計算ノードとの2台分を引いたN−2個とする。計算ノード1 1101−1だけは、送信ノードと自計算ノードとが同一であるため、分割データを複製する数は、N−1個となる。
(4)各折り返しノードは、複製した分割データを、送信ノードと自計算ノード以外の他の受信ノードへ再送信する。図11の場合、折り返しノード1101−2は、受信ノード1101−3に対してデータ2を送信する。折り返しノード1101−2は、受信ノード1101−4に対してデータ2を送信する。折り返しノード1101−3は、受信ノード2に対してデータ3を送信する。折り返しノード1101−3は、受信ノード4に対してデータ3を送信する。折り返しノード1101−4は、受信ノード2に対してデータ4を送信する。折り返しノード1101−4は、受信ノード3に対してデータ4を送信する。一方、他の受信ノードでは、そのデータを受信する。
(5)各受信ノードでは、受信したデータをプロセッサ/メモリ1151に送信する。

0054

上記各ステップ(1)から(5)における分散スイッチ1153の状態を、送信ノード1101−1と、受信ノード1101−2、1101−3、1101−4とに分けて具体的に説明する。

0055

まず、送信(計算)ノード1101−1の分散スイッチ1153の状態について説明する。図12に、上記(1)から(2)の各ステップにおける状態を示す。送信用クロスバースイッチ1201は、プロセッサ/メモリ1151から受信したデータを、各受信(折り返し)ノード1101に送信するため、光送受信器1103の送信器に接続するように設定される。そして、N分割したデータのうち、N−1個を別個に各受信ノード1101に送信する。例えば、データ2は、計算ノード2 1101−2に送信し、データ3は、計算ノード3 1101−3に送信する。この動作はスキャタと同様である。そして、ステップ(2)が終了した後、次のステップ(3)に向けて、送信用クロスバースイッチ1201は、図13に示すように設定される。プロセッサ/メモリ1151から、未だ送信していないデータ1をマルチキャストで送信する。そのため、結線1601を使用して、一度、受信用クロスバースイッチ1202に送信した後、結線1602を使用して、折り返し機能部1154に送信する。折り返し機能部1154においてデータを複製する。そして折り返し機能部1154は、複製したデータを、それぞれ結線1603を使用して各受信ノード1101−2、1101−3、1101−4へ送信する。

0056

次に、受信(計算)ノード1101−2、1101−3、1101−4の分散スイッチ1153の状態について説明する。図14に、上記(2)から(4)の各ステップにおける状態を示す。図14は、送信ノード1101−1と光送受信器1103−1とが接続されている状態を示している。光送受信器1103−1から入力した信号は、結線1701を使用して折り返し機能部1154に入力する。折り返し機能部1154に入力した信号は複製される。その後、結線1702を使用して別の計算ノードと接続された光送受信器1103−2、1103−3に送信されて折り返される。このとき、折り返し機能部1154で複製されたデータの1つは、再度受信用クロスバースイッチ1202に入り、結線1703を介してプロセッサ/メモリ1151に送られる。

0057

次に、(5)のステップでの分散スイッチ1153の状態を図15に示す。送信ノード1101−1から入力したデータ1は、結線1801でプロセッサ/メモリ1151に受信される。また、1ホップリンクして入ってくる光送受信器1103−2、1103−3から入力したデータは、結線1802で直接プロセッサ/メモリ1151に受信される。なお、(2)から(4)と(5)のデータの経路の切り替えは、通信制御部1152が、図10に示した制御信号におけるステップ番号1302の違いに基づいて判別して切り替える。これにより、通信制御部1152は、瞬時に(2)の通信が終了したことを判断し、分散スイッチ1153の設定を遅延なく変更できる。
本実施形態では、図47に示した関連するフルメッシュ接続時の遅延時間(2μsec)と略同じ遅延時間を実現することができる。したがって、より小さいメッセージサイズで通信時間の高速化を実現することができた(遅延時間は2.1μsec以内)。
このように、本実施形態では、1ホップリンクの折り返し時に、データの複製を行うこととしている。これにより、遅延が小さい1ホップリンクを実現することができる。さらに、マルチキャストやレデュースのさらなる通信時間の削減が可能になる。

0058

図16に、本実施形態でのマルチキャスト通信におけるデータ転送時間とデータ転送量との関係の一例を示したものである。図16に示すように、第1実施形態ではデータサイズが80kbit以上でないと1ホップリンク適用の効果(データ転送時間の短縮化)を得ることができなかった。これに対して、本実施形態では、送信ノードを含めた折り返しノードの数Kが最大値であるNのとき、1ホップリンクを活用することで、データサイズの大きいマルチキャスト通信の通信時間を約2/N倍に短縮できた。さらに、遅延を小さく抑えることで、N=8でデータ転送量4kbitと小さいデータサイズでも通信時間の短縮を実現できた。

0059

(第3実施形態の制御方法)
本実施形態では、各計算ノードで、同じ並列計算プログラムを同時に実行する制御方法を実装した。本実施形態の制御方法を実現する上で、通信管理テーブル1155と、リンク管理テーブル1156とを通信制御部1152内に用意することとしている。そして、通信制御部1152から通信管理テーブル1155とリンク管理テーブル1156とに対して高速にアクセスできるようにした。

0060

図17に通信管理テーブル1155の一例を示す。このテーブルは、実際に稼働している計算ノード1101間の通信の状況を管理するものである。管理するパラメータは、通信管理番号1155−0と、MPI通信のプログラムで各通信の記述に使われるパラメータと、通信状態1155−10とである。本実施形態で管理するMPI通信関連のパラメータは、通信種類1155−1と、送信ノード1155−2と、受信ノード1155−3と、コミュニケータ1155−4と、送信アドレス1155−5と、受信アドレス1155−6と、データ個数1155−7と、データ精度1155−8と、ID番号1155−9とである。また、通信状態1155−10は、通信中か、待機かを管理する。なお、コミュニケータ1155−4は、事前に設定される計算ノード1101の組み合わせの定数である。例えば、MPI_COMM_WORLD(以下、WORLDと表記する。)は、プログラムの開始時に走る全プロセス(全計算ノード)からなるグループである。

0061

新規に通信を追加するときは、通信管理テーブル1155の行の末尾にその通信内容を追加する。通信が終了したとき、その追加した行を削除する。そして、削除した行の下に記載されていた通信内容の行を上に詰めていく方式としている。これにより、通信が発生した順序を、通信管理テーブル1155の行で管理することができる。また、通信の発生に伴うパラメータの数を低減することができる。

0062

また、1対1通信に関しては、通信方式を分けて管理するのでなく、1つの通信として通信管理テーブル1155上の1行で管理することとしている。MPI通信の1対1通信には、データの送受信保証できるブロッキング方式や、ユーザ自身がデータの送受信を保証する必要のあるノンブロッキング方式など複数の方式がある。この方式の違いは、リンクが占有されるという点で共通している。したがって、通信管理テーブル1155上で区分する必要はない。これにより、通信管理テーブル1155上の通信種類1155−1のパラメータ数を低減することができる。さらに、管理する通信の数を低減することができる。その結果、高速な制御を実現することができる。
このように、本実施形態では、MPIを一例とする並列コンピューティング利用するための標準化された規格においても、すべてのリンクの使用状況を、少ない制御データのやり取りに基づいて容易に判別することができる。これにより、通信の遅延を小さくできる。

0063

図18に、リンク管理テーブル1156の一例を示す。このテーブルは、送信ノード1156−1と、受信ノード1156−2と、利用状況1156−3と、1ホップ経由ノード1156−4との4つの項目を有する。送信ノード1156−1と受信ノード1156−2とには、すべての組み合わせを用意している。これにより、すべてのリンクを管理することとしている。そして、利用状況1156−3には、通信で使用中の場合、図17の通信管理テーブル1155上の通信管理番号1155−0を記録することとしている。また、1ホップリンクを高速に選択することができるように、各リンクが、さらに1ホップ追加したときに接続できる1ホップ経由ノード1156−4を、予めリンク管理テーブル1156上に用意している。なお、図18のリンク管理テーブル1156上の利用状況1156−3の中に、1ホップリンクか直接リンクかについてカッコの中に記載している。しかしながら、利用状況1156−3には、図17の通信管理テーブル1155の通信管理番号1155−0が記録されているので、このカッコ書きはなくてもよい。

0064

図19に、本実施形態の制御フローを示す。ステップS191の処理において、プロセッサ/メモリ1151は、計算ノード1101発生したイベントを確認する。ステップ192の処理において、プロセッサ/メモリ1151は、並列計算プログラム実行中に新規通信が発生した、又は通信が完了したかどうかを判断する。プロセッサ/メモリ1151が、新規通信が発生したと判断すると、ステップS193の処理へ移行する。プロセッサ/メモリ1151が、通信が完了したと判断すると、ステップS194の処理へ移行する。

0065

ステップS193の処理において、並列計算プログラム実行中に新規にメッセージ通信が発生した場合、通信制御部1152は、新規通信発生イベントを実行する。ステップS194の処理において、並列計算プログラム実行中に新規のメッセージ通信が完了(終了)した場合、通信制御部1152は、通信完了イベントを実行する。なお、ステップS193の処理、又はステップS194の処理は、並列計算プログラムを実行するすべての計算ノード1101が行う。また、この2つのイベントが発生した場合にのみ、通信制御部1152を動作させるようにすればよい。この2つのイベントが発生しないその他の状態では、通信制御部1152を低消費電力状態で待機させるようにしている。これにより、実効的な消費電力量を削減することができる。
このように、本実施形態では、新規通信発生イベントが発生した場合、又は通信完了イベントが発生した場合にのみ、通信制御部1152を動作させ、このイベントが発生しない他の状態では、通信制御部1152を低消費電力状態で待機させるようにしている。これにより、通信制御部1152を常時稼働する必要がない。その結果、通信制御部1152を低消費電力で待機させることができる。

0066

図20に、図19のステップS193における、新規通信発生イベントの制御フローを示す。まず、初めに、ステップS201の処理において、通信制御部1152は、通信管理テーブル1155の更新を行う。通信制御部1152は、プロセッサ/メモリ1151から入力される新規通信に関する指示を、通信管理テーブル1155の最後尾の行(以下、この行をX行目とする。)に書き込む。これにより、通信管理テーブル1155の最後尾(X行目)に項目が追加される。

0067

次に、ステップS202の処理において、通信制御部1152は、通信状態の確認を行う。通信制御部1152は、通信管理テーブル1155のX−1行目に記載されている通信状態1155−10を確認する。ステップS203の処理において、通信制御部1152は、通信管理テーブル1155の通信状態1155−10が、通信中であるか待機中であるかを確認する。
通信制御部1152が、通信状態1155−10が待機中であることを確認すると、ステップS210の処理、すなわち、待機中のフローへ移行する。待機中のフローでは、ステップS210の処理において、通信制御部1152は、通信管理テーブル1155の通信状態1155−10を待機に変更する。そして処理を終了する。
一方、通信制御部1152が、通信状態1155−10が通信中であることを確認すると、ステップS204の処理、すなわち、リンク検証と通信開始の判断のフローへ移行する。なお、通信制御部1152が、他に通信が無いことを確認した場合、すなわち、新規に発生した通信以外に他の通信がないことを確認した場合(X=1の場合)も、ステップS204の処理へ移行する。

0068

図21に、図20のステップS204におけるリンク検証と通信開始の判断の制御フローを示す。この制御は、通信管理テーブル1155のX行目の通信に対して実行する。
まず、ステップS211の処理において、通信制御部1152は、直接リンクの選定を行う。通信制御部1152は、通信管理テーブル1155の、送信ノード1155−2と受信ノード1155−3とに記載されている計算ノードを、直接接続されるリンクとして選定する。集合通信の場合、通信管理テーブル1155の送信ノード1155−2と受信ノード1155−3とには、コミュニケータが指定されている。この場合、通信制御部1152は、コミュニケータに含まれるすべてのノードをリンクとして選定する。

0069

次に、ステップS212の処理において、通信制御部1152は、通信種類の確認を行う。ステップS213の処理において、通信制御部1152は、通信種類が1対1通信とマルチキャスト通信であるか、その他の通信であるかを確認する。通信制御部1152が、通信種類がその他の通信、すなわち、1対1通信とマルチキャスト通信以外の通信であることを確認すると、ステップS219の処理へ移行する。すなわち、通信制御部1152は、通信種類が1対1通信とマルチキャスト通信以外の通信に対しては、特に何も行わない。通信種類が、1対1通信とマルチキャスト通信以外の通信である場合、後述するステップS219の通信リンク群の選定の処理へ移行する。一方、通信制御部1152が、通信種類が1対1通信とマルチキャスト通信であることを確認すると、ステップS214の1ホップリンクの選定の処理へ移行する。

0070

ステップS214の処理において、通信制御部1152は、1ホップリンクの選定を行う。まず、通信制御部1152は、通信管理テーブル1155の送信ノード1155−2と同じリンクを、リンク管理テーブル1156の送信ノード1156−1の中から抽出する。通信制御部1152は、その中から、リンク管理テーブル1156の1ホップ経由ノード1156−4の中に、通信管理テーブル1155の受信ノード1155−3と同じノードが含まれるリンクを選定する。そして、通信制御部1152は、その選定したリンクを、1ホップリンクの最初のステップのリンク(1hop1st)とする。通信制御部1152が、1ホップリンクの最初のステップのリンク(1hop1st)として選定したリンクの受信ノードが、折り返しノードとなる。さらに、この折り返しノードが送信ノードとなり、かつ、通信管理テーブル1155の受信ノード1155−3と同じ受信ノードの組み合わせのリンクを、通信制御部1152は、次のステップのリンク(1hop2nd)として選定する。本実施形態では、折り返しノードの数Kは、最大になるすべての1ホップリンクを選定する。

0071

次に、ステップS215の処理において、通信制御部1152は、1ホップリンクの利用判断を行う。これは、通信制御部1152が、実際に通信を行う通信リンク群として、直接リンクからなるリンク群を用いるか、1ホップリンクを含むリンク群を活用するかを判断する。この判断は、通信制御部1152が、通信時間を短縮できるか否かに基づいて判断する。本実施形態では、以下の簡易な計算式が成り立つときに、通信制御部1152は、1ホップリンクを含むリンク群を活用するものとする。
≪1対1通信≫
(データ個数)×(1データサイズ)<(K−1)×B×(T1−T0)/(K−2)
≪マルチキャスト通信≫
(データ個数)×(1データサイズ)<K×B×(T1−T0)/(K−2)
K:折り返しノードの数(1対1通信ではN−2、マルチキャスト通信ではN)
B:1リンクあたりの帯域幅
T1:1ホップリンクにおける遅延時間
T0:直接リンクにおける遅延時間

0072

ここで、計算式の左辺はデータサイズである。(データ個数)と(1データサイズ)として、通信管理テーブル1155のデータ個数1157−7とデータ精度1155−8とを用いる。一方、計算式の右辺は、1ホップリンクを適用したときに増加する遅延時間で、どれだけのデータが遅れるかを示す近似値である。B、T1、T0は、並列計算機システムを構築したときに事前に評価した数値を用いた。なお、この≪マルチキャスト通信≫の計算式の関係は、レデュース又はオールレデュースに対しても適用することができる。また、本実施形態において、データサイズは、実際のデータを想定して記載している。しかしながら、データサイズは、8B10Bのような符号化方式などでは、データサイズがより大きくなる場合がある。そのため、符号化方式などでデータが増える割合を考慮しても良い。

0073

1ホップリンクの利用判断は、さらに計算式を簡略化して判断を高速にすることができる。例えば、本実施形態では、折り返しノードの数Kは、最大になるすべての1ホップリンクを選定することとしている。すなわち、Kは採り得る最大値としているため、上記計算式における(K−1)/(K−2)やK/(K−2)は略1となる。そこで、Kに依存しない以下の関係式で判断するようにしても良い。
(データ個数)×(データ精度)<B×(T1−T0)
さらに、第1又は第2実施形態で説明したのと同様に、事前に、1ホップリンクの方が高速になるメッセージサイズを事前に見積もっておく。そして、そのメッセージサイズに基づいて、通信制御部1152が判断するようにしても良い。

0074

次に、ステップS216の処理において、通信制御部1152は、1ホップリンクを利用するか利用しないかの判断を行う。通信制御部1152が1ホップリンクを利用すると判断した場合、ステップS218の処理へ移行する。ステップS218の処理において、通信制御部1152は、直接リンクと1ホップリンクとの両方を通信リンク群として選定する。一方、通信制御部1152が1ホップリンクを利用しないと判断した場合、ステップS217の処理へ移行する。ステップS217の処理において、通信制御部1152は、直接リンクのみを通信リンク群とする。なお、通信リンク群とは、実際に通信を行うリンクの集合体である。

0075

また、上記したように、ステップS212の処理における通信種類の確認において、1対1通信とマルチキャスト通信以外の通信を確認した場合、ステップS219の処理において、通信制御部1152は、直接リンクのみを通信リンク群として選定する。

0076

次に、ステップS220の処理において、通信制御部1152は、使用状況の確認を行う。通信制御部1152は、選定した通信リンク群のすべてのリンクの使用状況を、リンク管理テーブル1156の利用状況1156−3を用いて確認する。ステップS221の処理において、通信制御部1152は、利用状況がすべて未使用であるか使用中があるかを確認する。通信制御部1152は、利用状況がすべて未使用であることを確認すると、ステップS222の処理へ移行する。ステップS222の処理において、通信制御部1152は、通信開始Yesを選定する。一方、通信制御部1152は、使用状況に1つでも使用中のリンクがあることを確認すると、ステップS223の処理へ移行する。ステップS223の処理において、通信制御部1152は、通信開始Noを選定する。そして、図20のステップS204におけるリンク検証と通信開始の判断の制御フローを終了する。本制御方法を用いることで、使用できる折り返しノードの数が少ない場合、通信制御部1152は、そのノードを選択しないで済むことになる。したがって、データサイズの大きな通信に対して、常時高速な通信を提供することができる。

0077

図20のステップS204におけるリンク検証と通信開始の判断のフローに戻る。ステップS204の処理において、通信制御部1152が通信開始Yes(図21のステップS222)を選定すると、ステップS206のリンク管理テーブル変更の処理へ移行する。具体的には、通信制御部1152は、リンク管理テーブル1156の利用状況1156−3に、通信管理テーブル1155の通信管理番号1155−0を記載する。その後、ステップS207の分散スイッチ変更の処理へ移行する。ここで、通信制御部1152は、通信リンク群を用いた通信を行うことができるように分散スイッチ1153の設定を行う。その後、ステップS208の処理へ移行する。ここで、通信制御部1152は、通信開始の処理を実行する。その後、ステップS209の処理へ移行する。ここで、通信制御部1152は、通信管理テーブルの変更を実行する。具体的には、通信制御部1152は、通信管理テーブル1155のX行目の通信状態1155−10を通信中に変更する。

0078

一方、ステップS205の処理において、通信制御部1152が通信開始No(図21のステップS223)を選定すると、ステップS210の処理へ移行する。ここで、通信制御部1152は、通信管理テーブルの変更を実行する。具体的には、通信制御部1152は、通信管理テーブル1155のX行目の通信状態1155−10を待機に変更する。

0079

例えば、以下の3つの通信がほぼ同時に順番に発生した場合の本実施形態の制御フローを用いた管理テーブルの変化を以下に示す。
通信A:計算ノード1から計算ノード2への1対1通信(データ個数:5000)
通信B:計算ノード1からWORLDへのスキャタ(データ個数:5000)
通信C:計算ノード3からWORLDへのマルチキャスト通信(データ個数:50)

0080

通信Aは、他に通信が無い状態で新規に発生する通信である。そのため、通信Aは、図20のステップS204におけるリンク検証と通信開始の判断のフローを行った上で通信が行われる。また、データ個数が多いため、図21のステップS215の処理における1ホップリンクの利用判断のフローにおいて、通信制御部1152は、次のような判断を行う。すなわち、通信制御部1152は、ステップS216の処理において、1ホップリンクを利用すると判断する。そして、ステップS218の処理において、通信制御部1152は、通信リンク群を選定する。その結果、通信制御部1152は、図17に示す通信管理テーブル1155と、図18に示すリンク管理テーブル1156の(リンク名)1−2とに記載された形式で通信を管理する。

0081

次に、通信Aの直後に通信Bが発生した場合を考える。通信Bが発生した場合、直前の通信Aは通信中である。したがって、通信Bは、図20のステップS204におけるリンク検証と通信開始の判断のフローを行った上で通信が行われる。図21のステップS215の処理における1ホップリンクの利用判断のフローにおいて、通信制御部1152は、次のような判断を行う。すなわち、通信制御部1152は、ステップS216の処理において、1ホップリンクを利用しないと判断する。そして、ステップS217の処理において、通信制御部1152は、直接リンクのみを通信リンク群として選定する。これは、通信種類がスキャタであることに基づくものである。通信制御部1152が選定した直接リンクは、通信Aで使用されていない。したがって、通信Bに対して直接リンクを利用することが可能である。そのため、通信制御部1152は、ステップS220の処理における使用状況の確認において、使用状況がすべて未使用であることを確認する。そして、ステップS222の処理へ移行し、通信Bは通信開始Yesとなる。その結果、通信制御部1152は、図22に示す通信管理テーブル1155と、図23に示すリンク管理テーブル1156の(リンク名)2−1、2−3、2−4とに記載された形式で通信を管理する。

0082

次に、通信Bの直後に通信Cが発生した場合を考える。通信Cが発生した場合、直前の通信Bは通信中である。したがって、通信Cは、図20のステップS204におけるリンク検証と通信開始の判断のフローを行った上で通信が行われる。図21のステップS215の処理における1ホップリンクの利用判断のフローにおいて、通信制御部1152は、次のような判断を行う。すなわち、通信制御部1152は、ステップS216の処理において、1ホップリンクを利用すると判断する。そして、ステップS218の処理において、通信制御部1152は、1ホップリンクを通信リンク群として選定する。これは、通信種類がマルチキャスト通信であることに基づくものである。ただし、通信Cのデータ個数は50と小さい。したがって、通信制御部1152は、図25のリンク管理テーブル1156に示すように、計算ノード3が送信ノード(1156−1)となる3つの直接リンクを通信リンク群として選定する。しかしながら、この3つの直接リンクの中で、計算ノード2が受信ノード(1156−2)となるリンクは通信Aが使用中である。このため、本実施形態では通信Cは待機となる。その結果、通信制御部1152は、図24に示す通信管理テーブル1155と、図25に示すリンク管理テーブル1156の(リンク名)3−1、3−2、3−4とに記載された形式で通信を管理する。

0083

次に、図26に示す通信が終了した場合の制御フローについて説明する。通信が終了すると、図10で説明した制御信号のリンク管理情報1303に基づいて、すべての計算ノード1101は、通信が終了したことを認識する。その後、ステップS261の処理において、各計算ノード1101は、通信管理テーブル1155から終了した通信を削除する。そして、各計算ノード1101は、通信管理テーブル1155から削除した通信の下に記載されている通信を上段シフトする。

0084

その後、ステップS262の処理において、通信制御部1152は、通信管理テーブル1155の最上段に記載されている(通信順の最も小さい)待機状態の通信を選択する。そして、通信制御部1152は、ステップS263のリンク検証と通信開始の判断の処理を実行する。ステップS264の処理において、通信制御部1152は、通信を開始するか否かを判断する。ステップS264の処理において、通信制御部1152が、通信開始Yesと判断した場合、ステップS265の処理へ移行する。ステップS265の処理では、図20で説明したステップS206の処理と同様に、通信制御部1152は、リンク管理テーブル1156を変更した上で通信を開始する。ステップS263の処理におけるリンク検証と通信開始の判断のフローは、待機状態(ステップS271)へ移行するか、その他の待機状態にある通信の開始状態(ステップS265)へ移行するかを繰り返し実行する。

0085

図26のステップS266からステップS268の処理及びステップS271の処理は、図20において説明したステップS207からステップS209の処理及びステップS210の処理と同様であるので、詳細な説明を省略する。図26のステップS269の処理において、通信制御部1152は、待機状態の確認を行う。ステップS270の処理において、通信制御部1152は、待機状態であるか否かを判断する。通信制御部1152が、待機状態である(ステップS270:Yes)と判断すると、ステップS262の処理へ移行する。通信制御部1152が、待機状態でない(ステップS270:No)と判断すると、処理を終了する。

0086

例えば、通信管理テーブル1155が図24に示す状態にあり、リンク管理テーブル1156が図25に示す状態にある場合に、通信Aが終了したときの通信管理テーブル1155の状態を図27に示す。また、通信Aが終了したときにリンク管理テーブル1156の状態を図28に示す。通信Aが終了するため、通信Cで使用する計算ノード3が送信ノード(1156−1)となる3つの直接リンク(3−1、3−2、3−4)がすべて利用可能になる。そのため、待機状態にあった通信Cが開始され、次のイベントが発生するまで待機状態となる。

0087

並列計算プログラムは逐次方式で記載されている。したがって、通信の優先順位は時間順になる。本実施形態の制御方法では、通信制御部1152は、通信管理テーブル1155の上段に記載されている通信から優先的に通信の可否を判断する。したがって、優先順位の高い通信を実行することができる。

0088

なお、本実施形態では、1ホップリンクの活用を、1対1通信とマルチキャスト通信との2つのみを例に挙げて説明した。これに対して、2つ以上のアプリケーションを、異なる計算ノードのグループ間で実施する場合、他のクループ内の通信に対しても同じ制御フローを適用することができる。例えば、2つのグループA、Bに対して計算ノード1101を分けた状態で、1つのグループに対してスキャタを適用した場合のデータの流れを図29に示す。グループAは、計算ノード1 1101−1、計算ノード2 1101−2、計算ノード3 1101−3、計算ノード4 1101−4を有する。グループBは、計算ノード5 1101−5、計算ノード6 1101−6、計算ノード7 1101−7、計算ノード8 1101−8を有する。

0089

グループAとグループBとを独立したグループに分けて並列計算を行う場合について説明する。図29は、計算ノード1 1101−1にあるデータ2−1、データ2−2を計算ノード2 1101−2へ、データ3−1、データ3−2を計算ノード3 1101−3へ、データ4−1、データ4−2を計算ノード4 1101−4へ送るスキャタの結果である。

0090

各グループ間において1ホップリンクも独立して行うこととしている。そのため、図29に示すように、各ノードへの通信として、1ホップリンクと直接リンクとの2本を利用することとしている。そのため、メッセージサイズの大きいスキャタでは、2倍の高速化を実現することができる。
このように、本実施形態では、複数の並列計算プログラムを同時に実行させた状態であっても、リンクの使用状況を管理することとしている。これにより、1ホップリンクによる通信時間を削減することができる。さらに、1ホップリンクをスキャタ、ギャザなどの集合通信にも適用させている。これにより、通信時間を削減することができる。

0091

(第4実施形態)
以下、図面を参照しながら本発明の第4実施形態について詳しく説明する。

0092

図30は、本発明の第4実施形態の並列計算機システム2500の構成の一例を示す模式図である。簡単のため、計算ノードの台数Nは4台で示す。第4実施形態の並列計算機システム2500の第3実施形態と異なる点は、各計算ノード2501の分散スイッチ2553に、図8に示した折り返し機能部1154を融合した点である。

0093

図31は、分散スイッチ2553の構成の一例を示す模式図である。第3実施形態と同様に、クロスバースイッチは、送信用クロスバースイッチ2601と、受信用クロスバースイッチ2602とを有する。ただし、送信用クロスバースイッチ2601の内部は、各入力ポートに1×(N−1)の分配部2603を、各出力ポートに(N−1)×1のスイッチ部2604を配置した構成としている。これにより、クロスバースイッチとしての動作だけでなく、任意のポートに入力されたデータを、複数のポートに出力する分配動作が可能となる。

0094

折り返し機能を実現するため、まず、バッファBの後段に、N−1個の1×Mの分配部2605と、M個の(N−1)×1のスイッチ部2606とを配置している。そして、分配部2605とスイッチ部2606とを互いに接続している。ただし、図31の場合、N=4、M=2としている。そして、送信側のバッファAの後段にも、(N−1)個のM×1のスイッチ部2607を配置している。そして、プロセッサ/メモリ2551から入力されるポートと、送信用クロスバースイッチ2601の1つのポートとを接続できる構成としている。送信用クロスバースイッチ2601の1つのポートは、M個の1ホップリンク用のスイッチ部2606を用いて選択することとしている。これにより、M個の1ホップリンクのための折り返しを実現している。
ここで、Mは、1ホップリンクを使用する通信を同時に実行する数である。Mを増加させることで1ホップリンクを実行する通信数を増加させることができる。その結果、ネットワークの利用効率を高くすることが可能になる。なお、上記した第3実施形態は、M=1の場合である。

0095

また、バッファBの後段の1×Mの分配部2605の出力の中の1つを、受信用クロスバースイッチ2602に接続することとしている。これにより、上記した第3実施形態と同様に、送信するデータを、1ホップリンクを用いて折り返す場合と、自計算ノード2501へ格納する場合との両方を同時に実現している。

0096

本実施形態の構成を用いることで、第3実施形態の分散スイッチ1153と折り返し機能部1154との両方の機能を実現することができた。これにより、第3実施形態で説明したマルチキャスト通信の高速化を、本実施形態においても実現することができる。

0097

さらに、本実施形態では、レデュース、オールレデュースの高速化も実現している。この2つの集団通信は、第3実施形態のマルチキャスト通信とは逆過程の集団通信である。本実施形態のように、分散スイッチに折り返し機能を設けるだけで高速化を実現することができる。
このように、本実施形態では、1対1通信、マルチキャスト、レデュース、及びオールレデュースについて、1ホップリンクを使用して高速化を図ることができる。

0098

図32Aは、すべての計算ノード1 2501−1、計算ノード2 2501−2、計算ノード3 2501−3、計算ノード4 2501−4が送信ノードとなり、1つの受信ノード1 2501−1にデータを集めて演算するレデュースのデータの流れの一例を示す図である。
図32Bは、すべての計算ノード1 2501−1、計算ノード2 2501−2、計算ノード3 2501−3、計算ノード4 2501−4が送信ノードと受信ノードとなり、すべての計算ノード計算ノード1 2501−1、計算ノード2 2501−2、計算ノード3 2501−3、計算ノード4 2501−4にデータを集めて演算するオールレデュースのデータの流れの一例を示す図である。
第3実施形態のマルチキャスト通信の場合と同様に、折り返しノードはすべての計算ノード2501としている。そして、折り返しノードの数Kは、計算ノード数N(=4)とした。また、送信するデータは、各計算ノード2501の行に記載している。例えば、計算ノード1 2501−1の初期状態保有データは[1、3、5、7]であり、計算ノード2 2501−2の初期データは[1、2、3、4]である。

0099

レデュース又はオールレデュースにおける通信は、以下の(1)から(5)の各ステップの順となる。
(1)各計算ノード2501において、送信するデータを、同じ方法でK(=N)分割する。
(2)各計算ノード2501において、分割されたデータ(以下、分割データという。)のそれぞれを、別々の折り返しノードへ向けて送信する。そして、各折り返しノードでは、各計算ノードから送信された分割データを受信する。このときの分散スイッチ2553の状態の一例を図33に示す。
(3)各折り返しノードは、受信した分割データと、自計算ノード分として残されたデータとを用いて、各列のデータ毎にレデュースで指定された演算を行う。本実施形態では、和算の例を示している。そして、各折り返しノードは、演算結果を折り返す。
(4)レデュースの場合、各折り返しノードは、折り返した演算結果を、受信ノードに再送信する。オールレデュースの場合、演算結果を、自計算ノード以外のすべての受信ノードに再送信する。一方、受信ノードは、各折り返しノードから再送信されたデータを受信する。このときの分散スイッチ2553の状態の一例を図34に示す。分散スイッチ2553の送信用クロスバースイッチ2601は分配動作を行う。送信用クロスバースイッチ2601は、演算結果を他の複数の受信ノードに送付する。
(5)受信ノードでは、受け取ったデータをプロセッサ/メモリ2551に送信する。

0100

図35は、本実施形態におけるレデュース又はオールレデュースを行ったときのデータ転送時間とデータ転送量との関係の一例を示したものである。データ転送量は、指定されたすべてのデータの容量である。マルチキャスト通信の場合と同様に、容量が大きいデータは、1/Nに小さくしたデータを2回に分けて通信する1ホップリンクを活用することができる。したがって、比較例よりも通信時間を約2/Nに短縮することができた。ただし、1ホップリンクの遅延に関しては、折り返しノードにおいて一度演算を行うため、プロセッサ/メモリ2551にデータを渡す必要がある。そのため、1ホップリンクでの遅延時間は、直接通信の場合と比較して約2倍の4μsecとなった。
このように、本実施形態によれば、レデュースの演算を高速に行うことができる。さらに、1ホップリンクにおいて、1回目の通信の後、直ちに2回目の演算結果の送信が可能になる。これにより、演算時間と通信時間との並列化に伴って生ずる演算時間と、演算に伴って生ずる遅延とを削減することができる。なお、ここで示したオールレデュースの通信手順と逆の手順を踏むことで、送信ノードが異なる複数のマルチキャストを同時に実行することも可能である。

0101

(第5実施形態)
以下、図面を参照しながら本発明の第5実施形態について詳しく説明する。

0102

図36は、第5実施形態の分散スイッチの構成の一例を示す模式図である。本実施形態の並列計算機システムは、第4実施形態と同じ構成を有している。ただし、図36に示すように、分散スイッチ3153の構成が第4実施形態と異なっている。具体的には、分散スイッチ3153の内部に、レデュース用の演算部3181を有している。
演算部3181は、第4実施形態の分散スイッチ2553内に配置されたスイッチ部2606の1つを置き換えたものである。演算部3181は、他の計算ノードからデータを同時に入力できる構成を有している。また、演算部3181は、自計算ノードで保有するデータも加えて演算を行う。したがって、自計算ノードのデータを入力するための結線3182と、計算結果を戻す結線3183とを追加している。さらに、計算結果を他の計算ノードに配布するための出力ポート3184を用意している。また、この演算部3181は、レデュースで指定される計算に特化した演算部である。したがって、演算部318は、高速に演算を実行することができる。ただし、この演算部318の構成は、本発明の本質的部分ではないので、詳細な説明は省略する。

0103

分散スイッチ3153にレデュースに特化した演算機能を設けたことに伴い、図示しない通信制御部は、容易に1ホップリンクにおける最初の通信と2回目の通信とを瞬時に切り替えることが可能になる。その結果、1ホップリンクでの遅延時間を2.4μsecと小さくすることができた。
図37は、本実施形態におけるレデュース又はオールレデュースを行ったときのデータ転送時間とデータ転送量との関係の一例を示したものである。第4実施形態では、1ホップリンクを用いた通信時間の削減効果は、データ転送量が70kbit以上の場合に現れた。これに対して、本実施形態では、20kbitといった小さいメッセージサイズでも通信時間の短縮を実現することができた。

0104

(第6実施形態)
以下、図面を参照しながら本発明の第6の実施形態について詳しく説明する。

0105

本実施形態の並列計算機システムは、上記した第1実施形態から第5実施形態と異なり、使用可能なリンクがある場合、そのリンクを使用して通信を行う制御方法を導入している。また、マルチキャスト通信の場合、送信ノードを折り返しノードに含めないこととしている。これにより、通信時間の短縮を実現している。したがって、1ホップリンクを活用するときの通信方法と、第3実施形態の図20のステップS204で説明したリンク検証と通信開始の判断の処理、及び図21の制御フローを変更している。

0106

(第6実施形態の通信手順)
まず、本実施形態における、1対1、マルチキャスト、レデュース、オールレデュースの各通信方法の手順と効果について説明する。通信方法の特徴は、使用可能なリンクがある場合、そのリンクを使用して通信を開始することができるようにすることである。具体的には、1ホップリンクでデータを折り返す計算ノード(折り返しノード)の数Kが上限値よりも小さい値であっても、通信を実行することができるようにしたことである。そして、折り返す計算ノード(折り返しノード)の数Kは、各通信方法において、以下のように定めている。1対1通信の場合、1≦K≦N−2、マルチキャスト通信の場合、1≦K≦N−1、レデュース又はオールレデュース通信の場合、1≦K≦Nとしている。ただし、Nは並列計算機システム内の計算ノードの数である。なお、上記した第1実施形態から第5実施形態では、折り返す計算ノード(折り返しノード)の数Kは、最大値の場合にのみ1ホップリンクを利用することができ、最大値以外では待機状態になっていた。

0107

図38は、第6実施形態の1対1通信におけるデータの流れの一例を示す図である。具体的には、送信ノードが計算ノード1 2501−1、受信ノードが計算ノード2 2501−2であり、計算ノード3 2501−3のみを折り返しノードとして使用する場合の1対1通信におけるデータの流れを示したものである。データの流れは、以下の(1)から(5)の各ステップとなる。
(1)送信ノード1 2501−1においてデータを分割する。分割数は、直接リンクを使用することができる場合はK+1となる。分割数は、直接リンクを使用することができない場合はKとなる。本実施形態の場合、直接リンクを使用することができるため、2分割する。
(2)(スキャタ)送信ノード1 2501−1から、受信ノード2 2501−2と、K台の折り返しノード3 2501−3とに対して、送信ノード1 2501−1において分割されたデータ(以下、分割データという。)が個別に送信される。そして、受信ノード2 2501−2と、折り返しノード3 2501−3とにおいて、送信ノード1 2501−1から送信された分割データを個別に受信する。
(3)受信ノード2 2501−2は、受信したデータをそのまま図示しないプロセッサ/メモリに送信する。一方、折り返しノード3 2501−3は、受信したデータを図示しない分散スイッチと折り返し機能部とを使用して折り返す。
(4)(ギャザ)折り返しノード3 2501−3は、折り返したデータを受信ノード2 2501−2へ再送信する。一方、受信ノード2 2501−2は、K台の折り返しノード3 2501−3から再送信されたデータを同時に受信する。
(5)受信ノード2 2501−2は、受信したデータを図示しないプロセッサ/メモリへ送信する。
このデータの流れは、各計算ノード2501の通信制御部の指示の下実行される。本実施形態によれば、図47に示した関連するフルメッシュ接続の場合よりも、1対1通信にかかる時間は1/K倍に短縮できた。

0108

なお、ステップ(2)で分割されたデータの送付先は、並列計算機システム全体で統一したルールに基づいて行っている。本実施形態では、分割されたデータ列のうち、列番号の小さい番号のデータ群ほど、計算ノード2501の番号の低い折り返しノードに送信することとしている。この統一されたルールに基づいて、ステップ(5)でデータを受信した受信ノード2 2501−2は、各折り返しノードから受信したデータが、分割データのどの位置のデータであるかを判断することができる。その位置に応じて、受信ノード2 2501−2は、プロセッサ/メモリにデータを送ることができる。この動作は、以下説明するマルチキャスト、レデュース、オールレデュース、及び上記説明した実施形態においても同様に行っている。

0109

図39は、第6実施形態のマルチキャストにおけるデータの流れの一例を示す図である。具体的には、1台の送信ノード1 2501−1から、送信ノード1 2501−1を含むX台(1≦X≦N)の計算ノード2501にマルチキャストする場合であり、計算ノード2 2501−2と計算ノード3 2501−3とを折り返しノードとして使用する場合(K=2)のデータの流れを示したものである。データの流れは、以下の(1)から(5)の各ステップとなる。図39の場合、N=4、K=2、X=4としている。
(1)送信ノード1 2501−1においてデータを分割する。分割数は、データを折り返す折り返しノードの数Kである。本実施形態の場合、K=2であり、2分割する。
(2)(スキャタ)送信ノード1 2501−1からすべての折り返しノード2 2510−2、折り返しノード3 2501−3に対して分割されたデータ(以下、分割データという。)が個別に送信される。そして、各折り返しノード2 2501−2、折り返しノード3 2501−3において、送信ノード1 2501−1から送信された分割データを受信する。
(3)各折り返しノード2 2501−2、折り返しノード3 2501−3は、受信した分割データを図示しないプロセッサ/メモリへ送る。折り返しノード2 2501−2は、受信した分割データを、送信ノード1 2501−1と自計算ノードとを除く受信ノード3 2501−3、受信ノード4 2501−4へ分配して折り返す。折り返しノード3 2501−3は、受信した分割データを、送信ノード1 2501−1と自計算ノードとを除く受信ノード2 2501−2、受信ノード4 2501−4へ分配して折り返す。
(4)(オールギャザ)各折り返しノード2 2501−2は、折り返したデータを個別に、送信ノード1 2501−2と自計算ノードを除く受信ノード3 2501−3、受信ノード4 2501−4とへ個別に再送信する。折り返しノード3 2501−3は、折り返したデータを個別に、送信ノード1 2501−2と自計算ノードを除く受信ノード2 2501−2、受信ノード4 2501−4とへ個別に再送信する。一方、送信ノード1 2501−1を除く受信ノード2 2501−2、受信ノード3 2501−3、受信ノード4 2501−4で、再送信されたデータを受信する。
(5)送信ノード1 2501−1を除く受信ノード2 2501−2、受信ノード3 2501−3、受信ノード4 2501−4は、受け取ったデータを図示しないプロセッサ/メモリに送信する。
このデータの流れは、各計算ノード2501の通信制御部の指示の下行われる。本実施形態によれば、図47に示した関連するフルメッシュネットワークの場合よりも、通信時間は1/K倍に短縮できた。これは、上記した第3実施形態における方法よりも高い改善効果である。図40は、本実施形態におけるマルチキャストを行ったときのデータ転送時間とデータ転送量との関係の一例を示したものである。図40の場合、N=8、K=7としている。第3実施形態では、データサイズが大きいときの比較例からの改善効果は約1/4倍の短縮であったが、本実施形態では1/7倍まで短縮することができた。

0110

図41Aは、第6実施形態のレデュースにおけるデータの流れの一例を示す図である。具体的には、Y台(1≦Y≦N)の計算ノード1 2501−1、計算ノード2 2501−2、計算ノード3 2501−3、計算ノード4 2501−4が送信ノードとなり、1つの受信ノード2501−1にデータを集めて演算するレデュースのデータの流れを示したものである。
図41Bは、第6実施形態のオールレデュースにおけるデータの流れの一例を示す図である。具体的には、Y台(1≦Y≦N)の計算ノード1 2501−1、計算ノード2 2501−2、計算ノード3 2501−3、計算ノード4 2501−4が送信ノードと受信ノードとなり、データを集めて演算するオールレデュースのデータの流れを示したものでる。データの流れは、以下の(1)から(5)の各ステップとなる。
なお、図41A図41B共に、計算ノード2 2501−2と計算ノード3 2501−3とが折り返しノードである場合の例である。データの流れは、以下の(1)から(5)の各ステップとなる。
(1)各計算ノード2501において、送信するデータを、同じ方法でK分割する。
(2)(オールトゥーオール(全交換))各計算ノード2501において、分割されたデータ(以下、分割データという。)が個別に折り返しノードへ向けて送信される。そして、各折り返しノードにおいて、各計算ノード2501から送信された分割データを個別に受信する。
(3)各折り返しノードは、集められたデータと自計算ノード分に残されたデータとを用いて、各列のデータ毎にレデュースで指定された演算を行う。本実施形態では和算の例を示している。そして、演算結果を、自計算ノードを除く受信ノードの数だけ折り返して分配する。
(4)(ギャザ、オールギャザ)レデュースの場合、各折り返しノードは、折り返した演算結果を受信ノードに再送信する。オールレデュースの場合、各折り返しノードは、折り返した演算結果を自計算ノード以外のすべての受信ノードに再送信する。一方、受信ノードではそのデータを個別に受信する。
(5)受信ノードでは、受け取ったデータを図示しないプロセッサ/メモリに送信する。
このデータの流れは、各計算ノード2501の通信制御部の指示の下行われる。本実施形態によれば、図47に示した関連するフルメッシュネットワークの場合よりも、レデュースの通信にかかる時間はK/2倍に改善できた。

0111

(第6実施形態の制御フロー)
本実施形態では、第3実施形態の図20に示した制御フローのうち、ステップS204のリンク検証と通信開始の判断の処理において行われる図21に示す処理を変更している。図42に、本実施形態の、リンク検証と通信開始の判断の制御フローを示す。

0112

まず、ステップS421の処理において、通信制御部1152は、通信種類の確認を行う。次に、通信制御部1152は、リンクの選定を行う。ただし、直接リンクの選定は、通信管理テーブル1155の送信ノード1155−2と受信ノード1155−3との組み合わせに基づいて選定することができる。したがって、第3実施形態と同様に、直接リンクの選定から行うようにしても良い。

0113

次に、通信制御部1152は、ステップS422の処理において、リンク利用状況の確認と直接リンクの選定を行う。通信制御部1152は、通信管理テーブル1155で管理されている送信ノード1155−2と受信ノード1155−3とが、直接結ばれる直接リンクをすべてピックアップする。その上で、通信制御部1152は、リンク管理テーブル1156も用いて利用状況を確認する。このとき、使用中のリンクが1つでも存在する場合、通信制御部1152は、リンクの選定を失敗したと判断する。

0114

次に、通信制御部1152は、ステップS423の処理において、リンク利用状況の確認と1ホップリンクの選定を行う。図42の場合、先ず、ステップS421の通信種類の確認の処理において、通信制御部1152は、1対1通信、マルチキャスト通信、レデュース、及びオールレデュースについて選定を行う。また、通信制御部1152は、1ホップリンクでデータが折り返される折り返しノードを選定する。これにより、通信制御部1152は、その折り返しノードを経由する1ホップリンクについて選定を行う。その他の通信の場合、通信制御部1152は、リンクの選定を失敗したと判断する。この場合、通信制御部1152は、直接リンクのみで通信するかどうかを判断する。

0115

1対1通信における選定方法は、第3実施形態の場合と同様に、通信制御部1152は、リンク管理テーブル1156の1ホップ経由ノード1156−4を使用して、接続可能な1ホップリンクを特定する。その後、通信制御部1152は、リンク管理テーブル1156の利用状況1156−3に基づいて、1回目と2回目との両方のリンクが未使用である計算ノードを折り返しノードとして選定する。そして、通信制御部1152は、折り返しノードが関係するリンクを1ホップリンクとして選定する。

0116

マルチキャスト通信における選定方法は、第3実施形態の場合と同様に、通信制御部1152は、リンク管理テーブル1156の1ホップ経由ノード1156−4を使用して、接続可能な1ホップリンクを特定する。その後、通信制御部1152は、リンク管理テーブル1156の利用状況1156−3に基づいて、1回目の送信ノードからのリンクが未使用であり、かつ、2回目の送信ノードと自計算ノードを除くすべての受信ノードとのリンクが未使用な計算ノードを折り返しノードとして選定する。そして、通信制御部1152は、折り返しノードが関係するリンクを1ホップリンクとして選定する。

0117

レデュースにおける選定方法は、第3実施形態の場合と同様に、通信制御部1152は、リンク管理テーブル1156の1ホップ経由ノード1156−4を使用して、接続可能な1ホップリンクを特定する。その後、通信制御部1152は、リンク管理テーブル1156の利用状況1156−3に基づいて、1回目のすべての送信ノードからのリンクが未使用であり、かつ、2回目の受信ノードとのリンクも未使用な計算ノードを折り返しノードとして選定する。そして、通信制御部1152は、折り返しノードが関係するリンクを1ホップリンクとして選定する。

0118

オールレデュースにおける選定方法は、第3実施形態の場合と同様に、通信制御部1152は、リンク管理テーブル1156の1ホップ経由ノード1156−4を使用して、接続可能な1ホップリンクを特定する。その後、通信制御部1152は、リンク管理テーブル1156の利用状況1156−3に基づいて、1回目のすべての送信ノードからのリンクが未使用であり、かつ、2回目の自計算ノードを除くすべての受信ノードとのリンクも未使用な計算ノードを折り返しノードとして選定する。そして、通信制御部1152は、折り返しノードが関係するリンクを1ホップリンクとして選定する。

0119

その後、ステップS424の処理におけるリンクの選定結果にしたがって、3つの場合に分かれる。

0120

ステップS424の処理において、直接リンクと1ホップリンクとの両方の選定が失敗した場合、ステップS427の処理へ移行する。通信制御部1152は、通信開始Noを選択する。

0121

ステップS424の処理において、直接リンクと1ホップリンクとの何れか一方のみの選定が成功している場合、ステップS426の処理へ移行する。ステップS426の処理において、通信制御部1152は、選定に成功した方のリンクを、実際に通信を行う通信リンク群として選定する。そして、ステップS431の処理へ移行し、通信制御部1152は、通信開始Yesを選択する。

0122

ステップS425の処理において、直接リンクと1ホップリンクとの両方の選定が成功している場合、ステップS425の処理へ移行する。ステップS425の処理において、通信制御部1152は、1ホップリンクの利用判断を行った上で、通信リンク群を選定する。ステップS425における1ホップリンクの利用判断の処理では、第3実施形態における図21のステップS215の処理と同様に、以下の条件に基づいて1ホップリンクを利用するか利用しないかを判断する。

0123

≪1対1通信、マルチキャスト≫
(データ個数)×(1データサイズ)<(K−1)×B×(T1−T0)/(K−2)
≪レデュース、オールレデュース≫
(データ個数)×(1データサイズ)<K×B×(T1−T0)/(K−2)
K:折り返しノードの数
B:1リンクあたりの帯域幅
T1:1ホップリンクにおける遅延時間
T0:直接リンクにおける遅延時間

0124

そして、ステップS428の処理において、通信制御部1152が1ホップリンクを利用すると判断した場合、ステップS429の処理へ移行する。ステップS429の処理において、通信制御部1152は、直接リンクと1ホップリンクとの両方を通信に用いる通信リンク群として選定する。一方、ステップS428の処理において、1ホップリンクを利用しないと判断した場合、ステップS430の処理へ移行する。ステップS430の処理において、通信制御部1152は、直接リンクのみを通信リンク群として選定する。その後、ステップS431の処理へ移行する。ステップS431の処理において、通信制御部1152は、通信開始Yesとする。そして、図42に示すリンク検証と通信開始の判断の制御フローを終了する。

0125

本実施形態のリンク検証と通信開始の判断の制御フロー(図42)と、第3実施形態で説明した制御フロー(図21)とを組み合わせることで、通信を待機させることなく開始することができる。それは、直接リンクと1ホップリンクとにおいて使用することが可能なリンクがある場合に、特に顕著である。これにより、複数の通信が同時に多発するアプリケーションにおいて、通信の待機時間を減らすことができる。また、その結果、トータルの通信時間を削減することができる。

0126

人工知能の1つであるディープラーニングの学習などは、多くの計算ノード間の集合通信が定期的に起こるものである。このようなアプリケーションでは、第3実施形態で説明したように、1つの集合通信をできるだけ高効率に実行する方が通信時間を削減することができる。そこで、アプリケーションに応じて、第3実施形態で説明したようなKを最大値で固定した制御と、本実施形態で説明したKを可変にする制御とを切り替えることが好ましい。本実施形態の制御方法では、ステップS423におけるリンク利用状況の確認と1ホップリンクの選定において、Kの範囲を指定する機構を設けることとしている。その結果、様々なアプリケーションにおいて通信時間の短縮が可能な制御を実現することができる。

0127

(第7実施形態)
以下、図面を参照しながら本発明の第7実施形態について詳しく説明する。

0128

図43は、第7実施形態の並列計算機システムの構成の一例を示す模式図である。本実施形態では、各計算ノード3801間の通信帯域を増やすため、分散スイッチ3853と折り返し機能部3854とを、計算ノード3801毎に2個用意している。そして、分散スイッチ3853と折り返し機能部3854との組合せの各々を、周回性AWG3802−1と周回性AWG3802−2とにそれぞれ接続している。また、図示しない通信制御部は1つだけ用意している。そして、1つの通信管理テーブルリンク3855とリンク管理テーブル3856とを用いて、同時に2つの分散スイッチ3853を制御することしている。これにより、通信制御部を増加することなく、並列計算機システム3800の計算ノード3801間の通信時間の短縮を実現することができた。

0129

(第8実施形態)
以下、図面を参照しながら本発明の第8実施形態について詳しく説明する。
図44は、第8実施形態の並列計算機システムの構成の一例を示す模式図である。本実施形態の並列計算機システム700は、直接リンク701と、1ホップリンク702と、通信制御部703とを有する。
直接リンク701は、送信ノード704と受信ノード705との間を直接接続するリンクである。
1ホップリンク702は、送信ノード704と受信ノード705との間を、送信ノード704、受信ノード705以外の折り返しノード706を経由して接続するリンクである。
通信制御部703は、送信ノード704から受信ノード705へデータを転送する際、直接リンク701のみを使用するリンクと、1ホップリンク702のみを使用するリンクと、直接リンク701と1ホップリンク702とを組み合わせて使用するリンクとの中から、送信ノード704と受信ノード705とを接続するリンクを選定する。

0130

本実施形態では、通信制御部703が、送信ノード704から受信ノード705へデータを転送する際、直接リンク701のみを使用するリンクと、1ホップリンク702のみを使用するリンクと、直接リンク701と1ホップリンク702とを組み合わせて使用するリンクとの中から、送信ノード704と受信ノード705とを接続するリンクを選定する。これにより、フルメッシュで接続された並列計算機システムにおいて、簡易な制御でありながら通信の利用効率を高くし、並列計算における通信時間を短縮することができるのである。

0131

なお、並列計算機システムを構成する計算ノードのプロセッサ/メモリに格納されているコンピュータプログラムは、記録媒体で提供されてもよく、また、インターネット等のネットワークを介して提供されてもよい。記録媒体は、コンピュータ使用可能媒体又はコンピュータ可読媒体であって、磁気、光、電子電磁気赤外線などを用いて情報の記録又は読み取りが可能な媒体を含む。そのような媒体として、例えば、半導体メモリ半導体または固体記憶装置磁気テープ取外し可能なコンピュータディスケットランダムアクセスメモリ(RAM(Random Access Memory))、読出し専用メモリ(ROM(Read Only Memory))、磁気ディスク光ディスク光磁気ディスクなどがある。

0132

以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。例えば、並列計算プログラムをコンパイルするときに、通信制御部が行う判定機能の一部を事前に決定しておくことで、通信の遅延をさらに小さくすることも可能である。

0133

上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
[付記1]
送信ノードと受信ノードとの間を直接接続する直接リンクと、
前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクと、
前記送信ノードから前記受信ノードへデータを転送する際、前記直接リンクのみを使用するリンクと、前記1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードと前記受信ノードとを接続するリンクを選定する通信制御手段と、
を備えた並列計算機システム。
[付記2]
前記通信制御手段は、前記直接リンクのみを使用するデータの転送において未使用のノードを前記折り返しノードとして選定する、付記1に記載の並列計算機システム。
[付記3]
前記折り返しノードは、前記送信ノードから送信されたデータを前記受信ノードへ転送する折り返し手段を備える、付記1又は2に記載の並列計算機システム。
[付記4]
並列計算プログラムを実行する制御手段をさらに備え、前記通信制御手段が、前記送信ノードと前記受信ノードとを接続するリンクとして前記1ホップリンクを選定するとき、前記折り返し手段は、前記制御手段を介すことなく、前記送信ノードから送信されたデータを前記受信ノードへ転送する、付記3に記載の並列計算機システム。
[付記5]
前記通信制御手段と前記折り返し手段とは、単一の集積素子に搭載されており、前記通信制御手段は前記折り返し手段を制御する、付記3又は4に記載の並列計算機システム。
[付記6]
前記通信制御手段は、前記送信ノードと前記受信ノードと間で転送されるデータ量に応じて、前記直接リンクのみを使用するリンクと、前記1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記転送に要する時間が短いリンクを、前記送信ノードと前記受信ノードとを接続するリンクとして選定する、付記1から5の何れか1項に記載の並列計算機システム。
[付記7]
前記送信ノード、前記受信ノード、及び前記折り返しノードのそれぞれは計算ノードであり、前記通信制御手段は、前記計算ノード間の通信の状況を管理する通信管理テーブルと、前記計算ノード間を繋ぐすべてのリンクの使用状況を管理するリンク管理テーブルとを格納する、付記1から6の何れか1項に記載の並列計算機システム。
[付記8]
少なくともN台(Nは3以上の整数)の前記計算ノードが、光ファイバを介して前記直接リンクを用いて個別にすべて接続されたフルメッシュ接続で構成され、前記通信制御手段は、前記通信管理テーブルに格納された前記計算ノード間の通信の状況と、前記リンク管理テーブルに格納された前記計算ノード間を繋ぐすべてのリンクの使用状況とに基づいて、前記通信が1対1通信の場合、1≦K≦N−2、マルチキャスト通信の場合、1≦K≦N、レデュース又はオールレデュース通信の場合、1≦K≦N、をそれぞれ満たすK台の折り返しノードを選定する、付記7に記載の並列計算機システム。
[付記9]
前記フルメッシュ接続されているN台の計算ノードのうち、1台の計算ノードをメインの計算ノードとし、前記メインの計算ノードの制御手段は、前記計算ノード間の通信の状況と、前記計算ノードを繋ぐすべてのリンクの使用状況とを管理する、付記8に記載の並列計算機システム。
[付記10]
前記通信制御手段は、前記計算ノード間を繋ぐすべてのリンクの稼働状況を他の計算ノードから取得し、前記すべてのリンクの稼働状況を把握する、付記7に記載の並列計算機システム。
[付記11]
前記並列計算プログラムの実行中に、前記計算ノード間に新規な通信が発生した状態又は前記計算ノード間の通信が完了した状態で、前記通信制御手段は動作状態に移行し、前記計算ノード間に新規な通信が発生した状態又は前記計算ノード間の通信が完了した状態以外の状態で、前記通信制御手段は待機状態に移行する、付記7に記載の並列計算機システム。
[付記12]
前記計算ノードは、周回性AWG(Arrayed Waveguide Grating)に対して、AWGと光ファイバとを介して接続される、付記7に記載の並列計算機システム。
[付記13]
前記計算ノードを複数のグループに分け、前記複数グループの各々において前記並列計算プログラムを実行するとき、前記通信制御手段は、自グループ内の計算ノードを経由する直接リンクと、他グループ内の計算ノードを経由する1ホップリンクとを、前記リンクとして選定する、付記7に記載の並列計算機システム。
[付記14]
送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する工程を備えた並列計算機システムの制御方法。
[付記15]
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、1台の送信ノードから他の1台の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いた1対1通信を行うとき、通信リンクとしてK台(1≦K≦N−2)の折り返しノードを経由するK個の1ホップリンクと、L台(L=0又は1)の前記送信ノードと前記受信ノードとの間を直接接続する直接リンクとを用い、各計算ノードは通信制御手段の指示の下、
(1)前記送信ノードで、通信するデータを(K+L)で分割する工程と、
(2)前記送信ノードで、分割した(K+L)個のデータをK台の折り返しノードとL台の受信ノードとに個別に送信する工程と、各前記K台の折り返しノードと前記L台の受信ノードで、前記分割した(K+L)個のデータの1つを、個別に受信する工程と、
(3)各前記K台の折り返しノードで、受信したデータを折り返す工程と、前記L台の受信ノードで、受信したデータをそのまま並列計算プログラムを実行する制御手段へ送る工程と、
(4)各前記K台の折り返しノードで、折り返されたデータを前記受信ノードへ再送信する工程と、前記K台の折り返しノードから再送信されたデータを、前記受信ノードで受信する工程と、
(5)前記受信ノードで、受信したデータを前記制御手段に送る工程と、
を備える、並列計算機システムの制御方法。
[付記16]
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、1台の送信ノードから、前記送信ノードを含むX台(1≦X≦N)の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてマルチキャスト通信を行うとき、通信リンクとして、前記送信ノードを含まないK台(1≦K≦N−1)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)前記送信ノードで、通信するデータをKで分割する工程と、
(2)前記送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する工程と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する工程と、
(3)前記K台の折り返しノードで、受信したデータを、並列計算プログラムを実行する制御手段へ送ると共に、受信したデータを、前記送信ノードと自計算ノードを除く受信ノードの数だけ分配して折り返す工程と、
(4)前記K台の折り返しノードで、折り返したデータを、前記送信ノードと前記自計算ノードを除く受信ノードへ再送信する工程と、前記K台の折り返しノードから再送信された各データを、前記送信ノードを含まない各受信ノードで受信する工程と、
(5)前記送信ノードを含まない各受信ノードで、受信したデータを前記制御手段に送る工程と、
を備える、並列計算機システムの制御方法。
[付記17]
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、Y台(1≦Y≦N)の送信ノードから、1台の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてレデュース通信を行うとき、通信リンクとして、K台(1≦K≦N)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)各送信ノードで、通信するデータをKで分割する工程と、
(2)各送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する工程と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する工程と、
(3)前記K台の折り返しノードで、自計算ノードに残されたデータと受信したデータとを使ってレデュースの演算を行う工程と、その演算結果を折り返す工程と、
(4)前記K台の折り返しノードで、演算結果を前記受信ノードに送信する工程と、K台の折り返しノードからの各演算結果を、前記受信ノードで受信する工程と、
(5)前記受信ノードで、受信したデータを、並列計算プログラムを実行する制御手段に送る工程と、
を備える、並列計算機システムの制御方法。
[付記18]
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、Y台(1≦Y≦N)の計算ノードが、送信ノード、及び、受信ノードの両方となり、前記送信ノードから前記受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてオールレデュース通信を行うとき、通信リンクとして、K台(1≦K≦N)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)各送信ノードで、通信するデータをKで分割する工程と、
(2)各送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する工程と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する工程と、
(3)前記K台の折り返しノードで、自計算ノードに残されたデータと受信したデータを使ってレデュースの演算を行う工程と、自計算ノードを除く受信ノードの数だけ演算結果を分配して折り返す工程と、
(4)前記K台の折り返しノードで、自計算ノードを除く受信ノードに演算結果を送信する工程と、K台の折り返しノードからの各演算結果を、各受信ノードで受信する工程と、
(5)各受信ノードで、受信したデータを、並列計算プログラムを実行する制御手段に送る工程と、
を備える、並列計算機システムの制御方法。
[付記19]
コンピュータに、
送信ノードと受信ノードとの間を直接接続する直接リンクのみを使用するリンクと、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクのみを使用するリンクと、前記直接リンクと前記1ホップリンクとを組み合わせて使用するリンクとの中から、前記送信ノードから前記受信ノードへデータを転送する際、前記送信ノードと前記受信ノードとを接続するリンクを選定する処理を実行させるためのプログラム。
[付記20]
コンピュータに、
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、1台の送信ノードから他の1台の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いた1対1通信を行うとき、通信リンクとしてK台(1≦K≦N−2)の折り返しノードを経由するK個の1ホップリンクと、L台(L=0又は1)の前記送信ノードと前記受信ノードとを直接接続する直接リンクとを用い、各計算ノードは通信制御手段の指示の下、
(1)前記送信ノードで、通信するデータを(K+L)で分割する処理と、
(2)前記送信ノードで、分割した(K+L)個のデータをK台の折り返しノードとL台の受信ノードとに個別に送信する処理と、各前記K台の折り返しノードと前記L台の受信ノードで、前記分割した(K+L)個のデータの1つを、個別に受信する処理と、
(3)各前記K台の折り返しノードで、受信したデータを折り返す処理と、前記L台の受信ノードで、受信したデータをそのまま並列計算プログラムを実行する制御手段へ送る処理と、
(4)各前記K台の折り返しノードで、折り返されたデータを前記受信ノードへ再送信する処理と、前記K台の折り返しノードから再送信されたデータを、前記受信ノードで受信する処理と、
(5)前記受信ノードで、受信したデータを前記制御手段に送る処理と、を実行させるためのプログラム。
[付記21]
コンピュータに、
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、1台の送信ノードから、前記送信ノードを含むX台(1≦X≦N)の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてマルチキャスト通信を行うとき、通信リンクとして、前記送信ノードを含まないK台(1≦K≦N−1)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)前記送信ノードで、通信するデータをKで分割する処理と、
(2)前記送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する処理と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する処理と、
(3)前記K台の折り返しノードで、受信したデータを、並列計算プログラムを実行する制御手段へ送ると共に、受信したデータを、前記送信ノードと自計算ノードを除く受信ノードの数だけ分配して折り返す処理と、
(4)前記K台の折り返しノードで、折り返したデータを、前記送信ノードと前記自計算ノードを除く受信ノードへ再送信する処理と、前記K台の折り返しノードから再送信された各データを、前記送信ノードを含まない各受信ノードで受信する処理と、
(5)前記送信ノードを含まない各受信ノードで、受信したデータを前記制御手段に送る処理と、を実行させるためのプログラム。
[付記22]
コンピュータに、
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、Y台(1≦Y≦N)の送信ノードから、1台の受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてレデュース通信を行うとき、通信リンクとして、K台(1≦K≦N)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)各送信ノードで、通信するデータをKで分割する処理と、
(2)各送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する処理と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する処理と、
(3)前記K台の折り返しノードで、自計算ノードに残されたデータと受信したデータとを使ってレデュースの演算を行う処理と、その演算結果を折り返す処理と、
(4)前記K台の折り返しノードで、演算結果を前記受信ノードに送信する処理と、K台の折り返しノードからの各演算結果を、前記受信ノードで受信する処理と、
(5)前記受信ノードで、受信したデータを、並列計算プログラムを実行する制御手段に送る処理と、を実行させるためのプログラム。
[付記23]
コンピュータに、
少なくともN台(Nは3以上の整数)の計算ノードの間が光ファイバを介して個別にすべて直接接続されたフルメッシュ接続で構成され、前記計算ノードのうち、Y台(1≦Y≦N)の計算ノードが、送信ノード、及び、受信ノードの両方となり、前記送信ノードから前記受信ノードへ、前記送信ノードと前記受信ノードとの間を、前記送信ノード、前記受信ノード以外の折り返しノードを経由して接続する1ホップリンクを用いてオールレデュース通信を行うとき、通信リンクとして、K台(1≦K≦N)の折り返しノードを経由する1ホップリンクを用い、各計算ノードは通信制御手段の指示の下、
(1)各送信ノードで、通信するデータをKで分割する処理と、
(2)各送信ノードで、分割したK個のデータをK台の折り返しノードに個別に送信する処理と、前記K台の折り返しノードで、前記分割したK個のデータの1つを、個別に受信する処理と、
(3)前記K台の折り返しノードで、自計算ノードに残されたデータと受信したデータを使ってレデュースの演算を行う処理と、自計算ノードを除く受信ノードの数だけ演算結果を分配して折り返す処理と、
(4)前記K台の折り返しノードで、自計算ノードを除く受信ノードに演算結果を送信する処理と、K台の折り返しノードからの各演算結果を、各受信ノードで受信する処理と、
(5)各受信ノードで、受信したデータを、並列計算プログラムを実行する制御手段に送る処理と、を実行させるためのプログラム。

0134

400、700、800、1100、2500、3800並列計算機システム
401−1〜401−4、801−1〜801−4、1101−1〜1101−4、2501−1〜2501−4、3801−1〜3801−4計算ノード
402、802ケーブル
403、803送受信器
451、851、1151、2551、3151プロセッサ/メモリ
452、703、852、1152、2552通信制御部
500、701直接リンク
501、502、702、901、902 1ホップリンク
704、1155−2、1156−1送信ノード
705、1155−3、1156−2受信ノード
706折り返しノード
853、1153、2553、3153 分散スイッチ
854、1154、3854折り返し機能部
1102−1、2502−1AWG
1102−2、2502−2光ファイバ
1102−3、2502−3周回性AWG
1103−1〜1103−3、2503−1〜2503−3光送受信器
1155、2555、3855通信管理テーブル
1155−0、1301通信管理番号
1155−1通信種類
1155−4コミュニケータ
1155−5送信アドレス
1155−6受信アドレス
1155−7データ個数
1155−8データ精度
1155−9 ID番号
1155−10通信状態
1156、2556、3856リンク管理テーブル
1201、2601送信用クロスバースイッチ
1154−1、1201−1、1201−2、1202−1、1202−2、1202−3入力ポート
1154−2分配器
1154−3、1154−4、1154−N、1201−3、1201−4、1202−4、1202−5、3184出力ポート
1156−3利用状況
1156−4 1ホップ経由ノード
1202、2602受信用クロスバースイッチ
2603、2605分配部
2604、2606、2607 スイッチ部
1302 ステップ番号
1303 リンク管理情報
1304通信プロセスID番号
1601、1602、1603、1701、1702、1703、1801、1802、3182、3183 結線

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ