(57)【要約】【課題】行列の積の算出を効率的に行うこと可能とする演算方法、演算装置、演算プログラム及び演算システムを提供する。【解決手段】行方向に配置されたＭ個の演算器と列方向に配置されたＮ個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、第１行列と第２行列との積を算出する演算方法であって、第１行列において同一列に位置する１以上の第１分割行列が、情報処理装置において異なる列に配置された演算器に記憶されるように、１以上の第１分割行列を演算器の記憶部にそれぞれ記憶し、第２行列において同一行に位置する１以上の第２分割行列が、情報処理装置において異なる行に配置された演算器の記憶部に記憶されるように、１以上の第２分割行列を記憶部にそれぞれ記憶する。【選択図】図１２
2018139045.tif 000002
【特許請求の範囲】
【請求項１】
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、第１行列と第２行列との積を算出する演算方法であって、
前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成し、
前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成し、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、
前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記第１分割行列を送信する工程と、前記第２分割行列を送信する工程と、前記第２の積を加算する工程とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算方法。
【請求項２】
請求項１において、さらに、
他の演算器から前記１以上の第１分割行列または前記１以上の第２分割行列を受信した場合、受信した前記１以上の第１分割行列または前記１以上の第２分割行列を前記記憶部に記憶し、
前記第２の積を加算する工程では、
前記演算器毎に、各演算器の前記記憶部から、最も先に受信した前記１以上の第１分割行列と前記１以上の第２分割行列とを順次取得し、
前記演算器毎に、取得した前記１以上の第１分割行列と前記１以上の第２分割行列との前記第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に順次加算する、
ことを特徴とする演算方法。
【請求項３】
請求項１において、
前記第１分割行列を生成する工程では、前記第１行列を、前記行方向において前記最小公倍数と第１整数とを乗算した数で分割し、前記列方向において前記Ｎと第２整数とを乗算した数で分割することによって前記１以上の第１分割行列を生成し、
前記第２分割行列を生成する工程では、前記第２行列を、前記行方向において前記Ｍと第３整数とを乗算した数で分割し、前記列方向において前記最小公倍数と第４整数とを乗算した数で分割することによって前記１以上の第２分割行列の生成を行い、
前記第１分割行列を記憶する工程では、前記第１行列において同一列に位置する前記第２整数毎の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶され、前記行方向の数が前記第１整数であって前記列方向の数が前記第２整数である第１分割行列が前記記憶部のそれぞれに記憶されるように、前記１以上の第１分割行列を前記記憶部にそれぞれ記憶し、
前記第２分割行列を記憶する工程では、前記第２行列において同一行に位置する前記第３整数毎の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶され、前記行方向の数が前記第３整数であって前記列方向の数が前記第４整数である第２分割行列が前記記憶部のそれぞれに記憶されるように、前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する、
ことを特徴とする演算方法。
【請求項４】
請求項１において、
前記第２分割行列を生成する工程では、前記第２行列を、前記行方向において前記Ｍと第１整数とを乗算した数で分割し、前記列方向において前記最小公倍数と第２整数とを乗算した数で分割することによって前記１以上の第２分割行列の生成を行い、
前記第２分割行列を記憶する工程では、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、前記１以上の第２分割行列のうち、前記行方向の数が前記Ｍであって前記列方向の数が前記最小公倍数である前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、さらに、
前記第２分割行列を記憶する工程と、前記第１の積を加算する工程と、前記第１分割行列を送信する工程と、前記第２分割行列を送信する工程と、前記第２の積を加算する工程と、前記積の加算を繰り返す工程とを、各工程が前記１以上の第２分割行列の全てについて行われるまで繰り返す、
ことを特徴とする演算方法。
【請求項５】
請求項４において、
前記各工程を繰り返す工程では、次に各工程が行われる前記１以上の第２分割行列についての前記第２分割行列を記憶する工程を並行して行う、
ことを特徴とする演算方法。
【請求項６】
請求項１において、
前記演算器のそれぞれは、トラース接続されたｋ個（ｋは１以上の整数）の単位演算器を有し、
前記第１の積を加算する工程では、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、行方向及び列方向のそれぞれにおいて前記ｋで分割することによって、１以上の単位分割値を生成し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列において同一列に位置する前記１以上の単位分割値が同一の前記単位演算器に記憶されるように、生成された前記１以上の単位分割値を前記単位演算器の単位記憶部のそれぞれに記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、列方向において前記ｋで分割することによって、１以上の単位分割行列を生成し、
前記演算器毎に、生成された前記１以上の単位分割行列を前記単位演算器の前記単位記憶部のそれぞれに記憶し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割値のうち、各単位演算器を識別する識別情報に対応する単位分割値と、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列との第３の積を、各単位演算器の前記単位記憶部に記憶された第２結果行列に加算し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列を、トラース接続された他の単位演算器のうち、直接接続された単位演算器に送信し、
前記単位演算器毎に、他の単位演算器から前記１以上の単位分割行列を受信したことに応じて、他の単位演算器から受信した前記１以上の単位分割行列と、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割値のうち、受信した前記１以上の単位分割行列を最初に記憶していた他の単位演算器を識別する識別情報に対応する単位分割値との第４の積を、前記単位記憶部に記憶された前記第２結果行列に加算し、
前記単位分割行列を送信する工程と、前記第４の積を加算する工程とを、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列から算出される積が、トラース接続された前記単位演算器のそれぞれにおいて前記第２結果行列に加算されるまで繰り返し、
前記第１分割行列を送信する工程では、前記単位演算器毎に、各単位演算器の前記単位記憶部のそれぞれに記憶された前記第２結果行列からなる行列を、前記１以上の第１分割行列として送信し、
前記第２分割行列を送信する工程では、前記単位演算器毎に、各単位演算器の前記単位記憶部のそれぞれに記憶された前記第２結果行列からなる行列を、前記１以上の第２分割行列として送信する、
ことを特徴とする演算方法。
【請求項７】
請求項６において、
前記単位演算器は、各単位演算器を識別する第１識別情報を有し、
前記単位分割値を記憶する工程では、前記単位演算器毎に、前記単位分割値と各単位分割値を識別する第２識別情報とを対応付けて記憶し、
前記第３の積を加算する工程では、
前記単位演算器毎に、各単位演算器に対応する前記第１識別情報を特定し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記単位分割値のうち、特定した前記第１識別情報に対応する単位分割値と、各単位演算器の前記単位記憶部に記憶された前記単位分割行列との前記第３の積を、各単位演算器の前記単位記憶部に記憶された前記第２結果行列に加算し、
前記第４の積を加算する工程では、
前記単位演算器毎に、受信した前記単位分割行列を最初に記憶していた他の単位演算器に対応する第２識別情報を特定し、
前記単位演算器毎に、受信した前記単位分割行列と、各単位演算器の前記単位記憶部に記憶された前記単位分割値のうち、特定した前記第２識別情報に対応する単位分割値との前記第４の積を、前記単位記憶部に記憶された前記第２結果行列に加算する、
ことを特徴とする演算方法。
【請求項８】
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、
第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成する第１行列分割部と、
第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成する第２行列分割部と、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する行列記憶部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算する行列演算部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信する行列送受信部と、を有し、
前記行列演算部は、前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記行列送受信部は、前記１以上の第１分割行列の送信と、前記１以上の第２分割行列の送信とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返し、
前記行列演算部は、前記第２の積の加算を、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算装置。
【請求項９】
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置に、第１行列と第２行列との積を算出する処理を実行させる演算プログラムであって、
前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成し、
前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成し、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、
前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記第１分割行列を送信する処理と、前記第２分割行列を送信する処理と、前記第２の積を加算する処理とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
処理を前記情報処理装置に実行させることを特徴とする演算プログラム。
【請求項１０】
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置と、
第１行列及び第２行列を記憶する記憶装置と、を有し、
前記情報処理装置は、
前記記憶装置に記憶された前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成する第１行列分割部と、
前記記憶装置に記憶された前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成する第２行列分割部と、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する行列記憶部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算する行列演算部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信する行列送受信部と、を有し、
前記行列演算部は、前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記行列送受信部は、前記１以上の第１分割行列の送信と、前記１以上の第２分割行列の送信とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返し、
前記行列演算部は、前記第２の積の加算を、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算方法、演算装置、演算プログラム及び演算システムに関する。
【背景技術】
【０００２】
近年、２重トラース構造を構成する演算器を有するプロセッサの研究が行われている。２重トラース構造を構成する演算器とは、例えば、行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器である。
【０００３】
このような演算器を有するプロセッサでは、各演算器のレジスタに記憶されたデータを複数の演算器間で共有しながら処理を行うことにより、処理中におけるメモリ（例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））に対するアクセス頻度を抑制する。これにより、上記のようなプロセッサは、処理の高速化を実現することが可能になる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−１７５９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなプロセッサでは、例えば、行列の積を算出する場合、算出対象の行列の部分行列を複数の演算器のレジスタにそれぞれ記憶させ、各レジスタに記憶されたデータを複数の演算器間で共有しながら処理を行う。これにより、プロセッサは、行列の積の算出を行う場合においても処理の高速化を実現することが可能になる。
【０００６】
しかしながら、上記のようなプロセッサでは、同一の部分行列を用いる処理が複数の演算器において同時に行われる場合がある。そのため、この場合、プロセッサでは、他の演算器における処理の終了を待つ必要がある演算器が発生し、行列の積の算出を効率的（高速）に行うことができない場合がある。
【０００７】
そこで、一つの側面では、行列の積の算出を効率的に行うこと可能とする演算方法、演算装置、演算プログラム及び演算システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一つの態様によれば、行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、第１行列と第２行列との積を算出する演算方法であって、前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成し、前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成し、前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、前記１以上の第２分割行列を前記演算器の前記記憶部にそれぞれ記憶し、前記演算器毎に、前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、前記記憶部に記憶された第１結果行列に加算し、前記演算器毎に、前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、前記記憶部に記憶された前記第１結果行列に加算し、前記第１分割行列を送信する工程と、前記第２分割行列を送信する工程と、前記第２の積を加算する工程とを、前記第１の積のそれぞれがトラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す。
【発明の効果】
【０００９】
一つの側面によれば、行列の積の算出を効率的に行うこと可能とする。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、ＤＬＵ１１１の構成を示す図である。
【図３】図３は、ＤＰＵ００からＤＰＵ２３における部分行列の記憶を説明する図である。
【図４】図４は、ＤＰＵ００からＤＰＵ２３に対して部分行列を記憶する際の具体例について説明する図である。
【図５】図５は、情報処理システム１０のハードウエア構成を説明する図である。
【図６】図６は、ＤＬＵ１１１の機能ブロック図である。
【図７】図７は、第１の実施の形態における行列演算処理の概略を説明するフローチャートである。
【図８】図８は、第１の実施の形態における行列演算処理の概略を説明するフローチャートである。
【図９】図９は、Ｓ４及びＳ５の処理の具体例を説明する図である。
【図１０】図１０は、Ｓ４及びＳ５の処理の具体例を説明する図である。
【図１１】図１１は、Ｓ４及びＳ５の処理の具体例を説明する図である。
【図１２】図１２は、Ｓ１１からＳ１５の処理の具体例を説明する図である。
【図１３】図１３は、Ｓ１１からＳ１５の処理の具体例を説明する図である。
【図１４】図１４は、Ｓ１１からＳ１５の処理の具体例を説明する図である。
【図１５】図１５は、第１の実施の形態における行列演算処理の詳細を説明するフローチャートである。
【図１６】図１６は、第１の実施の形態における行列演算処理の詳細を説明するフローチャートである。
【図１７】図１７は、第１の実施の形態における行列演算処理の詳細を説明するフローチャートである。
【図１８】図１８は、第１の実施の形態における行列演算処理の詳細を説明するフローチャートである。
【図１９】図１９は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２０】図２０は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２１】図２１は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２２】図２２は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２３】図２３は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２４】図２４は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２５】図２５は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２６】図２６は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２７】図２７は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２８】図２８は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図２９】図２９は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【図３０】図３０は、第１の実施の形態における行列演算処理の詳細を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
初めに、情報処理システム１０の構成について説明を行う。図１は、情報処理システム１０の構成を示す図である。図１に示す情報処理システム１０は、情報処理装置１と情報処理装置２とを有する。そして、情報処理装置１は、プロセッサ１１１と、メモリ１１２とを有し、情報処理装置２は、ＣＰＵ１０１と、メモリ１０２とを有する。なお、以下、プロセッサ１１１が富士通社製のＤＬＵ（登録商標）であるものとして説明を行う。
【００１２】
ＣＰＵ１０１は、例えば、プロセッサの研究者（以下、単に研究者とも呼ぶ）が情報処理装置２に対して行列の入力を行った場合、入力された行列をメモリ１０２に記憶する。そして、ＣＰＵ１０１は、例えば、ＤＬＵ１１１において行列の積の算出が行われる場合、メモリ１０２に記憶された行列をメモリ１１２に記憶する。
【００１３】
ＤＬＵ１１１は、２重トラース構造を構成するＭ×Ｎ個の演算器（以下、ＤＰＵとも呼ぶ）を有するプロセッサである。ＤＬＵ１１１は、所定のタイミング（例えば、情報処理装置１に対して行列の積の算出を行う旨の入力があった場合）に、メモリ１１２に記憶された行列（以下、第１行列及び第２行列とも呼ぶ）を取得し、第１行列と第２行列との積の算出を行う。
【００１４】
次に、ＤＬＵ１１１の構成について説明を行う。図２は、ＤＬＵ１１１の構成を示す図である。
【００１５】
ＤＬＵ１１１は、図２に示すように、例えば、列方向（図２における縦方向）に６個配置され、行方向（図２における横方向）に４個配置された計２４個のＤＰＵを有する。各ＤＰＵは、例えば、第１行列及び第２行列の部分行列を記憶する記憶部をそれぞれ有する。
【００１６】
そして、図２に示すように、同一列に配置された６個のＤＰＵ（例えば、ＤＰＵ００、ＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０）は、トラース構造ＴＲ２１を構成している。具体的に、例えば、ＤＰＵ００は、ＤＰＵ２０及びＤＰＵ０４と接続し、ＤＰＵ０４は、ＤＰＵ００及びＤＰＵ０８と接続している。
【００１７】
また、図２に示すように、同一行に配置された４個のＤＰＵ（例えば、ＤＰＵ００、ＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３）は、トラース構造ＴＲ１１を構成している。具体的に、例えば、ＤＰＵ００は、ＤＰＵ０３及びＤＰＵ０１と接続し、ＤＰＵ０１は、ＤＰＵ００及びＤＰＵ０２と接続している。
【００１８】
すなわち、ＤＬＵ１１１に配置された２４個のＤＰＵは、同一列に配置された６個のＤＰＵがそれぞれ構成する４個のトラース構造（ＴＲ２１、ＴＲ２２、ＴＲ２３及びＴＲ２４）と、同一行に配置された４個のＤＰＵがそれぞれ構成する６個のトラース構造（ＴＲ１１、ＴＲ１２、ＴＲ１３、ＴＲ１４、ＴＲ１５及びＴＲ１６）とからなる２重トラース構造を構成する。
【００１９】
これにより、例えば、ＤＰＵ００は、トラース構造ＴＲ２１を構成する他のＤＰＵであるＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０がそれぞれ記憶する部分行列を共有（参照）することが可能になる。また、ＤＰＵ００は、トラース構造ＴＲ１１を構成する他のＤＰＵであるＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３がそれぞれ記憶する部分行列を共有（参照）することが可能になる。
【００２０】
そのため、ＤＬＵ１１１は、例えば、第１行列と第２行列との積を算出する際に、ＤＰＵ００、ＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３のそれぞれに記憶された部分行列と乗加算を行う必要がある部分行列を、ＤＰＵ００、ＤＰＵ００、ＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０のいずれかに記憶することで、第１行列と第２行列との積の算出中におけるメモリ１１２へのアクセス頻度を抑制することが可能になる。以下、第１行列及び第２行列の各部分行列をＤＰＵ００からＤＰＵ２３のいずれかに記憶した場合について説明を行う。
【００２１】
［各ＤＰＵにおける部分行列の記憶］
図３は、ＤＰＵ００からＤＰＵ２３における部分行列の記憶を説明する図である。具体的に、図３は、第１行列ＭＡと第２行列ＭＢとの積の算出が行われる際の部分行列の記憶を説明する図である。なお、以下、第１行列ＭＡと第２行列ＭＢとの積の算出結果が第３行列ＭＣであるものとして説明を行う。
【００２２】
ＤＬＵ１１１は、図３に示すように、例えば、第１行列ＭＡ及び第２行列ＭＢをそれぞれ２４分割する。具体的に、ＤＬＵ１１１は、図３に示すように、ＤＬＵ１１１における各ＤＰＵに配置に合わせて、第１行列ＭＡ及び第２行列ＭＢのそれぞれを列方向に６分割し、行方向に４分割する。
【００２３】
そして、ＤＬＵ１１１は、第３行列ＭＣの部分行列の算出を行う際に同時に用いられる第１行列ＭＡの部分行列が、トラース構造を構成するＤＰＵのいずれかに記憶されるように、第１行列ＭＡの各部分行列の記憶を行う。また、ＤＬＵ１１１は、第３行列ＭＣの部分行列の算出を行う際に同時に用いられる第２行列ＭＢの部分行列が、トラース構造を構成するＤＰＵのいずれかに記憶されるように、第２行列ＭＢの各部分行列の記憶を行う。さらに、ＤＬＵ１１１は、第３行列ＭＣの部分行列が記憶されるＤＰＵを、その部分行列の算出に用いられる第１行列ＭＡの部分行列と第２行列ＭＢの部分行列との両方が記憶されるＤＰＵに決定する。すなわち、ＤＬＵ１１１は、ＤＰＵ００からＤＰＵ２３のそれぞれに、第１行列ＭＡ、第２行列ＭＢ及び第３行列ＭＣの部分行列を記憶する。
【００２４】
具体的に、ＤＬＵ１１１は、例えば、第３行列ＭＣの部分行列のうちの特定の部分行列の算出に用いられる第１行列ＭＡの部分行列を、ＤＰＵ００、ＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３のいずれかに記憶する。また、ＤＬＵ１１１は、例えば、第３行列ＭＣの部分行列のうちの特定の部分行列の算出に用いられる第２行列ＭＢの部分行列を、ＤＰＵ００、ＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０のいずれかに記憶する。さらに、ＤＬＵ１１１は、この場合、第３行列ＭＣの部分行列のうちの特定の部分行列を、第１行列ＭＡの部分行列を記憶したＤＰＵと第２行列ＭＢの部分行列を記憶したＤＰＵとの間において共通するＤＰＵ００に記憶する。
【００２５】
これにより、ＤＬＵ１１１は、第３行列ＭＣの部分行列を算出する際に、メモリ１１２に対してアクセスを行う必要がなくなる。
【００２６】
［各ＤＰＵに対する部分行列の記憶の具体例］
次に、ＤＰＵ００からＤＰＵ２３に対して部分行列を記憶する際の具体例について説明を行う。図４は、ＤＰＵ００からＤＰＵ２３に対して部分行列を記憶する際の具体例について説明する図である。なお、図４では、第１行列ＭＡのうち、ＤＰＵ００、ＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３に記憶される部分行列と、第２行列ＭＢのうち、ＤＰＵ００、ＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０に記憶される部分行列と、第３行列ＭＣのうち、ＤＰＵ００に記憶される部分行列についてのみ表記している。また、図４に示す例において、ＭＡ１からＭＡ１２、ＭＢ１からＭＢ１２及びＭＣ１は、第１行列ＭＡ及び第２行列ＭＢからそれぞれ分割された行列（以下、分割行列とも呼ぶ）である。さらに、第３行列ＭＣの各成分の初期値は、それぞれ０であるものとする。
【００２７】
ＤＬＵ１１１は、各ＤＰＵに対して部分行列の記憶を行う場合、行列の積の算出が効率的に行われるように、各ＤＰＵに対する部分行列の記憶を可能な限り均等に行うことが好ましい。そのため、ＤＬＵ１１１は、例えば、第１行列ＭＡを、行方向においてＭ（行方向に配置されたＤＰＵの数）とＮ（列方向に配置されたＤＰＵの数）との最小公倍数で分割し、列方向においてＮで分割することによって、１以上の分割行列を生成する。そして、ＤＬＵ１１１は、生成した１以上の分割行列を、行方向の分割行列の数が最小公倍数をＭで除算した数であって列方向の分割行列の数が１である分割行列毎に各ＤＰＵに記憶する。また、ＤＬＵ１１１は、例えば、第２行列ＭＢを、行方向においてＭで分割し、列方向においてＭとＮとの最小公倍数で分割することによって、１以上の分割行列を生成する。そして、ＤＬＵ１１１は、生成した１以上の分割行列を、行方向の分割行列の数が１であって列方向の分割行列の数が最小公倍数をＮで除算した数である分割行列毎に各ＤＰＵに記憶する。
【００２８】
具体的に、図２に示す例において、行方向に配置されたＤＰＵの数は４個であり、列方向に配置されたＤＰＵの数は６個である。そのため、ＤＬＵ１１１は、この場合、図４に示すように、第１行列ＭＡの行方向及び第２行列ＭＢの列方向のそれぞれを、行方向に配置されたＤＰＵの数と列方向に配置されたＤＰＵの数との最小公倍数である１２で分割する。そして、ＤＬＵ１１１は、図４に示すように、行方向の分割行列の数が３個である部分行列を、ＤＰＵ００、ＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３にそれぞれ記憶し、列方向の分割行列の数が２個である部分行列を、ＤＰＵ００、ＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０にそれぞれ記憶する。
【００２９】
これにより、ＤＬＵ１１１は、各ＤＰＵに対する部分行列の記憶を可能な限り均等に行うことが可能になる。
【００３０】
［第１行列と第２行列との積の算出］
次に、第１行列ＭＡと第２行列ＭＢとの積（第３行列ＭＣ）の算出について説明を行う。
【００３１】
図４に示す例において、ＤＰＵ００は、トラース構造を構成するＤＰＵ０１、ＤＰＵ０２及びＤＰＵ０３との間において、各ＤＰＵが記憶する分割行列の循環を行う。また、ＤＰＵ００は、トラース構造を構成するＤＰＵ０４、ＤＰＵ０８、ＤＰＵ１２、ＤＰＵ１６及びＤＰＵ２０との間において、各ＤＰＵが記憶する分割行列の循環を行う。そして、ＤＰＵ００は、第３行列ＭＣのうちのＤＰＵ００に記憶された部分行列の算出を行う。
【００３２】
具体的に、ＤＰＵ００は、図４に示す例において、分割行列ＭＡ１と分割行列ＭＢ１との積と、分割行列ＭＡ２と分割行列ＭＢ２との積とを加算し、算出した行列と現在の分割行列ＭＣ１との和を、新たな分割行列ＭＣ１として記憶する。続いて、ＤＰＵ００は、図４に示す例において、分割行列ＭＡ３と分割行列ＭＢ３（分割行列の循環によってＤＰＵ０４からＤＰＵ００に送信された分割行列）との積とを加算し、算出した行列と現在の分割行列ＭＣ１との和を、新たな分割行列ＭＣ１として記憶する。さらに、ＤＰＵ００は、図４に示す例において、分割行列ＭＡ４（分割行列の循環によってＤＰＵ０１からＤＰＵ００に送信された分割行列）と分割行列ＭＢ４（分割行列の循環によってＤＰＵ０４からＤＰＵ００に送信された分割行列）との積とを加算し、算出した行列と現在の分割行列ＭＣ１との和を、新たな分割行列ＭＣ１として記憶する。同様に、ＤＰＵ００は、ＭＡ１からＭＡ１２と、ＭＢ１からＭＢ１２との乗加算を行い、分割行列ＭＣ１の算出を行う。
【００３３】
そして、ＤＬＵ１１１は、この場合、第１行列ＭＡの部分行列と第２行列ＭＢの部分行列との積の算出を、ＤＰＵ００以外のＤＰＵにおいても並行して行う。これにより、ＤＬＵ１１１は、行列の積の算出を行う場合における処理の高速化を実現することが可能になる。
【００３４】
しかしながら、ＤＬＵ１１１では、同一の部分行列を用いる処理（演算）が複数のＤＰＵにおいて同時に行われる場合がある。具体的に、図３に示す例において、第３行列ＭＣのうちのＤＰＵ００に記憶される部分行列の算出と、第３行列ＭＣのうちのＤＰＵ０１に記憶される部分行列の算出とのそれぞれにおいて、第１行列ＭＡのうちのＤＰＵ００に記憶された部分行列が同時に用いられる場合がこれに該当する。
【００３５】
そのため、この場合、ＤＬＵ１１１では、他のＤＰＵにおける処理の終了を待つ必要があるＤＰＵが発生し、行列の積の算出を効率的（高速）に行うことができない。
【００３６】
そこで、本実施の形態におけるＤＬＵ１１１は、図４で説明したように、第１行列ＭＡを、第１行列の行方向においてＭ（行方向に配置されたＤＰＵの数）とＮ（列方向に配置されたＤＰＵの数）との最小公倍数で分割し、第１行列ＭＡの列方向においてＮで分割することによって１以上の分割行列（以下、第１分割行列とも呼ぶ）を生成する。また、ＤＬＵ１１１は、図４で説明したように、第２行列ＭＢを、第２行列の行方向においてＭで分割し、第２行列の列方向においてＭとＮの最小公倍数で分割することによって１以上の分割行列（以下、第２分割行列とも呼ぶ）を生成する。
【００３７】
そして、ＤＬＵ１１１は、第１行列ＭＡにおいて同一列に位置する１以上の第１分割行列が、ＤＬＵ１１１において異なる列に配置されたＤＰＵに記憶されるように、１以上の第１分割行列をＤＰＵの記憶部にそれぞれ記憶する。また、ＤＬＵ１１１は、第２行列ＭＡにおいて同一行に位置する１以上の第２分割行列が、ＤＬＵ１１１において異なる行に配置されたＤＰＵに記憶されるように、１以上の第２分割行列をＤＰＵの記憶部にそれぞれ記憶する。
【００３８】
すなわち、ＤＬＵ１１１は、複数のＤＰＵが同一の部分行列をそれぞれ用いるタイミングが重複しないように、各部分行列を記憶させるＤＰＵを決定する。これにより、ＤＬＵ１１１は、各ＤＰＵにおける待ち時間の発生を抑制することが可能になる。
【００３９】
さらに、ＤＬＵ１１１は、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列と１以上の第２分割行列との積（以下、第１の積とも呼ぶ）を、記憶部に記憶された第３行列の部分行列（以下、第１結果行列とも呼ぶ）に加算する。そして、ＤＬＵ１１１は、ＤＰＵ毎に、記憶部に記憶された第１分割行列を、行方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する。また、ＤＬＵ１１１は、ＤＰＵ毎に、記憶部に記憶された１以上の第２分割行列を、列方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する。
【００４０】
その後、ＤＬＵ１１１は、ＤＰＵ毎に、他のＤＰＵから１以上の第１分割行列と１以上の第２分割行列とを受信したことに応じて、受信した１以上の第１分割行列と１以上の第２分割行列との積（以下、第２の積とも呼ぶ）を、記憶部に記憶された第１結果行列に加算する。
【００４１】
そして、ＤＬＵ１１１は、第１分割行列を送信する工程と、第２分割行列を送信する工程と、第２の積を加算する工程とを、各ＤＰＵの記憶部に記憶された１以上の第１分割行列から算出される積が、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算され、各ＤＰＵの記憶部に記憶された１以上の第２分割行列から算出される積が、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されるまで繰り返す。
【００４２】
これにより、ＤＬＵ１１１は、第１行列ＭＡと第２行列ＭＢとの積の算出を効率的（高速）に行うことが可能になる。
【００４３】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図５は、情報処理システム１０のハードウエア構成を説明する図である。
【００４４】
情報処理装置１は、プロセッサであるＤＬＵ１１１と、メモリ１１２と、外部インターフェース（Ｉ／Ｏユニット）１１３と、記憶媒体（ストレージ）１１４とを有する。各部は、バス１１５を介して互いに接続される。
【００４５】
記憶媒体１１４は、記憶媒体１１４内のプログラム格納領域（図示しない）に、第１行列ＭＡと第２行列ＭＢとの積を算出する処理（以下、行列演算処理とも呼ぶ）を行うためのプログラム１２０を記憶する。
【００４６】
ＤＬＵ１１１は、プログラム１２０の実行時に、プログラム１２０を記憶媒体１１４からメモリ１１２にロードし、プログラム１２０と協働して行列演算処理を行う。また、外部インターフェース１１３は、情報処理装置２と通信を行う。
【００４７】
そして、情報処理装置２は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００４８】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、メモリ１０２に記憶された第１行列ＭＡ及び第２行列ＭＢをメモリ１１２に記憶する処理（以下、行列記憶処理とも呼ぶ）を行うためのプログラム１１０を記憶する。
【００４９】
ＣＰＵ１０１は、図５に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１１２にロードし、プログラム１２０と協働して行列記憶処理を行う。また、外部インターフェース１０３は、情報処理装置１と通信を行う。
【００５０】
［ＤＬＵの機能］
次に、ＤＬＵ１１１の機能ブロック図について説明する。図６は、ＤＬＵ１１１の機能ブロック図である。ＤＬＵ１１１は、図６に示すように、プログラム１２０と協働することにより、第１行列分割部１２１と、第２行列分割部１２２と、行列記憶部１２３と、行列演算部１２４と、行列送受信部１２５と、行列出力部１２６として動作する。
【００５１】
第１行列分割部１２１は、例えば、第１行列ＭＡを、行方向においてＭとＮとの最小公倍数で分割し、列方向においてＮで分割することによって、１以上の第１分割行列を生成する。
【００５２】
第２行列分割部１２２は、例えば、第２行列ＭＢを、行方向においてＭで分割し、列方向においてＭとＮの最小公倍数で分割することによって、１以上の第２分割行列を生成する。
【００５３】
行列記憶部１２３は、例えば、第１行列ＭＡにおいて同一列に位置する１以上の第１分割行列が、ＤＬＵ１１１において異なる列に配置されたＤＰＵに記憶されるように、第１行列分割部１２１が生成した１以上の第１分割行列をＤＰＵの記憶部にそれぞれ記憶する。また、行列記憶部１２３は、例えば、第２行列ＭＢにおいて同一行に位置する１以上の第２分割行列が、ＤＬＵ１１１において異なる行に配置されたＤＰＵに記憶されるように、第２行列分割部１２２が生成した１以上の第２分割行列をＤＰＵの記憶部にそれぞれ記憶する。
【００５４】
行列演算部１２４は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列と１以上の第２分割行列との第１の積を、記憶部に記憶された第１結果行列に加算する。
【００５５】
行列送受信部１２５は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列を、行方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する。また、行列送受信部１２５は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第２分割行列を、列方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する。その後、行列演算部１２４は、例えば、ＤＰＵ毎に、行列送受信部１２５が他のＤＰＵから１以上の第１分割行列と１以上の第２分割行列とを受信したことに応じて、受信した１以上の第１分割行列と１以上の第２分割行列との第２の積を、記憶部に記憶された第１結果行列に加算する。
【００５６】
そして、行列送受信部１２５及び行列演算部１２４は、第２分割行列群の送信と第２の積の加算とを、各工程がトラース接続されたＤＰＵの全てにおいて行われるまで繰り返す。
【００５７】
行列出力部１２６は、各工程がトラース接続されたＤＰＵの全てにおいて第２分割行列群の送信と第２の積の加算とが行われた後、第１結果行列を情報処理装置２等に出力する。
【００５８】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図７及び図８は、第１の実施の形態における行列演算処理の概略を説明するフローチャートである。
【００５９】
ＤＬＵ１１１は、図７に示すように、演算開始タイミングまで待機する（Ｓ１のＮＯ）。演算開始タイミングは、例えば、研究者が情報処理装置１に対して第１行列ＭＡと第２行列ＭＢとの積の算出を開始する旨の入力を行ったタイミングであってよい。
【００６０】
そして、演算開始タイミングになった場合（Ｓ１のＹＥＳ）、ＤＬＵ１１１は、例えば、第１行列ＭＡを、行方向においてＭとＮとの最小公倍数で分割し、列方向においてＮで分割することによって１以上の第１分割行列を生成する（Ｓ２）。また、ＤＬＵ１１１は、例えば、第２行列ＭＢを、行方向においてＭで分割し、列方向においてＭとＮの最小公倍数で分割することによって１以上の第２分割行列を生成する（Ｓ３）。
【００６１】
続いて、ＤＬＵ１１１は、例えば、第１行列ＭＡにおいて同一列に位置する１以上の第１分割行列が、ＤＬＵ１１１において異なる列に配置されたＤＰＵに記憶されるように、１以上の第１分割行列をＤＰＵの記憶部にそれぞれ記憶する（Ｓ４）。また、ＤＬＵ１１１は、例えば、第２行列ＭＢにおいて同一行に位置する１以上の第２分割行列が、ＤＬＵ１１１において異なる行に配置されたＤＰＵに記憶されるように、１以上の第２分割行列をＤＰＵの記憶部にそれぞれ記憶する（Ｓ５）。
【００６２】
そして、ＤＬＵ１１１は、図８に示すように、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列と１以上の第２分割行列との第１の積を、記憶部に記憶された第１結果行列に加算する（Ｓ１１）。
【００６３】
その後、ＤＬＵ１１１は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列を、行方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する（Ｓ１２）。また、ＤＬＵ１１１は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第２分割行列を、列方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する（Ｓ１３）。
【００６４】
さらに、ＤＬＵ１１１は、例えば、ＤＰＵ毎に、他のＤＰＵから１以上の第１分割行列と１以上の第２分割行列とを受信したことに応じて、受信した１以上の第１分割行列と１以上の第２分割行列との第２の積を、記憶部に記憶された第１結果行列に加算する（Ｓ１４）。
【００６５】
そして、ＤＬＵ１１１は、各ＤＰＵの記憶部に記憶された１以上の第１分割行列から算出される積がトラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算され、各ＤＰＵの記憶部に記憶された１以上の第２分割行列から算出される積がトラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されたか否かを判定する（Ｓ１５）。その結果、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されたと判定した場合（Ｓ１５のＹＥＳ）、ＤＬＵ１１１は、行列演算処理を終了する。一方、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されていないと判定した場合（Ｓ１５のＮＯ）、ＤＬＵ１１１は、Ｓ１２以降の処理を再度行う。
【００６６】
すなわち、ＤＬＵ１１１は、複数のＤＰＵによって同一の部分行列が用いられるタイミングが重複しないように、各部分行列を保持させるＤＰＵを決定する。
【００６７】
これにより、ＤＬＵ１１１は、各ＤＰＵにおける待ち時間の発生を抑制することが可能になる。そのため、ＤＬＵ１１１は、第１行列ＭＡと第２行列ＭＢとの積の算出を効率的（高速）に行うことが可能になる。
【００６８】
［Ｓ４及びＳ５の処理の具体例］
次に、Ｓ４及びＳ５の処理の具体例について説明を行う。図９から図１１は、Ｓ４及びＳ５の処理の具体例を説明する図である。図９から図１１に示す例において、第１行列ＭＡ、第２行列ＭＢ及び第３行列ＭＣは、図３及び図４で説明した第１行列ＭＡ、第２行列ＭＢ及び第３行列ＭＣにそれぞれ対応する。また、図９に示す例において、第１行列ＭＡにおけるＡ０等は、Ｓ２の処理で生成された分割行列（第１分割行列）であり、第２行列ＭＢにおけるＢ０等は、Ｓ３の処理で生成された分割行列（第２分割行列）である。さらに、図９に示す例において、第３行列ＭＣにおけるＣ０等は、各ＤＰＵに記憶される部分行列である。
【００６９】
なお、図９に示す例において、各ＤＰＵには、第１行列ＭＡにおける各分割行列の位置に従って、行方向の分割行列の数が１個であって列方向の分割行列の数が３個である部分行列が記憶される。また、図９に示す例において、各ＤＰＵには、第２行列ＭＢにおける各分割行列の位置に従って、行方向の分割行列の数が２個であって列方向の分割行列の数が１個である部分行列が記憶される。そのため、例えば、ＤＰＵ００には、分割行列Ａ０、Ａ１及びＡ２からなる部分行列と、分割行列Ｂ０及びＢ４からなる部分行列と、部分行列Ｃ０が記憶される。また、例えば、ＤＰＵ０１には、分割行列Ａ３、Ａ４及びＡ５からなる部分行列と、分割行列Ｂ１及びＢ５からなる部分行列と、部分行列Ｃ１が記憶される。さらに、例えば、ＤＰＵ０４には、分割行列Ａ１２、Ａ１３及びＡ１４からなる部分行列と、分割行列Ｂ８及びＢ１２からなる部分行列と、部分行列Ｃ０が記憶される。
【００７０】
具体的に、図９に示す例において、部分行列Ｃ０は、分割行列Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８、Ａ９、Ａ１０及びＡ１１と、分割行列Ｂ０、Ｂ４、Ｂ８、Ｂ１２、Ｂ１６、Ｂ２０、Ｂ２４、Ｂ２８、Ｂ３２、Ｂ３６、Ｂ４０及びＢ４４とを乗加算することによって算出される。また、図９に示す例において、部分行列Ｃ４は、分割行列Ａ１２、Ａ１３、Ａ１４、Ａ１５、Ａ１６、Ａ１７、Ａ１８、Ａ１９、Ａ２０、Ａ２１、Ａ２２及びＡ２３と、分割行列Ｂ０、Ｂ４、Ｂ８、Ｂ１２、Ｂ１６、Ｂ２０、Ｂ２４、Ｂ２８、Ｂ３２、Ｂ３６、Ｂ４０及びＢ４４とを乗加算することによって算出される。
【００７１】
すなわち、各ＤＰＵにおいて、図９に示すように各分割行列の記憶が行われている場合、ＤＰＵ００及びＤＰＵ０４は、それぞれ部分行列Ｃ０及び部分行列Ｃ４の算出を行う際に、例えば、分割行列Ｂ０、Ｂ４、Ｂ８、Ｂ１２、Ｂ１６、Ｂ２０、Ｂ２４、Ｂ２８、Ｂ３２、Ｂ３６、Ｂ４０及びＢ４４を同じ順序で用いることになる。そのため、ＤＰＵ００では、この場合、部分行列Ｃ０の算出を行う際に、ＤＰＵ０４の処理の待ち時間が発生する可能性がある。同様に、ＤＰＵ０４では、この場合、部分行列Ｃ４の算出を行う際に、ＤＰＵ００の処理の待ち時間が発生する可能性がある。
【００７２】
そこで、ＤＬＵ１１１は、図９に示す第１行列ＭＡの各分割行列のうち、上からｙ番目であって左からｘ番目に位置する分割行列（以下、Ａ［ｙ］［ｘ］とも表記する）の配置を、以下の式１に従って変更する（Ｓ４）。なお、以下の式１におけるＬは、Ｍ（ＤＬＵ１１１において列方向に配置されたＤＰＵの数）とＮ（ＤＬＵ１１１において行方向に配置されたＤＰＵの数）の最小公倍数を示す定数である。
【００７３】
Ａ［ｙ］［（ｘ＋ｙ＊（Ｌ／Ｎ））％Ｌ］  ・・・  （１）
具体的に、ＤＬＵ１１１は、例えば、図１０に示すように、分割行列Ａ１２、Ａ１３、Ａ１４、Ａ１５、Ａ１６、Ａ１７、Ａ１８、Ａ１９、Ａ２０、Ａ２１、Ａ２２及びＡ２３を、分割行列Ａ２２、Ａ２３、Ａ１２、Ａ１３、Ａ１４、Ａ１５、Ａ１６、Ａ１７、Ａ１８、Ａ１９、Ａ２０及びＡ２１の順になるように再配置してから各ＤＰＵに記憶する（Ｓ４）。
【００７４】
すなわち、ＤＬＵ１１１は、各行の分割行列を移動させる数として、例えば、第１行列ＭＡの列の数である「１２」を第１行列ＭＡの行の数である「６」で除算することによって算出される「２」を用いる。そのため、ＤＬＵ１１１は、例えば、図１０に示すように、第１行列ＭＡの第２行に含まれる分割行列を移動させる数として「２」を特定し、第１行列ＭＡの第３行に含まれる分割行列を移動させる数として「４」を特定し、第１行列ＭＡの第４行に含まれる分割行列を移動させる数として「６」を特定する。
【００７５】
これにより、ＤＬＵ１１１は、第１行列ＭＡにおいて同一列に位置する１以上の第１分割行列が異なるＤＰＵに記憶されるように、各ＤＰＵに対する１以上の第１分割行列の記憶を行うことが可能になる。
【００７６】
また、各ＤＰＵにおいて、図９に示すように各分割行列の記憶が行われている場合、ＤＰＵ００及びＤＰＵ０１は、それぞれ部分行列Ｃ０及び部分行列Ｃ１の算出を行う際に、分割行列Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８、Ａ９、Ａ１０及びＡ１１を同じ順序で用いることになる。そのため、この場合、ＤＰＵ００では、例えば、部分行列Ｃ０の算出を行う際に、ＤＰＵ０１の処理の待ち時間が発生する可能性がある。同様に、ＤＰＵ０１では、この場合、部分行列Ｃ１の算出を行う際に、ＤＰＵ００の処理の待ち時間が発生する可能性がある。
【００７７】
そこで、ＤＬＵ１１１は、図９に示す第２行列ＭＢの各分割行列のうち、上からｙ番目であって左からｘ番目に位置する分割行列（以下、Ｂ［ｙ］［ｘ］とも表記する）の配置を、以下の式２に従って変更する（Ｓ５）。
【００７８】
Ｂ［（Ｌ−ｙ＋ｘ＊（Ｌ／Ｍ））％Ｌ］［ｘ］  ・・・  （２）
具体的に、ＤＬＵ１１１は、例えば、図１０に示すように、分割行列Ｂ１、Ｂ５、Ｂ９、Ｂ１３、Ｂ１７、Ｂ２１、Ｂ２５、Ｂ２９、Ｂ３３、Ｂ３７、Ｂ４１及びＢ４５を、分割行列Ｂ３７、Ｂ４１、Ｂ４５、Ｂ１、Ｂ５、Ｂ９、Ｂ１３、Ｂ１７、Ｂ２１、Ｂ２５、Ｂ２９及びＢ３３の順になるように再配置してから各ＤＰＵに記憶する。
【００７９】
すなわち、ＤＬＵ１１１は、各行の分割行列を移動させる数として、例えば、第２行列ＭＢの行の数である「１２」を第２行列ＭＢの列の数である「４」で除算することによって算出される「３」を用いる。そのため、ＤＬＵ１１１は、例えば、図１０に示すように、第２行列ＭＢの第２列に含まれる分割行列を移動させる数として「３」を特定し、第２行列ＭＢの第３列に含まれる分割行列を移動させる数として「６」を特定する。
【００８０】
これにより、ＤＬＵ１１１は、第２行列ＭＢにおいて同一行に位置する１以上の第２分割行列が異なるＤＰＵに記憶されるように、各ＤＰＵに対する１以上の第２分割行列の記憶を行うことが可能になる。
【００８１】
なお、ＤＬＵ１１１は、Ｓ４の処理において、例えば、以下の式３に従って、第１行列ＭＡにおける各分割行列の配置を変更するものであってもよい。
【００８２】
Ａ［ｙ］［（（Ｌ−１）−ｘ＋（Ｎ−ｙ）＊（Ｌ／Ｎ））％Ｌ］  ・・・  （３）
具体的に、ＤＬＵ１１１は、例えば、図１１に示すように、分割行列Ａ０、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８、Ａ９、Ａ１０及びＡ１１を、分割行列Ａ１１、Ａ１０、Ａ９、Ａ８、Ａ７、Ａ６、Ａ５、Ａ４、Ａ３、Ａ２、Ａ１及びＡ０の順になるように再配置してから各ＤＰＵに記憶する。また、ＤＬＵ１１１は、例えば、分割行列Ａ１２、Ａ１３、Ａ１４、Ａ１５、Ａ１６、Ａ１７、Ａ１８、Ａ１９、Ａ２０、Ａ２１、Ａ２２及びＡ２３を、分割行列Ａ２１、Ａ２０、Ａ１９、Ａ１８、Ａ１７、Ａ１６、Ａ１５、Ａ１４、Ａ１３、Ａ１２、Ａ２３及びＡ２２の順になるように再配置してから各ＤＰＵに記憶する。
【００８３】
また、ＤＬＵ１１１は、Ｓ５の処理において、例えば、以下の式４に従って、第２行列ＭＢにおける各分割行列の配置を変更するものであってもよい。
【００８４】
Ｂ［（（Ｌ−１）−ｙ＋（Ｍ−ｘ）＊（Ｌ／Ｍ））％Ｌ］［ｘ］  ・・・  （４）
具体的に、ＤＬＵ１１１は、例えば、図１１に示すように、分割行列Ｂ０、Ｂ４、Ｂ８、Ｂ１２、Ｂ１６、Ｂ２０、Ｂ２４、Ｂ２８、Ｂ３２、Ｂ３６、Ｂ４０及びＢ４４を、分割行列Ｂ４４、Ｂ４０、Ｂ３６、Ｂ３２、Ｂ２８、Ｂ２４、Ｂ２０、Ｂ１６、Ｂ１２、Ｂ８、Ｂ４及びＢ０の順になるように再配置してから各ＤＰＵに記憶する。また、ＤＬＵ１１１は、例えば、分割行列Ｂ１、Ｂ５、Ｂ９、Ｂ１３、Ｂ１７、Ｂ２１、Ｂ２５、Ｂ２９、Ｂ３３、Ｂ３７、Ｂ４１及びＢ４５を、分割行列Ｂ３３、Ｂ２９、Ｂ２５、Ｂ２１、Ｂ１７、Ｂ１３、Ｂ９、Ｂ５、Ｂ１、Ｂ４５、Ｂ４１及びＢ３７の順になるように再配置してから各ＤＰＵに記憶する。
【００８５】
［Ｓ１１からＳ１５の処理の具体例］
次に、Ｓ１１からＳ１５の処理の具体例について説明を行う。図１２から図１４は、Ｓ１１からＳ１５の処理の具体例を説明する図である。図１２等におけるＡ０等は、図９等で説明した分割行列Ａ０に対応する。また、図１２等におけるＤＰＵ００等は、図２等で説明したＤＰＵ００に対応する。なお、以下、Ｓ４及びＳ５において図１１で説明した分割行列の再配置が行われたものとして説明を行う。
【００８６】
図１２に示す例において、例えば、ＤＰＵ００には、分割行列Ａ９、Ａ１０及びＡ１１と、分割行列Ｂ４０及びＢ４４と、部分行列Ｃ０とが記憶されている。そして、図１２に示すＤＰＵ００は、ＤＰＵ００に記憶された分割行列Ａ１１と分割行列Ｂ４４の乗算を行い、算出結果を部分行列Ｃ０に加算する。また、図１２に示すＤＰＵ００には、分割行列Ａ９及びＡ１０と分割行列Ｂ４０とが記憶されている。すなわち、分割行列Ａ９及びＡ１０と分割行列Ｂ４０は、次以降に乗加算が行われる分割行列としてＤＰＵ００に記憶されている。
【００８７】
続いて、ＤＰＵ００は、図１３に示すように、分割行列Ａ１０と分割行列Ｂ４０の乗算を行い、算出結果を部分行列Ｃ０に加算する。すなわち、ＤＰＵ００は、図１２に示す状態において待機させていた分割行列のうち、最も先にＤＰＵ００に記憶された分割行列の組合せによる乗加算を行う。
【００８８】
また、図１３に示すＤＰＵ００は、図１２に示す状態においてＤＰＵ００とトラース構造を構成するＤＰＵ０１に記憶されていた分割行列Ａ８と、同じくトラース構造を構成するＤＰＵ０４に記憶されていた分割行列Ｂ３６とを受信している。一方、図１３に示すＤＰＵ００は、図１２に示す状態において乗加算が行われていた分割行列Ａ１１と分割行列Ｂ４４とを、それぞれＤＰＵ００とトラース構造を構成するＤＰＵ０３とＤＰＵ２０とに送信している。
【００８９】
その後、ＤＰＵ００は、図１４に示すように、分割行列Ａ９と分割行列Ｂ３６の乗算を行い、算出結果を部分行列Ｃ０に加算する。すなわち、ＤＰＵ００は、図１３に示す状態において待機させていた分割行列のうち、最も先にＤＰＵ００に記憶された分割行列の組合せによる乗加算を行う。
【００９０】
また、図１４に示すＤＰＵ００は、図１３に示す状態においてＤＰＵ００とトラース構造を構成するＤＰＵ０１に記憶されていた分割行列Ａ７と、同じくトラース構造を構成するＤＰＵ０４に記憶されていた分割行列Ｂ３２とを受信している。一方、図１４に示すＤＰＵ００は、図１３に示す状態において乗加算が行われていた分割行列Ａ１０と分割行列Ｂ４０とを、それぞれＤＰＵ００とトラース構造を構成するＤＰＵ０３とＤＰＵ２０とに送信している。
【００９１】
すなわち、ＤＰＵ００は、トラース構造に従って分割行列の循環を繰り返すことによって、部分行列Ｃ０の算出に要する分割行列の全てを受信することが可能になる。そのため、ＤＰＵ００は、メモリ１１２に対してアクセスを行うことなく、部分行列Ｃ０の算出を行うことが可能になる。
【００９２】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１５から図１８は、第１の実施の形態における行列演算処理の詳細を説明するフローチャートである。また、図１９から図３０は、第１の実施の形態における行列演算処理の詳細を説明する図である。図１９から図３０を参照しながら、図１５から図１８に示す行列演算処理を説明する。
【００９３】
情報処理装置１の第１行列分割部１２１は、図１５に示すように、演算開始タイミングまで待機する（Ｓ３１のＮＯ）。そして、演算開始タイミングになった場合（Ｓ３１のＹＥＳ）、第１行列分割部１２１は、例えば、第１行列ＭＡを、行方向においてＭとＮの最小公倍数と整数（以下、第１整数とも呼ぶ）とを乗算した数で分割し、列方向においてＮと整数（以下、第２整数とも呼ぶ）とを乗算した数で分割することによって１以上の第１分割行列を生成する（Ｓ３２）。
【００９４】
具体的に、第１行列分割部１２１は、例えば、図１９に示すように、第１行列ＭＡを、行方向においてＭとＮの最小公倍数の１倍の数で分割し、列方向においてＮの２倍の数で分割することにより、１以上の第１分割行列を生成する。すなわち、第１行列分割部１２１は、この場合、図９で説明した分割行列と比較して、第２行列ＭＡを２倍の数の第１分割行列に分割する。
【００９５】
また、情報処理装置１の第２行列分割部１２２は、例えば、第２行列ＭＢを、行方向においてＭと整数（以下、第３整数とも呼ぶ）とで乗算した数で分割し、列方向においてＭとＮの最小公倍数と整数（以下、第４整数とも呼ぶ）とで乗算した数で分割することによって１以上の第２分割行列を生成する（Ｓ３３）。
【００９６】
具体的に、第２行列分割部１２２は、例えば、図１９に示すように、第２行列ＭＢを、行方向においてＭの２倍の数で分割し、列方向においてＭとＮの最小公倍数の２倍の数で分割することにより、１以上の第２分割行列を生成する。すなわち、第２行列分割部１２２は、この場合、図９で説明した分割行列と比較して、第２行列ＭＢを４倍の数の第２分割行列に分割する。
【００９７】
続いて、情報処理装置１の行列記憶部１２３は、例えば、第１行列ＭＡにおいて同一列に位置する第２整数毎の第１分割行列が、ＤＬＵ１１１において異なる列に配置されたＤＰＵに記憶され、かつ、行方向の数が第１整数であって列方向の数が第２整数である第１分割行列からなる部分行列がＤＰＵの記憶部のそれぞれに記憶されるように、１以上の第１分割行列をＤＰＵの記憶部にそれぞれ記憶する（Ｓ３４）。
【００９８】
すなわち、例えば、第１行列分割部１２１が第１行列ＭＡをＤＰＵの数よりも多い数の第１分割行列に分割した場合、行列記憶部１２３は、少なくとも１個のＤＰＵにおいて複数の第１分割行列からなる部分行列の記憶を行う。
【００９９】
また、行列記憶部１２３は、例えば、第２行列ＭＢにおいて同一行に位置する１以上の第２分割行列が、ＤＬＵ１１１において異なる行に配置されたＤＰＵに記憶されるように、１以上の第２分割行列のうち、行方向の数がＭであって列方向の数がＭとＮの最小公倍数である１以上の第２分割行列をＤＰＵの記憶部にそれぞれ記憶する（Ｓ３５）。
【０１００】
すなわち、ＤＬＵ１１１は、Ｓ３３の処理において生成された１以上の第２分割行列の数がＤＰＵの数よりも多い場合、各ＤＰＵに少なくとも１以上の第２分割行列が記憶されたことに応じて、トラース構造を構成するＤＰＵ間において分割行列の循環を開始することが可能になる。そのため、ＤＬＵ１１１は、例えば、Ｓ３５の処理において、生成された１以上の第２分割行列の一部のみをＤＰＵの記憶部のそれぞれに記憶して後続処理を行う。
【０１０１】
具体的に、行列記憶部１２３は、図２０に示すように、例えば、図１９で説明した１以上の第２分割行列のうち、１行目から１２行目に位置する第２分割行列であって１列目から４列目に位置する第２分割行列を各ＤＰＵの記憶部のそれぞれに記憶する。
【０１０２】
その後、行列演算部１２４は、図１６に示すように、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列と１以上の第２分割行列との第１の積を、記憶部に記憶された第１結果行列に加算する（Ｓ４１）。
【０１０３】
具体的に、情報処理装置１の行列演算部１２４は、例えば、図２０に示すように、Ｓ３４の処理で記憶された第１分割行列と、Ｓ３５の処理で記憶された第２分割行列（Ｓ３３の処理で生成された１以上の第２分割行列の一部）との第１の積を、第１結果行列（図１９に示す第３行列ＭＣの１列目から４列目に位置する部分行列）に加算する。
【０１０４】
これにより、行列演算部１２４は、各ＤＰＵに対する第２行列ＭＢの一部の記憶が完了したことに応じて、ＤＰＵに対する第２行列ＭＢの全ての記憶の完了を待つことなく、第１行列ＭＡと第２行列ＭＢの一部との積の算出を開始することが可能になる。また、行列記憶部１２３は、行列演算部１２４が第１行列ＭＡと第２行列ＭＢの一部の積の算出を行っている間に、ＤＰＵに対する第２行列ＭＢの他の一部の記憶を行うことが可能になる。
【０１０５】
そのため、情報処理装置１は、各ＤＰＵに対する第２行列ＭＢの記憶と、第１行列ＭＡと第２行列ＭＢとの積の算出とを並行して行うことが可能になる。したがって、情報処理装置１は、第１行列ＭＡと第２行列ＭＢとの積の算出をより効率的（高速）に行うことが可能になる。
【０１０６】
なお、行列記憶部１２３は、Ｓ３５の処理において、例えば、第２行列ＭＢにおいて同一行に位置する第３整数毎の第２分割行列が、ＤＬＵ１１１において異なる行に配置されたＤＰＵに記憶され、かつ、行方向の数が第３整数であって列方向の数が第４整数である第２分割行列からなる部分行列がＤＰＵの記憶部のそれぞれに記憶されるように、１以上の第２分割行列をＤＰＵの記憶部にそれぞれ記憶するものであってもよい。この場合、ＤＬＵ１１１は、１以上の第２分割行列の全てがＤＰＵの記憶部に記憶されてから後続処理を行う。以下、Ｓ３４からＳ４１の処理の詳細について説明を行う。
【０１０７】
［Ｓ３４からＳ４１の処理の詳細］
次に、Ｓ３４からＳ４１の処理の詳細について説明を行う。図１７及び図１８は、Ｓ３４からＳ４１の処理の詳細を説明するフローチャートである。
【０１０８】
初めに、ＤＰＵの構成について説明を行う。図２１は、ＤＰＵ００の構成を示す図である。ＤＰＵ００は、図２１に示すように、１６個配置された演算器（以下、ＤＰＥまたは単位演算器とも呼ぶ）を有する。そして、ＤＰＵ００では、各ＤＰＥがトラース構造ＴＲ３１を構成している。
【０１０９】
具体的に、図２１に示す例において、例えば、ＤＰＥ０は、ＤＰＥ１５及びＤＰＥ２と接続し、ＤＰＥ１は、ＤＰＥ０及びＤＰＥ２と接続している。これにより、例えば、ＤＰＥ０は、トラース構造ＴＲ３１を構成する他のＤＰＥがそれぞれ記憶する行列を共有（参照）することが可能になる。図２１に含まれる他の構成については説明を省略する。
【０１１０】
続いて、ＤＰＥの構成について説明を行う。図２２は、ＤＰＥ０の構成を示す図である。ＤＰＥ０は、図２２に示すように、部分行列等を記憶するレジスタＤＰＥ０ａ（以下、単位記憶部ＤＰＥ０ａとも呼ぶ）と、部分行列の積の算出等を行う演算器ＤＰＥ０ｂとを有する。すなわち、ＤＰＥ０からＤＰＵ１５が有する各レジスタは、ＤＰＵ００の記憶部として機能する。なお、以下、ＤＰＥ０からＤＰＵ１５が有する各レジスタを総称して、単位記憶部ＤＰＥａとも呼ぶ。
【０１１１】
次に、Ｓ３４からＳ４１の処理のフローチャートについて説明を行う。
【０１１２】
行列演算部１２４は、ＤＰＵ毎に、各ＤＰＵに記憶された１以上の第１分割行列を行方向及び列方向においてｋ（ｋは１以上の整数）でそれぞれ分割することによって、１以上の単位分割値を生成する（Ｓ６１）。すなわち、例えば、ｋが各ＤＰＵに配置されたＤＰＥの数である場合、行列演算部１２４は、各ＤＰＵに記憶された１以上の第１分割行列を２５６（１６×１６）分割することによって１以上の単位分割値を生成する。具体的に、行列演算部１２４は、例えば、第１行列ＭＡのうち、ＤＰＵ００に記憶された分割行列である分割行列Ａ０、Ａ１及びＡ２を２５６分割することによって１以上の単位分割値を生成する。
【０１１３】
そして、行列演算部１２４は、ＤＰＵ毎に、各ＤＰＵに記憶された１以上の第１分割行列において同一列に位置する１以上の単位分割値が同一のＤＰＥの単位記憶部ＤＰＥａに記憶されるように、１以上の単位分割値をＤＰＥの単位記憶部ＤＰＥａのそれぞれに記憶する（Ｓ６２）。
【０１１４】
また、行列演算部１２４は、ＤＰＵ毎に、各ＤＰＵに記憶された１以上の第２分割行列を列方向においてｋで分割することによって、１以上の単位分割行列を生成する（Ｓ６３）。すなわち、例えば、ｋが各ＤＰＵに配置されたＤＰＥの数である場合、行列演算部１２４は、各ＤＰＵに記憶された１以上の第２分割行列を列方向において１６分割することにより１以上の単位分割行列を生成する。具体的に、行列演算部１２４は、例えば、第２行列ＭＢのうち、ＤＰＵ００に記憶された分割行列である分割行列Ｂ０及びＢ１を列方向において１６分割することによって１以上の単位分割行列を生成する。
【０１１５】
そして、行列演算部１２４は、ＤＰＵ毎に、１以上の単位分割行列をＤＰＥの単位記憶部ＤＰＥａのそれぞれに記憶する（Ｓ６４）。
【０１１６】
次に、行列演算部１２４は、図１８に示すように、ＤＰＥ毎に、単位記憶部ＤＰＥａに記憶された１以上の単位分割値のうち、各ＤＰＥの識別情報に対応する単位分割値と、記憶部ＤＥＰａに記憶された１以上の単位分割行列との第３の積を、単位記憶部ＤＰＥａに記憶された第２結果行列に加算する（Ｓ７１）。
【０１１７】
続いて、行列演算部１２４は、ＤＰＥ毎に、単位記憶部ＤＰＥａに記憶された１以上の単位分割行列を、トラース接続された他のＤＰＥのうち、直接接続されたＤＰＥに送信する（Ｓ７２）。
【０１１８】
その後、行列演算部１２４は、ＤＰＥ毎に、他のＤＰＥから受信した単位分割行列と、単位記憶部ＤＰＥａに記憶された１以上の単位分割値のうち、単位分割行列を送信した他のＤＰＥの識別情報に対応する単位分割値との第４の積を、単位記憶部ＤＰＥａに記憶された第２結果行列に加算する（Ｓ７３）。
【０１１９】
そして、行列演算部は、各ＤＰＥに記憶された前記１以上の単位分割行列から算出される積が、トラース接続されたＤＰＥのそれぞれにおいて第２結果行列に加算されたか否かを判定する（Ｓ７４）。その結果、トラース接続されたＤＰＥのそれぞれにおいて第２結果行列に加算されたと判定された場合（Ｓ７４のＹＥＳ）、行列演算部１２４は、Ｓ３４からＳ４１の処理を終了する。一方、トラース接続されたＤＰＥのそれぞれにおいて第２結果行列に加算されていないと判定された場合（Ｓ７４のＮＯ）、行列演算部１２４は、Ｓ７２以降の処理を再度行う。
【０１２０】
［Ｓ６１からＳ７４の処理の具体例］
次に、Ｓ６１からＳ７４の処理の具体例について説明を行う。図２３から図２８は、Ｓ６１からＳ７４の処理の具体例について説明を行う図である。具体的に、図２３から図２８は、ＤＰＵ００において行われるＳ６１からＳ７４の処理の具体例を説明する図である。なお、図２３から図２８では、単位分割値及び単位分割行列の一部についてのみ表記する。
【０１２１】
行列演算部１２４は、例えば、ＤＰＵ００に記憶された第１行列ＭＡの分割行列である分割行列Ａ０、Ａ１及びＡ２を２５６分割し、２５６個の単位分割値を生成する（Ｓ６１）。そして、行列演算部１２４は、生成した２５６個の単位分割値を、同一列に位置する単位分割値毎に各ＤＰＥの単位記憶部ＤＰＥａにそれぞれ記憶する（Ｓ６２）。
【０１２２】
具体的に、行列演算部１２４は、図２３に示すように、例えば、生成した２５６個の単位分割値のうち、単位分割値Ａ００、Ａ０１からＡ０ＦをＤＰＥ０に記憶し、単位分割値Ａ１０、Ａ１１及びＡ１ＦをＤＰＥ１に記憶する。
【０１２３】
また、行列演算部１２４は、ＤＰＵ００に記憶された第２行列ＭＢの分割行列である分割行列Ｂ０及びＢ１を列方向において１６分割し、１６個の単位分割行列を生成する（Ｓ６３）。そして、行列演算部１２４は、生成した１６個の単位分割行列を、各ＤＰＥの単位記憶部ＤＰＥａにそれぞれ記憶する（Ｓ６４）。
【０１２４】
具体的に、行列演算部１２４は、図２３に示すように、例えば、生成した１６個の単位分割行列のうち、値Ｂ００からＢ０Ｆを含む単位分割行列をＤＰＥ０に記憶し、値Ｂ１０からＢ１Ｆを含む単位分割行列をＤＰＥ１に記憶する。
【０１２５】
その後、行列演算部１２４は、ＤＰＥ０に記憶された単位分割値のうち、ＤＰＥ０の識別情報に対応する単位分割値と、ＤＰＥ０に記憶された単位分割行列との第３の積を、ＤＰＥ０に記憶された第２結果行列に加算する（Ｓ７１）。各ＤＰＥの識別番号は、例えば、ＤＰＥの末尾に付加された番号である。また、単位分割値における識別番号は、例えば、各単位分割値が記憶される位置毎に付加される番号である。
【０１２６】
具体的に、行列演算部１２４は、図２３に示すように、ＤＰＥ０の識別情報及び単位分割値Ａ００の識別情報が「０」である場合、ＤＰＥ０に記憶された単位分割値から単位分割値Ａ００を特定する。そして、行列演算部１２４は、この場合、図２３に示すように、ＤＰＥ０に記憶された値Ｂ００からＢ０Ｆを含む単位分割行列と単位分割値Ａ００とを乗算し、ＤＰＥ０に記憶された第２結果行列Ｃ００からＣ０Ｆに加算する。
【０１２７】
同様に、行列演算部１２４は、図２４に示すように、ＤＰＥ１の識別情報及び単位分割値Ａ１１の識別情報が「１」である場合、ＤＰＥ１に記憶された単位分割値から単位分割値Ａ１１を特定する。そして、行列演算部１２４は、この場合、図２４に示すように、ＤＰＥ１に記憶された値Ｂ１０からＢ１Ｆを含む単位分割行列と単位分割値Ａ１１とを乗算し、ＤＰＥ１に記憶された第２結果行列Ｃ１０からＣ１Ｆに加算する。
【０１２８】
続いて、行列演算部１２４は、例えば、各ＤＰＥに記憶された１以上の単位分割行列を、トラース接続された他の単位演算器のうち、直接接続されたＤＰＥに送信する（Ｓ７２）。
【０１２９】
具体的に、行列演算部１２４は、図２５に示すように、例えば、ＤＰＥ１に記憶された値Ｂ１０からＢ１Ｆを含む単位分割行列をＤＰＥ２に送信し、ＤＰＥ０に記憶された値Ｂ００からＢ０Ｆを含む単位分割行列をＤＰＥ１に送信する。
【０１３０】
そして、行列演算部１２４は、例えば、ＤＰＥ１５から受信した単位分割行列と、ＤＰＥ１５に記憶された単位分割値のうち、受信した単位分割行列を最初に記憶していたＤＰＥ１５の識別情報に対応する単位分割値との第４の積を、ＤＰＥ０に記憶された第２結果行列に加算する（Ｓ７３）。
【０１３１】
具体的に、行列演算部１２４は、図２５に示すように、ＤＰＥ０が受信した単位分割行列を最初に記憶していたＤＰＥ１５の識別情報及び単位分割値Ａ０Ｆの識別情報が「１５」である場合、ＤＰＥ０に記憶された単位分割値から単位分割値Ａ０Ｆを特定する。そして、行列演算部１２４は、図２５に示すように、ＤＰＥ０に記憶された値ＢＦ０からＢＦＦを含む単位分割行列と単位分割値Ａ０Ｆとを乗算し、ＤＰＥ０に記憶された第２結果行列Ｃ００からＣ０Ｆに加算する。
【０１３２】
同様に、行列演算部１２４は、図２６に示すように、ＤＰＥ１が受信した単位分割行列を最初に記憶していたＤＰＥ０の識別情報及び単位分割値Ａ１０の識別情報が「０」である場合、ＤＰＥ１に記憶された単位分割値から単位分割値Ａ１０を特定する。そして、行列演算部１２４は、図２６に示すように、ＤＰＥ１に記憶された値Ｂ００からＢ０Ｆを含む単位分割行列と単位分割値Ａ１０とを乗算し、ＤＰＥ１に記憶された第２結果行列Ｃ１０からＣ１Ｆに加算する。
【０１３３】
そして、Ｓ７２及びＳ７３の処理がトラース接続されたＤＰＥの全てにおいて行われていない場合（Ｓ７４のＮＯ）、行列演算部１２４は、Ｓ７２以降の処理を再度行う。
【０１３４】
具体的に、行列演算部１２４は、図２７に示すように、ＤＰＥ０が受信した単位分割行列を最初に記憶していたＤＰＥ１４の識別情報及び単位分割値Ａ０Ｅの識別情報が「１４」である場合、ＤＰＥ０に記憶された単位分割値から単位分割値Ａ０Ｅを特定する。そして、行列演算部１２４は、図２７に示すように、ＤＰＥ０に記憶された値ＢＥ０からＢＥＦを含む単位分割行列と単位分割値Ａ０Ｅとを乗算し、ＤＰＥ０に記憶された第２結果行列Ｃ００からＣ０Ｆに加算する。
【０１３５】
同様に、行列演算部１２４は、図２８に示すように、ＤＰＥ１が受信した単位分割行列を最初に記憶していたＤＰＥ１５の識別情報及び単位分割値Ａ１Ｆの識別情報が「１５」である場合、ＤＰＥ１に記憶された単位分割値から単位分割値Ａ１Ｆを特定する。そして、行列演算部１２４は、図２８に示すように、ＤＰＥ１に記憶された値ＢＦ０からＢＦＦを含む単位分割行列と単位分割値Ａ１Ｆとを乗算し、ＤＰＥ１に記憶された第２結果行列Ｃ１０からＣ１Ｆに加算する。
【０１３６】
これにより、行列演算部１２４は、各ＤＰＵにおける行列の積の算出をより効率的に行うことが可能になる。
【０１３７】
図１６に戻り、行列送受信部１２５は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第１分割行列を、行方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する（Ｓ４２）。また、行列送受信部１２５は、例えば、ＤＰＵ毎に、記憶部に記憶された１以上の第２分割行列を、列方向においてトラース接続された他のＤＰＵのうち、直接接続されたＤＰＵに送信する（Ｓ４３）。
【０１３８】
さらに、行列演算部１２４は、例えば、ＤＰＵ毎に、行列送受信部１２５が他のＤＰＵから１以上の第１分割行列と１以上の第２分割行列とを受信したことに応じて、受信した１以上の第１分割行列と１以上の第２分割行列との第２の積を、記憶部に記憶された第１結果行列に加算する（Ｓ４４）。
【０１３９】
そして、行列演算部１２４は、各ＤＰＵの記憶部に記憶された１以上の第１分割行列から算出される積がトラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算され、各ＤＰＵの記憶部に記憶された１以上の第２分割行列から算出される積がトラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されたか否かを判定する（Ｓ４５）。
【０１４０】
その結果、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されていないと判定した場合（Ｓ４５のＮＯ）、行列演算部１２４は、Ｓ４２以降の処理を再度行う。
【０１４１】
一方、トラース接続されたＤＰＵのそれぞれにおいて第１結果行列に加算されたと判定した場合（Ｓ４５のＹＥＳ）、行列演算部１２４は、Ｓ３４からＳ４５の処理が第２分割行列の全てのついて行われたか否かを判定する（Ｓ４６）。その結果、Ｓ３４からＳ４５の処理が第２分割行列の全てのついて行われたと判定した場合（Ｓ４６のＹＥＳ）、行列演算部１２４は、行列演算処理を終了する。また、Ｓ３４からＳ４５の処理が第２分割行列の全てのついて行われていないと判定した場合（Ｓ４６のＮＯ）、行列演算部１２４は、Ｓ３４以降の処理を再度行う。
【０１４２】
具体的に、行列記憶部１２３は、例えば、Ｓ３５の処理を２回目に行う場合、図２９に示すように、図１９で説明した１以上の第２分割行列のうち、１３行目から２４行目に位置する第２分割行列であって１列目から４列目に位置する第２分割行列のみを各ＤＰＵの記憶部に記憶する。そして、行列演算部１２４は、例えば、Ｓ４１の処理を２回目に行う場合、Ｓ３４の処理でＤＰＵの記憶部に記憶された第１分割行列と、２回目のＳ３５の処理でＤＰＵの記憶部に記憶された第２分割行列との第１の積を、第１結果行列（図１９に示す第３行列ＭＣの１列目から４列目に位置する部分行列）に加算する。
【０１４３】
さらに、行列記憶部１２３は、例えば、Ｓ３５の処理を３回目に行う場合、図３０に示すように、図１９で説明した１以上の第２分割行列のうち、１行目から１２行目に位置する第２分割行列であって５列目から８列目に位置する第２分割行列のみを各ＤＰＵの記憶部に記憶する。そして、行列演算部１２４は、例えば、Ｓ４１の処理を３回目に行う場合、Ｓ３４の処理でＤＰＵの記憶部に記憶された第１分割行列と、３回目のＳ３５の処理でＤＰＵの記憶部に記憶された第２分割行列との第１の積を、第１結果行列（図１９に示す第３行列ＭＣにおける５列目から８列目に位置する部分行列）に加算する。Ｓ３５の処理等が４回目に行われる場合の具体例については説明を省略する。
【０１４４】
これにより、情報処理装置１は、第１行列ＭＡと第２行列ＭＢとの積の算出を効率的（高速）に行うことが可能になる。
【０１４５】
以上の実施の形態をまとめると、以下の付記の通りである。
【０１４６】
（付記１）
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、第１行列と第２行列との積を算出する演算方法であって、
前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成し、
前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成し、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、
前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記第１分割行列を送信する工程と、前記第２分割行列を送信する工程と、前記第２の積を加算する工程とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算方法。
【０１４７】
（付記２）
付記１において、さらに、
他の演算器から前記１以上の第１分割行列または前記１以上の第２分割行列を受信した場合、受信した前記１以上の第１分割行列または前記１以上の第２分割行列を前記記憶部に記憶し、
前記第２の積を加算する工程では、
前記演算器毎に、各演算器の前記記憶部から、最も先に受信した前記１以上の第１分割行列と前記１以上の第２分割行列とを順次取得し、
前記演算器毎に、取得した前記１以上の第１分割行列と前記１以上の第２分割行列との前記第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に順次加算する、
ことを特徴とする演算方法。
【０１４８】
（付記３）
付記１において、
前記第１分割行列を生成する工程では、前記第１行列を、前記行方向において前記最小公倍数と第１整数とを乗算した数で分割し、前記列方向において前記Ｎと第２整数とを乗算した数で分割することによって前記１以上の第１分割行列を生成し、
前記第２分割行列を生成する工程では、前記第２行列を、前記行方向において前記Ｍと第３整数とを乗算した数で分割し、前記列方向において前記最小公倍数と第４整数とを乗算した数で分割することによって前記１以上の第２分割行列の生成を行い、
前記第１分割行列を記憶する工程では、前記第１行列において同一列に位置する前記第２整数毎の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶され、前記行方向の数が前記第１整数であって前記列方向の数が前記第２整数である第１分割行列が前記記憶部のそれぞれに記憶されるように、前記１以上の第１分割行列を前記記憶部にそれぞれ記憶し、
前記第２分割行列を記憶する工程では、前記第２行列において同一行に位置する前記第３整数毎の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶され、前記行方向の数が前記第３整数であって前記列方向の数が前記第４整数である第２分割行列が前記記憶部のそれぞれに記憶されるように、前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する、
ことを特徴とする演算方法。
【０１４９】
（付記４）
付記１において、
前記第２分割行列を生成する工程では、前記第２行列を、前記行方向において前記Ｍと第１整数とを乗算した数で分割し、前記列方向において前記最小公倍数と第２整数とを乗算した数で分割することによって前記１以上の第２分割行列の生成を行い、
前記第２分割行列を記憶する工程では、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、前記１以上の第２分割行列のうち、前記行方向の数が前記Ｍであって前記列方向の数が前記最小公倍数である前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、さらに、
前記第２分割行列を記憶する工程と、前記第１の積を加算する工程と、前記第１分割行列を送信する工程と、前記第２分割行列を送信する工程と、前記第２の積を加算する工程と、前記積の加算を繰り返す工程とを、各工程が前記１以上の第２分割行列の全てについて行われるまで繰り返す、
ことを特徴とする演算方法。
【０１５０】
（付記５）
付記４において、
前記各工程を繰り返す工程では、次に各工程が行われる前記１以上の第２分割行列についての前記第２分割行列を記憶する工程を並行して行う、
ことを特徴とする演算方法。
【０１５１】
（付記６）
付記１において、
前記演算器のそれぞれは、トラース接続されたｋ個（ｋは１以上の整数）の単位演算器を有し、
前記第１の積を加算する工程では、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、行方向及び列方向のそれぞれにおいて前記ｋで分割することによって、１以上の単位分割値を生成し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列において同一列に位置する前記１以上の単位分割値が同一の前記単位演算器に記憶されるように、生成された前記１以上の単位分割値を前記単位演算器の単位記憶部のそれぞれに記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、列方向において前記ｋで分割することによって、１以上の単位分割行列を生成し、
前記演算器毎に、生成された前記１以上の単位分割行列を前記単位演算器の前記単位記憶部のそれぞれに記憶し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割値のうち、各単位演算器を識別する識別情報に対応する単位分割値と、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列との第３の積を、各単位演算器の前記単位記憶部に記憶された第２結果行列に加算し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列を、トラース接続された他の単位演算器のうち、直接接続された単位演算器に送信し、
前記単位演算器毎に、他の単位演算器から前記１以上の単位分割行列を受信したことに応じて、他の単位演算器から受信した前記１以上の単位分割行列と、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割値のうち、受信した前記１以上の単位分割行列を最初に記憶していた他の単位演算器を識別する識別情報に対応する単位分割値との第４の積を、前記単位記憶部に記憶された前記第２結果行列に加算し、
前記単位分割行列を送信する工程と、前記第４の積を加算する工程とを、各単位演算器の前記単位記憶部に記憶された前記１以上の単位分割行列から算出される積が、トラース接続された前記単位演算器のそれぞれにおいて前記第２結果行列に加算されるまで繰り返し、
前記第１分割行列を送信する工程では、前記単位演算器毎に、各単位演算器の前記単位記憶部のそれぞれに記憶された前記第２結果行列からなる行列を、前記１以上の第１分割行列として送信し、
前記第２分割行列を送信する工程では、前記単位演算器毎に、各単位演算器の前記単位記憶部のそれぞれに記憶された前記第２結果行列からなる行列を、前記１以上の第２分割行列として送信する、
ことを特徴とする演算方法。
【０１５２】
（付記７）
付記６において、
前記単位演算器は、各単位演算器を識別する第１識別情報を有し、
前記単位分割値を記憶する工程では、前記単位演算器毎に、前記単位分割値と各単位分割値を識別する第２識別情報とを対応付けて記憶し、
前記第３の積を加算する工程では、
前記単位演算器毎に、各単位演算器に対応する前記第１識別情報を特定し、
前記単位演算器毎に、各単位演算器の前記単位記憶部に記憶された前記単位分割値のうち、特定した前記第１識別情報に対応する単位分割値と、各単位演算器の前記単位記憶部に記憶された前記単位分割行列との前記第３の積を、各単位演算器の前記単位記憶部に記憶された前記第２結果行列に加算し、
前記第４の積を加算する工程では、
前記単位演算器毎に、受信した前記単位分割行列を最初に記憶していた他の単位演算器に対応する第２識別情報を特定し、
前記単位演算器毎に、受信した前記単位分割行列と、各単位演算器の前記単位記憶部に記憶された前記単位分割値のうち、特定した前記第２識別情報に対応する単位分割値との前記第４の積を、前記単位記憶部に記憶された前記第２結果行列に加算する、
ことを特徴とする演算方法。
【０１５３】
（付記８）
付記１において、さらに、
前記積の加算を繰り返す工程の後、前記第１結果行列を出力する、
ことを特徴とする演算方法。
【０１５４】
（付記９）
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置において、
第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成する第１行列分割部と、
第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成する第２行列分割部と、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する行列記憶部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算する行列演算部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信する行列送受信部と、を有し、
前記行列演算部は、前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記行列送受信部は、前記１以上の第１分割行列の送信と、前記１以上の第２分割行列の送信とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返し、
前記行列演算部は、前記第２の積の加算を、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算装置。
【０１５５】
（付記１０）
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置に、第１行列と第２行列との積を算出する処理を実行させる演算プログラムであって、
前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成し、
前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成し、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、
前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、
前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記第１分割行列を送信する処理と、前記第２分割行列を送信する処理と、前記第２の積を加算する処理とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
処理を前記情報処理装置に実行させることを特徴とする演算プログラム。
【０１５６】
（付記１１）
行方向に配置されたＭ（Ｍは１以上の整数）個の演算器と列方向に配置されたＮ（Ｎは１以上の整数）個の演算器とがそれぞれトラース接続されたＭ×Ｎ個の演算器を有する情報処理装置と、
第１行列及び第２行列を記憶する記憶装置と、を有し、
前記情報処理装置は、
前記記憶装置に記憶された前記第１行列を、前記行方向において前記Ｍと前記Ｎとの最小公倍数で分割し、前記列方向において前記Ｎで分割することによって１以上の第１分割行列を生成する第１行列分割部と、
前記記憶装置に記憶された前記第２行列を、前記行方向において前記Ｍで分割し、前記列方向において前記最小公倍数で分割することによって１以上の第２分割行列を生成する第２行列分割部と、
前記第１行列において同一列に位置する前記１以上の第１分割行列が、前記情報処理装置において異なる列に配置された前記演算器に記憶されるように、生成された前記１以上の第１分割行列を前記演算器の記憶部にそれぞれ記憶し、前記第２行列において同一行に位置する前記１以上の第２分割行列が、前記情報処理装置において異なる行に配置された前記演算器に記憶されるように、生成された前記１以上の第２分割行列を前記記憶部にそれぞれ記憶する行列記憶部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列と前記１以上の第２分割行列との第１の積を、各演算器の前記記憶部に記憶された第１結果行列に加算する行列演算部と、
前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第１分割行列を、前記行方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信し、前記演算器毎に、各演算器の前記記憶部に記憶された前記１以上の第２分割行列を、前記列方向においてトラース接続された他の演算器のうち、直接接続された演算器に送信する行列送受信部と、を有し、
前記行列演算部は、前記演算器毎に、他の演算器から前記１以上の第１分割行列と前記１以上の第２分割行列とを受信したことに応じて、受信した前記１以上の第１分割行列と前記１以上の第２分割行列との第２の積を、各演算器の前記記憶部に記憶された前記第１結果行列に加算し、
前記行列送受信部は、前記１以上の第１分割行列の送信と、前記１以上の第２分割行列の送信とを、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返し、
前記行列演算部は、前記第２の積の加算を、各演算器の前記記憶部に記憶された前記１以上の第１分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算され、各演算器の前記記憶部に記憶された前記１以上の第２分割行列から算出される積が、トラース接続された前記演算器のそれぞれにおいて前記第１結果行列に加算されるまで繰り返す、
ことを特徴とする演算システム。
【符号の説明】
【０１５７】
１：情報処理装置            ２：情報処理装置
１０１：ＣＰＵ              １０２：メモリ
１１１：ＤＬＵ              １１２：メモリ
【図１】
2018139045.tif 000003
【図２】
2018139045.tif 000004
【図３】
2018139045.tif 000005
【図４】
2018139045.tif 000006
【図５】
2018139045.tif 000007
【図６】
2018139045.tif 000008
【図７】
2018139045.tif 000009
【図８】
2018139045.tif 000010
【図９】
2018139045.tif 000011
【図１０】
2018139045.tif 000012
【図１１】
2018139045.tif 000013
【図１２】
2018139045.tif 000014
【図１３】
2018139045.tif 000015
【図１４】
2018139045.tif 000016
【図１５】
2018139045.tif 000017
【図１６】
2018139045.tif 000018
【図１７】
2018139045.tif 000019
【図１８】
2018139045.tif 000020
【図１９】
2018139045.tif 000021
【図２０】
2018139045.tif 000022
【図２１】
2018139045.tif 000023
【図２２】
2018139045.tif 000024
【図２３】
2018139045.tif 000025
【図２４】
2018139045.tif 000026
【図２５】
2018139045.tif 000027
【図２６】
2018139045.tif 000028
【図２７】
2018139045.tif 000029
【図２８】
2018139045.tif 000030
【図２９】
2018139045.tif 000031
【図３０】
2018139045.tif 000032