(57)【特許請求の範囲】
【請求項１】
計算手段と記憶手段を有する複数の計算ノードを備え、配列データを前記計算ノードの前記記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを前記計算手段上で並列実行する分散メモリ型マルチプロセッサシステムであって、
前記計算ノードが、
各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信手段を備え、
前記マスク付き逆シフト通信手段が、
マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析手段と、
マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、前記並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析手段と、
前記並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析手段と、
マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析手段と、
マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析手段と、
マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、前記マスク付き逆シフト通信バッファに対応する配列要素から、前記マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、前記マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成手段とを備える
ことを特徴とする分散メモリ型マルチプロセッサシステム。
【請求項２】
前記並列化基準アクセスパタン解析手段が、
各並列ループネストに対して、並列化の基準配列の各分散次元において、基準アクセスパタンの添字が、所定の条件を満たすかどうかを検査し、所定の条件を満たす並列ループネストのみを、マスク付き逆シフト通信対象の並列ループネストとして選択することを特徴とする請求項１に記載の分散メモリ型マルチプロセッサシステム。
【請求項３】
前記アクセスパタン解析手段が、
前記データマッピング解析手段が抽出した、並列化の基準配列と同一のマッピングを持つ各配列の、並列ループネスト中における各出現について、並列化の基準配列の分散次元に対応する各次元の添字が、所定の条件を満たすアクセスパタンを、マスク付き逆シフト通信対象のアクセスパタンとして選択することを特徴とする請求項１又は請求項２に記載の分散メモリ型マルチプロセッサシステム。
【請求項４】
前記逆シフトベクトル解析手段が、
前記並列化基準アクセスパタン解析手段が選択したマスク付き逆シフト通信対象の並列ループネストのそれぞれに対し、並列化の基準配列の分散次元における基準アクセスパタンの添字と、前記アクセスパタン解析手段が選択した各マスク付き逆シフト通信対象のアクセスパタンの、マスク付き逆シフト通信の対象次元の添字の各対応する組み合わせに対して、逆シフトベクトルを算出し、
前記アクセスパタン解析手段が選択したマスク付き逆シフト通信対象配列に対応して、前記アクセスパタン解析手段が選択したマスク付き逆シフト通信の対象アクセスパタンであるような全ての出現の、マスク付き逆シフト通信の対象次元の逆シフトベクトルの集合の中で、正値の最大値と負値の最小値を計算し、前記正値の最大値と負値の最小値の絶対値を、それぞれマスク付き逆シフト通信対象配列の当該次元の上方向マスク付き逆シフト通信バッファ幅、下方向マスク付き逆シフト通信バッファ幅とすることを特徴とする請求項１から請求項３の何れかに記載の分散メモリ型マルチプロセッサシステム。
【請求項５】
前記逆シフト対象インデックス解析手段が、
前記並列化基準アクセスパタン解析手段が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、前記アクセスパタン解析手段が選択した各マスク付き逆シフト通信の対象アクセスパタンの、マスク付き逆シフト通信の対象次元の添字のうち、所定の条件を満たす値を、逆シフト対象インデックスとして算出することを特徴とする請求項１から請求項４の何れかに記載の分散メモリ型マルチプロセッサシステム。
【請求項６】
前記マスク付き逆シフト通信生成手段が、
マスク付き逆シフト通信の対象配列の前記マスク付き逆シフト通信用バッファに対して、マスク付き逆シフト通信用バッファに対応する配列要素が配置されている計算ノードから、対応するマスク付き逆シフト通信用バッファが配置されている他の計算ノードへの前記計算ノード間通信手段を経由したシフト通信を、並列ループネスト実行前に行う命令を生成し、
各マスク付き逆シフト通信対象のアクセスパタンについて、前記逆シフト対象インデックス解析手段によって決定した逆シフト対象インデックスに対応する前記マスク付き逆シフト通信バッファが配置されている計算ノードから、対応する配列要素が配置されている計算ノードへの計算ノード間通信手段を経由したマスク付き逆シフト通信を、並列ループネストの実行後に行う命令を生成することを特徴とする請求項１から請求項５の何れかに記載の分散メモリ型マルチプロセッサシステム。
【請求項７】
計算手段と記憶手段を有する複数の計算ノードを備え、配列データを前記計算ノードの前記記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを前記計算手段上で並列実行する分散メモリ型マルチプロセッサシステムのマスク付き逆シフト通信方法であって、
各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信ステップを実行し、
前記マスク付き逆シフト通信ステップが、
マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析ステップと、
マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、前記並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析ステップと、
前記並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析ステップと、
マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析ステップと、
マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析ステップと、
マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、前記マスク付き逆シフト通信バッファに対応する配列要素から、前記マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、前記マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成ステップを含む
ことを特徴とするマスク付き逆シフト通信方法。
【請求項８】
前記並列化基準アクセスパタン解析ステップにおいて、
各並列ループネストに対して、並列化の基準配列の各分散次元において、基準アクセスパタンの添字が、所定の条件を満たすかどうかを検査し、所定の条件を満たす並列ループネストのみを、マスク付き逆シフト通信対象の並列ループネストとして選択することを特徴とする請求項７に記載のマスク付き逆シフト通信方法。
【請求項９】
前記アクセスパタン解析ステップにおいて、
前記データマッピング解析ステップで抽出した、並列化の基準配列と同一のマッピングを持つ各配列の、並列ループネスト中における各出現について、並列化の基準配列の分散次元に対応する各次元の添字が、所定の条件を満たすアクセスパタンを、マスク付き逆シフト通信対象のアクセスパタンとして選択することを特徴とする請求項７又は請求項８に記載のマスク付き逆シフト通信方法。
【請求項１０】
前記逆シフトベクトル解析ステップにおいて、
前記並列化基準アクセスパタン解析ステップで選択したマスク付き逆シフト通信対象の並列ループネストのそれぞれに対し、並列化の基準配列の分散次元における基準アクセスパタンの添字と、前記アクセスパタン解析ステップで選択した各マスク付き逆シフト通信対象のアクセスパタンの、マスク付き逆シフト通信の対象次元の添字の各対応する組み合わせに対して、逆シフトベクトルを算出し、
前記アクセスパタン解析ステップで選択したマスク付き逆シフト通信対象配列に対応して、前記アクセスパタン解析ステップで選択したマスク付き逆シフト通信の対象アクセスパタンであるような全ての出現の、マスク付き逆シフト通信の対象次元の逆シフトベクトルの集合の中で、正値の最大値と負値の最小値を計算し、前記正値の最大値と負値の最小値の絶対値を、それぞれマスク付き逆シフト通信対象配列の当該次元の上方向マスク付き逆シフト通信バッファ幅、下方向マスク付き逆シフト通信バッファ幅とすることを特徴とする請求項７から請求項９の何れかに記載のマスク付き逆シフト通信方法。
【請求項１１】
前記逆シフト対象インデックス解析ステップにおいて、
前記並列化基準アクセスパタン解析ステップで選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、前記アクセスパタン解析ステップで選択した各マスク付き逆シフト通信の対象アクセスパタンの、マスク付き逆シフト通信の対象次元の添字のうち、所定の条件を満たす値を、逆シフト対象インデックスとして算出することを特徴とする請求項７から請求項１０の何れかに記載のマスク付き逆シフト通信方法。
【請求項１２】
前記マスク付き逆シフト通信生成ステップにおいて、
マスク付き逆シフト通信の対象配列の前記マスク付き逆シフト通信用バッファに対して、マスク付き逆シフト通信用バッファに対応する配列要素が配置されている計算ノードから、対応するマスク付き逆シフト通信用バッファが配置されている他の計算ノードへの前記計算ノード間通信手段を経由したシフト通信を、並列ループネスト実行前に行う命令を生成し、
各マスク付き逆シフト通信対象のアクセスパタンについて、前記逆シフト対象インデックス解析ステップで決定した逆シフト対象インデックスに対応する前記マスク付き逆シフト通信バッファが配置されている計算ノードから、対応する配列要素が配置されている計算ノードへの計算ノード間通信手段を経由したマスク付き逆シフト通信を、並列ループネストの実行後に行う命令を生成することを特徴とする請求項７から請求項１１の何れかに記載のマスク付き逆シフト通信方法。
【請求項１３】
計算手段と記憶手段を有する複数の計算ノードを備え、配列データを前記計算ノードの前記記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを前記計算手段上で並列実行する分散メモリ型マルチプロセッサシステムのマスク付き逆シフト通信を実行するプログラムであって、
前記計算ノードに、
各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信処理を実行させ、
前記マスク付き逆シフト通信処理が、
マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析処理と、
マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、前記並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析処理と、
前記並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析処理と、
マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析処理と、
マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析処理と、
マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、前記マスク付き逆シフト通信バッファに対応する配列要素から、前記マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、前記マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成処理を含む
ことを特徴とするプログラム。
【請求項１４】
前記並列化基準アクセスパタン解析処理において、
各並列ループネストに対して、並列化の基準配列の各分散次元において、基準アクセスパタンの添字が、所定の条件を満たすかどうかを検査し、所定の条件を満たす並列ループネストのみを、マスク付き逆シフト通信対象の並列ループネストとして選択することを特徴とする請求項１３に記載のプログラム。
【請求項１５】
前記アクセスパタン解析処理において、
前記データマッピング解析処理で抽出した、並列化の基準配列と同一のマッピングを持つ各配列の、並列ループネスト中における各出現について、並列化の基準配列の分散次元に対応する各次元の添字が、所定の条件を満たすアクセスパタンを、マスク付き逆シフト通信対象のアクセスパタンとして選択することを特徴とする請求項１３又は請求項１４に記載のプログラム。
【請求項１６】
前記逆シフトベクトル解析処理において、
前記並列化基準アクセスパタン解析処理で選択したマスク付き逆シフト通信対象の並列ループネストのそれぞれに対し、並列化の基準配列の分散次元における基準アクセスパタンの添字と、前記アクセスパタン解析処理で選択した各マスク付き逆シフト通信対象のアクセスパタンの、マスク付き逆シフト通信の対象次元の添字の各対応する組み合わせに対して、逆シフトベクトルを算出し、
前記アクセスパタン解析処理で選択したマスク付き逆シフト通信対象配列に対応して、前記アクセスパタン解析処理で選択したマスク付き逆シフト通信の対象アクセスパタンであるような全ての出現の、マスク付き逆シフト通信の対象次元の逆シフトベクトルの集合の中で、正値の最大値と負値の最小値を計算し、前記正値の最大値と負値の最小値の絶対値を、それぞれマスク付き逆シフト通信対象配列の当該次元の上方向マスク付き逆シフト通信バッファ幅、下方向マスク付き逆シフト通信バッファ幅とすることを特徴とする請求項１３から請求項１５の何れかに記載のプログラム。
【請求項１７】
前記逆シフト対象インデックス解析処理において、
前記並列化基準アクセスパタン解析処理で選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、前記アクセスパタン解析処理で選択した各マスク付き逆シフト通信の対象アクセスパタンの、マスク付き逆シフト通信の対象次元の添字のうち、所定の条件を満たす値を、逆シフト対象インデックスとして算出することを特徴とする請求項１３から請求項１６の何れかに記載のプログラム。
【請求項１８】
前記マスク付き逆シフト通信生成処理において、
マスク付き逆シフト通信の対象配列の前記マスク付き逆シフト通信用バッファに対して、マスク付き逆シフト通信用バッファに対応する配列要素が配置されている計算ノードから、対応するマスク付き逆シフト通信用バッファが配置されている他の計算ノードへの前記計算ノード間通信手段を経由したシフト通信を、並列ループネスト実行前に行う命令を生成し、
各マスク付き逆シフト通信対象のアクセスパタンについて、前記逆シフト対象インデックス解析処理で決定した逆シフト対象インデックスに対応する前記マスク付き逆シフト通信バッファが配置されている計算ノードから、対応する配列要素が配置されている計算ノードへの計算ノード間通信手段を経由したマスク付き逆シフト通信を、並列ループネストの実行後に行う命令を生成することを特徴とする請求項１３から請求項１７の何れかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算手段と記憶手段を有する複数の計算ノードを備え、配列データを前記計算ノードの前記記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを前記計算手段上で並列実行する分散メモリ型マルチプロセッサシステム、分散メモリ型マルチプロセッサシステムのマスク付き逆シフト通信方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、分散メモリ型マルチプロセッサシステムにおいては、配列データが、計算ノードに分割配置されており、そのような配列データを使用・定義するプログラム中のループが計算手段上で並列実行される場合、各計算ノードで定義する配列要素が、他の計算ノード上に分割配置されている配列要素である時には、計算ノード間通信手段を経由した通信が必要となる。
【０００３】
上記のような計算ノード間の通信が必要となった場合、定義される配列全体を、並列ループ直前にテンポラリ配列にコピーし、並列ループ中では、テンポラリ配列に対して参照を行い、並列ループ実行後に、テンポラリ配列から元の定義される配列へコピーして値を書き戻す、という方式で並列実行が行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した方式の並列実行においては、テンポラリ配列のために、定義される配列全体のメモリ容量が必要になると共に、並列ループ実行の前後において、それぞれ、定義される配列全体とテンポラリ配列との間で通信を伴うコピーが発生するため性能が低下する、という問題があった。
【０００５】
例えば、図４に示すようなＨＰＦ（High
Performance Fortran）言語によるプログラムの場合、関連技術による方法では、図７に示すように、定義される配列Ｂ全体を、並列ループ直前にテンポラリ配列ＢＵＦＦにコピーし、並列ループ中では、テンポラリ配列ＢＵＦＦに対して参照を行い、並列ループ実行後に、テンポラリ配列ＢＵＦＦから元の定義される配列Ｂへコピーして値を書き戻す、という方式で並列実行が行われていた。
【０００６】
この場合、テンポラリ配列ＢＵＦＦのために、定義される配列Ｂ全体に相当するメモリ容量が必要になると共に、並列ループ実行の前後において、それぞれ、定義される配列Ｂ全体とテンポラリ配列ＢＵＦＦとの間で通信を伴うコピーが発生するため性能が低下する。
【０００７】
（発明の目的）
本発明の目的は、上記の問題点に鑑みてなされたものであり、並列ループの実行速度を高速化できると共に、使用メモリ量を削減することができる分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明による分散メモリ型マルチプロ セッサシステムは、計算手段と記憶手段を有する複数の計算ノードを備え、配列データを計算ノードの記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを計算手段上で並列実行する分散メモリ型マルチプロセッサシステムであって、  計算ノードが、各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信手段を備え、マスク付き逆シフト通信手段が、マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析手段と、マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析手段と、並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析手段と、マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析手段と、マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析手段と、マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、マスク付き逆シフト通信バッファに対応する配列要素から、マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成手段とを備える。
【０００９】
本発明によるマスク付き逆シフト通信方法は、計算手段と記憶手段を有する複数の計算ノードを備え、配列データを計算ノードの記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを計算手段上で並列実行する分散メモリ型マルチプロセッサシステムのマスク付き逆シフト通信方法であって、各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信ステップを実行し、マスク付き逆シフト通信ステップが、マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析ステップと、マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析ステップと、並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析ステップと、マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析ステップと、マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析ステップと、マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、マスク付き逆シフト通信バッファに対応する配列要素から、マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成ステップを含む。
【００１０】
本発明によるプログラムは、計算手段と記憶手段を有する複数の計算ノードを備え、配列データを計算ノードの記憶手段上に分割配置し、当該配列データを使用・定義するプログラム中のループを計算手段上で並列実行する分散メモリ型マルチプロセッサシステムのマスク付き逆シフト通信を実行するプログラムであって、計算ノードに、各計算ノードで定義する配列要素が、他の計算ノードの記憶手段上に分割配置されている配列要素である場合に、並列ループ実行中は、自身の計算ノードの配列データと連続した領域に確保したマスク付き逆シフト通信用バッファに使用・定義する値を格納し、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、計算ノード間通信手段を経由して他の計算ノードに通信し、他の計算ノード上に配置されている対応する配列要素に反映させるマスク付き逆シフト通信処理を実行させ、マスク付き逆シフト通信処理が、マスク付き逆シフト通信の対象となる並列化の基準配列の基準アクセスパタンに基づいて並列化される並列ループネストを認識する並列化基準アクセスパタン解析処理と、マスク付き逆シフト通信対象の並列ループネストのそれぞれに対して、並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出するデータマッピング解析処理と、並列ループネスト中における配列の各出現について、マスク付き逆シフト通信対象の配列、アクセスパタンと対象次元を選択するアクセスパタン解析処理と、マスク付き逆シフト通信対象のアクセスパタンに対して必要となるマスク付き逆シフト通信の方向と幅、及びマスク付き逆シフト通信用バッファ幅を算出する逆シフトベクトル解析処理と、マスク付き逆シフト通信対象のインデックスを算出する逆シフト対象インデックス解析処理と、マスク付き逆シフト通信対象の配列の割付け範囲をマスク付き逆シフト通信バッファ幅分だけ拡張すると共に、マスク付き逆シフト通信対象の並列ループネストの直前に、マスク付き逆シフト通信バッファに対応する配列要素から、マスク付き逆シフト通信バッファへのシフト通信命令を生成し、マスク付き逆シフト通信対象の並列ループネストの直後に、マスク付き逆シフト通信バッファのうち、マスク付き逆シフト通信対象のインデックスに対応する要素から、対応する配列要素へのマスク付き逆シフト通信命令を生成するマスク付き逆シフト通信生成処理を含む。
【発明の効果】
【００１１】
本発明によれば、並列ループの実行速度を高速化できると共に、使用メモリ量を削減することができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
（実施の形態の構成）
図１を参照すると、分散メモリ型マルチプロセッサシステム１００上で実行されるプログラムのデータが、計算ノード１０１の記憶手段１０３（例えば、主記憶メモリ等）上に分割配置されており、ある計算ノード１０１の計算手段１０２（ＣＰＵ）が実行する演算に必要なデータが、他の計算ノード１０１の記憶手段１０３上に分割配置されている場合、計算ノード間通信手段１０４を経由した通信が行われる。
【００１４】
このマスク付き逆シフト通信手段２００は、上記のように、計算ノード間通信手段１０４を経由した通信が必要となる場合に、並列ループ実行中は、配列データと連続した領域に確保したバッファ領域にいったん定義される値を格納しておき、並列ループ実行後に、定義が行われたバッファ領域の値を、対応する配列要素に反映させるために、計算ノード間通信手段１０４を経由した通信を行うことにより、並列ループの実行速度を高速化する。
【００１５】
図２において、マスク付き逆シフト通信手段２００は、並列化基準アクセスパタン解析手段２０１と、データマッピング解析手段２０２と、アクセスパタン解析手段２０３と、逆シフトベクトル解析手段２０４と、逆シフトインデックス解析手段２０５と、マスク付き逆シフト通信生成手段２０６を備えている。
【００１６】
図２において、図１における分散メモリ型マルチプロセッサシステム１００上で実行されるプログラム中に、並列化の基準配列の、基準アクセスパタンに基づいて並列化される並列化対象ループを含む並列ループネストがいくつか存在する場合に、まず、並列化基準アクセスパタン解析手段２０１は、各並列ループネストに対して、並列化の基準配列の各分散次元において、基準アクセスパタンの添字ｓが、図３における条件３０１を満たすかどうかを検査し、条件を満たす並列ループネストのみを、マスク付き逆シフト通信の対象並列ループネストとして選択する。
【００１７】
次に、データマッピング解析手段２０２は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、並列ループネスト中に出現する各配列のデータマッピングを解析し、並列化の基準配列と同一のマッピングを持つ配列を抽出する。
【００１８】
次に、アクセスパタン解析手段２０３は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、データマッピング解析手段２０２が抽出した、並列化の基準配列と同一のマッピングを持つ各配列の、並列ループネスト中における各出現について、並列化の基準配列の分散次元に対応する各次元の添字ｓ´が、図３における条件３０２を満たすアクセスパタンを、マスク付き逆シフト通信の対象アクセスパタンとして選択する。
【００１９】
このとき、図３における条件３０２を満たす次元を、マスク付き逆シフト通信の対象次元と呼ぶ。
【００２０】
また、アクセスパタン解析手段２０３によってマスク付き逆シフト通信の対象アクセスパタンに選択された出現を持つ配列を、マスク付き逆シフト通信対象配列と呼ぶ。
【００２１】
次に、逆シフトベクトル解析手段２０４は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対し、並列化の基準配列の分散次元における基準アクセスパタンの添字と、アクセスパタン解析手段２０３が選択した各マスク付き逆シフト通信の対象アクセスパタンの、マスク付き逆シフト通信の対象次元の添字の各対応する組み合わせに対して、図３における条件３０３の式である「o´ - o」を逆シフトベクトルとして算出する。
【００２２】
逆シフトベクトルは、負値の時に下向き、正値の時に上向きと呼び、その絶対値を逆シフト幅と呼ぶ。
【００２３】
さらに、逆シフトベクトル解析手段２０４は、アクセスパタン解析手段２０３が選択したマスク付き逆シフト通信対象配列に対応して、アクセスパタン解析手段２０３が選択したマスク付き逆シフト通信の対象アクセスパタンであるような全ての出現の、マスク付き逆シフト通信の対象次元の逆シフトベクトルの集合の中で、正値の最大値と負値の最小値を計算する。
【００２４】
それらの絶対値を、それぞれマスク付き逆シフト通信対象配列の当該次元の上方向マスク付き逆シフト通信バッファ幅、下方向マスク付き逆シフト通信バッファ幅と呼ぶ。
【００２５】
なお、正値が存在しないとき、正値の最大値を「０」、負値が存在しないとき、負値の最小値を「０」とする。
【００２６】
次に、逆シフト対象インデックス解析手段２０５は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、アクセスパタン解析手段２０３が選択した各マスク付き逆シフト通信の対象アクセスパタンの、マスク付き逆シフト通信の対象次元の添字のうち、図３における条件３０４を満たす値を、逆シフト対象インデックスとして算出する。
【００２７】
次に、マスク付き逆シフト通信生成手段２０６は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストのそれぞれに対して、アクセスパタン解析手段２０３によって選択されたマスク付き逆シフト通信対象配列が、図１における計算ノード１０１の記憶手段１０３上に分割配置される際の、各計算ノードにおける分散次元の割付けインデックス範囲を（ｌｂ：ｕｂ）とするとき、上方向、下方向に、それぞれ、逆シフトベクトル解析手段２０４が算出した上方向マスク付き逆シフト通信バッファ幅ｈｓ、下方向マスク付き逆シフト通信バッファ幅ｌｓだけマスク付き逆シフト通信用バッファを割付けるために、割付けインデックス範囲を拡張し、（ｌｂ−ｌｓ：ｕｂ＋ｈｓ）とする。
【００２８】
さらに、マスク付き逆シフト通信生成手段２０６は、マスク付き逆シフト通信対象配列のマスク付き逆シフト通信用バッファに対して、対応する配列要素からの通信、すなわち、図１において、マスク付き逆シフト通信用バッファに対応する配列要素が配置されている計算ノード１０１から、対応するマスク付き逆シフト通信用バッファが配置されている計算ノード１０１への、計算ノード間通信手段１０４を経由した通信（シフト通信）を、並列ループネスト実行前に行う命令を生成する。
【００２９】
また、マスク付き逆シフト通信生成手段２０６は、各マスク付き逆シフト通信対象アクセスパタンについて、逆シフト対象インデックス解析手段２０５によって決定された逆シフト対象インデックスに対応するマスク付き逆シフト通信バッファから、対応する配列要素への通信、すなわち、図１において、逆シフト対象インデックスに対応するマスク付き逆シフト通信バッファが配置されている計算ノード１０１から、対応する配列要素が配置されている計算ノード１０１への、計算ノード間通信手段１０４を経由した通信（マスク付き逆シフト通信）を、並列ループネストの実行後に行う命令を生成する。
【００３０】
以上の方法により、並列ループ実行中に、各計算ノード１０１で定義する配列要素が、他の（リモートの）計算ノード１０１の記憶手段１０３上に分割配置されている配列要素であるために、計算ノード間通信手段１０４を経由した通信が必要となる場合に、並列ループ実行中は、他の（リモートの）計算ノードではなく、演算を行う（ローカルな）計算ノードに確保されているマスク付き逆シフト通信用バッファに対して値の使用・定義を行い、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、他の（リモートの）計算ノード上に配置されている対応する配列要素に反映するため、計算ノード間通信手段１０４を経由した通信を行うことにより、高速に並列実行を行うことができる。
【００３１】
（実施の形態の動作）
次に、本実施例の全体の動作について、詳細に説明する。ここでは、図４に示すＨＰＦ言語によるプログラム例によって、本実施例の全体の動作について詳細に説明する。
【００３２】
図１を参照すると、分散メモリ型マルチプロセッサシステム１００上で実行される図４のＨＰＦ言語によるプログラムのデータＡ、Ｂ、Ｃが、計算ノード１０１の記憶手段１０３上に分割配置されており、ある計算ノード１０１の計算手段１０２が実行する演算に必要なデータが、他の計算ノード１０１の記憶手段１０３上に分割配置されている場合、計算ノード間通信手段１０４を経由した通信が行われる。
【００３３】
図２に示すマスク付き逆シフト通信手段２００は、図１における、分散メモリ型マルチプロセッサシステム１００上で実行される図４のＨＰＦ言語によるプログラムが、並列化の基準配列Ａの、基準アクセスパタンＡ（:,J）に基づいて並列化される並列化対象ループ「DO J」を含む、「DO J」と「DO I」の並列ループネストが存在する場合に、以下のように動作する。
【００３４】
なお、図４のＨＰＦ言語によるプログラムでは、並列化の基準配列と基準アクセスパタンは、ON指示文により明示的に指定されているが、これはユーザによるオプション指定によって指定されていても良いし、コンパイラが自動的に決定しても良い。
【００３５】
この場合、図５に示すように、各配列は６台のプロセッサＰ上に分割配置され、各プロセッサＰ（ｋ）（ｋ＝１，２，・・・，６）は、図１における計算手段１０１に対応しており、並列化対象ループDO Jは、各プロセッサが、並列化の基準配列Ａの基準アクセスパタンＡ（:,J）の要素が配置されているループの繰り返しのみを実行するように、並列化される。
【００３６】
まず、並列化基準アクセスパタン解析手段２０１は、「DO J」と「DO I」からなる並列ループネストに対して、並列化の基準配列Ａの分散次元である２次元目において、基準アクセスパタンＡ（:,J）の添字が、図３における条件３０１に対応する以下の条件を満たすことを認識し、「DO
J」と「DO I」からなる並列ループネストを、マスク付き逆シフト通信の対象並列ループネストとして選択する。
【００３７】
条件３０１：
「並列化の基準配列Ａの分散次元である２次元目における、基準アクセスパタンＡ（:,J）の添字Jに関して、「DO J」と「DO I」からなる並列ループネスト中に、制御変数がJである並列化対象ループDO Jが存在して、以下の条件を満たす。」
「Jが、Jの一次式J = 1 * J + 0と表現でき、かつ一次式の係数1と、0次の項0は、並列ループネスト中の各ループに対して不変な式である。」
【００３８】
次に、データマッピング解析手段２０２は、ループ中に出現する配列Ａ、Ｂ、Ｃのデータマッピングを解析して、配列ＡとＢが２次元目で均等に分散されており、配列Ｃは分散されていないことを確認し、さらに、並列化の基準配列Ａと同一のマッピングを持つ配列Ａ、Ｂを抽出する。
【００３９】
次に、アクセスパタン解析手段２０３は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストである「DO J」と「DO I」からなる並列ループネストに対して、並列化の基準配列Ａの分散次元である２次元目における、基準アクセスパタンＡ（:,J）の添字を、並列ループネスト中の並列化対象ループの制御変数Jの一次式として、J
= 1 * J + 0と表現したとき、データマッピング解析手段２０２が抽出した、並列化の基準配列Ａと同一のマッピングを持つ各配列Ａ、Ｂの、並列ループネスト中における各出現A(I,J)、B(I,J)、B(I,J-1)について、並列化の基準配列の分散次元に対応する各次元の添字ｓ´が、図３における条件３０２を満たすアクセスパタンを、マスク付き逆シフト通信の対象アクセスパタンとして選択する。
【００４０】
ここで、アクセスパタン解析手段２０３は、並列ループネスト中における各出現A(I,J)、B(I,J)、B(I,J-1)について、以下のように、図３における条件３０２を満たすアクセスパタンが存在するかどうかを解析する。
【００４１】
並列化の基準配列の分散次元である２次元目に対応する各次元の添字が、Ａ（Ｉ，Ｊ）の場合
１．  Ｊ  ＝  １  ＊  Ｊ  ＋  ０と表現でき、０は、並列ループネスト中の各ループに対して不変な式である。
２．  同一の配列の同一のアクセスパタン中、代入文左辺のＡ（Ｉ，Ｊ）は定義される。
３．  ０  −  ０は、定数０である。（非零定数でない）
４．  同一の配列の他のアクセスパタンは存在しない
【００４２】
Ｂ（Ｉ，Ｊ）の場合
１．  Ｊ  ＝  １  ＊  Ｊ  ＋  ０と表現でき、０は、並列ループネスト中の各ループに対して不変な式である。
２．  同一の配列の同一のアクセスパタン中、代入文左辺のＢ（Ｉ，Ｊ）は定義される。
３．  ０  −  ０は、定数０である。（非零定数でない）
４．  同一の配列の他のアクセスパタンＢ（Ｉ，Ｊ−１）も上記の条件１、２を満たし、かつ（−１）  −  ０は、定数である。
【００４３】
Ｂ（Ｉ，Ｊ−１）の場合
１．  Ｊ  ＝  １  ＊  Ｊ  ＋  （−１）と表現でき、−１は、並列ループネスト中の各ループに対して不変な式である。
２．  同一の配列の同一のアクセスパタン中、代入文左辺のＢ（Ｉ，Ｊ−１）は定義される。
３．  （−１）  −  ０  は、非零定数−１である。
４．  同一の配列の他のアクセスパタンＢ（Ｉ，Ｊ）も上記の条件１、２を満たし、かつ０  −  ０は、定数である。
【００４４】
以上の解析結果から、Ｂ（Ｉ，Ｊ−１）のみが図３における条件３０２を満たすマスク付き逆シフト通信の対象アクセスパタンであることを認識する。
【００４５】
このとき、Ｂ（Ｉ，Ｊ−１）のマスク付き逆シフト通信の対象次元は、２次元目である。また、配列Ｂは、マスク付き逆シフト通信対象配列である。
【００４６】
次に、逆シフトベクトル解析手段２０４は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストであるDO JとDO Iからなる並列ループネストに対して、並列化の基準配列Ａの分散次元である２次元目における、基準アクセスパタンＡ（：，Ｊ）の添字を、並列ループネスト中の並列化対象ループの制御変数Jの一次式として、Ｊ＝１＊Ｊ＋０と表現したとき、アクセスパタン解析手段２０３が選択したマスク付き逆シフト通信の対象アクセスパタンであるＢ（Ｉ，Ｊ−１）の、マスク付き逆シフト通信の対象次元である２次元目の添字Ｊ−１＝１＊Ｊ＋（−１）、に対して、図３の条件３０３により、（−１）−０＝−１を逆シフトベクトルとして算出する。
【００４７】
ここで、逆シフトベクトルは、負値であるから下向きであり、その絶対値１が逆シフト幅となる。
【００４８】
さらに、逆シフトベクトル解析手段２０４は、アクセスパタン解析手段２０３が選択したマスク付き逆シフト通信対象配列Ｂについて、アクセスパタン解析手段２０３が選択したマスク付き逆シフト通信の対象アクセスパタンであるＢ（Ｉ，Ｊ−１）に関して、マスク付き逆シフト通信の対象次元である２次元目の逆シフトベクトルの正値の最大値０と負値の最小値−１を算出する。
【００４９】
また、それらの絶対値０、１を、それぞれマスク付き逆シフト通信対象配列の当該次元である２次元目の上方向マスク付き逆シフト通信バッファ幅、下方向マスク付き逆シフト通信バッファ幅と呼ぶ。
【００５０】
次に、逆シフト対象インデックス解析手段２０５は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストであるDO JとDO Iからなる並列ループネストに対して、逆シフト対象インデックスを以下のように算出する。
【００５１】
並列化の基準配列Ａの分散次元である２次元目における、基準アクセスパタンＡ（：，Ｊ）の添字を、並列ループネスト中の並列化対象ループの制御変数Ｊの一次式として、Ｊ  ＝  １  ＊  Ｊ  ＋  ０、と表現し、
アクセスパタン解析手段２０３が選択した各マスク付き逆シフト通信の対象アクセスパタンであるＢ（Ｉ，Ｊ−１）の、マスク付き逆シフト通信の対象次元である２次元目の添字を、Ｊ  −１  ＝  １  ＊  Ｊ  ＋  （−１）、と表現したとき、
図３の条件３０４に従って、Ｊを制御変数とする並列化対象ループの増分値である２と一次式の係数１との積（２  ＊  １）を法として、１  ＊  ２  ＋  （−１）と合同な値、すなわち奇数値を、逆シフト対象インデックスとして算出する。
【００５２】
次に、マスク付き逆シフト通信生成手段２０６は、並列化基準アクセスパタン解析手段２０１が選択したマスク付き逆シフト通信の対象並列ループネストであるＤＯ  ＪとＤＯ  Ｉからなる並列ループネストに対して、アクセスパタン解析手段２０３によって選択されたマスク付き逆シフト通信対象配列Ｂに対し、図１における計算ノード１０１の記憶手段１０３上に分割配置される際の、各計算ノード１０１に対応するプロセッサＰ（ｋ）における分散次元２次元目の割付けインデックス範囲（５＊（ｋ−１）＋１：５＊（ｋ−１）＋５）に対して、上方向、下方向に、それぞれ、逆シフトベクトル解析手段２０４が算出した上方向マスク付き逆シフト通信バッファ幅０、下方向マスク付き逆シフト通信バッファ幅１だけマスク付き逆シフト通信用バッファを割付けるために、割付けインデックス範囲を拡張し、（５＊（ｋ−１）：５＊（ｋ−１）＋５）とする。
【００５３】
図６においては、配列Ｂの各プロセッサにおける割付け範囲が図示されており、斜線で塗られている要素がマスク付き逆シフト通信用バッファである。
【００５４】
さらに、マスク付き逆シフト通信生成手段２０６は、マスク付き逆シフト通信対象配列Ｂのマスク付き逆シフト通信用バッファに対して、対応する配列要素からの通信、すなわち、図１において、マスク付き逆シフト通信用バッファに対応する配列要素が配置されている計算ノード１０１から、対応するマスク付き逆シフト通信用バッファが配置されている計算ノード１０１への、計算ノード間通信手段１０４を経由した通信（シフト通信）を、図６の６０１に示すように、並列ループネスト実行前に行う命令を生成する。
【００５５】
また、マスク付き逆シフト通信生成手段２０６は、マスク付き逆シフト通信対象アクセスパタンＢ（Ｉ，Ｊ−１）について、逆シフト対象インデックス解析手段２０５によって決定された逆シフト対象インデックスに対応するマスク付き逆シフト通信バッファから、対応する配列要素への通信、すなわち、図１における、計算ノード１０１のうち、逆シフト対象インデックスである奇数の添字値に対応するマスク付き逆シフト通信バッファが配置されている計算ノード１０１から、対応する配列要素が配置されている計算ノード１０１への、計算ノード間通信手段１０４を経由した通信を、図６の６０２のように、並列ループネストの実行後に行う命令を生成する。
【００５６】
以上の方法により、並列ループ実行中に、各計算ノード１０１で定義する配列要素が、他の（リモートの）計算ノード１０１の記憶手段１０３上に分割配置されている配列要素であるために、計算ノード間通信手段１０４を経由した通信が必要となる場合に、並列ループ実行中は、他の（リモートの）計算ノードではなく、演算を行う（ローカルな）計算ノードに確保されているマスク付き逆シフト通信用バッファ対して値の使用・定義を行い、並列ループ実行後に、定義が行われたマスク付き逆シフト通信用バッファの値を、他の（リモートの）計算ノード上に配置されている対応する配列要素に反映するため、計算ノード間通信手段１０４を経由した通信を行うことにより、高速に並列実行を行うことができる。
【００５７】
（第１の実施の形態による効果）
本実施の形態による効果について説明する。
第１の効果は、定義される配列要素に対するリモートアクセスがある場合でも、並列ループの実行速度を高速化できることである。その理由は、使用・定義される配列要素が、他の計算ノード上に配置されている場合に、並列ループ実行中は、配列データと隣接する領域に確保したバッファ領域に一時的に値を格納・使用し、並列ループ終了後に、バッファ領域のうち、定義された要素に対応する値を、他の計算ノードの対応する配列要素に通信して、値を反映することで、リモートアクセスが必要となる配列とテンポラリ配列間のコピーのオーバヘッドを削減できるからである。
【００５８】
第２の効果は、使用メモリ量を削減できることである。その理由は、定義される配列要素が、他の計算ノード上に配置されている場合に、配列全体と同じ形状のテンポラリ配列を割付けるのではなく、配列データと隣接する領域に、定義されるリモート要素分だけバッファ領域を割付けるからである。
【００５９】
すなわち、バッファ領域として、他の計算ノードの記憶手段上に分割配置されている配列要素のうち、自分の計算ノードがアクセスする分だけを割付ければ良いため、メモリ容量が節約できると共に、バッファ領域の内、定義される要素だけを並列ループ実行後に通信すれば良いため、定義される配列全体とテンポラリ配列との間のコピーのオーバヘッドを削減することができる。
【００６０】
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施の形態による分散メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図２】本発明の実施の形態による分散メモリ型マルチプロセッサシステムにおけるマスク付き逆シフト通信手段の構成を示すブロック図である。
【図３】本発明の実施の形態によるマスク付き逆シフト通信手段において使用する条件の内容を示す図である。
【図４】分散メモリ型マルチプロセッサシステム上で実行されるＨＰＦ言語によるプログラムの例を示す図である。
【図５】本発明の実施の形態による分散メモリ型マルチプロセッサシステムの動作を説明する図である。
【図６】本発明の実施の形態による分散メモリ型マルチプロセッサシステムの動作を説明する図である。
【図７】関連技術による並列実行の方式を説明するための図である。
【符号の説明】
【００６２】
１００：分散メモリ型マルチプロセッサシステム
１０１：計算ノード
１０２：計算手段
１０３：記憶手段
２００：マスク付き逆シフト通信手段
２０１：並列化基準アクセスパタン解析手段
２０２：データマッピング解析手段
２０３：アクセスパタン解析手段
２０４：逆シフトベクトル解析手段
２０５：逆シフトインデックス解析手段
２０６：マスク付き逆シフト通信生成手段
【図１】
0005120778.tif 000002
【図２】
0005120778.tif 000003
【図３】
0005120778.tif 000004
【図４】
0005120778.tif 000005
【図５】
0005120778.tif 000006
【図６】
0005120778.tif 000007
【図７】
0005120778.tif 000008