(57)【要約】【課題】  ハードウェア量増加を必要とせずに、多倍長数データの総和演算を高速に実行することができない。【解決手段】  多倍長数を所定のビット長で分割したワードデータと、ワードデータの多倍長数における位置を特定するワード位置識別子を出力する多倍長数分割手段を含む複数の計算ノードと、複数の計算ノードと接続され、受信したワードデータを、同一のワード位置識別子に対応するワードデータごとに加算演算して部分演算結果を出力する部分演算手段と、その部分演算結果を、総和演算に参加しているすべての計算ノードに配布する演算結果配布手段を含む複数の相互結合ネットワーク装置とを備え、計算ノードは、受信した部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して多倍長数の総和演算結果を出力する最終演算手段を含む。【選択図】      図１
2011028421.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（中央演算処理装置）が直接扱える範囲を超える数である多倍長数を所定のビット長で分割したワードデータと、前記ワードデータの前記多倍長数におけるワードデータ位置を特定するワード位置識別子を出力する多倍長数分割手段を含む複数の計算ノードと、
前記複数の計算ノードと接続され、複数の前記計算ノードから受信した前記ワードデータを、同一の前記ワード位置識別子に対応するワードデータごとに加算演算して部分演算結果を出力する部分演算手段と、前記部分演算手段が出力した前記部分演算結果を、総和演算に参加しているすべての前記計算ノードに配布する演算結果配布手段を含む複数の相互結合ネットワーク装置と
を備え、
前記計算ノードは、複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づき、同一の前記ワード位置識別子に対応するワードデータごとに加算演算を実施して前記多倍長数の総和演算結果を出力する最終演算手段を含むことを特徴とする並列計算機。
【請求項２】
前記多倍長数分割手段は、前記並列計算機が扱う前記多倍長数の中で最大の桁数を基準とした共通のテンプレートを備え、前記計算ノードで保持する前記多倍長数の最下位ビットを前記テンプレートの最下位ビットに合わせ、前記並列計算機内の加算器が扱うことができるデータビット長と総和演算に参加する前記計算ノード数から決定される所定のビット長ごとに分割して前記ワードデータを生成し、分割した前記ワードデータには、前記テンプレートの最上位ビット側から順に前記ワード位置識別子を付与すること
を特徴とする請求項１に記載の並列計算機。
【請求項３】
前記相互結合ネットワーク装置は、
任意の入力を任意の出力に接続するクロスバスイッチと、
前記クロスバスイッチの一つの出力を受け、前記クロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記クロスバスイッチの一つの入力に出力する演算制御部と、
前記クロスバスイッチの一つの出力を受け、前記演算制御部の出力を複数の前記計算ノードに配布する信号フォーマットに整えて前記クロスバスイッチの一つの入力に出力し、前記クロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布部と
を備えたネットワークスイッチを含むことを特徴とする請求項１又は請求項２に記載の並列計算機。
【請求項４】
前記相互結合ネットワーク装置は、
任意の入力を任意の出力に接続する第一のクロスバスイッチと、
前記第一のクロスバスイッチの一つの出力を受け、前記第一のクロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記第一のクロスバスイッチの一つの入力に出力する第一の演算制御部と
を備えた中間段スイッチと、
任意の入力を任意の出力に接続する第二のクロスバスイッチと、
前記第二のクロスバスイッチの一つの出力を受け、前記第二のクロスバスイッチの入力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの出力を介して前記第一の演算制御部から受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記第二のクロスバスイッチの一つの入力に出力する第二の演算制御部と、
前記第二のクロスバスイッチの一つの出力を受け、前記第二の演算制御部の総和演算結果を複数の前記計算ノードに配布する信号フォーマットに整えて前記第二のクロスバスイッチの一つの入力に出力し、前記第二のクロスバスイッチの出力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの入力に出力する演算結果配布部と
を備えた最上段スイッチ
を含み、前記中間段スイッチは、前記第一のクロスバスイッチの一つの入力から受信した前記第二の演算制御部の総和演算結果を、前記第一のクロスバスイッチの出力に収容した複数の前記計算ノードに出力することを特徴とする請求項１又は請求項２に記載の並列計算機。
【請求項５】
前記演算制御部、前記第一の演算制御部及び前記第二の演算制御部は、
入力したデータを保持し、保持したデータの前記ワード位置識別子と前記ワードデータを、順次出力する入力データ保持手段と、
前記入力データ保持手段が出力した前記ワード位置識別子を識別し、当該識別したワード位置識別子と同一のワード位置識別子に対応する前記ワードデータを蓄積領域から読み出して出力する累算結果保持手段と、
前記入力データ保持手段が出力した前記ワードデータと、前記累算結果保持手段が出力した前記ワードデータを加算し、前記加算したデータと同一の前記ワード位置識別子を含む他のデータを前記入力データ保持手段が保持していない場合は前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記加算したデータと同一の前記ワード位置識別子を含む他のデータを前記入力データ保持手段が保持している場合は前記加算結果を前記累算結果保持手段に戻す加算手段と
を備え、
前記累算結果保持手段は、前記加算手段から戻った前記加算結果を、前記ワード位置識別子に対応した前記蓄積領域に書き込むことを特徴とする請求項３又は請求項４に記載の並列計算機。
【請求項６】
前記演算制御部、前記第一の演算制御部及び前記第二の演算制御部は、
前記入力データ保持手段が保持しているデータの前記ワード位置識別子ごとのデータ数を計数し、前記入力データ保持手段が保持したデータを出力したときに、当該出力データに含まれる前記ワード位置識別子と同一の前記ワード位置識別子を含む他のデータが前記入力データ保持手段に保持されていないことを識別すると終了判定信号を出力する終了判定手段
をさらに備え、
前記加算手段は、前記終了判定信号を受信しているときは前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記終了判定信号を受信していないときは前記加算結果を前記累算結果保持手段に戻すことを特徴とする請求項５に記載の並列計算機。
【請求項７】
前記多倍長数分割手段は、
浮動小数点数を固定小数点数の前記多倍長数に変換する手段と、
変換した前記多倍長数を前記所定のビット長ごとに分割して生成した複数の前記ワードデータのうち、前記浮動小数点数の仮数部の最上位ビットに対応するビットを含む前記ワードデータから前記相互結合ネットワーク装置の数に等しい数の前記ワードデータを有効とし、有効な前記ワードデータのそれぞれを前記相互結合ネットワーク装置に出力する手段と
を含み、
前記最終演算手段は、複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づいて算出した総和演算結果の前記多倍長数を浮動小数点数に変換する手段を含む
ことを特徴とする請求項２に記載の並列計算機。
【請求項８】
前記相互結合ネットワーク装置は、
任意の入力を任意の出力に接続するクロスバスイッチと、
前記クロスバスイッチの一つの出力を受け、前記クロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記クロスバスイッチの一つの入力に出力する演算制御部と、
前記クロスバスイッチの一つの出力を受け、前記演算制御部の出力を複数の前記計算ノードに配布する信号フォーマットに整えて前記クロスバスイッチの一つの入力に出力し、前記クロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布部と
を備えたネットワークスイッチを含むことを特徴とする請求項７に記載の並列計算機。
【請求項９】
前記相互結合ネットワーク装置は、
任意の入力を任意の出力に接続する第一のクロスバスイッチと、
前記第一のクロスバスイッチの一つの出力を受け、前記第一のクロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記第一のクロスバスイッチの一つの入力に出力する第一の演算制御部と
を備えた中間段スイッチと、
任意の入力を任意の出力に接続する第二のクロスバスイッチと、
前記第二のクロスバスイッチの一つの出力を受け、前記第二のクロスバスイッチの入力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの出力を介して前記第一の演算制御部から受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記第二のクロスバスイッチの一つの入力に出力する第二の演算制御部と、
前記第二のクロスバスイッチの一つの出力を受け、前記第二の演算制御部の総和演算結果を複数の前記計算ノードに配布する信号フォーマットに整えて前記第二のクロスバスイッチの一つの入力に出力し、前記第二のクロスバスイッチの出力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの入力に送信する演算結果配布部と
を備えた最上段スイッチ
を含み、前記中間段スイッチは、前記第一のクロスバスイッチの一つの入力から受信した前記第二の演算制御部の総和演算結果を、前記第一のクロスバスイッチの出力に収容した複数の前記計算ノードに送信することを特徴とする請求項７に記載の並列計算機。
【請求項１０】
前記演算制御部、前記第一の演算制御部及び前記第二の演算制御部は、
入力したデータを保持し、保持したデータの前記ワード位置識別子と前記ワードデータを、順次出力する入力データ保持手段と、
前記ワードデータの１ワードデータ分の加算結果を蓄積する蓄積領域を有し、蓄積している前記ワード位置識別子と前記ワードデータとを出力する累算結果保持手段と、
前記入力データ保持手段が出力したワード位置識別子の値と、前記累算結果保持手段が出力したワード位置識別子の値とを比較し、両者の値が一致する場合には、前記入力データ保持手段が出力したワードデータと前記累算結果保持手段が出力したワードデータとの加算を指示する第一の指示情報を出力し、両者の値が不一致の場合には、前記入力データ保持手段が出力したワードデータと前記累算結果保持手段が出力したワードデータのうち小さい値の前記ワード位置識別子を有するワードデータを加算結果とするように指示する第二の指示情報を出力する比較手段と、
前記入力データ保持手段が出力したワードデータと前記累算結果保持手段が出力したワードデータとを入力し、前記比較手段から、前記第一の指示情報を受けた場合は、前記入力データ保持手段が出力したワードデータと前記累算結果保持手段が出力したワードデータとを加算して加算結果とし、前記比較手段から、前記第二の指示情報を受けた場合は、当該指示の前記ワード位置識別子に対応するワードデータを加算結果とし、前記加算結果のデータと同一の前記ワード位置識別子を含む他のデータを前記入力データ保持手段が保持していない場合は前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記加算結果のデータと同一の前記ワード位置識別子を含む他のデータを前記入力データ保持手段が保持している場合は前記加算結果を前記累算結果保持手段に戻す加算手段と
を備え、
前記累算結果保持手段は、前記加算手段から戻った前記加算結果を、前記蓄積領域に蓄積することを特徴とする請求項８又は請求項９に記載の並列計算機。
【請求項１１】
前記演算制御部、前記第一の演算制御部及び前記第二の演算制御部は、
前記入力データ保持手段が保持しているデータの前記ワード位置識別子ごとのデータ数を計数し、前記入力データ保持手段が保持したデータを出力したときに、当該出力データに含まれる前記ワード位置識別子と同一の前記ワード位置識別子を含むデータが前記入力データ保持手段に保持されていないことを識別すると終了判定信号を出力する終了判定手段
をさらに備え、
前記加算手段は、前記終了判定信号を受信しているときは前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記終了判定信号を受信していないときは前記加算結果を前記累算結果保持手段に戻すことを特徴とする請求項１０に記載の並列計算機。
【請求項１２】
ＣＰＵ（中央演算処理装置）が直接扱える範囲を超える数である多倍長数を、それぞれの計算ノードが、所定のビット長のワードデータに分割して前記ワードデータの前記多倍長数におけるワードデータ位置を特定するワード位置識別子とともに複数の相互結合ネットワーク装置に出力し、
受信した複数の前記ワードデータと前記ワード位置識別子に基づいて、同一のワード位置識別子に対応するワードデータごとに加算演算した部分演算結果を、それぞれの前記相互結合ネットワーク装置が、総和演算に参加しているすべての前記計算ノードに配布し、
複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して、それぞれの前記計算ノードが前記多倍長数の総和演算結果を出力する
ことを特徴とする並列計算機の計算方法。
【請求項１３】
前記第一のステップは、
前記計算ノードで保持する前記多倍長数の最下位ビットを、前記並列計算機が扱う前記多倍長数の中で最大の桁数を基準とした共通のテンプレートの最下位ビットに合わせ、前記並列計算機内の加算器が扱うことができるデータビット長と総和演算に参加する前記計算ノード数から決定される所定ビット長ごとに分割して前記ワードデータを生成し、分割した前記ワードデータには、前記テンプレートの最上位ビット側から順に前記ワード位置識別子を付与するステップ
を含むことを特徴とする請求項１２記載の並列計算機の計算方法。
【請求項１４】
前記第二のステップは、
前記相互結合ネットワーク装置が備える、任意の入力を任意の出力に接続するクロスバスイッチの一つの出力を受け、前記クロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記クロスバスイッチの一つの入力に出力する演算制御ステップと、
前記クロスバスイッチの一つの出力を受け、前記総和演算結果の出力を複数の前記計算ノードに配布する信号フォーマットに整えて前記クロスバスイッチの一つの入力に出力し、前記クロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布ステップと
を含むことを特徴とする請求項１２又は請求項１３に記載の並列計算機の計算方法。
【請求項１５】
前記第二のステップは、
前記相互結合ネットワーク装置の中間段スイッチが備える、任意の入力を任意の出力に接続する第一のクロスバスイッチの一つの出力を受け、前記第一のクロスバスイッチの入力に収容した複数の前記計算ノードから受信した前記ワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記中間段スイッチの第一の総和演算結果として前記第一のクロスバスイッチの一つの入力に出力する第一の演算制御ステップと、
前記相互結合ネットワーク装置の最上段スイッチが備える、任意の入力を任意の出力に接続する第二のクロスバスイッチの一つの出力を受け、前記第二のクロスバスイッチの入力に収容した前記第一のクロスバスイッチの出力を介して送信された複数の前記中間段スイッチのそれぞれの第一の総和演算結果に対し、前記ワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を第二の総和演算結果として前記第二のクロスバスイッチの一つの入力に出力する第二の演算制御ステップと、
前記第二のクロスバスイッチの一つの出力を受け、前記第二の総和演算結果を複数の前記計算ノードに配布する信号フォーマットに整えて配布総和演算結果として前記第二のクロスバスイッチの一つの入力に出力し、前記配布総和演算結果を前記第二のクロスバスイッチの出力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの入力に送信する演算結果配布ステップと、
前記第一のクロスバスイッチの一つの入力から受信した前記配布総和演算結果を、前記第一のクロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布ステップと
を含むことを特徴とする請求項１２又は請求項１３に記載の並列計算機の計算方法。
【請求項１６】
前記演算制御ステップ、前記第一の演算制御ステップ及び前記第二の演算制御ステップは、
入力したデータを保持手段に保持し、保持したデータの前記ワード位置識別子と前記ワードデータを、順次出力する入力データ保持出力ステップと、
前記入力データ保持ステップで出力したデータに含まれる前記ワード位置識別子を識別し、当該識別したワード位置識別子と同一のワード位置識別子に対応する前記ワードデータを累算結果蓄積領域から読み出して出力する識別出力ステップと、
前記入力データ保持ステップで出力した前記ワードデータと、前記識別出力ステップで出力した前記ワードデータを加算器で加算し、前記加算したデータと同一の前記ワード位置識別子を含む他のデータを前記保持手段が保持していない場合は前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記加算したデータと同一の前記ワード位置識別子を含む他のデータを前記保持手段が保持している場合は前記加算結果を前記累算結果蓄積領域に戻す加算出力ステップと
を含み、
前記加算出力ステップで前記累算結果蓄積領域に戻された前記加算結果を、前記累算結果蓄積領域の前記ワード位置識別子に対応した領域に書き込むことを特徴とする請求項１４又は請求項１５に記載の並列計算機の計算方法。
【請求項１７】
前記演算制御ステップ、前記第一の演算制御ステップ及び前記第二の演算制御ステップは、
前記保持手段が保持しているデータの前記ワード位置識別子ごとのデータ数を計数し、前記入力データ保持出力ステップで出力したデータに含まれる前記ワード位置識別子と同一の前記ワード位置識別子を含むデータが前記保持手段に保持されていないことを識別すると終了判定信号を出力する終了判定信号出力ステップ
をさらに含み、
前記加算出力ステップは、前記終了判定信号を受信しているときは前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記終了判定信号を受信していないときは前記加算結果を前記累算結果蓄積領域に戻すことを特徴とする請求項１６に記載の並列計算機の計算方法。
【請求項１８】
前記第一のステップは、
浮動小数点数を固定小数点数の前記多倍長数に変換するステップと、
変換した前記多倍長数を前記所定のビット長ごとに分割して生成した複数の前記ワードデータのうち、前記浮動小数点数の仮数部の最上位ビットに対応するビットを含む前記ワードデータから前記相互結合ネットワーク装置の数に等しい数の前記ワードデータを有効とし、有効な前記ワードデータのそれぞれを前記相互結合ネットワーク装置に出力するステップと
を含み、
前記第三のステップは、複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づいて算出した総和演算結果の前記多倍長数を浮動小数点数に変換するステップを含むことを特徴とする請求項１３記載の並列計算機の計算方法。
【請求項１９】
前記第二のステップは、
前記相互結合ネットワーク装置が備える、任意の入力を任意の出力に接続するクロスバスイッチの一つの出力を受け、前記クロスバスイッチの入力に収容した複数の前記計算ノードから受信したワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記クロスバスイッチの一つの入力に出力する演算制御ステップと、
前記クロスバスイッチの一つの出力を受け、前記総和演算結果の出力を複数の前記計算ノードに配布する信号フォーマットに整えて前記クロスバスイッチの一つの入力に出力し、前記クロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布ステップと
を含むことを特徴とする請求項１８に記載の並列計算機の計算方法。
【請求項２０】
前記第二のステップは、
前記相互結合ネットワーク装置の中間段スイッチが備える、任意の入力を任意の出力に接続する第一のクロスバスイッチの一つの出力を受け、前記第一のクロスバスイッチの入力に収容した複数の前記計算ノードから受信した前記ワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を前記中間段スイッチの第一の総和演算結果として前記クロスバスイッチの一つの入力に出力する第一の演算制御ステップと、
前記相互結合ネットワーク装置の最上段スイッチが備える、任意の入力を任意の出力に接続する第二のクロスバスイッチの一つの出力を受け、前記第二のクロスバスイッチの入力に収容した前記第一のクロスバスイッチの出力を介して送信された複数の前記中間段スイッチのそれぞれの第一の総和演算結果に対し、前記ワード位置識別子が同一のワードデータの総和演算を実行し、当該総和演算結果を第二の総和演算結果として前記第二のクロスバスイッチの一つの入力に出力する第二の演算制御ステップと、
前記第二のクロスバスイッチの一つの出力を受け、前記第二の総和演算結果を複数の前記計算ノードに配布する信号フォーマットに整えて配布総和演算結果として前記第二のクロスバスイッチの一つの入力に出力し、前記配布総和演算結果を前記第二のクロスバスイッチの出力に収容した複数の前記中間段スイッチのそれぞれの前記第一のクロスバスイッチの入力に送信する演算結果配布ステップと、
前記第一のクロスバスイッチの一つの入力から受信した前記配布総和演算結果を、前記第一のクロスバスイッチの出力に収容した複数の前記計算ノードに配布する演算結果配布ステップと
を含むことを特徴とする請求項１８に記載の並列計算機の計算方法。
【請求項２１】
前記演算制御ステップ、前記第一の演算制御ステップ及び前記第二の演算制御ステップは、
入力したデータを保持手段に保持し、保持したデータの前記ワード位置識別子と前記ワードデータを、順次出力する入力データ保持出力ステップと、
前記ワードデータの１ワードデータ分の加算結果を累算結果蓄積領域に蓄積し、蓄積している前記ワード位置識別子と前記ワードデータとを出力する累算結果保持出力ステップと、
前記入力データ保持出力ステップが出力したワード位置識別子の値と、前記累算結果保持出力ステップが出力したワード位置識別子の値とを比較し、両者の値が一致する場合には、前記入力データ保持出力ステップが出力したワードデータと前記累算結果保持出力ステップが出力したワードデータとの加算を指示する第一の指示情報を出力し、両者の値が不一致の場合には、前記入力データ保持出力ステップが出力したワードデータと前記累算結果保持出力ステップが出力したワードデータのうち小さい値の前記ワード位置識別子を有するワードデータを加算結果とするように指示する第二の指示情報を出力する比較出力ステップと、
前記入力データ保持出力ステップが出力したワードデータと前記累算結果保持出力ステップが出力したワードデータとを入力し、前記比較出力ステップが、前記第一の指示情報を出力した場合は、前記入力データ保持出力ステップが出力したワードデータと前記累算結果保持出力ステップが出力したワードデータとを加算して加算結果とし、前記比較出力ステップが、前記第二の指示情報を出力した場合は、当該指示の前記ワード位置識別子に対応するワードデータを加算結果とし、前記加算結果のデータと同一の前記ワード位置識別子を含む他のデータを前記保持手段が保持していない場合は前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記加算結果のデータと同一の前記ワード位置識別子を含む他のデータを前記保持手段が保持している場合は前記加算結果を前記累算結果蓄積領域に戻す加算出力ステップと
を含むことを特徴とする請求項１９又は請求項２０に記載の並列計算機の計算方法。
【請求項２２】
前記演算制御ステップ、前記第一の演算制御ステップ及び前記第二の演算制御ステップは、
前記保持手段が保持しているデータの前記ワード位置識別子ごとのデータ数を計数し、前記保持手段が保持したデータを出力したときに、当該出力データに含まれる前記ワード位置識別子と同一の前記ワード位置識別子を含むデータが前記保持手段に保持されていないことを識別すると終了判定信号を出力する終了判定信号出力ステップ
をさらに含み、
前記加算出力ステップは、前記終了判定信号を受信しているときは前記加算結果を前記クロスバスイッチの一つの入力に出力し、前記終了判定信号を受信していないときは前記加算結果を前記累算結果蓄積領域に戻すことを特徴とする請求項２１に記載の並列計算機の計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算ノードを相互に接続し、計算ノード間で相互にデータを送受しながら所定の処理を実行する並列計算機と並列計算機の計算方法に関し、特に複数の計算ノードが保持する多倍長数データの総和を演算する並列計算機と並列計算機の計算方法に関する。
【背景技術】
【０００２】
マルチコンピュータ方式の並列計算機は、単体の計算ノードをネットワークで複数台つないで構成する計算機である。この並列計算機は、一つの問題を解くために必要な処理を、ネットワークで相互に接続された複数の計算ノードのそれぞれに割り当てられた並列プログラムで並列に演算処理を実行する。並列計算機は、複数の計算ノードが並列処理を行うことにより高速に処理を実行することができる。
【０００３】
並列計算機を構成する各計算ノードは相互に接続されたネットワークを介して処理データを相互にやり取りすることができる。このような並列計算機は、大規模なものでは数百〜数万台の規模の計算ノードで構成されている。したがって、計算ノードの並列プログラムは、計算ノード間での通信と演算を実行する演算処理が必要になる。このような演算をリダクション演算と呼び、各計算ノードに保持されたデータを集めて、指定された演算処理を実行する。代表的なリダクション演算は、各計算ノードに保持されたデータの総和演算や、最大値や最小値を求める演算がある。
【０００４】
一方、通常の計算機は、ＣＰＵ（中央演算処理装置）内のレジスタが扱うデータのビット数に、３２ビットあるいは６４ビットなどの制限がある。このためＣＰＵレジスタが直接扱うことができるビット数よりも大きな整数である多倍長数の演算を行う場合、多倍長演算方式と呼ばれる演算方式が利用される。多倍長演算方式は、大きな整数をＣＰＵレジスタで扱うことが可能な小サイズのデータ（ワード）に分割し、このワード単位で演算を実行する。並列計算機を構成する計算ノードの数が多くなれば、より精度の高い演算を実行するために、多倍長演算が必要とされることがある。
【０００５】
特許文献１（特開平６−１６８１０１号公報）は、暗号で必要とされる５１２ビットデータの多倍長演算に用いる加算装置及び加算方法を開示する。
【０００６】
特許文献１が開示する加算装置及び加算方法は、多倍長加算のために複数の加算器を用意して、一括して演算結果を得る方式の技術である。特許文献１が開示する加算装置は、複数ワードに分割された多倍長数データの各ワードに対して、前段からの桁上げ有と前段からの桁上げ無しの場合の２つの演算結果をそれぞれ別の加算器によって出力する。そして、この加算装置は、それぞれ別の加算器が出力した２つの演算結果のいずれの演算結果を採用するかを選択する選択回路を備える。
【０００７】
特許文献２（特開平５−２５７９１０号公報）は、ネットワークスイッチ上の演算器を用いて総和演算を高速に実行する、網による演算方式を開示する。この網による演算方式は、各計算ノードを接続するネットワークスイッチ上に演算器を備え、各計算ノードが出力した値をネットワークスイッチ上で待ち合わせを行いながら演算を実行する。ネットワークスイッチ上の複数の演算器が同時に処理を実行することができるため、単一の計算ノードにデータを集めてから演算処理を実行する方式よりも演算の高速化が可能になる。
【０００８】
科学技術演算等で一般にコンピュータが取り扱うデータ形式として浮動小数点数がある。浮動小数点数は、非常に大きな数や非常に小さな数を表すのに適しており、数値を表すビット列である仮数部、数値の桁位置を表す指数部、数値の正負を表す符号部から構成される。最も広く採用されている標準規格としては、ＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ，Ｉｎｃ．）方式の単精度浮動小数点数型式や倍精度浮動小数点数型式がある。
【０００９】
浮動小数点数は、その構成からわかるように、多倍長の固定小数点数の一部を仮数として切り出し、その桁位置を指数で別に記録したものと言える。つまり浮動小数点数の総和演算結果は、浮動小数点数を多倍長固定小数点数に変換して総和演算を実行してから、浮動小数点数に再変換することで得ることが可能である。実際には浮動小数点数を完全な固定小数点数に変換するとビット長が長すぎて大量のハードウェアを必要とするため、有効な桁数のみに絞って演算を実行する。
【００１０】
浮動小数点数の総和演算では、この有効な桁数のみに絞り込む過程で丸め誤差が生じる。そのため、この誤差を防ぐために、演算順序の調整や、ビット長の長い演算器を構成したりするなどの工夫が必要になる。
【００１１】
特許文献３（特開２００７−２５７２６９号公報）は、演算順序を守ることなく、多数のノードの浮動小数点データの総和演算を高速化し、並列処理に有効な浮動小数点データの総和演算処理方法及びコンピュータシステムを開示する。
【００１２】
特許文献３が開示する技術は、演算対象の浮動小数点データを指数部の大きさごとにグループに分け、データの中で指数部が最大のグループと二番目に大きなグループの総和結果を加算して最終結果としている。また、当該技術は、指数部の大きさごとにグループ化すること及びグループ内の桁上がりを考慮して、グループごとの演算には長ビットの演算器を用いている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平６−１６８１０１号公報
【特許文献２】特開平５−２５７９１０号公報
【特許文献３】特開２００７−２５７２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし上記の各特許文献が開示する技術には以下のような問題がある。
【００１５】
特許文献１が開示する多倍長演算の実行方式は、単一の計算ノードで多倍長演算を実行する技術であり、計算ノードに多数の演算器を必要とする。そのため、当該技術は、ハードウェア量の増大を招く問題がある。また、並列計算機上で多倍長数データを演算処理する場合であっても、この技術のように、全て一箇所の計算ノードにデータを集めて演算処理を実行しようとすると、同様の問題が生じる。つまり、一箇所の計算ノードにデータを集めて演算処理を実行する方式は、データの集まる計算ノードが大量のメモリを必要となるだけでなく、当該計算ノードへの負荷集中によって全体の処理性能が低下する。計算ノード数が数万台以上の規模になれば、一箇所の計算ノードにデータを集めて演算処理を実行する方式は現実的とは言えない。
【００１６】
特許文献２が開示する網による演算方式は、演算できるデータのビット数がネットワークスイッチ上の演算器のビット数に制限される。ＣＰＵレジスタと同様に３２ビットあるいは６４ビットなどの制限があれば、それよりも大きな整数を扱うことができない。
【００１７】
特許文献３が開示する総和演算処理方法及びコンピュータシステムは、指数部の大きさごとにグループ化すること及びグループ内の桁上がりを考慮するために、グループごとの総和を計算する演算器のビット長を拡張する必要がある。このことはネットワークスイッチのハードウェア量増加、複雑化を招くという問題がある。
【００１８】
従って、特許文献１〜特許文献３が開示する技術では、相互に接続した複数の計算ノードで、ハードウェア量増加を必要とせずに、多倍長数データの総和演算を高速に実行することができない。
【００１９】
本発明の目的は、上記の課題を解決して、相互に接続した複数の計算ノードで、ハードウェア量増加を必要とせずに、多倍長数データの総和演算を高速に実行することができる並列計算機を提供することにある。
【課題を解決するための手段】
【００２０】
上記の目的を実現するために、本発明における並列計算機は、ＣＰＵ（中央演算処理装置）が直接扱える範囲を超える数である多倍長数を所定のビット長で分割したワードデータと、前記ワードデータの前記多倍長数におけるワードデータ位置を特定するワード位置識別子を出力する多倍長数分割手段を含む複数の計算ノードと、前記複数の計算ノードと接続され、複数の前記計算ノードから受信した前記ワードデータを、同一のワード位置識別子に対応するワードデータごとに加算演算して部分演算結果を出力する部分演算手段と、前記部分演算手段が出力した前記部分演算結果を、総和演算に参加しているすべての前記計算ノードに配布する演算結果配布手段を含む複数の相互結合ネットワーク装置とを備え、前記計算ノードは、複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して前記多倍長数の総和演算結果を出力する最終演算手段を含むことを特徴とする。
【００２１】
また、本発明の並列計算機の計算方法は、ＣＰＵ（中央演算処理装置）が直接扱える範囲を超える数である多倍長数を、それぞれの計算ノードが、所定のビット長のワードデータに分割して前記ワードデータの前記多倍長数におけるワードデータ位置を特定するワード位置識別子とともに複数の相互結合ネットワーク装置に出力し、受信した複数の前記ワードデータと前記ワード位置識別子に基づいて、同一のワード位置識別子に対応するワードデータごとに加算演算した部分演算結果を、それぞれの前記相互結合ネットワーク装置が、総和演算に参加しているすべての前記計算ノードに配布し、複数の前記相互結合ネットワーク装置から受信した前記部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して、それぞれの前記計算ノードが前記多倍長数の総和演算結果を出力することを特徴とする。
【発明の効果】
【００２２】
本発明は、ネットワークスイッチの演算器を拡張することなく、ＣＰＵが直接扱える範囲のビット長の演算器を組み合わせて実現することが可能なので、少ないハードウェア量で目的を達成することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態の並列計算機の基本構成を示すシステム構成図
【図２】本発明の実施形態で使用する多倍長数データとその分割例を示す模式図
【図３】本発明の実施形態における総和演算処理の動作を示すフロー図
【図４】第一の実施形態の並列計算機の構成を示すシステム構成図
【図５】第一の実施形態における総和演算処理の動作を示すフロー図
【図６Ａ】第一の実施形態のネットワークスイッチの構成を示すブロック図
【図６Ｂ】第一の実施形態のネットワークスイッチを２段で接続した構成を示すブロック図
【図７】第一の実施形態における演算制御部の構成を示すブロック図
【図８】演算制御部の終了判定装置の動作を示すフロー図
【図９】演算制御部の終了判定装置の動作を示すフロー図
【図１０】演算制御部の累算結果保持装置と加算器の動作を示すフロー図
【図１１】第二の実施形態における演算制御部の構成を示すブロック図
【図１２】第二の実施形態の演算制御部の動作を示すフロー図
【発明を実施するための形態】
【００２４】
本発明を実施するための形態について図面を参照して説明する。
【００２５】
図１は、本発明の実施形態の並列計算機の基本構成を示すシステム構成図である。
【００２６】
本実施形態による並列計算機は、複数の計算ノード１００と、複数の相互結合ネットワーク装置２００で構成され、各計算ノード１００はそれぞれ、複数の相互結合ネットワーク装置２００と接続されている。計算ノード１００と相互結合ネットワーク装置２００の接続は、図１に例示するように直接接続されていてもよいし、図示しないネットワークを介した接続でもよい。計算ノード１００と相互結合ネットワーク装置２００の接続手段は限定しない。
【００２７】
計算ノード１００は、それぞれ演算器とメモリを有する独立した計算機である。計算ノード１００は、相互結合ネットワーク装置２００にデータ転送を行い、相互結合ネットワーク装置２００で行った部分演算の結果の配布を受けて、所定の最終演算の処理を実行する。
【００２８】
具体的には、本実施形態は、各計算ノード１００が保持する、ＣＰＵが直接扱える範囲を超える数である多倍長数データの総和演算をリダクション演算により処理する。つまり、各計算ノード１００が保持する多倍長数データを相互結合ネットワーク装置２００に送る。相互結合ネットワーク装置２００で総和演算の部分演算を実行し、その部分演算の結果を各計算ノード１００に配布する。各計算ノード１００は、相互結合ネットワーク装置２００から配布された部分演算の結果にもとづいて最終演算処理を実行する。
【００２９】
本実施形態では、計算ノード１００は、多倍長数データを所定のビット長を有するワードデータに分割する多倍長数分割手段１０１と、配布を受けた部分演算結果に基づく処理を実行する最終演算手段１０２を含む。多倍長数分割手段１０１は、後述するように、多倍長数データを所定のビット長で分割したワードデータと、そのワードデータの多倍長数データにおけるワードデータ位置を特定するワード位置識別子を出力する。
【００３０】
相互結合ネットワーク装置２００は、各計算ノード１００から受信した分割データに対する加算処理を部分演算として実行する部分演算手段２０１と、その部分演算結果を、総和演算に参加しているすべての計算ノード１００に配布する演算結果配布手段２０２を含む。
【００３１】
相互結合ネットワーク装置２００は複数の計算ノードと接続され、部分演算手段２０１は、複数の計算ノード１００から受信したワードデータを、同一のワード位置識別子に対応するワードデータごとに加算演算して部分演算結果を出力する。そして、計算ノード１００の最終演算手段１０２は、複数の相互結合ネットワーク装置から受信した部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して多倍長数データの総和演算結果を出力する。
【００３２】
図２は、本発明の実施形態で使用する多倍長数データとその分割例を示す模式図である。
【００３３】
本実施形態では、多倍長数データを所定のビット数ごとに分割して処理する。
【００３４】
分割されたビット数をここではワードと呼ぶ。ワード長（分割後のビット数）は、並列計算機内の加算器が扱うことができるデータビット長と、総和演算に参加する計算ノード数から決定される。ワード長を決めるに当たって参加するノード数を考慮するのは、総和演算による桁上がりを考慮するためである。具体的には、例えば加算器が扱うことができるデータビット長が６４ビットで、並列計算機内の計算ノード数が１０２４であれば、１０２４＝２の１０乗であるから、６４−１０＝５４ビット以下にワード長を設定する。
【００３５】
ワード位置識別子は、そのワードデータが元の多倍長数データの何ワード目であるかを示す識別子である。図２は、ワード位置識別子に（ｎ-１）が設定されており、そのワードデータは、多倍長数データを所定のビット数ごとに分割したときに、最上位ビットから（ｎ-１）番目の位置のワードであることを示す。
【００３６】
また、各計算ノードが保持する多倍長数データの桁数が同一とは限らないので、並列計算機が扱う多倍長数データの中で最大の桁数を基準とした共通のテンプレートを各計算ノードに用意する。そして、各計算ノードで保持する多倍長数データの最下位ビットをそのテンプレートの最下位ビットに合わせ、前述のようにして予め決めた所定のビット数ごとに分割してワードデータを生成する。分割したワードデータには、最上位ビット側から順にワード位置識別子が付与される。
【００３７】
図３は、このように構成された本実施形態の総和演算処理の動作を示すフロー図である。
【００３８】
Ｓ３０１において、各計算ノード１００は、多倍長数を所定のビット長のワードデータに分割して、ワードデータの多倍長数におけるワードデータ位置を特定するワード位置識別子とともに複数の相互結合ネットワーク装置に出力する。
【００３９】
Ｓ３０２において、各相互結合ネットワーク装置２００は、各計算ノードから受信した複数のワードデータとワード位置識別子に基づいて、同一のワード位置識別子に対応するワードデータごとに加算演算した部分演算を実行する。そして、それぞれの相互結合ネットワーク装置２００は、その部分演算結果を、総和演算に参加しているすべての計算ノードに配布する。
【００４０】
Ｓ３０３において、各計算ノード１００は、複数の相互結合ネットワーク装置から受信した部分演算結果に基づき、同一のワード位置識別子に対応するワードデータごとに加算演算を実施して多倍長数データの総和演算結果を出力する。
【００４１】
次に、第一の実施形態の並列計算機を説明する。
【００４２】
図４は、第一の実施形態の並列計算機の構成を示すシステム構成図である。
【００４３】
第一の実施形態の並列計算機の相互結合ネットワーク装置２００は、ネットワークスイッチで構成される。このネットワークスイッチは、その役割に応じて、中間段スイッチ２１０と最上段スイッチ２２０に分類される。そして、相互結合ネットワーク装置２００は、複数の中間段スイッチ２１０が最上段スイッチ２２０の下に接続されるツリー型のネットワークを構成する。
【００４４】
各中間段スイッチ２１０は、ネットワークを介して各計算ノード１００と接続される。なお、図４では、２段構成のツリー型ネットワークを示しているが、本実施形態は任意の段数のネットワークスイッチで構成される相互結合ネットワーク装置に対して適用可能である。また、本実施形態は１段のネットワークスイッチであってもかまわない。
【００４５】
中間段スイッチ２１０は、図１を参照して説明した実施形態の部分演算手段２０１を備え、最上段スイッチ２２０は、部分演算手段２０１及び演算結果配布手段を備える。１段のネットワークスイッチの構成及び２段構成の場合の中間段スイッチと最上段スイッチの構成については、図６Ａ及び図６Ｂを参照して説明する。
【００４６】
また、中間段スイッチ２１０と各計算ノード１００とを接続するネットワークは、パケットネットワークを想定する。もちろん、このネットワークは、パケットネットワークに限られること無く、回線交換ネットワークであっても良いし、それぞれを直接接続する専用線であっても良い。
【００４７】
なお、図４には示していないが、各計算ノード１００は、図１を参照して説明した多倍長数分割手段１０１と最終演算手段１０２を含む。
【００４８】
このように、第一の実施形態の並列計算機は、各計算ノード１００が複数の相互結合ネットワーク装置２００と接続されている。これは、各計算ノード１００が高いノード間接続スループットを必要とするためである。このとき、運用制御を容易にするためには、複数の相互結合ネットワーク装置２００が同一のトポロジ及び同一の性能を有することが望ましい。
【００４９】
上記の構成のもとに、第一の実施形態の並列計算機は、各計算ノード１００が保持する多倍長数データの総和演算をリダクション演算により処理する。つまり、各計算ノード１００は保持する多倍長数データを相互結合ネットワーク装置２００に送る。相互結合ネットワーク装置２００は総和演算の部分演算を実行し、その部分演算の結果を各計算ノード１００に配布する。各計算ノード１００は、相互結合ネットワーク装置２００から配布された部分演算の結果にもとづいて最終演算処理を実行する。
【００５０】
図面を参照して以下に詳細に説明する。
【００５１】
図５は、第一の実施形態の並列計算機の総和演算処理の動作を示すフロー図である。なお、図５に示す動作は、相互結合ネットワーク装置２００が２段のネットワークスイッチで構成される場合を想定した動作である。従って、図５に示す動作は、図３を参照して説明した実施形態の動作と比較して、相互結合ネットワーク装置２００の動作が、中間段スイッチ２１０の動作と最上段スイッチ２２０の動作に別れている点で異なる。また、相互結合ネットワーク装置２００が１段のネットワークスイッチで構成される場合には、その動作は図３を参照して説明した実施形態の動作と同じでなので、説明を割愛する。なお、動作の説明は後述する。
【００５２】
図６Ａは、第一の実施形態の相互結合ネットワーク装置２００が１段のネットワークスイッチで構成される場合のネットワークスイッチの構成を示すブロック図である。
【００５３】
ネットワークスイッチ６００は、入力ポートと出力ポートを有し、各計算ノード１００と接続される。また、内部にはクロスバスイッチ６０１と、演算制御部６０２と、演算結果配布部６０３を有している。
【００５４】
クロスバスイッチ６０１は、クロスバスイッチ６０１の任意の入力を任意の出力に接続することができるスイッチである。そして、各計算ノード１００と接続される入力ポートはクロスバスイッチ６０１の入力に収容され、各計算ノード１００と接続される出力ポートはクロスバスイッチ６０１の出力に収容される。
【００５５】
演算制御部６０２は、このネットワークスイッチ６００が各計算ノード１００から受信したワード位置識別子が同一のワードデータの総和演算（部分演算）を実行する装置である。また、演算結果配布部６０３は、演算制御部６０２による総和演算（部分演算）が終了した時に、その部分演算結果を各計算ノード１００に配布する機能を有する装置である。
【００５６】
演算制御部６０２はクロスバスイッチ６０１の一つの出力を受け、演算制御部６０２の出力はクロスバスイッチ６０１の一つの入力となる。また、演算結果配布部６０３はクロスバスイッチ６０１の一つの出力を受け、演算結果配布部６０３の出力はクロスバスイッチ６０１の一つの入力となる。これによって、どの入力ポート（計算ノードからの入力）からも演算制御部６０２に対して通信が可能である。そして、演算結果配布部６０３はどの出力ポート（計算ノードへの出力）に対しても通信が可能となる。このような構成により、演算制御部６０２は各計算ノードからのデータを、クロスバスイッチ６０１を介して受信して総和演算（部分演算）を実行する。そして、その結果を、クロスバスイッチ６０１を介して演算結果配布部６０３に出力する。演算結果配布部６０３は、演算制御部６０２から受信した部分演算結果を、信号フォーマット等を整えて、クロスバスイッチ６０１を介して各計算ノード１００に出力する。
【００５７】
図６Ｂは、第一の実施形態の相互結合ネットワーク装置２００が２段のネットワークスイッチ（複数の中間段スイッチ２１０〜２１ｎと最上段スイッチ２２０）で構成される場合のネットワークスイッチの構成を示すブロック図である。
【００５８】
中間段スイッチ２１０は、基本的に図６Ａで説明したネットワークスイッチ６００と同様の構成を有し、各計算ノード１００とは入力ポートと出力ポートで接続される。また、内部にはクロスバスイッチ６０１と、演算制御部６０２を有している。中間段スイッチ２１０は、演算結果配布部６０３を備えていない点においてネットワークスイッチ６００と異なる。なお、中間段スイッチ２１０〜２１ｎは、全て同様の構成を有している。
【００５９】
最上段スイッチ２２０は、基本的に図６Ａで説明したネットワークスイッチ６００と同様の構成を有しているが、各計算ノード１００と接続する入力ポート、出力ポートは備えていない。演算結果配布部６０３は、最上段スイッチ２２０に備えられている。
【００６０】
各ネットワークスイッチにおいて、演算制御部６０２はクロスバスイッチ６０１の一つの出力を受け、演算制御部６０２の出力はクロスバスイッチ６０１の一つの入力となる。また、最上段スイッチ２２０において、演算結果配布部６０３はクロスバスイッチ６０１の一つの出力を受け、演算結果配布部６０３の出力はクロスバスイッチ６０１の一つの入力となる。
【００６１】
中間段スイッチ２１０と最上段スイッチ２２０の接続を見てみる。
【００６２】
なお、ここでは説明をわかり易くするために、中間段スイッチ２１０のクロスバスイッチ６０１を第一のクロスバスイッチ、中間段スイッチ２１０の演算制御部６０２を第一の演算制御部と称して説明する。同様に、最上段スイッチ２２０のクロスバスイッチ６０１を第二のクロスバスイッチ、最上段スイッチ２２０の演算制御部６０２を第二の演算制御部と称して説明する。
【００６３】
中間段スイッチ２１０の第一のクロスバスイッチの一つの出力は最上段スイッチ２２０の第二のクロスバスイッチの一つの入力となっている。また、最上段スイッチ２２０の第二のクロスバスイッチの一つの出力は、中間段スイッチ２１０の第一のクロスバスイッチの一つの入力となっている。従って、複数の中間段スイッチ２１０〜２１ｎの各第一のクロスバスイッチの出力が最上段スイッチ２２０の第二のクロスバスイッチの入力となっている。そして、最上段スイッチ２２０の第二のクロスバスイッチの出力が複数の中間段スイッチ２１０〜２１ｎの各第一のクロスバスイッチの入力となっている。
【００６４】
このような構成により、中間段スイッチ２１０の第一の演算制御部は各計算ノードからのデータを、第一のクロスバスイッチを介して受信して総和演算（部分演算）を実行する。そして、その結果を、第一のクロスバスイッチを介して最上段スイッチ２２０に出力する。最上段スイッチ２２０の第二の演算制御部は各中間段スイッチ２１０からの部分演算結果を、第二のクロスバスイッチを介して受信して、さらに可能な総和演算（部分演算）を実行する。最上段スイッチ２２０の第二の演算制御部は、当該第二の演算制御部で実行した総和演算（部分演算）結果を、第二のクロスバスイッチを介して演算結果配布部６０３に出力する。最上段スイッチ２２０の演算結果配布部６０３は、第二のクロスバスイッチを介して演算制御部６０２から受信した部分演算結果を、信号フォーマット等を整えて、第二のクロスバスイッチを介して中間段スイッチ２１０に出力する。中間段スイッチ２１０は、最上段スイッチ２２０の演算結果配布部６０３から受信した部分演算結果を、第一のクロスバスイッチを介して各計算ノード１００に出力する。
【００６５】
次に、図７を参照して演算制御部６０２の構成を説明する。
【００６６】
図７は、ネットワークスイッチ６００が有する演算制御部６０２の第一の実施形態における構成を示すブロック図である。中間段スイッチ２１０及び最上段スイッチ２２０が有する演算制御部６０２も同じ構成となっている。
【００６７】
演算制御部６０２は、加算器７０１を含む。加算器７０１の入力は、累算結果保持装置７０２の出力と、入力データ保持装置７０３の出力である。加算器７０１の出力は、出力データ保持装置７０４に接続されている。演算制御部６０２への入力は入力データ保持装置７０３に接続され、演算制御部６０２の出力は出力データ保持装置７０４に接続されている。他に終了判定装置７０５を有し、入力データ保持装置７０３と加算器７０１に接続されている。
【００６８】
また、演算制御部６０２内の入力データ保持装置７０３、累算結果保持装置７０２、および出力データ保持装置７０４の保持するデータ形式は、図２を参照して説明したワードデータ及びワード位置識別子を含む。
【００６９】
図５〜図１０を参照して第一の実施形態の並列計算機の総和演算処理の動作を詳細に説明する。なお、図８及び図９は、演算制御部６０２の終了判定装置７０５の動作を示すフロー図であり、図１０は、累算結果保持装置７０２と加算器７０１の動作を示すフロー図である。
【００７０】
まず、Ｓ５０１の処理で、各計算ノード１００は、保持している多倍長数データを複数のワードデータに分割し、複数の相互結合ネットワーク装置２００に、その分割したワードデータを出力する。
【００７１】
具体的には、計算ノード１００の多倍長数分割手段は、自分の保持する多倍長数データを、前述した条件で予め決められた所定のビット数ごとに分割する。そして、計算ノード１００の多倍長数分割手段は、分割したワードデータと、そのワードデータに対応するワード位置識別子を、複数の相互結合ネットワーク装置２００に対してそれぞれ出力する。
【００７２】
計算ノード１００から相互結合ネットワーク装置２００にワードデータを出力するに際して、複数の相互結合ネットワーク装置間の負荷を分散させるためにも、各相互結合ネットワーク装置２００への通信量が均等になるように制御されることが望ましい。
【００７３】
例えば、元の多倍長数データの１ワード目を１番目の相互結合ネットワーク装置２００へ、２ワード目を２番目の相互結合ネットワーク装置２００へ、というようにワード位置識別子順に相互結合ネットワーク装置２００へ出力する。そして、相互結合ネットワーク装置数（＝Ｎ）よりも多くのワードに分割されている場合、Ｎ＋１ワード目をまた１番目の相互結合ネットワーク装置２００へ、Ｎ＋２ワード目を２番目の相互結合ネットワーク装置２００へ、というように順次割り当てる方式が考えられる。つまり、各計算ノード１００は、Ｎ個の相互結合ネットワーク装置(Ｎｏ．１、Ｎｏ．２、Ｎｏ．３、・・・Ｎｏ．Ｎ)にワードデータをそれぞれ送出するとき、Ｎｏ．ｉの相互結合ネットワーク装置には、ワード位置識別子が（ｍ×Ｎ＋ｉ）であるワードデータを送出する。なお、ｍは０以上の整数である。
【００７４】
このようにして、各計算ノード１００は、自分の持つ多倍長数データを分割したワードデータをワード位置識別子とともに各相互結合ネットワーク装置２００に出力する。
【００７５】
次に、Ｓ５０２の処理で、各相互結合ネットワーク装置２００は、各計算ノード１００から受け取ったデータに基づいて部分演算処理を実行する。
【００７６】
相互結合ネットワーク装置２００で実行する部分演算処理の概要を説明する。
【００７７】
ある相互結合ネットワーク装置２００の中間段スイッチ２１０に着目すると、その中間段スイッチ２１０は、複数の計算ノード１００から多数のワードデータを受信することになる。そこで、中間段スイッチ２１０は、受信した数のワードデータの範囲内でワード位置識別子が同一のワードデータを加算処理する部分演算処理を実行する。この中間段スイッチ２１０が実行する部分演算処理を第一の部分演算処理と称しても良い。
【００７８】
また、相互結合ネットワーク装置２００の中には、複数の中間段スイッチ２１０と接続する最上段スイッチ２２０も存在する。そこで、受信した数のワードデータの範囲内で第一の部分演算処理を実行した各中間段スイッチ２１０は、自スイッチが処理した第一の部分演算処理結果を最上段スイッチ２２０に出力する。したがって、最上段スイッチ２２０は、接続している複数の中間段スイッチ２１０から多数の第一の部分演算処理結果を受信する。このように各中間段スイッチ２１０から複数の第一の部分演算処理結果を集めたことにより、ワード位置識別子が同一のワードデータでも未加算のデータも存在する。したがって、最上段スイッチ２２０は、それらのワード位置識別子が同一のワードデータでも未加算のワードデータの加算処理を実行する。
【００７９】
このようにして、相互結合ネットワーク装置２００は、自相互結合ネットワーク装置に割り振られた範囲内でのワードデータに対して、ワード位置識別子が同一のワードデータを加算処理する部分演算処理を実行する。相互結合ネットワーク装置２００が実行する部分演算処理は、上述したように中間段スイッチ２１０と最上段スイッチ２２０の二段構成で処理するので、高速な処理が可能である。
【００８０】
部分演算処理は、各相互結合ネットワーク装置２００において、ネットワークスイッチ（中間段スイッチ２１０および最上段スイッチ２２０）の演算制御部６０２により実行される。
【００８１】
図６Ａ、図６Ｂを参照して説明したように、各計算ノードから受け取ったデータは、ネットワークスイッチ６００（中間段スイッチ２１０）のクロスバスイッチ６０１を介して演算制御部６０２に送られる。演算制御部６０２は、部分演算処理を実行し、結果が得られたらクロスバスイッチ６０１の所定の一つの入力に出力する。
【００８２】
次に演算制御部６０２内の動作を説明する。
【００８３】
演算制御部６０２内では、クロスバスイッチ６０１を介して各計算ノードから受け取ったデータを入力データ保持装置７０３に保持する。ここで保持されるデータ型式は、図２を参照して説明したワード位置識別子とワードデータである。入力データ保持装置７０３は、いわゆるバッファメモリの機能として位置づけられ、各計算ノードから受け取ったデータを蓄積し、演算処理のために順次一つのデータごとに出力する。
【００８４】
入力データ保持装置７０３は、保持しているデータワードを加算器７０１に、ワード位置識別子を累算結果保持装置７０２に出力する。
【００８５】
累算結果保持装置７０２は、複数の累算結果データを蓄積する蓄積領域を備えている。蓄積領域の各累積結果データは、ワード位置識別子で検索することにより対応するワードデータを読み出し、又は書き込むことができる。
【００８６】
累算結果保持装置７０２は、入力データ保持装置７０３から受け取ったワード位置識別子と同じワード位置識別子に対応して保持している累積結果データのワードデータを加算器７０１に出力する。このとき、累算結果保持装置７０２は、ワード位置識別子を出力データ保持装置７０４に出力しておく。
【００８７】
終了判定装置７０５は、入力データ保持装置７０３に到着したデータの数を、ワード位置識別子ごとにカウントする機能を持つ。そして、終了判定装置７０５は、所定数のデータの処理が終了した場合に、終了通知を加算器７０１および出力データ保持装置７０４に送ることができる。
【００８８】
つまり、終了判定装置７０５は、どのワード位置識別子に対応するワードデータが、入力データ保持装置７０３にいくつ保持されているかをカウントすることができる。終了判定装置７０５は、入力データ保持装置７０３にデータが到着するごとに、ワード位置識別子に対応するワードデータ数のカウント値を加算する。また、終了判定装置７０５は、入力データ保持装置７０３が保持しているデータワードをワード位置識別子とともに加算器７０１、累算結果保持装置７０２に出力するたびに、ワード位置識別子に対応するワードデータ数のカウント値を減算する。そして、減算した結果が０になった場合に、終了通知を加算器７０１および出力データ保持装置７０４に出力する。
【００８９】
図８及び図９は、上述した終了判定装置７０５の動作を示すフロー図である。図８はカウント値を加算する動作、図９はカウント値を減算する動作をそれぞれ示す。
【００９０】
つまり、入力データ保持装置７０３にデータが到着して、入力データ保持装置７０３がそれを保持すると、入力データ保持装置７０３は、ワード位置識別子とカウント加算情報を終了判定装置７０５に出力する（Ｓ８０１）。それを受けた終了判定装置７０５は、ワード位置識別子に対応して保持している計数器のカウントを加算する（Ｓ８０２）。
【００９１】
一方、入力データ保持装置７０３は、保持しているデータワードを加算器７０１に、ワード位置識別子を累算結果保持装置７０２に出力すると、ワード位置識別子とカウント減算情報を終了判定装置７０５に出力する（Ｓ９０１）。それを受けた終了判定装置７０５は、ワード位置識別子に対応して保持している計数器のカウントを減算する（Ｓ９０２）。終了判定装置７０５は、減算した結果、計数器のカウント値が０になっていないかを確認する（Ｓ９０３）。計数器のカウント値が０になっていない場合（Ｓ９０３、ＮＯ）、終了判定装置７０５は処理を終了する。計数器のカウント値が０になっている場合（Ｓ９０３、ＹＥＳ）、終了判定装置７０５は、終了通知を加算器７０１および出力データ保持装置７０４に出力する（Ｓ９０４）。
【００９２】
加算器７０１は、入力された２つのワードデータ（ビット列）を固定小数点数として加算する。そして、加算器７０１は、終了判定装置７０５からの終了通知があれば加算結果を出力データ保持装置７０４に出力する。終了通知がなければ、加算器７０１は、加算結果を累算結果保持装置７０２に戻す。累算結果保持装置７０２は、加算器７０１から戻ってきたデータを、蓄積領域の読み出したワード位置識別子に対応する位置に書き戻す。
【００９３】
図１０は、上述した累算結果保持装置７０２と加算器７０１の動作を示すフロー図である。
【００９４】
加算器７０１と累算結果保持装置７０２は、入力データ保持装置７０３からワードデータとワード位置識別子を受信する（Ｓ１００１）。このとき、累算結果保持装置７０２はワード位置識別子を受信する（Ｓ１００３）。一方、加算器７０１はワードデータを受信する（Ｓ１００２）。
【００９５】
累算結果保持装置７０２は、入力データ保持装置７０３から受信したワード位置識別子に対応したワードデータを保持しているか否かを確認する（Ｓ１００４）。累算結果保持装置７０２は、ワード位置識別子に対応した記憶領域を持ち、そこにはワード位置識別子に対応して計算したワードデータの累積結果を保持している。
【００９６】
当該データが初めての受信データである場合には累積結果の保持は無いので（Ｓ１００４、ＮＯ）、オール０の情報、または累積結果が無い旨の情報を加算器７０１に出力する（Ｓ１００５）。一方、ワード位置識別子に対応して累積結果のデータを保持している場合（Ｓ１００４、ＹＥＳ）、そのデータを読み出して加算器７０１に出力する（Ｓ１００６）。なお、Ｓ１００５の場合も、Ｓ１００６の場合も、累算結果保持装置７０２は、ワード位置識別子の情報を出力データ保持装置７０４に出力する。
【００９７】
加算器７０１は、入力データ保持装置７０３から入力したワードデータと、累算結果保持装置７０２から入力したワードデータとを加算処理する（Ｓ１００７）。加算処理を終了した加算器７０１は、終了判定装置７０５から終了通知を受信しているか否かを確認する（Ｓ１００８）。加算器７０１は、終了判定装置７０５からの終了通知を受信していれば（Ｓ１００８、ＹＥＳ）、加算結果を出力データ保持装置７０４に出力する（Ｓ１０１０）。終了通知を受信していなければ（Ｓ１００８，ＮＯ）、加算器７０１は、加算結果を累算結果保持装置７０２に戻す（Ｓ１００９）。累算結果保持装置７０２は、加算器７０１から戻ってきたデータを、読み出したワード位置識別子５０１に対応する蓄積領域の該当位置に書き戻す。
【００９８】
加算器７０１から演算結果を受け取った出力データ保持装置７０４は、当該演算結果を、累算結果保持装置７０２から受け取ったワード位置識別子とともに出力する。なお、このとき、出力データ保持装置７０４は、終了判定装置７０５から終了通知を受け取っている。
【００９９】
以上に説明した部分演算処理動作を中間段スイッチ２１０および最上段スイッチ２２０で実行することにより、相互結合ネットワーク装置２００は、自ネットワーク装置に割り振られた範囲内でのワードデータに対して、ワード位置識別子が同一のワードデータを加算処理する部分演算処理を実行する。
【０１００】
図５に戻り、Ｓ５０３の処理で、各相互結合ネットワーク装置２００は、最上段スイッチ２２０で得られた部分演算処理の最終結果を、総和演算に参加している各計算ノード１００に配布する。
【０１０１】
具体的には、最上段スイッチ２２０の演算制御部６０２において、加算器７０１から演算結果が、そして終了判定装置７０５から終了通知が出力データ保持装置７０４に届けられると、出力データ保持装置７０４は、対応する出力データを出力する。出力データ保持装置７０４から出力された部分演算結果は、クロスバスイッチ６０１を介して演算結果配布部６０３に送られる。演算結果配布部６０３は、当該相互結合ネットワーク装置２００での部分演算処理の最終結果を、例えばパケットデータに組み立てて、ブロードキャストパケットとして出力する。
【０１０２】
この部分演算処理の最終結果を含むパケットデータは、最上段スイッチ２２０内のクロスバスイッチ６０１を介して各中間段スイッチ２１０〜２１ｎに送られ、各中間段スイッチ２１０〜２１ｎ内のクロスバスイッチ６０１を介して、総和演算に参加している各計算ノード１００に配布される。
【０１０３】
次にＳ５０４で、各計算ノード１００は最終演算処理を実行する。
【０１０４】
計算ノード１００が各相互結合ネットワーク装置２００から受信する部分演算処理の最終結果は、それぞれの相互結合ネットワーク装置２００が実行した部分演算処理の最終結果である。そこで、計算ノード１００は、それら複数の部分演算処理の最終結果を桁合わせして加算することで、多倍長数データの総和演算結果を得ることができる。この処理は、最終演算手段が実行する。
【０１０５】
以上に説明したように、第一の実施形態の並列計算機は、複数の計算ノードが保持するデータを複数の相互結合ネットワーク装置で分散して処理を実行しており、計算ノードには部分演算処理の結果だけが配布される。そのため、単一の計算ノードが集中処理を行う場合に比べて高速に処理を実行することができる。また、各計算ノードは、演算制御部内の加算器が扱うことができるデータビット長に多倍長数データを分割して相互結合ネットワーク装置に送信する。そのため、データを扱う加算器やデータを保持するメモリ等のハードウェアを増加する必要がない。
【０１０６】
次に、第二の実施形態の並列計算機を説明する。
【０１０７】
第二の実施形態の並列計算機は、浮動小数点数総和演算の実行に用いる構成を有する。
【０１０８】
第二の実施形態の並列計算機の構成は、図４〜図６Ａ、図６Ｂを参照して説明した第一の実施形態の並列計算機の構成と同じである。相互結合ネットワーク装置２００が２段のネットワークスイッチで構成される例について、図４を参照してそのシステム構成を説明する。
【０１０９】
第二の実施形態の並列計算機の相互結合ネットワーク装置２００は、複数のネットワークスイッチで構成され、このネットワークスイッチは中間段スイッチ２１０と最上段スイッチ２２０に分類される。そして、相互結合ネットワーク装置２００は、複数の中間スイッチ２１０が最上段スイッチ２２０の下に接続されるツリー型のネットワークを構成する。そして、各中間段スイッチ２１０は、ネットワークを介して各計算ノード１００と接続される。もちろん、第二の実施形態の並列計算機の相互結合ネットワーク装置２００の構成が、図６Ａを参照して説明した１段のネットワークスイッチで構成されていてもかまわない。
【０１１０】
このような構成のもとに、第二の実施形態の並列計算機は、各計算ノード１００が保持する浮動小数点数を固定小数点数に変換した多倍長数データを相互結合ネットワーク装置２００に送る。相互結合ネットワーク装置２００で総和演算の部分演算を実行し、その部分演算の結果を各計算ノード１００に配布する。各計算ノード１００は、相互結合ネットワーク装置２００から配布された部分演算の結果にもとづいて最終演算処理を実行する。
【０１１１】
従って、第二の実施形態の並列計算機が第一の実施形態の並列計算機と異なる構成は、計算ノード１００の多倍長数分割手段及び最終演算手段と相互結合ネットワーク装置２００の演算制御部にある。つまり、多倍長数分割手段は、まず、浮動小数点数を固定小数点数に変換する。そして、固定小数点数に変換した多倍長数データを分割して分割したワードデータとワード位置識別子を出力する。最終演算手段は、各相互結合ネットワーク装置２００から受け取った複数の部分演算処理の最終結果をワード位置識別子によって桁合わせして加算する。そして、最終的に得られた加算結果の固定小数点数を浮動小数点数に変換する。また、演算制御部は、浮動小数点数の特徴に合わせた加算演算の制御を行う。
【０１１２】
図１１を参照して、第二の実施形態の並列計算機の演算制御部の構成を説明する。
【０１１３】
第一の実施形態における演算制御部６０２の構成との違いは、累算結果保持装置１１０２に保持するデータは１つのワードデータとそれに対応するワード位置識別子でよいことと、比較器１１０６を備えることである。これは、浮動小数点総和演算では最終的にワード位置が比較的後ろの方にあるビット列が丸めによって無視されることになるため、１つのワードデータを保持するだけで十分な演算精度が得られるように構成することが可能なためである。また、比較器１１０６は、累算結果保持装置１１０２および入力データ保持装置１１０３から、それぞれのワード位置識別子を受け取ってその値を比較する。比較結果によって後述するような加算器１１０１の出力を制御する。
【０１１４】
入力データ保持装置１１０３は、保持しているワードデータを加算器１１０１に、ワード位置識別子を比較器１１０６に出力する。
【０１１５】
累算結果保持装置１１０２は、自装置で現在保持しているワード位置識別子を比較器１１０６に、ワードデータを加算器１１０１に出力する。なお、累算結果保持装置１１０２は、１つのワードデータを保持する蓄積領域を有している。
【０１１６】
終了判定装置１１０５は、入力データ保持装置１１０３に到着したデータの数をカウントする機能を持つ。そして、終了判定装置１１０５は、所定数のデータの処理が終了した場合に、終了通知を加算器１１０１および出力データ保持装置１１０４に送ることができる。つまり、終了判定装置１１０５は、ワードデータが入力データ保持装置１１０３にいくつ保持されているかをカウントすることができる。終了判定装置１１０５は、入力データ保持装置１１０３にデータが到着するごとに、ワードデータ数のカウント値を加算する。また、終了判定装置１１０５は、入力データ保持装置１１０３が保持しているデータワードをワード位置識別子とともに加算器１１０１、比較器１１０６に出力するたびに、ワードデータ数のカウント値を減算する。そして、減算した結果が０になった場合に、終了通知を加算器１１０１および出力データ保持装置１１０４に出力する。つまり、終了判定装置１１０５は、入力データ保持装置１１０３に保持しているデータが無くなったときに終了通知を出力する。
【０１１７】
第二の実施形態の並列計算機の動作は、図５を参照して説明した第一の実施形態の並列計算機の動作と大筋において同じなので、図５を参照して説明する。
【０１１８】
まず、Ｓ５０１の処理で、各計算ノード１００は、保持している浮動小数点数を固定小数点数に変換した多倍長数データを複数のワードデータに分割し、複数の相互結合ネットワーク装置２００に、その分割したワードデータを出力する。
【０１１９】
つまり、各計算ノード１００の多倍長数分割手段１０１は、第二の実施形態においては、浮動小数点数を固定小数点数に変換し、その結果得られた多倍長数データを所定のビット長のワードデータに分割する。この分割は、各計算ノードで共通して保有しているテンプレートを用いて、並列計算機内の加算器が扱うことができるデータビット長と、総和演算に参加する計算ノード数から決定される所定ビット長に分割する点において第一の実施形態と同じである。
【０１２０】
このとき、分割された複数のビット列のうち、浮動小数点数の仮数部の最上位ビットが位置するビット列を先頭ワードとして、相互結合ネットワーク装置の数（＝Ｎ）に等しい数のビット列のみを有効とする処置を行う。例えば、仮数部の最上位ビットが分割後の３ワード目に位置した場合、３ワード目からＮ個のワードデータのみを有効とし、残りのデータを無視する。もし計算ノード１００内に、演算すべき浮動小数点数データが複数ある場合には、複数のデータのうち指数部が最大のデータの、仮数部の最上位ビット位置を基準にすると良い。
【０１２１】
そして、計算ノード１００は、有効なＮ個のワードデータのみを各相互結合ネットワーク装置２００に出力する。
【０１２２】
このとき、ｉワード目のワードデータはｉ  ｍｏｄ  Ｎ  の剰余演算結果で示される相互結合ネットワーク装置に出力される。但し、剰余演算結果が０の場合は、Ｎ番目の相互結合ネットワーク装置に出力する。すなわち、３ワード目からＮ個のワードが有効であった場合、３ワード目は３番目の相互結合ネットワーク装置に、４ワード目は４番目の相互結合ネットワーク装置に出力され、Ｎ＋２ワード目のデータが２番目の相互結合ネットワーク装置に出力される。このように周期的に出力先を割り当てることで、各相互結合ネットワーク装置２００は、一つの計算ノード１００から一つのデータだけを受け取ればよいことになる。
【０１２３】
次に、Ｓ５０２の処理で、各相互結合ネットワーク装置２００は、各計算ノード１００から受け取ったデータに基づいて部分演算処理を実行する。
【０１２４】
比較器１１０６は、入力データ保持装置１１０３が出力したワードデータのワード位置識別子と、累算結果保持装置７０２が現在保持しているワードデータのワード位置識別子の値を比較し、それによって加算器１１０１の出力を制御する。
【０１２５】
すなわち、比較器１１０６は、入力したワード位置識別子が同値の場合、加算器１１０１に対して入力データ保持装置１１０３が出力したワードデータと累算結果保持装置１１０２が現在保持しているワードデータとの加算演算の実行を指示する。
【０１２６】
一方、比較器１１０６は、入力したワード位置識別子が異なる場合、ワード位置識別子の値が小さい（多倍長数データの中でワード位置が最上位ビットに近い）方のデータを加算結果として出力するように加算器１１０１に指示する。これによって、元の浮動小数点数に戻した場合に大きな値となるデータの方のみが保存され、小さな値となるデータは誤差として丸められることになる。
【０１２７】
図１２は、第二の実施形態の演算制御部の動作を示すフロー図である。
【０１２８】
図１２を参照して説明すると、加算器１１０１と比較器１１０６は、入力データ保持装置１１０３からワードデータとワード位置識別子を受信する（Ｓ１２０１）。このとき、比較器１１０６はワード位置識別子を受信する（Ｓ１２０３）。一方、加算器１１０１はワードデータを受信する（Ｓ１２０２）。
【０１２９】
比較器１１０６には、累算結果保持装置１１０２が出力するワード位置識別子も入力されている。この累算結果保持装置１１０２が出力するワード位置識別子は、現在、累算結果保持装置１１０２が保持しているワードデータのワード位置識別子である。また、加算器１１０１には、累算結果保持装置１１０２が出力するワードデータも入力されている。この累算結果保持装置１１０２が出力するワードデータは、現在、累算結果保持装置１１０２が保持しているワードデータである。
【０１３０】
比較器１１０６は、Ｓ１２０３で入力データ保持装置１１０３から受信したワード位置識別子の値と、累算結果保持装置１１０２が出力するワード位置識別子の値の大小を比較する（Ｓ１２０４）。
【０１３１】
比較の結果、両者の値が等しい場合（Ｓ１２０４、ＹＥＳ）、比較器１１０６は、入力データ保持装置１１０３から受信したワードデータと累算結果保持装置１１０２が出力するワードデータを加算するように加算器１１０１に指示する（Ｓ１２０５）。
【０１３２】
一方、比較の結果、両者の値が等しくない場合（Ｓ１２０４、ＮＯ）、比較器１１０６は、ワード位置識別子が小さい値のワードデータを加算結果とするように加算器１１０１に指示する（Ｓ１２０６）。
【０１３３】
加算器１１０１は、比較器１１０６から加算の指示を受けると、入力データ保持装置１１０３から入力したワードデータと、累算結果保持装置１１０２から入力したワードデータとを加算処理した値を加算結果として出力する（Ｓ１２０７）。また、加算器１１０１は、比較器１１０６から指示を受けた、入力データ保持装置１１０３から入力したワードデータと累算結果保持装置１１０２から入力したワードデータのいずれかを加算結果として選択して出力する（Ｓ１２０７）。
【０１３４】
上記の加算処理を終了した加算器１１０１は、終了判定装置１１０５から終了通知を受信しているか否かを確認する（Ｓ１２０８）。
【０１３５】
加算器１１０１は、終了判定装置１１０５からの終了通知を受信していれば（Ｓ１２０８、ＹＥＳ）、加算結果を出力データ保持装置１１０４に出力する（Ｓ１２１０）。
【０１３６】
終了通知を受信していなければ（Ｓ１２０８、ＮＯ）、加算器１１０１は、加算結果を累算結果保持装置１１０２に戻す。そして、累算結果保持装置１１０２は、加算器１１０１から戻ってきたワードデータを、ワード位置識別子とともに保持する（Ｓ１２０９）。なお、比較器１１０６は、Ｓ１２０６の処理において、入力データ保持装置１１０３から入力したワードデータを加算結果とするように加算器１１０１に指示した場合、ワード位置識別子の変更を累算結果保持装置１１０２に通知する。
【０１３７】
加算器１１０１から演算結果を受け取った出力データ保持装置１１０４は、当該演算結果を、比較器１１０６から受け取ったワード位置識別子とともに、出力ポートを介して出力する。なお、このとき、出力データ保持装置１１０４は、終了判定装置１１０５から終了通知を受け取っている。
【０１３８】
以上に説明した部分演算処理動作を中間段スイッチおよび最上段スイッチで実行することにより、相互結合ネットワーク装置２００は、自ネットワーク装置に割り振られた範囲内でのワードデータに対して、ワード位置識別子が同一のワードデータを加算処理する部分演算処理を実行する。
【０１３９】
図５に戻り、Ｓ５０３の処理で、各相互結合ネットワーク装置２００は、最上段スイッチ２２０で得られた部分演算処理の最終結果を、各計算ノード１００に配布する。
【０１４０】
最後にＳ５０４の処理で、各計算ノード１００は、各相互結合ネットワーク装置２００から受け取った部分演算結果のデータを、ワード位置識別子によって並べ替え、その結果で得られた固定小数点数を浮動小数点数に変換する。この処理は、最終演算手段が実行する。固定小数点演算としては分割後のビット数×相互結合ネットワーク装置数（＝Ｎ）のビット列を用いた演算結果が得られるため、浮動小数点数総和の演算結果は、演算順序を考慮した場合と同じ結果になる。
【０１４１】
以上に説明したように、第二の実施形態の並列計算機は、複数の計算ノードが保持する浮動小数点数のデータに対しても複数の相互結合ネットワーク装置で分散して処理を実行することができる。そして、各計算ノードには部分演算処理の結果だけが配布される。そのため、浮動小数点数のデータに対しても単一の計算ノードが集中処理を行う場合に比べて高速に処理を実行することができる。また、各計算ノードは、演算制御部内の加算器が扱うことができるデータビット長に多倍長数データを分割して相互結合ネットワーク装置に送信する。そのため、データを扱う加算器やデータを保持するメモリ等のハードウェアを増加する必要がない。
【符号の説明】
【０１４２】
１００    計算ノード
１０１    多倍長数分割手段
１０２    最終演算手段
２００    相互結合ネットワーク装置
２０１    部分演算手段
２０２    演算結果配布手段
２１０    中間段スイッチ
２２０    最上段スイッチ
６０１    クロスバスイッチ
６０２    演算制御部
６０３    演算結果配布部
７０１、１１０１    加算器
７０２、１１０２    累算結果保持装置
７０３、１１０３    入力データ保持装置
７０４、１１０４    出力データ保持装置
７０５、１１０５    終了判定装置
１１０６    比較器
【図１】
2011028421.tif 000003
【図２】
2011028421.tif 000004
【図３】
2011028421.tif 000005
【図４】
2011028421.tif 000006
【図５】
2011028421.tif 000007
【図６Ａ】
2011028421.tif 000008
【図６Ｂ】
2011028421.tif 000009
【図７】
2011028421.tif 000010
【図８】
2011028421.tif 000011
【図９】
2011028421.tif 000012
【図１０】
2011028421.tif 000013
【図１１】
2011028421.tif 000014
【図１２】
2011028421.tif 000015