(57)【要約】演算処理装置は、同じ演算処理を行うｍ個の演算器と、演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、を備える。ｍは４以上の自然数であり、ｎは２以上の自然数である。前記ｍ個の演算器は、前記ｍ個の演算器の演算結果の総データ量を通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、Ｎ分割データ毎に、対応する前記通信器に移動する。各通信器は、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストする。
2020084693.tif 000002
【特許請求の範囲】
【請求項１】
同じ演算処理を行うｍ個の演算器と、  演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、  を備え、ｍは４以上の自然数であり、ｎは２以上の自然数であり、  各演算器は、前記ｍ個の演算器の演算結果の総データ量を前記通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、対応する前記ｎ個の通信器に移動し、  各通信器は、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストすることを特徴とする、演算処理装置。
【請求項２】
各演算器は、    前記同じ演算処理を行う演算機能に関する処理を実行する、第１の演算部及び第１の演算制御部と、    各Ｎ分割データに相当する演算結果を対応する前記ｎ個の通信器に移動する演算機能以外に関する処理を実行する、データ監視部及び第１の通信部とを有し、  各通信器は、    前記所定の演算処理を行う所定の演算機能に関する処理を実行する、第２の演算部、第２の演算制御部、及び第２の通信部を有することを特徴とする、請求項１記載の演算処理装置。
【請求項３】
前記演算機能に関する処理は、    前記第１の演算制御部が、前記ｍ個の演算器の演算結果の総データ量をＮ分割し、    前記第１の演算制御部が、Ｎ分割した演算結果を順時出力するよう前記第１の演算部を制御し、    前記第１の演算制御部が、前記第１の演算部による演算が終了したと判定し、前記第１の演算部が、各通信器から前記所定の演算結果を受信すると前記演算機能に関する処理を終了する、  処理を含み、  前記演算機能以外に関する処理は、    前記データ監視部が、前記ｍ個の演算器の演算結果の総データ量の１／Ｎに相当する演算結果のデータ量が揃ったと判定すると、前記第１の通信部が、揃った演算結果のデータを各通信器に移動し、    前記データ監視部が、前記第１の演算部による演算が終了したと判定すると、前記演算機能以外に関する処理を終了する、  処理を含み、  前記所定の演算機能に関する処理は、    各通信器の前記第２の演算部が、前記第２の通信部が受信した演算結果を用いて前記所定の演算処理を行い、    前記第２の演算制御部が、前記第２の演算部による前記所定の演算処理が終了したと判定すると、前記第２の通信部が、前記所定の演算処理の演算結果のデータを前記ｍ個の演算器にブロードキャストする、  処理を含むことを特徴とする、請求項２記載の演算処理装置。
【請求項４】
ｍ＝４又はｍ＝５かつｎ＝２であり、  第１の通信器が４分割データの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第２の通信器が４分割データの残りの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項１乃至３のいずれか１項記載の演算処理装置。
【請求項５】
ｍ＝４かつｎ＝３であり、  第１の通信器が６分割データの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第２の通信器が６分割データの他の１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第３の通信器が６分割データの残りの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項１乃至３のいずれか１項記載の演算処理装置。
【請求項６】
前記所定の演算処理は、集合演算処理であることを特徴とする、請求項１乃至５のいずれか１項記載の演算処理装置。
【請求項７】
請求項１乃至６のいずれか１項記載の演算処理装置をＬ個備え、Ｌは２以上の自然数であり、  前記Ｌ個の演算処理装置の対応する通信器が通信可能に接続されていることを特徴とする、演算処理システム。
【請求項８】
同じ演算処理を行うｍ個の演算器と、演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、を備え、ｍは４以上の自然数であり、ｎは２以上の自然数である演算処理装置の制御方法であって、  各演算器が、前記ｍ個の演算器の演算結果の総データ量を通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、対応する前記ｎ個の通信器に移動し、  各通信器が、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストすることを特徴とする、演算処理装置の制御方法。
【請求項９】
各演算器の第１の演算部及び第１の演算制御部が、前記同じ演算処理を行う演算機能に関する処理を実行し、  各演算器のデータ監視部及び第１の通信部が、各Ｎ分割データに相当する演算結果を対応する前記ｎ個の通信器に移動する演算機能以外に関する処理を実行し、  各通信器の第２の演算部、第２の演算制御部、及び第２の通信部が、前記所定の演算処理を行う所定の演算機能に関する処理を実行することを特徴とする、請求項８記載の演算処理装置の制御方法。
【請求項１０】
前記演算機能に関する処理は、    前記第１の演算制御部が、前記ｍ個の演算器の演算結果の総データ量をＮ分割し、    前記第１の演算制御部が、Ｎ分割した演算結果を順時出力するよう前記第１の演算部を制御し、    前記第１の演算制御部が、前記第１の演算部による演算が終了したと判定し、前記第１の演算部が、各通信器から前記所定の演算結果を受信すると前記演算機能に関する処理を終了する、  処理を含み、  前記演算機能以外に関する処理は、    前記データ監視部が、前記ｍ個の演算器の演算結果の総データ量の１／Ｎに相当する演算結果のデータ量が揃ったと判定すると、前記第１の通信部が、揃った演算結果のデータを各通信器に移動し、    前記データ監視部が、前記第１の演算部による演算が終了したと判定すると、前記演算機能以外に関する処理を終了する、  処理を含み、  前記所定の演算機能に関する処理は、    各通信器の前記第２の演算部が、前記第２の通信部が受信した演算結果を用いて前記所定の演算処理を行い、    前記第２の演算制御部が、前記第２の演算部による前記所定の演算処理が終了したと判定すると、前記第２の通信部が、前記所定の演算処理の演算結果のデータを前記ｍ個の演算器にブロードキャストする、  処理を含むことを特徴とする、請求項９記載の演算処理装置の制御方法。
【請求項１１】
ｍ＝４又はｍ＝５かつｎ＝２であり、  第１の通信器が４分割データの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第２の通信器が４分割データの残りの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項８乃至１０のいずれか１項記載の演算処理装置の制御方法。
【請求項１２】
ｍ＝４かつｎ＝３であり、  第１の通信器が６分割データの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第２の通信器が６分割データの他の１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、  第３の通信器が６分割データの残りの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項８乃至１０のいずれか１項記載の演算処理装置の制御方法。
【請求項１３】
前記所定の演算処理は、集合演算処理であることを特徴とする、請求項８乃至１２のいずれか１項記載の演算処理装置の制御方法。
【請求項１４】
Ｌ個の演算処理装置の対応する通信器を通信可能に接続し、Ｌは２以上の自然数であり、  請求項８乃至１３のいずれか１項記載の演算処理装置の制御方法を前記Ｌ個の演算処理装置の各々で実行することを特徴とする、演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】  入力データに対する演算処理装置の演算処理を高速化するため、入力データを分割データに分割し、演算処理装置が有する複数の演算器で分割データに対して演算処理を分散して行う方法がある。この場合、演算処理を分散して行わない場合と比較すると、入力データのデータ量が比較的多い場合でも、演算処理の高速化が可能となる。【０００３】  例えば、複数の処理装置を有する大域演算処理装置において、１つの処理装置で演算した結果を特定の処理装置に移動する操作を各処理装置について順次行う手法が提案されている（例えば、特許文献１を参照）。この手法では、最終的に各処理装置に全ての処理装置の演算結果が揃ってから大域演算を行う。【０００４】  また、複数の計算機が演算した結果である全データを転送する転送方法と、全データを分割した分割データを転送する転送方法のうち、演算した全体の処理時間が短くなる方の転送方法を選択する手法が提案されている（例えば、特許文献２を参照）。【０００５】  更に、２ｐ（ｐは２以上の自然数）個の演算処理装置に対して識別番号を振り、奇数番と偶数番の識別番号を振られた演算処理装置間で演算結果を送受信する操作をｐ回繰り返すことで演算を行う手法が提案されている（例えば、特許文献３を参照）。【０００６】  上記の如き各手法では、演算で必要なデータの演算及び移動を順次繰り返すことで、複数の演算器（例えば、特許文献１の複数の処理装置、特許文献２の複数の計算機、特許文献３の複数の演算処理装置に相当）が夫々同じ演算結果を持つようにしている。【０００７】  しかし、データ量が増大すると、演算処理を分散して行っても、データの演算に要する演算時間が長くなり、演算時間の短縮が難しくなる。また、演算処理を分散して行う演算器の個数が増大すると、データの移動に要する移動時間が長くなり、移動時間の短縮が難しくなる。データの演算と移動を繰り返す演算処理に要する時間は、データの演算時間とデータの移動時間とに依存する。このため、データの演算と移動を繰り返す演算処理の場合、特にデータ量の増大や演算器の個数の増大に伴い、データの演算時間及びデータの移動時間の短縮が難しくなるので、データの演算と移動を繰り返す演算処理に要する時間の短縮は難しくなる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平７−２９５９４４号公報
【特許文献２】特開２００１−３２５２３９号公報
【特許文献３】特開２０００−２０５０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】  従来の演算処理装置では、データの演算と移動を繰り返す演算処理を高速化することは難しい。【００１０】  そこで、１つの側面では、データの演算と移動を繰り返す演算処理を高速化することができる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】  １つの案によれば、同じ演算処理を行うｍ個の演算器と、演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、を備え、ｍは４以上の自然数であり、ｎは２以上の自然数であり、各演算器は、前記ｍ個の演算器の演算結果の総データ量を前記通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、対応する前記ｎ個の通信器に移動し、各通信器は、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストする演算処理装置が提供される。
【発明の効果】
【００１２】  一態様によれば、データの演算と移動を繰り返す演算処理を高速化することができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施例における演算処理装置の一例を示すブロック図である。
【図２】演算器のハードウェア構成の一例を示すブロック図である。
【図３】通信器のハードウェア構成の一例を示すブロック図である。
【図４】第１実施例における集合演算を説明するフローチャートである。
【図５】第１実施例における集合演算の流れの一例を説明する模式図である。
【図６】第１実施例における演算処理システムの構成の一例を示す図である。
【図７】第２実施例における集合演算を説明するフローチャートである。
【図８】第２実施例における集合演算の流れの一例を説明する模式図である。
【図９】第３実施例における集合演算を説明するフローチャートである。
【図１０】第３実施例における集合演算の流れの一例を説明する模式図である。
【図１１】第４実施例における演算処理装置の一例を示すブロック図である。
【図１２】第４実施例における演算処理システムの構成の一例を示す図である。
【図１３】第４実施例における集合演算を説明するフローチャートである。
【図１４】第４実施例における集合演算の流れの一例を説明する模式図である。
【図１５】第５実施例における演算処理装置の一例を示すブロック図である。
【図１６】第５実施例における演算処理システムの構成の一例を示す図である。
【図１７】第５実施例における集合演算を説明するフローチャートである。
【図１８】第５実施例における集合演算の流れの一例を説明する模式図である。
【発明を実施するための形態】
【００１４】  開示の演算処理装置及び演算処理装置の制御方法では、複数個の演算器の演算結果の総データ量を複数個の通信器の個数の２倍で分割した各分割データに相当する各演算器の演算結果を、対応する複数個の通信器に移動し、各通信器が対応する分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、複数個の演算器にブロードキャストする。
【００１５】  以下に、開示の演算処理装置及び演算処理装置の制御方法の各実施例を図面と共に説明する。
【実施例】
【００１６】  （第１実施例）  図１は、第１実施例における演算処理装置の一例を示すブロック図である。図１に示す演算処理装置１は、４個の演算器１１−０〜１１−３と、２個の通信器１２−０，１２−１とを有する。各通信器１２−０，１２−１は、４個の演算器１１−０〜１１−３と通信可能に接続されている。この例では、各演算器１１−０〜１１−３は、通信機能を含む同じ構成を有し、同じ演算処理を行う。また、各通信器１２−０，１２−１は、演算機能を含む同じ構成を有し、データの演算と移動を繰り返す、同じ所定の演算処理を行う。説明の便宜上、図１中、太い一点鎖線は、例えば後述する演算結果の奇数番目の分割データの通信路を示し、太い二点鎖線は、例えば後述する演算結果の偶数番目の分割データの通信路を示す。各通信路は、例えば双方向のバスである。演算処理装置１は、例えば単一のモジュール、或いは、半導体チップであっても良い。【００１７】  後述するように、演算器１１−０〜１１−３の演算結果の総データ量を、通信器１２−０，１２−１の個数（２個）の２倍（２×２＝４）で分割する。このように、４分割した各分割データに相当する４個の演算器１１−０〜１１−３の演算結果を、対応する２個の通信器１２−０，１２−１に移動する。各通信器１２−０，１２−１は、各分割データに相当する演算結果に、所定の演算処理を施した演算結果を、４個の演算器１１−０〜１１−３にブロードキャストする。【００１８】  なお、演算器の数は４個に限定されず、通信器の数も２個に限定されない。つまり、演算処理装置は、ｍ個の演算器と、ｍ個の演算器と通信可能に接続されたｎ個の通信器とを備え、ｍは４以上の自然数であり、ｎは２以上の自然数であれば良い。この場合、ｍ個の演算器の演算結果の総データ量を通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する各演算器の演算結果を、対応するｎ個の通信器に移動する。また、各通信器が各Ｎ分割データに相当する演算結果に所定の演算処理を施した演算結果を、各通信器からｍ個の演算器にブロードキャストする。第１実施例は、ｍ＝４でｎ＝２の例である。【００１９】  図２は、演算器のハードウェア構成の一例を示すブロック図である。図２に示す演算器１１は、第１実施例の各演算器１１−０〜１１−３として使用でき、後述する各実施例の各演算器としても使用できる。演算器１１は、演算部１１１、データ保存用メモリ１１２、演算制御部１１３、通信部１１４、及びデータ監視部１１５を有する。演算部１１１は、受信した入力データに対して演算処理を行い、演算結果のデータをデータ保存用メモリ１１２に保存する第１の演算部の一例である。データ保存用メモリ１１２は、受信した入力データ、演算結果のデータ等を記憶する第１の記憶部の一例である。演算制御部１１３は、演算部１１１の演算処理を制御して予め決められた演算処理を行わせる第１の演算制御部の一例である。データ監視部１１５は、データ保存用メモリ１１２に一定量の演算結果のデータが記憶されて一定量の演算結果のデータが揃ったか否かを監視する。一定量の演算結果のデータは、この例の場合、ｍ個の演算器の演算結果の総データ量の１／Ｎに相当する演算結果のデータ量である。一定量の演算���果のデータが揃うと、データ監視部１１５は、演算制御部１１３を介して通信部１１４を制御して、データ保存用メモリ１１２に保存された演算結果のデータを通信器１２に移動する。通信部１４は、第１の通信部の一例である。演算結果のデータの移動方法の詳細については、後述する。【００２０】  演算器１１の演算部１１１、演算制御部１１３、及びデータ監視部１１５の機能は、例えばＧＰＵ（Graphics Processing Unit）、ＣＰＵ（Central Processing Unit）等のプロセッサにより形成しても良い。データ保存用メモリ１１２は、データを保存可能であれば良く、特定の種類や特定の構造の記憶装置に限定されるものではない。【００２１】  図３は、通信器のハードウェア構成の一例を示すブロック図である。図３に示す通信器１２は、第１実施例の各通信器１２−０，１２−１として使用でき、後述する各実施例の各通信器としても使用できる。通信器１２は、演算部１２１、データ保存用メモリ１２２、演算制御部１２３、及び通信部１２４を有する。このように、通信器１２は、演算部１２１を有する、演算部付き通信器である。演算部１２１は、データの演算と移動を繰り返す、所定の演算処理を行う。演算部１２１は、受信した演算結果のデータに対して所定の演算処理を行い、所定の演算結果のデータをデータ保存用メモリ１２２に保存する第２の演算部の一例である。この例では、演算部１２１は、データの演算と移動を繰り返す所定の演算処理の一例である集合演算専用の演算部である。データ保存用メモリ１２２は、受信した演算結果のデータ、所定の演算結果の一例である集合演算結果のデータ等を記憶する第２の記憶部の一例である。演算制御部１２３は、演算部１２１の所定の演算処理の一例である集合演算処理を制御して、予め決められた所定の演算処理の一例である集合演算処理を行わせる第２の演算制御部の一例である。演算制御部１２３は、通信部１２４を制御して、データ保存用メモリ１２２に保存された所定の演算結果の一例である集合演算結果のデータを各演算器１１に移動する。通信部１２４は、第２の通信部の一例である。所定の演算結果の一例である集合演算結果のデータの移動方法の詳細については、後述する。【００２２】  通信器１２の演算部１２１及び演算制御部１２３の機能は、例えばＧＰＵ、ＣＰＵ等のプロセッサにより形成しても良い。通信器１２に用いるプロセッサは、演算器１１に用いるプロセッサと同等の処理能力を有しても、演算器１１に用いるプロセッサとは異なる処理能力を有しても良い。後者の場合、通信器１２に用いるプロセッサの処理能力は、例えば演算器１１に用いるプロセッサの処理能力より低くても良い。データ保存用メモリ１２２は、データを保存可能であれば良く、特定の種類や特定の構造の記憶装置に限定されるものではない。【００２３】  図４は、第１実施例における集合演算を説明するフローチャートである。図４は、第１実施例における演算処理装置の制御方法の一例を示す。図４中、各演算器１１の演算部１１１及び演算制御部１１３が処理ＳＴ１を実行し、各演算器１１のデータ監視部１１５及び通信部１１４が処理ＳＴ２を実行する。また、各通信器１２の演算部１２１、演算制御部１２３、及び通信部１２４が処理ＳＴ１１を実行する。【００２４】  処理ＳＴ１は、ステップＳ１１〜Ｓ１５の、同じ演算処理を行う、演算機能に関する処理を含む。ステップＳ１１では、各演算器１１−０〜１１−３の演算制御部１１３が、１個の演算処理装置１を形成する４個の演算器１１−０〜１１−３と２個の通信器１２−０，１２−１を１つのグループとする。ステップＳ１２では、各演算器１１−０〜１１−３の演算制御部１１３が、演算器１１−０〜１１−３の演算結果のデータの総データ量、即ち、演算結果の総量を、通信器１２−０，１２−１の個数ｎの２倍（この例では、分割数Ｎ＝２×２＝４）で分割する。演算結果の４分割データは、奇数番目の分割データと、偶数番目の分割データとを含む。各演算器１１−０〜１１−３が行う演算処理は、同じであり、かつ、予め決められているので、演算器１１−０〜１１−３の演算結果の総量も、予め求めておくことができる。【００２５】  ステップＳ１３では、各演算器１１−０〜１１−３の演算制御部１１３が、演算結果の奇数番目の分割データと偶数番目の分割データを順時出力するよう演算部１１１を制御する。各演算器１１−０〜１１−３の演算部１１１は、演算結果の奇数番目の分割データと偶数番目の分割データを、データ保存用メモリ１１２に保存する。ステップＳ１３の後、処理は並行してステップＳ１４と、処理ＳＴ２のステップＳ２１とへ進む。ステップＳ１４では、各演算器１１−０〜１１−３の演算制御部１１３が、演算部１１１による分割数Ｎ（＝４）分の演算が終了したか否かを判定し、判定結果がＹＥＳであると処理はステップＳ１５へ進む。ステップＳ１５では、各演算器１１−０〜１１−３の演算部１１１が、各通信器１２−０，１２−１から集合演算結果を受信したか否かを判定し、判定結果がＹＥＳであると各演算器１１−０〜１１−３の処理を終了する。【００２６】  一方、処理ＳＴ２は、ステップＳ２１〜Ｓ２４の、各４分割データに相当する演算結果を対応する２個の通信器に移動する、演算機能以外に関する処理を含む。ステップＳ２１では、各演算器１１−０〜１１−３のデータ監視部１１５が、データ保存用メモリ１１２に例えば演算結果の奇数番目の分割データ又は偶数番目の分割データが揃ったか否かの監視を開始する。ステップＳ２２では、各演算器１１−０〜１１−３のデータ監視部１１５が、データ保存用メモリ１１２に例えば演算結果の奇数番目の分割データ又は偶数番目の分割データが揃ったか否かを判定する。ステップＳ２２の判定結果がＹＥＳであると、処理はステップＳ２３へ進む。ステップＳ２３では、各演算器１１−０〜１１−３の通信部１１４が、揃った演算結果の奇数番目の分割データ又は偶数番目の分割データを同じグループ内の通信器１２−０，１２−１のうち一方に移動する。具体的には、各演算器１１−０〜１１−３の通信部１１４が、演算結果の奇数番目の分割データを通信器１２−０に移動し、演算結果の偶数番目の分割データを通信器１２−１に移動する。ステップＳ２３の後、処理は並行してステップＳ２４と、処理ＳＴ１１のステップＳ３１とへ進む。ステップＳ２４では、各演算器１１−０〜１１−３のデータ監視部１１５が、演算部１１１による分割数Ｎ（＝４）分の演算が終了したか否���を演算制御部１１３を介して判定し、判定結果がＹＥＳであるとデータ監視部１１５の処理を終了する。【００２７】  処理ＳＴ１１は、ステップＳ３１〜Ｓ３３の、所定の演算処理の一例である集合演算を行う、集合演算機能に関する処理を含む。ステップＳ３１では、各通信器１２−０，１２−１の演算部１２１が、通信部１２４が受信した演算結果の分割データを用いて集合演算を行う。ステップＳ３２では、各通信器１２−０，１２−１の演算制御部１２３が、演算部１２１による集合演算が終了したか否かを判定し、判定結果がＹＥＳであると処理はステップＳ３３へ進む。具体的には、通信器１２−０の演算制御部１２３が、演算部１２１において４分割された演算結果のうち奇数番目の２つの分割データの夫々に対して集合演算処理を計２回実行したか否かを判定する。また、通信器１２−１の演算制御部１２３が、演算部１２１において４分割された演算結果のうち偶数番目の２つの分割データの夫々に対して集合演算処理を計２回実行したか否かを判定する。つまり、各通信器１２−０，１２−１の演算制御部１２３が、演算部１２１において集合演算処理を計２回実行したか否かを判定する。ステップＳ３３では、各通信器１２−０，１２−１の通信部１２４が、集合演算結果のデータを同じグループ内の演算器１１−０〜１１−３に移動する。具体的には、通信器１２−０の場合、通信部１２４が、演算結果の奇数番目の分割データに対する集合演算結果のデータを同じグループ内の演算器１１−０〜１１−３にブロードキャストする。また、通信器１２−１の場合、通信部１２４が、演算結果の偶数番目の分割データに対する集合演算結果のデータを同じグループ内の演算器１１−０〜１１−３にブロードキャストする。集合演算結果のデータを受信した各演算器１１−０〜１１−３では、処理ＳＴ１のステップＳ２５の判定結果がＹＥＳになる。ステップＳ３３の後、各通信器１２−０，１２−１の処理を終了する。【００２８】  図５は、第１実施例における集合演算の流れの一例を説明する模式図である。演算処理装置１の入力データdata#0(Odd#0, Even#0, Odd#1, Even#1), data#1(Odd#0, Even#0, Odd#1, Even#1), ...は、各演算器１１−０〜１１−３に入力されて同じ演算処理を施される。演算器１１−０〜１１−３の演算結果の総量は、通信器１２−０，１２−１の個数ｎ×２（この例では、Ｎ＝２×２＝４）で分割して各演算器１１−０〜１１−３から順次出力する。各入力データdata#0, data#1, ...に対する演算結果の４分割データは、第１番目と第３番目を含む奇数番目の分割データ（以下、「奇数の分割データ」とも言う）と、第２番目と第４番目を含む偶数番目の分割データ（以下、「偶数の分割データ」とも言う）とを含む。各演算器１１−０〜１１−３の各入力データdata#0, data#1, ...に対する演算結果の奇数の分割データであるOdd演算結果は、通信器１２−０に送信する。通信器１２−０は、各演算器１１−０〜１１−３から移動した各Odd演算結果に集合演算処理を施し、第１番目の分割データに対するOdd集合演算結果#0と第３番目の分割データに対する Odd集合演算結果#1を順次求める。【００２９】  同様に、各演算器１１−０〜１１−３の各入力データdata#0, data#1, ...に対する演算結果の偶数の分割データであるEven演算結果は、通信器１２−１に送信する。通信器１２−１は、各演算器１１−０〜１１−３から移動した各Even演算結果に集合演算処理を施し、第２番目の分割データに対するEven集合演算結果#0と第４番目の分割データに対するEven集合演算結果#1を順次求める。【００３０】  通信器１２−０は、求めたOdd集合演算結果#0, Odd集合演算結果#1を各演算器１１−０〜１１−３にブロードキャストする。一方、通信器１２−１は、求めたEven集合演算結果#0, Even集合演算結果#1を各演算器１１−０〜１１−３にブロードキャストする。これにより、各演算器１１−０〜１１−３は、同じ集合演算結果である、Odd集合演算結果#0, Even集合演算結果#0, Odd集合演算結果#1, Even集合演算結果#1を受信して保存する。このように、２個の通信器１２−０，１２−１を用いて集合演算結果を２つに分けて各演算器１１−０〜１１−３にブロードキャストするので、２つに分けない場合と比較すると、集合演算結果の各演算器１１−０〜１１−３への移動時間を短縮できる。また、各演算器１１−０〜１１−３が演算処理中であっても、演算処理の終わった演算結果の移動を優先することができる。この結果、データの移動時間が少ない演算処理が可能となり、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化することができる。【００３１】  なお、この例では、演算結果の４分割データのうち、奇数の分割データを通信器１２−０に移動し、偶数の分割データを通信器１２−１に移動するが、移動する分割データは集合演算等に応じて選定可能である。例えば、演算結果の４分割データのうち、半分に相当する２つの分割データを通信器１２−０に順次移動し、残りの半分に相当する２つの分割データを通信器１２−１に順次移動しても良い。【００３２】  本実施例によれば、データの移動時間を少なくすることができる。以下に、演算処理装置が４個の演算器を有する場合について、例えば上記特許文献２の如き従来手法と本実施例の手法とを比較する。【００３３】  先ず、データの移動時間を短くするために、演算が終わったデータから移動開始する場合を例に説明する。【００３４】  従来手法でのデータの移動が行われるのは、演算結果の総データ量の１／２が揃った時、データが全て揃った時、１回目の演算が終わった後の計３回である。ただし、演算器が演算中のデータの移動は隠蔽できるので、隠蔽できないデータの移動時間として見えてくるデータの移動は２回である。データの移動量は、どの回のデータ移動も演算結果の総データ量の１／２である。【００３５】  これに対し、本実施例の手法では、データの移動時間が隠蔽できないのはデータが全て揃った時、２回目の演算が終わった後の２回で、データの移動が行われるのは計３回である。データの移動量は、どの回のデータ移動も演算結果の総データ量の１／４である。【００３６】  従って、データの移動時間で考えると、従来手法では「移動回数（２回）」×「データの移動量（演算結果の総データ量の１／２）」が任意単位で１となる。一方、本実施例の手法では「移動回数（３回）」×「データの移動量（演算結果の総データ量の１／４）」が任意単位で３／４となり、１となる従来手法と比較するとデータの移動時間が２５％改善できる。【００３７���  次に、隠蔽できないデータの演算時間もあるので、この演算時間も考慮する場合を例に説明する。【００３８】  従来手法での演算回数は２回であり、演算量は総データ量で、データ数は２である。【００３９】  これに対し、本実施例の手法での演算回数は１回で、演算量は総データ量の１／４で、データ数は４である。このように、総データ量の１／４のデータが集まるとデータを移動するので、総データ量分の演算が完了するのを待たずにデータを移動することができる。【００４０】  従って、データの演算時間で考えると、従来手法では「演算回数（２回）×「演算量（１）」×「データ数（２）」が任意単位で４となる。一方、本実施例の手法では「演算回数（１回）」×「演算量（１／４）」×「データ数（４）」が任意単位で１となり、４となる従来手法と比較するとデータの演算時間が７５％改善できる。【００４１】  集合演算処理に必要な時間は、データの移動時間と演算時間なので、本実施例の手法によれば、従来手法と比較すると集合演算処理に必要な時間を大幅に短縮できる。【００４２】  図６は、第１実施例における演算処理システムの構成の一例を示す図である。図６に示す演算処理システム１００は、複数の演算処理装置１−０〜１−３を有する。各演算処理装置１−０〜１−３は、図１に示す演算処理装置１のように４個の演算器１１−０〜１１−３と、２個の通信器１２−０，１２−１とを有する。説明の便宜上、図６中、太い一点鎖線は、例えば演算結果の奇数の分割データの通信路を示し、太い二点鎖線は、例えば演算結果の偶数の分割データの通信路を示す。各通信路は、例えば双方向のバスである。このように、演算処理システム１００は、４個の演算処理装置１−０〜１−３の対応する通信器が通信路で接続されたネットワーク構成を有する。演算処理システム１００は、例えば単一のモジュール、或いは、半導体チップであっても良い。【００４３】  図６において、演算処理装置１−０の通信器１２−０は、演算処理装置１−１の通信器１２−０に接続されており、演算処理装置１−１の通信器１２−０は、演算処理装置１−３の通信器１２−０に接続されている。演算処理装置１−３の通信器１２−０は、演算処理装置１−２の通信器１２−０に接続されており、演算処理装置１−２の通信器１２−０は、演算処理装置１−０の通信器１２−０に接続されている。一方、演算処理装置１−０の通信器１２−１は、演算処理装置１−１の通信器１２−１に接続されており、演算処理装置１−１の通信器１２−１は、演算処理装置１−３の通信器１２−１に接続されている。演算処理装置１−３の通信器１２−１は、演算処理装置１−２の通信器１２−１に接続されており、演算処理装置１−２の通信器１２−１は、演算処理装置１−０の通信器１２−１に接続されている。【００４４】  例えば、演算処理が４個より多い個数の演算器を必要とする場合等には、演算処理装置１内の演算器の個数を増やす代わりに、基本単位である１つのグループを形成する演算処理装置１を、複数個接続したネットワーク構成を用いても良い。図６に示すネットワーク構成の例では、４個のグループが接続されている。このように、複数のグループを接続することで、５個以上の演算器を有する���一の演算処理装置１が行う演算処理と同等の演算処理を、同じ構成を有する複数のグループの組み合わせにより行うことができる。【００４５】  本実施例によれば、複数のグループを接続することで、大規模演算処理システム（ネットワークシステム）を形成可能である。【００４６】  （第２実施例）  第２実施例では、２つのグループＧ０，Ｇ１が接続されている。【００４７】  図７は、第２実施例における集合演算を説明するフローチャートである。図７は、第２実施例における演算処理装置の制御方法の一例の一部を示す。図７中、図４と同一ステップには同一符号を付し、その説明は省略する。第２実施例では、上記第１実施例に対して、グループＧ０，Ｇ１間の通信が増えるため、図４の処理のうち、通信器１２の処理ＳＴ１１が処理ＳＴ１１Ａに変更されている。【００４８】  図７において、処理ＳＴ１１Ａは、ステップＳ３１，Ｓ３２，Ｓ３３Ａ−１，Ｓ３３Ａ−２，Ｓ３３の集合演算機能に関する処理を含む。ステップＳ３３Ａ−１では、各グループＧ０，Ｇ１内の各通信器１２−０，１２−１の通信部１２４が、グループＧ０，Ｇ１間の通信を行う。具体的には、グループＧ０内の通信器１２−０とグループＧ１内の通信器１２−０との間と、グループＧ０内の通信器１２−１とグループＧ１内の通信器１２−１との間で通信を行う。これにより、Odd集合演算結果は、各グループＧ０，Ｇ１の通信器１２−０側に集まり、Even集合演算結果は、各グループＧ０，Ｇ１の通信器１２−１側に集まるように集合演算が行われる。ステップＳ３３Ａ−２では、各グループＧ０，Ｇ１内の各通信器１２−０，１２−１の演算制御部１２３が、演算部１２１による集合演算が終了したか否かを判定し、判定結果がＹＥＳであると処理はステップＳ３３へ進む。ステップＳ３３の後、各グループＧ０，Ｇ１内の各通信器１２−０，１２−１の処理を終了する。【００４９】  図８は、第２実施例における集合演算の流れの一例を説明する模式図である。図８中、図５と同一部分には同一符号を付し、その説明は省略する。この例では、図５に示す１個の演算処理装置１がグループＧ０に属し、他の１個の演算処理装置１がグループＧ１に属す。グループＧ０の演算処理装置１の各通信器１２−０，１２−１の演算結果と、グループＧ１の演算処理装置１の各通信器１２−０，１２−１の演算結果とを、グループＧ０，Ｇ１間で送受信する。これにより、グループＧ０の演算処理装置１の通信器１２−０は、自己の演算結果とグループＧ１の演算処理装置１の通信器１２−０の演算結果とを用いて、集合演算処理を行う。同様に、グループＧ０の演算処理装置１の通信器１２−１は、自己の演算結果とグループＧ１の演算処理装置１の通信器１２−１の演算結果とを用いて、集合演算処理を行う。また、グループＧ１の演算処理装置１の通信器１２−０は、自己の演算結果とグループＧ０の演算処理装置１の通信器１２−０の演算結果とを用いて、集合演算処理を行う。更に、グループＧ１の演算処理装置１の通信器１２−１は、自己の演算結果とグループＧ０の演算処理装置１の通信器１２−１の演算結果とを用いて、集合演算処理を行う。グループＧ０の各通信器１２−０，１２−１の集合演算処理の結果は、同じグループＧ０の４個の演算器１１−０〜１１−３にブロードキャストする。同様に、グループＧ１の各通信器１２−０，１２−１の集合演算処理の結果は、同じグループＧ１の４個の演算器１１−０〜１１−３にブロードキャストする。【００５０】  本実施例によれば、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化できると共に、複数のグループを接続することで、大規模演算処理システム（ネットワークシステム）を形成可能であり、上記第１実施例と同様の効果を得ることができる。【００５１】  （第３実施例）  第３実施例では、２つのグループＧ０，Ｇ１が接続されている。【００５２】  第３実施例では、第２実施例のグループ間の通信を、第１実施例の通信器間の通信と同様に行う。例えば、各グループ内の一方の通信器１２の演算部１２１に余力がある場合には、当該通信器１２がグループ間の通信用通信部１２４を有するかの如く処理を行う。【００５３】  図９は、第３実施例における集合演算を説明するフローチャートである。図９は、第３実施例における演算処理装置の制御方法の一例の一部を示す。図９中、図４と同一ステップには同一符号を付し、その説明は省略する。第３実施例では、上記第１実施例に対して、グループＧ０，Ｇ１間の通信が増えるため、図４の処理のうち、通信器１２の処理ＳＴ１１が処理ＳＴ１１Ｂに変更されている。【００５４】  図９において、処理ＳＴ１１Ｂは、ステップＳ３１，Ｓ３２，Ｓ３３Ｂ−１，Ｓ３３Ｂ−２，Ｓ３３の集合演算機能に関する処理を含む。ステップＳ３３Ｂ−１では、各グループＧ０，Ｇ１の通信器１２−０，１２−１の通信部１２４が、グループＧ０，Ｇ１間の通信を行う。具体的には、グループＧ０内の通信器１２−０と、グループＧ０，Ｇ１内の通信器１２−１との間で通信を行う。また、グループＧ１内の通信器１２−０と、グループＧ０，Ｇ１内の通信器１２−１との間で通信を行う。更に、グループＧ０内の通信器１２−１とグループＧ１内の通信器１２−１との間で通信を行う。これにより、グループＧ０，Ｇ１間で求めたOdd集合演算結果，Even集合演算結果は、グループＧ０，Ｇ１の余力のある方の通信器１２−１側に集まるように集合演算が行われる。ステップＳ３３Ｂ−２では、演算制御部１２３が、演算部１２１による集合演算が終了したか否かを判定し、判定結果がＹＥＳであると処理はステップＳ３３へ進む。ステップＳ３３の後、通信器１２の処理を終了する。【００５５】  図１０は、第３実施例における集合演算の流れの一例を説明する模式図である。図１０中、図５と同一部分には同一符号を付し、その説明は省略する。この例では、図５に示す１個の演算処理装置１がグループＧ０に属し、他の１個の演算処理装置１がグループＧ１に属す。【００５６】  グループＧ０内の通信器１２−０が求めたOdd集合演算結果#0，Odd集合演算結果#1は、グループＧ０，Ｇ１内の通信器１２−１に送信する。グループＧ０内の通信器１２−１が求めたEven集合演算結果#0，Even集合演算結果#1は、グループＧ１内の通信器１２−１に送信する。グループＧ１内の通信器１２−０が求めたOdd集合演算結果#0，Odd集合演算結果#1は、グループＧ０，Ｇ１内の通信器１２−１に送信する。グループＧ１内の通信器１２−��が求めたEven集合演算結果#0，Even集合演算結果#1は、グループＧ０内の通信器１２−１に送信する。これにより、グループＧ０，Ｇ１間で求めたOdd集合演算結果，Even集合演算結果は、グループＧ０，Ｇ１の通信器１２−１側に集まるように集合演算が行われ、グループＧ０，Ｇ１の通信器１２−０に送信する。グループＧ０の各通信器１２−０，１２−１の集合演算処理の結果は、同じグループＧ０の４個の演算器１１−０〜１１−３にブロードキャストする。同様に、グループＧ１の各通信器１２−０，１２−１の集合演算処理の結果は、同じグループＧ１の４個の演算器１１−０〜１１−３にブロードキャストする。【００５７】  本実施例によれば、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化できると共に、複数のグループを接続することで、大規模演算処理システム（ネットワークシステム）を形成可能であり、上記第１実施例と同様の効果を得ることができる。【００５８】  （第４実施例）  第４実施例では、演算処理装置が４個の演算器と、３個の通信器を有する。本実施例では、通信器の個数が上記第１実施例の場合と異なるため、演算結果の分割数が上記第１実施例の場合と異なる。このため、データの移動方法が上記第１実施例とは異なる。第４実施例は、ｍ＝４でｎ＝３の例である。【００５９】  図１１は、第４実施例における演算処理装置の一例を示すブロック図である。図１１中、図１と同一部分には同一符号を付し、その説明は省略する。図１１に示す演算処理装置１Ａは、４個の演算器１１−０〜１１−３と、３個の通信器１２−０，１２−１，１２−２とを有する。各通信器１２−０，１２−１，１２−２は、４個の演算器１１−０〜１１−３と通信可能に接続されている。説明の便宜上、図１１中、太い一点鎖線は、演算結果の６分割データの１／３に相当するデータの通信路を示し、太い二点鎖線は、演算結果の６分割データの他の１／３に相当するデータの通信路をす。また、太い破線は、演算結果の６分割データの残りの１／３に相当するデータの通信路を示す。各通信路は、例えば双方向のバスである。演算処理装置１Ａは、例えば単一のモジュール、或いは、半導体チップであっても良い。【００６０】  図１２は、第４実施例における演算処理システムの構成の一例を示す図である。演算処理システム１００Ａは、例えば単一のモジュール、或いは、半導体チップであっても良い。【００６１】  図１２において、演算処理装置１Ａ−０の通信器１２−０は、演算処理装置１Ａ−１の通信器１２−０に接続されており、演算処理装置１Ａ−１の通信器１２−０は、演算処理装置１Ａ−３の通信器１２−０に接続されている。演算処理装置１Ａ−３の通信器１２−０は、演算処理装置１Ａ−２の通信器１２−０に接続されており、演算処理装置１Ａ−２の通信器１２−０は、演算処理装置１Ａ−０の通信器１２−０に接続されている。一方、演算処理装置１Ａ−０の通信器１２−１は、演算処理装置１Ａ−１の通信器１２−１に接続されており、演算処理装置１Ａ−１の通信器１２−１は、演算処理装置１Ａ−３の通信器１２−１に接続されている。演算処理装置１Ａ−３の通信器１２−１は、演算処理装置１Ａ−２の通信器１２−１に接続されており、演算処���装置１Ａ−２の通信器１２−１は、演算処理装置１Ａ−０の通信器１２−１に接続されている。更に、演算処理装置１Ａ−０の通信器１２−２は、演算処理装置１Ａ−１の通信器１２−２に接続されており、演算処理装置１Ａ−１の通信器１２−２は、演算処理装置１Ａ−３の通信器１２−２に接続されている。演算処理装置１Ａ−３の通信器１２−２は、演算処理装置１Ａ−２の通信器１２−２に接続されており、演算処理装置１Ａ−２の通信器１２−２は、演算処理装置１Ａ−０の通信器１２−２に接続されている。【００６２】  図１３は、第４実施例における集合演算を説明するフローチャートである。図１３は、第４実施例における演算処理装置の制御方法の一例を示す。図１３中、図４と同一ステップには同一符号を付し、その説明は省略する。第４実施例では、上記第１実施例に対して、演算処理装置１Ａが通信器１２−２を更に有するため、図４の処理のうち、各演算器１１の処理ＳＴ１，ＳＴ２が処理ＳＴ１Ｃ，ＳＴ２Ｃに変更されている。また、各通信器１２の処理ＳＴ１１が処理ＳＴ１１Ｃに変更されている。【００６３】  図１３に示す処理ＳＴ１Ｃにおいて、ステップＳ１１Ｃでは、演算処理装置１Ａの演算制御部１１３が、１個の演算処理装置１Ａを形成する４個の演算器１１−０〜１１−３と３個の通信器１２−０〜１２−２を１つのグループとする。従って、ステップＳ１２では、演算処理装置１Ａの演算制御部１１３が、演算器１１−０〜１１−３の演算結果の総量を、通信器１２−０〜１２−２の個数ｎの２倍（この例では、分割数Ｎ＝３×２＝６）で分割する。この例では、６分割した演算結果は、便宜上、上の演算結果、中の演算結果、及び下の演算結果を含むものとする。この例では、上の演算結果のデータは、例えば６分割データの第１及び第４番目のデータに相当する。また、中の演算結果のデータは、例えば６分割データの第２及び第５番目のデータに相当する。更に、下の演算結果のデータは、例えば６分割データの第３及び第６番目のデータに相当する。【００６４】  また、図１３に示す処理ＳＴ２Ｃにおいて、ステップＳ２１Ｃでは、演算処理装置１Ａのデータ監視部１１５が、データ保存用メモリ１１２に上、中、又は下の演算結果のデータが揃ったか否かの監視を開始する。ステップＳ２３Ｃでは、演算処理装置１Ａの通信部１１４が、揃った演算結果のデータを同じグループ内の通信器１２−０〜１２−２に移動する。具体的には、演算処理装置１Ａの通信部１１４が、上の演算結果のデータを通信器１２−０に移動し、中の演算結果のデータを通信器１２−１に移動し、下の演算結果のデータを通信器１２−２に移動する。【００６５】  更に、図１３に示す処理ＳＴ１１Ｃにおいて、ステップＳ３３Ｃでは、各通信器１２−０〜１２−２の通信部１２４が、集合演算結果のデータを同じグループ内の演算器１１−０〜１１−３に移動する。具体的には、通信器１２−０の場合、通信部１２４が、上の演算結果のデータを同じグループ内の演算器１１−０〜１１−３にブロードキャストする。通信器１２−１の場合、通信部１２４が、中の演算結果のデータを同じグループ内の演算器１１−０〜１１−３にブロードキャストする。また、通信器１２−２の場合、通信部１２４が、下の演算結果のデータを同じグループ内の演算器１１−０〜１１−３にブロードキャストする。【００６６】  図１４は、第４実施例における集合演算の流れの一例を説明する模式図である。演算処理装置１Ａの入力データdata#0(上#0, 中#0, 下#0, 上#1, 中#1, 下#1), data#1(上#0, 中#0, 下#0, 上#1, 中#1, 下#1), ...は、各演算器１１−０〜１１−３に入力されて同じ演算処理を施される。演算器１１−０〜１１−３の演算結果の総量は、通信器１２−０〜１２−２の個数ｎ×２（この例では、Ｎ＝３×２＝６）で分割して各演算器１１−０〜１１−３から順次出力する。各入力データdata#0, data#1, ...に対する演算結果の６分割データは、この例では便宜上、上の分割データ上#0, 上#1と、中の分割データ中#0, 中#1と、下の分割データ下#0, 下#1とを含む。各演算器１１−０〜１１−３の各入力データdata#0, data#1, ...に対する演算結果中、上の分割データ上#0, 上#1の演算結果である「上の演算結果」は、通信器１２−０に送信する。各演算器１１−０〜１１−３の各入力データdata#0, data#1, ...に対する演算結果中、中の分割データ中#0, 中#1の演算結果である「中の演算結果」は、通信器１２−１に送信する。各演算器１１−０〜１１−３の各入力データdata#0, data#1, ...に対する演算結果中、下の分割データ下#0, 下#1の演算結果である「下の演算結果」は、通信器１２−２に送信する。【００６７】  通信器１２−０は、上の演算結果に集合演算処理を施し、上の分割データ上#0, 上#1の演算結果に対する上集合演算結果#0, 上集合演算結果#1を順次求める。通信器１２−１は、中の演算結果に集合演算処理を施し、中の分割データ中#0, 中#1の演算結果に対する中集合演算結果#0, 中集合演算結果#1を順次求める。また、通信器１２−２は、下の演算結果に集合演算処理を施し、下の分割データ下#0, 下#1の演算結果に対する下集合演算結果#0, 下集合演算結果#1を順次求める。【００６８】  通信器１２−０は、求めた上集合演算結果#0, 上集合演算結果#1を各演算器１１−０〜１１−３にブロードキャストする。通信器１２−１は、求めた中集合演算結果#0, 中集合演算結果#1を各演算器１１−０〜１１−３にブロードキャストする。通信器１２−２は、求めた下集合演算結果#0, 下集合演算結果#1を各演算器１１−０〜１１−３にブロードキャストする。これにより、各演算器１１−０〜１１−３は、同じ集合演算結果である、上集合演算結果#0, 中集合演算結果#0, 下集合演算結果#0, 上集合演算結果#1, 中集合演算結果#1, 下集合演算結果#1を受信して保存する。このように、３個の通信器１２−０〜１２−２を用いて集合演算結果を３つに分けて各演算器１１−０〜１１−３にブロードキャストするので、３つに分けない場合と比較すると、集合演算結果の各演算器１１−０〜１１−３への移動時間を短縮できる。また、各演算器１１−０〜１１−３が演算処理中であっても、演算処理の終わった演算結果の移動を優先することができる。この結果、データの移動時間が少ない集合演算処理が可能となり、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化することができる。【００６９】  なお、この例では、演算結果の６分割データのうち、上の分割データを通信器１２−０に移動し、中の分割データを通信器１２−１に移動し、下の分割データを通信器１２−２に移動するが、移動する分割データは集合演算等に応じて選定可能である。例えば、演算結果の６分割データのうち、１／３に相当する２つの分割データを通信器１２−０に順次移動し、他の１／３に相当する２つの分割データを通信器１２−１に順次移動しても良い。この場合、残りの１／３に相当する２つの分割データを通信器１２−２に順次移動すれば良い。【００７０】  本実施例によれば、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化できると共に、複数のグループを接続することで、大規模演算処理システム（ネットワークシステム）を形成可能であり、上記第１実施例と同様の効果を得ることができる。本実施例は、演算結果の分割数を増やした方が集合演算処理を高速化できる場合等に好適である。【００７１】  （第５実施例）  第５実施例では、演算処理装置が５個の演算器と、２個の通信器を有する。本実施例では、演算処理装置が有する演算器の個数が上記第１実施例の場合と異なるが、上記第１実施例と略同様にして集合演算を行うことができる。第５実施例は、ｍ＝５でｎ＝２の例である。【００７２】  図１５は、第５実施例における演算処理装置の一例を示すブロック図である。図１５中、図１と同一部分には同一符号を付し、その説明は省略する。図１５に示す演算処理装置１Ｂは、５個の演算器１１−０〜１１−４と、２個の通信器１２−０，１２−１とを有する。各通信器１２−０，１２−１は、５個の演算器１１−０〜１１−４と通信可能に接続されている。演算処理装置１Ｂは、例えば単一のモジュール、或いは、半導体チップであっても良い。【００７３】  図１６は、第５実施例における演算処理システムの構成の一例を示す図である。演算処理システム１００Ｂは、例えば単一のモジュール、或いは、半導体チップであっても良い。【００７４】  図１６において、演算処理装置１Ｂ−０の通信器１２−０は、演算処理装置１Ｂ−１の通信器１２−０に接続されており、演算処理装置１Ｂ−１の通信器１２−０は、演算処理装置１Ｂ−３の通信器１２−０に接続されている。演算処理装置１Ｂ−３の通信器１２−０は、演算処理装置１Ｂ−２の通信器１２−０に接続されており、演算処理装置１Ｂ−２の通信器１２−０は、演算処理装置１Ｂ−０の通信器１２−０に接続されている。一方、演算処理装置１Ｂ−０の通信器１２−１は、演算処理装置１Ｂ−１の通信器１２−１に接続されており、演算処理装置１Ｂ−１の通信器１２−１は、演算処理装置１Ｂ−３の通信器１２−１に接続されている。演算処理装置１Ｂ−３の通信器１２−１は、演算処理装置１Ｂ−２の通信器１２−１に接続されており、演算処理装置１Ｂ−２の通信器１２−１は、演算処理装置１Ｂ−０の通信器１２−１に接続されている。【００７５】  図１７は、第５実施例における集合演算を説明するフローチャートである。図１７は、第５実施例における演算処理装置の制御方法の一例を示す。図１７中、図４と同一ステップには同一符号を付し、その説明は省略する。第５実施例では、上記第１実施例に対して、演算処理装置１Ｂが演算器１１−４を更に有するため、図４の処理のうち、各演算器１１の処理ＳＴ１が処理ＳＴ１Ｄに変更されている。【００７６】  ��１７に示す処理ＳＴ１Ｄにおいて、ステップＳ１１Ｄでは、演算処理装置１Ｂの演算制御部１１３が、１個の演算処理装置１Ｂを形成する５個の演算器１１−０〜１１−４と２個の通信器１２−０，１２−１を１つのグループとする。従って、ステップＳ１２では、演算処理装置１Ｂの演算制御部１１３が、演算器１１−０〜１１−４の演算結果の総量を、通信器１２の個数ｎの２倍（この例では、Ｎ＝２×２＝４）で分割する。演算結果の４分割データは、奇数の分割データと、偶数の分割データとを含む。【００７７】  図１８は、第５実施例における集合演算の流れの一例を説明する模式図である。演算処理装置１Ｂの入力データdata#0(Odd#0, Even#0, Odd#1, Even#1), data#1(Odd#0, Even#0, Odd#1, Even#1), ...は、各演算器１１−０〜１１−４に入力されて同じ演算処理を施される。演算器１１−０〜１１−４の演算結果の総量は、通信器１２−０，１２−１の個数ｎ×２（この例では、Ｎ＝２×２＝４）で分割して各演算器１１−０〜１１−４から順次出力される。各入力データdata#0, data#1, ...に対する演算結果の４分割データは、奇数の分割データと、偶数の分割データとを含む。各演算器１１−０〜１１−４の各入力データdata#0, data#1, ...に対する演算結果の奇数の分割データであるOdd演算結果は、通信器１２−０に送信する。通信器１２−０は、Odd演算結果に集合演算処理を施し、Odd集合演算結果#0, Odd集合演算結果#1を順次求める。【００７８】  同様に、各演算器１１−０〜１１−４の各入力データdata#0, data#1, ...に対する演算結果の偶数の分割データであるEven演算結果は、通信器１２−１に送信する。通信器１２−１は、Even演算結果に集合演算処理を施し、Even集合演算結果#0, Even集合演算結果#1を順次求める。【００７９】  通信器１２−０は、求めたOdd集合演算結果#0, Odd集合演算結果#1を各演算器１１−０〜１１−４にブロードキャストする。一方、通信器１２−１は、求めたEven集合演算結果#0, Even集合演算結果#1を各演算器１１−０〜１１−４にブロードキャストする。これにより、各演算器１１−０〜１１−４は、同じ集合演算結果である、Odd集合演算結果#0, Even集合演算結果#0, Odd集合演算結果#1, Even集合演算結果#1を受信して保存する。このように、２個の通信器１２−０，１２−１を用いて集合演算結果を２つに分けて各演算器１１−０〜１１−４にブロードキャストするので、２つに分けない場合と比較すると、集合演算結果の各演算器１１−０〜１１−４への移動時間を短縮できる。また、各演算器１１−０〜１１−４が演算処理中であっても、演算処理の終わった演算結果の移動を優先することができる。この結果、データの移動時間が少ない集合演算処理が可能となり、データの演算と移動を繰り返す集合演算処理を含む演算処理を高速化することができる。【００８０】  なお、この例では、演算結果の４分割データのうち、奇数の分割データを通信器１２−０に移動し、偶数の分割データを通信器１２−１に移動するが、移動する分割データは集合演算等に応じて選定可能である。例えば、演算結果の４分割データのうち、半分に相当する２つの分割データを通信器１２−０に順次移動し、残りの半分に相当する２つの分割データを通信器１２−１に順次移動しても良い。【００８１】  本実施例によれば、データの演算��移動を繰り返す集合演算処理を含む演算処理を高速化できると共に、複数のグループを接続することで、大規模演算処理システム（ネットワークシステム）を形成可能であり、上記第１実施例と同様の効果を得ることができる。本実施例は、演算処理装置内の演算器の個数を増やした方が全体としての演算時間を短縮できる場合等に好適である。【００８２】  上記の各実施例によれば、データの演算と移動を繰り返す演算処理におけるデータの演算時間及び移動時間を短縮できるので、演算処理に要する時間の短縮が可能となる。つまり、上記の各実施例によれば、データ量が増大したり、演算器の個数が増大しても、データの演算と移動を繰り返す演算処理を高速化することができる。【００８３】  なお、演算処理装置内の演算器１１の個数ｍは４個以上（即ち、ｍは４以上の自然数）であれば、特に限定されない。また、演算処理装置内の通信器１２の個数ｎは、２個以上（即ち、ｎは２以上の自然数）であれば、特に限定されない。更に、演算処理装置のグループの個数Ｌは、２個以上（即ち、Ｌは２以上の自然数）であれば特に限定されない。【００８４】  例えば、集合演算に要する時間は、データの演算時間と移動時間とに依存する。集合演算の場合、演算処理を分散して行った複数の演算器のデータを集める必要があるため、データの演算時間も移動時間も長くなる。特にデータ量が膨大な場合には、分散しても演算量が膨大であるため、従来手法では演算時間の短縮は難しい。更に、集合演算は、例えば同じ位置のデータの総和を求めるような比較的簡単な演算の割りに、集めるデータ量が多いので、特にデータ量が膨大な場合には、従来手法ではデータの移動時間の短縮も難しい。しかし、上記の各実施例によれば、データの演算時間及び移動時間を短縮できるので、集合演算を高速化することができる。【００８５】  次に、上記の各実施例における演算処理を、例えばディープラーニングで使用する場合について説明する。ディープラーニングでは、多くの学習データを使用して学習が早く終わるようにして演算時間を短縮するために、演算を並列実行することが望ましい。ところが、学習結果のパラメータを更新するには、演算を並列実行した複数の演算器のデータを集めて更新する必要があるのに加え、データ量が多いため、従来手法では、データの演算時間も移動時間も長くなる。また、集合演算以外の演算量も膨大であるため、従来手法では、演算時間の短縮は難しい。更に、パラメータ更新用のデータを作成するための集合演算は、例えば同じ位置のデータの総和を求める演算のような比較的簡単な演算の割りに集めるデータ量が膨大であるため、従来手法では、データの移動時間の短縮も難しい。しかし、上記の各実施例によれば、演算処理を高速化することができるので、多くの学習データを使用するディープラーニングに適用した場合であっても、ディープラーニングの高速化が可能となる。【００８６】  なお、上記の各実施例に付されている第１、第２、第３、第４、及び第５なる連番は、好ましい実施例の優先順位を表すものではない。【００８７】  以上、開示の演算処理装置及び演算処理装置の制御方法を実施例により説明したが、本発明は上記実施例に限定されるものではなく��本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００８８】１，１Ａ，１Ｂ      演算処理装置１−０〜１−３，１Ａ−０〜１Ａ−３，１Ｂ−０〜１Ｂ−３      演算処理装置１１，１１−０〜１１−４      演算器１２，１２−０〜１２−２      通信器１００      演算処理システム１１１      演算部１１２      データ保存用メモリ１１３      演算制御部１１４      通信部１１５      データ監視部１２１      演算部１２２      データ保存用メモリ１２３      演算制御部１２４      通信部
【図１】
2020084693.tif 000003
【図２】
2020084693.tif 000004
【図３】
2020084693.tif 000005
【図４】
2020084693.tif 000006
【図５】
2020084693.tif 000007
【図６】
2020084693.tif 000008
【図７】
2020084693.tif 000009
【図８】
2020084693.tif 000010
【図９】
2020084693.tif 000011
【図１０】
2020084693.tif 000012
【図１１】
2020084693.tif 000013
【図１２】
2020084693.tif 000014
【図１３】
2020084693.tif 000015
【図１４】
2020084693.tif 000016
【図１５】
2020084693.tif 000017
【図１６】
2020084693.tif 000018
【図１７】
2020084693.tif 000019
【図１８】
2020084693.tif 000020
【手続補正書】
【提出日】令和3年1月21日(2021.1.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
同じ演算処理を行うｍ個の演算器と、
演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、
を備え、ｍは４以上の自然数であり、ｎは２以上の自然数であり、
各演算器は、前記ｍ個の演算器の演算結果の総データ量を前記通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、対応する前記ｎ個の通信器に移動し、
各通信器は、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストすることを特徴とする、演算処理装置。
【請求項２】
各演算器は、
前記同じ演算処理を行う演算機能に関する処理を実行する、第１の演算部及び第１の演算制御部と、
各Ｎ分割データに相当する演算結果を対応する前記ｎ個の通信器に移動する演算機能以外に関する処理を実行する、データ監視部及び第１の通信部とを有し、
各通信器は、
前記所定の演算処理を行う所定の演算機能に関する処理を実行する、第２の演算部、第２の演算制御部、及び第２の通信部を有することを特徴とする、請求項１記載の演算処理装置。
【請求項３】
前記演算機能に関する処理は、
前記第１の演算制御部が、前記ｍ個の演算器の演算結果の総データ量をＮ分割し、
前記第１の演算制御部が、Ｎ分割した演算結果を順時出力するよう前記第１の演算部を制御し、
前記第１の演算制御部が、前記第１の演算部による演算が終了したと判定し、前記第１の演算部が、各通信器から前記所定の演算結果を受信すると前記演算機能に関する処理を終了する、
処理を含み、
前記演算機能以外に関する処理は、
前記データ監視部が、前記ｍ個の演算器の演算結果の総データ量の１／Ｎに相当する演算結果のデータ量が揃ったと判定すると、前記第１の通信部が、揃った演算結果のデータを各通信器に移動し、
前記データ監視部が、前記第１の演算部による演算が終了したと判定すると、前記演算機能以外に関する処理を終了する、
処理を含み、
前記所定の演算機能に関する処理は、
各通信器の前記第２の演算部が、前記第２の通信部が受信した演算結果を用いて前記所定の演算処理を行い、
前記第２の演算制御部が、前記第２の演算部による前記所定の演算処理が終了したと判定すると、前記第２の通信部が、前記所定の演算処理の演算結果のデータを前記ｍ個の演算器にブロードキャストする、
処理を含むことを特徴とする、請求項２記載の演算処理装置。
【請求項４】
ｍ＝４又はｍ＝５かつｎ＝２であり、
第１の通信器が４分割データの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、
第２の通信器が４分割データの残りの半分に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項１乃至３のいずれか１項記載の演算処理装置。
【請求項５】
ｍ＝４かつｎ＝３であり、
第１の通信器が６分割データの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、
第２の通信器が６分割データの他の１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストし、
第３の通信器が６分割データの残りの１／３に相当する２つのデータに前記所定の演算処理を順次施して前記ｍ個の演算器にブロードキャストすることを特徴とする、請求項１乃至３のいずれか１項記載の演算処理装置。
【請求項６】
前記所定の演算処理は、集合演算処理であることを特徴とする、請求項１乃至５のいずれか１項記載の演算処理装置。
【請求項７】
請求項１乃至６のいずれか１項記載の演算処理装置をＬ個備え、Ｌは２以上の自然数であり、
前記Ｌ個の演算処理装置の対応する通信器が通信可能に接続されていることを特徴とする、演算処理システム。
【請求項８】
同じ演算処理を行うｍ個の演算器と、演算機能を有し、前記ｍ個の演算器と通信可能に接続されたｎ個の通信器と、を備え、ｍは４以上の自然数であり、ｎは２以上の自然数である演算処理装置の制御方法であって、
各演算器が、前記ｍ個の演算器の演算結果の総データ量を通信器の個数ｎ×２＝Ｎで分割した各Ｎ分割データに相当する演算結果を、対応する前記ｎ個の通信器に移動し、
各通信器が、対応するＮ分割データに相当する演算結果にデータの演算と移動を繰り返す所定の演算処理を施した演算結果を、前記ｍ個の演算器にブロードキャストすることを特徴とする、演算処理装置の制御方法。
【請求項９】
前記所定の演算処理は、集合演算処理であることを特徴とする、請求項８記載の演算処理装置の制御方法。
【請求項１０】
Ｌ個の演算処理装置の対応する通信器を通信可能に接続し、Ｌは２以上の自然数であり、
請求項８又は９記載の演算処理装置の制御方法を前記Ｌ個の演算処理装置の各々で実行することを特徴とする、演算処理装置の制御方法。
【国際調査報告】
2020084693.tif 000021
2020084693.tif 000022
2020084693.tif 000023
2020084693.tif 000024