(57)【要約】      （修正有）【課題】シフト通信を、対象配列・次元や方向が変化したり異なる手続きにまたがっていても、高速に行うことができる技術を提供する。【解決手段】シフト通信を行う配列の分割配置方法を解析するステップと、その解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在するかどうかを検索するステップと、前記同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在する場合、必要な次元の必要な方向に対するシフト通信スケジュール（７１〜７ｎ）が既に生成されているかどうかを検索するステップと、生成されていないシフト通信スケジュール（７１〜７ｎ）が存在する場合、必要な分割配置方法、次元、方向に対応したシフト通信スケジュール（７１〜７ｎ）を新たに生成し、前記新たなシフト通信スケジュール（７１〜７ｎ）を含む新たなシフト通信スケジュールテーブル（７）を生成して、シフト通信を実行する。【選択図】図３
2006285588.tif 000002
【特許請求の範囲】
【請求項１】
分散メモリ型マルチプロセッサシステムのシフト通信方法であって、
（ａ）シフト通信を行う配列の分割配置方法を解析するステップと、 
（ｂ）その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブルが存在するかどうかを検索するステップと、
（ｃ）前記シフト通信スケジュールテーブルの検索の結果、前記同一の分割配置に対するシフト通信スケジュールテーブルが存在する場合、必要な次元の必要な方向に対するシフト通信スケジュールが既に生成されているかどうかを検索するステップと、
（ｄ）前記シフト通信スケジュールの検索の結果、生成されていないシフト通信スケジュールが存在する場合、必要な分割配置方法、次元、方向に対応したシフト通信スケジュールを新たに生成し、前記新たなシフト通信スケジュールを含む新たなシフト通信スケジュールテーブルを生成するステップと、
（ｅ）前記新たなシフト通信スケジュールテーブルを参照して、シフト通信を実行するステップ
を具備するシフト通信方法。
【請求項２】
請求項１に記載のシフト通信方法において、
前記（ｃ）ステップは、さらに
前記シフト通信スケジュールが存在しない場合に、新規のシフト通信スケジュールテーブルを生成するステップ
を具備するシフト通信方法。
【請求項３】
請求項２に記載のシフト通信方法において、
前記（ｅ）ステップは、さらに、
必要なシフト通信スケジュールが全て生成済の場合、前記シフト通信スケジュールテーブルまたは前記新規のシフト通信スケジュールテーブルを参照して、シフト通信を実行する
シフト通信方法。
【請求項４】
シフト通信を行う配列の分割配置方法を解析するマッピング解析手段と、
その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブルが存在するかどうかを検索し、存在しない場合、シフト通信スケジュールテーブルを生成する通信スケジュール再利用手段と、前記通信スケジュール再利用手段は、同一の分割配置に対するシフト通信スケジュールテーブルが存在する場合、必要な次元の必要な方向に対するシフト通信スケジュールが既に生成されているかどうかを検索し、生成されていないシフト通信スケジュールが存在する場合、新たな通信スケジュールの生成を要求し、
前記新たな通信スケジュールの生成の要求に応答して、必要な分割配置方法、次元、方向に対応したシフト通信スケジュールを生成し、前記シフト通信スケジュールテーブルを更新して新たなシフト通信スケジュールテーブルを生成するシフト通信スケジュール生成手段と、
前記新たなシフト通信スケジュールテーブルを参照して、実際のシフト通信を行うシフト通信実行手段を具備する
分散メモリ型マルチプロセッサシステム。
【請求項５】
請求項４に記載の分散メモリ型マルチプロセッサシステムにおいて、
前記シフト通信スケジュール生成手段は、
前記同一の分割配置に対するシフト通信スケジュールテーブルが存在しない場合には、新規のシフト通信スケジュールテーブルを生成する
分散メモリ型マルチプロセッサシステム。
【請求項６】
請求項４または５に記載の分散メモリ型マルチプロセッサシステムにおいて、
前記シフト通信スケジュール生成手段は、前記シフト通信実行手段に、現在のシフト通信スケジュールテーブルを用いてシフト通信を実行するように指示し、
前記シフト通信実行手段は、前記指示に応答して前記シフト通信スケジュールテーブルまたは、前記新規のシフト通信スケジュールテーブルを参照して実際のシフト通信を実行する
分散メモリ型マルチプロセッサシステム。
【請求項７】
分散メモリ型マルチプロセッサシステムのシフト通信を実行可能なプログラムであって、
コンピュータを、
シフト通信を行う配列の分割配置方法を解析するマッピング解析手段と、
その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブルが存在するかどうかを検索し、存在しない場合、シフト通信スケジュールテーブルを生成する通信スケジュール再利用手段と、前記通信スケジュール再利用手段は、同一の分割配置に対するシフト通信スケジュールテーブルが存在する場合、必要な次元の必要な方向に対するシフト通信スケジュールが既に生成されているかどうかを検索し、生成されていないシフト通信スケジュールが存在する場合、新たな通信スケジュールの生成を要求し、
前記新たな通信スケジュールの生成の要求に応答して、必要な分割配置方法、次元、方向に対応したシフト通信スケジュールを生成し、前記シフト通信スケジュールテーブルを更新して新たなシフト通信スケジュールテーブルを生成するシフト通信スケジュール生成手段と、
前記新たなシフト通信スケジュールテーブルを参照して、実際のシフト通信を行うシフト通信実行手段
として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムにおいて、
前記シフト通信スケジュール生成手段を、
前記同一の分割配置に対するシフト通信スケジュールテーブルが存在しない場合には、新規のシフト通信スケジュールテーブルを生成する手段
として機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムにおいて、
前記シフト通信スケジュール生成手段を、前記シフト通信実行手段に、現在のシフト通信スケジュールテーブルを用いてシフト通信を実行するように指示する手段として機能させ、
前記シフト通信実行手段を、前記指示に応答して前記シフト通信スケジュールテーブルまたは、前記新規のシフト通信スケジュールテーブルを参照して実際のシフト通信を実行する手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散メモリ型マルチプロセッサシステムのシフト通信方法およびそのシフト通信方法を実行可能な分散メモリ型マルチプロセッサシステムに関する。
【背景技術】
【０００２】
分散メモリ型マルチプロセッサシステムの性能向上のために重要なことは、プロセッサ間でデータを送受信する際に、どのような通信手順で通信を実行するかということである。プロセッサ間の通信速度は、プロセッサの演算速度と比べてかなり遅いため、非効率的な通信を行っていては、システムのパフォーマンスの向上は望めない。分散マルチプロセッサシステムを構成するプロセッサ間でデータの送受信を行う場合において、最適な通信スケジュールを生成する技術が知られている（例えば、特許文献１参照。）。
【０００３】
一般的な並列計算機において、プログラムを実行する際に発生する複数のプロセッサ間の通信は、非同期通信の通信ライブラリに基づいて実行される。例えば、ＭＰＩやＥＵＩといった通信ライブラリは、送信(send)や受信(receive)といった通常の命令以外にも、頻繁に利用される比較的単純な通信パターンを複数用意している。
【０００４】
この複数の通信パターンの中に、シフト通信という通信パターンがある。シフト通信とは、各プロセッサが隣接するプロセッサに対して、一定の方向にデータを送信するような通信形態をいう。
【０００５】
【特許文献１】特開平９−３３０３０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
分散メモリ型マルチプロセッサシステムにおいて、同一のシフト通信が行われる場合、そのときの通信スケジュールを保存し、保存された通信スケジュールを再利用することで、通信を高速化する技術がある。しかしながら、シフト通信が行われる次元や方向が変化する場合には、通信スケジュールの再利用が行えず、保存してあった通信スケジュールを破棄して、新たに再生成しなければならなかった。
【０００７】
本発明が解決しようとする課題は、シフト通信の対象配列、対象次元や方向が変化したり、異なる手続きにまたがっていても、高速にシフト通信を行うことができる技術を提供することにある。
【課題を解決するための手段】
【０００８】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００９】
上記課題を解決するために、以下の方法で分散メモリ型マルチプロセッサシステムのシフト通信方法を実行する。その方法は、［ａ］シフト通信を行う配列の分割配置方法を解析するステップと、 ［ｂ］その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在するかどうかを検索するステップと、［ｃ］前記シフト通信スケジュールテーブル（７）の検索の結果、前記同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在する場合、必要な次元の必要な方向に対するシフト通信スケジュール（７１〜７ｎ）が既に生成されているかどうかを検索するステップと、［ｄ］前記シフト通信スケジュール（７１〜７ｎ）の検索の結果、生成されていないシフト通信スケジュール（７１〜７ｎ）が存在する場合、必要な分割配置方法、次元、方向に対応したシフト通信スケジュール（７１〜７ｎ）を新たに生成し、前記新たなシフト通信スケジュール（７１〜７ｎ）を含む新たなシフト通信スケジュールテーブル（７）を生成するステップと、［ｅ］前記新たなシフト通信スケジュールテーブル（７）を参照して、シフト通信を実行するステップを具備するシフト通信方法である。
【００１０】
その、シフト通信方法において、前記［ｃ］ステップは、さらに、前記シフト通信スケジュール（７１〜７ｎ）が存在しない場合に、新規のシフト通信スケジュールテーブル（７）を生成するステップを具備することが好ましい。
【００１１】
また、そのシフト通信方法において、前記［ｅ］ステップは、さらに、必要なシフト通信スケジュール（７１〜７ｎ）が全て生成済の場合、前記シフト通信スケジュールテーブル（７）または前記新規のシフト通信スケジュールテーブル（７）を参照して、シフト通信を実行するようなシフト通信方法であってもよい。
【００１２】
また、上記課題を解決するために、下記のような分散メモリ型マルチプロセッサシステムを構築する。そのシステムは、シフト通信を行う配列の分割配置方法を解析するマッピング解析手段（６−１）と、その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在するかどうかを検索し、存在しない場合、シフト通信スケジュールテーブル（７）を生成する通信スケジュール再利用手段（６−２）とを含んで構成されることが好ましい。ここで、前記通信スケジュール再利用手段（６−２）は、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在する場合、必要な次元の必要な方向に対するシフト通信スケジュール（７１〜７ｎ）が既に生成されているかどうかを検索し、生成されていないシフト通信スケジュール（７１〜７ｎ）が存在する場合、新たな通信スケジュールの生成を要求するものである。そしてさらに、上記の分散メモリ型マルチプロセッサシステムを、前記新たな通信スケジュールの生成の要求に応答して、必要な分割配置方法、次元、方向に対応したシフト通信スケジュール（７１〜７ｎ）を生成し、前記シフト通信スケジュールテーブル（７）を更新して新たなシフト通信スケジュールテーブル（７）を生成するシフト通信スケジュール生成手段（６−３）と、前記新たなシフト通信スケジュールテーブル（７）を参照して、実際のシフト通信を行うシフト通信実行手段（６−４）とを含んで構成する。
【００１３】
その分散メモリ型マルチプロセッサシステムにおいて、前記シフト通信スケジュール生成手段（６−３）は、前記同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在しない場合には、新規のシフト通信スケジュールテーブル（７）を生成する構成であることが好ましい。
【００１４】
さらにその分散メモリ型マルチプロセッサシステムにおいて、前記シフト通信スケジュール生成手段（６−３）は、前記シフト通信実行手段（６−４）に、現在のシフト通信スケジュールテーブル（７）を用いてシフト通信を実行するように指示し、前記シフト通信実行手段（６−４）は、前記指示に応答して前記シフト通信スケジュールテーブル（７）または、前記新規のシフト通信スケジュールテーブル（７）を参照して実際のシフト通信を実行するような分散メモリ型マルチプロセッサシステムを構成する。
【００１５】
また、下記プログラムをコンピュータに実行させることで上記課題を解決することが可能である。そのプログラムは、分散メモリ型マルチプロセッサシステムのシフト通信を実行可能なプログラムであって、
コンピュータを、
シフト通信を行う配列の分割配置方法を解析するマッピング解析手段（６−１）と、その解析によって得られた解析結果に基づいて、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在するかどうかを検索し、存在しない場合、シフト通信スケジュールテーブル（７）を生成する通信スケジュール再利用手段（６−２）と、前記新たな通信スケジュールの生成の要求に応答して、必要な分割配置方法、次元、方向に対応したシフト通信スケジュール（７１〜７ｎ）を生成し、前記シフト通信スケジュールテーブル（７）を更新して新たなシフト通信スケジュールテーブル（７）を生成するシフト通信スケジュール生成手段（６−３）と、前記新たなシフト通信スケジュールテーブル（７）を参照して、実際のシフト通信を行うシフト通信実行手段（６−４）として機能させるためのプログラムである。
ここで、前記通信スケジュール再利用手段（６−２）は、同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在する場合、必要な次元の必要な方向に対するシフト通信スケジュール（７１〜７ｎ）が既に生成されているかどうかを検索し、生成されていないシフト通信スケジュール（７１〜７ｎ）が存在する場合、新たな通信スケジュールの生成を要求することが好ましい。
【００１６】
そのプログラムにおいて、さらに、前記シフト通信スケジュール生成手段（６−３）を、前記同一の分割配置に対するシフト通信スケジュールテーブル（７）が存在しない場合には、新規のシフト通信スケジュールテーブル（７）を生成する手段として機能させるためのプログラムであってもよい。
【００１７】
また、そのプログラムにおいて、前記シフト通信スケジュール生成手段（６−３）を、前記シフト通信実行手段（６−４）に、現在のシフト通信スケジュールテーブル（７）を用いてシフト通信を実行するように指示する手段として機能させ、前記シフト通信実行手段（６−４）を、前記指示に応答して前記シフト通信スケジュールテーブル（７）または、前記新規のシフト通信スケジュールテーブル（７）を参照して実際のシフト通信を実行する手段として機能させるためのプログラムであってもよい。
【００１８】
上記解決手段を実行することによって、配列の分割配置方法に一対一に対応する通信スケジュールテーブル中に、通信スケジュールを各次元、各方向独立に生成、保存することにより、通信スケジュールが部分的に独立に再利用可能となる。
【発明の効果】
【００１９】
本発明によると、シフト通信の対象配列、対象次元や方向が変化する場合や、異なる手続きにまたがっていても、分割配置方法が同じであれば、シフト通信を高速化することが可能になる。特に、シフト通信の対象配列、対象次元や方向が毎回変化する場合であってもシフト通信を高速化することが可能となる。
【００２０】
また、本発明によると、配列の分割配置方法に一対一に対応する通信スケジュールテーブル中に、通信スケジュールを各次元、各方向独立に生成、保存することにより、通信スケジュールが部分的に独立に再利用可能となり、通信スケジュール生成のコストを削減できる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施の形態の概要を説明する。本実施の形態の分散メモリ型マルチプロセッサシステム１において、配列データは、並列演算処理ノード２の記憶装置群４上に分割配置されており、そのような配列データを利用・定義するプログラムが計算装置群３上で実行される。その際に、分散メモリ型マルチプロセッサシステム１は、配列の隣接する要素が分割配置されている複数の演算処理ノード（２-ｎ：ｎは任意の自然数）間で、演算処理ノード間通信部５を経由したシフト通信が繰り返し行われるような場合、シフト通信に必要な情報を、シフト通信スケジュールテーブル７に、各次元、方向毎に独立に保存し、後に再利用する。これにより、本発明の分散メモリ型マルチプロセッサシステム１は、毎回シフト通信次元やシフト通信方向、シフト通信対象の配列が変化したり、シフト通信が異なる手続中で発生したりする場合でも、高速な通信を行うものである。以下の実施の形態において、演算処理ノードがパーソナルコンピュータやサーバ装置に代表される情報処理装置であることが好ましい。また、計算装置（３−１〜３−ｎ）は、そのパーソナルコンピュータに備えられたＣＰＵであることが好ましい。さらに、記憶装置（４−１〜４−ｎ）は、そのパーソナルコンピュータに備えられたＲＡＭであることが好ましい。
【００２２】
［実施の形態の構成］
以下に、図面を参照して本発明の実施の形態の構成について詳細な説明を行う。図１は、本実施の形態の分散メモリ型マルチプロセッサシステム１の構成を例示するブロック図である。図１に示されているように、分散メモリ型マルチプロセッサシステム１上で、配列データが、並列演算処理ノード２の記憶装置群４上に分割配置されており、そのような配列データを利用・定義するプログラムが計算装置群３上で実行される際に、配列の隣接する要素が分割配置されている並列演算処理ノード２間で、演算処理ノード間通信部５を経由したシフト通信が行われる。
【００２３】
換言すると、本実施の形態の分散メモリ型マルチプロセッサシステム１は、並列演算処理ノード２を備えて構成されている。図１に示されているように、並列演算処理ノード２は、複数の演算処理ノード（２−１〜２−ｎ：ｎは任意の自然数）で構成されている。それぞれの演算処理ノード（２−１〜２−ｎ）は、計算装置（３−１〜３−ｎ）と記憶装置（４−１〜４−ｎ）を含んで構成されている。また、図１に示されているように、複数の演算処理ノード（２−１〜２−ｎ）は、演算処理ノード間通信部５を介して互いに通信可能に接続されている。本実施の形態の分散メモリ型マルチプロセッサシステム１は、互いに接続される複数の演算処理ノード（２−１〜２−ｎ）によって並列演算処理ノード２を構成し、また、その並列演算処理ノード２は、計算装置群３と記憶装置群４とによって、連携して情報処理を実行している。
【００２４】
以下に、本実施の形態におけるシフト通信を実行するための構成について説明を行う。図２は、本実施の形態におけるシフト通信実行部６の構成を例示するブロック図である。本実施の形態において、演算処理ノード（２−１〜２−ｎ）間で実行されるシフト通信は、各演算処理ノード（２−１〜２−ｎ）のそれぞれに備えられた通信インターフェース（図示されず）を介して実行されることが好ましい。その演算処理ノード（２−１〜２−ｎ）間での通信スケジュールは、シフト通信実行部６によって決定される。この通信スケジュール決定の動作は、実行時に呼び出される通信ライブラリが行うことが好ましい。
【００２５】
図２を参照すると、シフト通信部６は、マッピング解析部６−１と、通信スケジュール再利用部６−２と、通信スケジュール生成部６−３と、シフト通信実行部６−４とを含んで構成されている。マッピング解析部６−１は、シフト通信を行う配列の分割配置方法を解析する情報処理機能ブロックである。通信スケジュール再利用部６−２は、同一の分割配置に対するシフト通信スケジュールテーブル７が存在するかどうかを検索する情報検索機能ブロックである。また通信スケジュール再利用部６−２は、その検索の結果、所定のシフト通信スケジュールテーブル７が存在しない場合、新規にシフト通信スケジュールテーブル７を生成する。さらに、同一の分割配置に対するシフト通信スケジュールテーブル７が存在する場合、必要な次元の必要な方向に対するシフト通信スケジュールが既に生成されているかどうかを検索する。その検索の結果、生成されるべきシフト通信スケジュールが生成されていない場合、通信スケジュール生成部６−３に生成指示をする。また、必要なシフト通信スケジュールが全て生成済の場合、シフト通信実行部６−４にシフト通信の実行を指示する。
【００２６】
通信スケジュール生成部６−３は、新たに生成が必要なシフト通信スケジュールがある場合に、そのシフト通信スケジュールを生成する情報処理機能ブロックである。通信スケジュール生成部６−３は、必要な分割配置方法、次元、方向に対応したシフト通信スケジュールを生成し、シフト通信スケジュールテーブル７の該当する次元、方向のシフト通信スケジュールとして保存する。
【００２７】
シフト通信実行部６−４は、シフト通信スケジュールテーブル７を参照して、実際のシフト通信を行う通信処理部である。
【００２８】
図３は、シフト通信実行部６によって生成されるシフト通信スケジュールテーブル７の構成を例示するテーブルである。図３を参照すると、シフト通信スケジュールテーブル７は、第１通信スケジュール７１〜第ｍ通信スケジュール７ｎを含んで構成されている。
【００２９】
第１通信スケジュール７１は、シフト通信における１次元目下方向のシフト通信スケジュールを保持している。第２通信スケジュール７２は、シフト通信における１次元目上方向のシフト通信スケジュールを保持している。第３通信スケジュール７３は、シフト通信における２次元目下方向のシフト通信スケジュールを保持している。第４通信スケジュール７４は、シフト通信における２次元目上方向のシフト通信スケジュールを保持している。このように、シフト通信スケジュールテーブル７を構成する各テーブルには、各次元と方向とが関連付けられたスケジュールが保持されている。そして、第ｍ−１通信スケジュール７ｎ−１は、シフト通信におけるｎ次元目下方向のシフト通信スケジュールを保持し、最終的にテーブルを構成する第ｍ通信スケジュール７ｎは、シフト通信におけるｎ次元目上方向のシフト通信スケジュールを保持する（ｍは任意の自然数に対応する）。
【００３０】
［実施の形態の動作］
以下に、本実施の形態の動作の概要を説明する。例えば、図４のＨＰＦ言語によるプログラム例を参照すると、４要素のプロセッサ構成Ｐ（２，２）の各要素が、それぞれ１つの演算処理ノード（例えば、演算処理ノード２−１）に対応しているとすると、配列Ａ、Ｂ、Ｃは、図５のように、並列演算処理ノード２の記憶装置群４上に分割配置されている。
【００３１】
時間発展ループ中で起動されるサブルーチンＳＵＢ１中のループを並列演算処理ノード２上で配列Ａに対するオーナーコンピュートルール（配列Ａの要素が配置されている演算処理ノード上で演算を行う）により並列計算する場合、配列Ａに対して、配列Ｂの２次元目の添字が下方向に１要素、上方向に２要素分ずれているため、配列Ｂの隣接する要素が分割配置されている並列演算処理ノード２間で、配列Ｂの２次元目の下方向に１要素、上方向に２要素の通信が必要となる。なお、このような配列データの隣接要素間の通信をシフト通信という。
【００３２】
同様に、時間発展ループ中で起動されるサブルーチンＳＵＢ２中のループを並列演算処理ノード２上で配列Ａに対するオーナーコンピュートルール（配列Ａの要素が配置されている演算処理ノード上で演算を行う）により並列計算する場合、配列Ａに対して、配列Ｃの１次元目の添字が下方向に１要素、上方向に１要素、２次元目の添字が下方向に１要素分ずれているため、配列Ｃの隣接する要素が分割配置されている並列演算処理ノード２間で、配列Ｃの１次元目の下方向に１要素、上方向に１要素、２次元目の下方向に１要素の通信が必要となる。
【００３３】
このように、必要なシフト通信の対象配列、対象次元や方向が毎回変化したり、異なる手続にまたがっていたりしても、配列の分割配置方法が同じであれば、分割配置方法と一対一に対応するシフト通信スケジュールテーブル７中に、通信スケジュールを各次元、各方向独立に生成し、後に再利用する。これにより通信スケジュール生成のコストを削減し、高速化を行う。
【００３４】
以下に本実施の形態の動作について詳細に説明する。以下の動作の説明において、上述の分散メモリ型マルチプロセッサシステム１に対応して動作の説明を行う。分散メモリ型マルチプロセッサシステム１において、配列データは、並列演算処理ノード２の記憶装置群４上に分割配置されており、そのような配列データを利用・定義するプログラムは、計算装置群３上で実行される場合を例示し、その配列の隣接する要素が分割配置されている並列演算処理ノード２間で、演算処理ノード間通信部５を経由したシフト通信が行われる場合に対応して動作を説明する。また、以下の述べる動作は、図４に例示されているＨＰＦ言語によるプログラムに対応して実行されるものとする。
【００３５】
図４のプログラム例を参照すると、時間発展ループ中で、シフト通信を含むサブルーチンＳＵＢ１、ＳＵＢ２が繰り返し呼び出されている。ここで、図４に出現する配列Ａ、Ｂ、Ｃは、４要素のプロセッサ構成Ｐ（２，２）の各要素が、それぞれ１つの演算処理ノードに対応しているものとし、図５のように、並列演算処理ノード２の記憶装置群４上に分割配置されているものとする。
【００３６】
図４のサブルーチンＳＵＢ１中のループを計算手段上で、配列Ａに対するオーナーコンピュートルール（配列Ａの要素が配置されている演算処理ノード上で演算を行う）により並列計算する場合、配列Ａに対して、配列Ｂの２次元目の添字が下方向に１要素、上方向に２要素分ずれている。そのため、配列Ｂの隣接する要素が分割配置されている各演算処理ノード（２−１〜２−ｎ）間で、配列Ｂの２次元目の下方向に１要素、上方向に２要素の通信が必要となる。
【００３７】
同様に、時間発展ループ中で起動されるサブルーチンＳＵＢ２中のループを計算手段上で、配列Ａに対するオーナーコンピュートルール（配列Ａの要素が配置されている演算処理ノード上で演算を行う）により並列計算する場合、配列Ａに対して、配列Ｃの１次元目の添字が下方向に１要素、上方向に１要素、２次元目の添字が下方向に１要素分ずれている。そのため、配列Ｃの隣接する要素が分割配置されている並列演算処理ノード２間で、配列Ｃの１次元目の下方向に１要素、上方向に１要素、２次元目の下方向に１要素の通信が必要となる。
【００３８】
図４のサブルーチンＳＵＢ１が初めて起動された時、シフト通信部６のマッピング解析部６−１は、その中のループが並列実行される直前に起動される。このとき、マッピング解析部６−１は、シフト対象の配列データＢの分割配置方法を解析する。
【００３９】
通信スケジュール再利用部６−２は、マッピング解析部６−１の解析により、特定された配列データＢの分割配置に対応するシフト通信スケジュールテーブル７が生成されていないことを認識する。従って、通信スケジュール再利用部６−２は、配列データＢに対して必要な、２次元目の下方向１要素分、２次元目の上方向２要素分のシフト通信スケジュールも生成されていないことを認識する。通信スケジュール再利用部６−２は、この認識に基づいて、配列データＢの分割配置方法と同一の分割配置方法を持つ配列に対応するシフト通信スケジュールテーブル７の生成を行う。換言すると、通信スケジュール再利用部６−２は、第３通信スケジュール７３、第４通信スケジュール７４を格納可能な新たなシフト通信スケジュールテーブル７を生成する。
【００４０】
通信スケジュール生成部６−３は、配列データＢに対して必要な、２次元目の下方向１要素分のシフト通信スケジュール、２次元目の上方向２要素分のシフト通信スケジュールをそれぞれ生成し、配列データＢの分割配置方法と同一の分割配置方法を持つ配列に対するシフト通信スケジュールテーブル７（上述の新たなシフト通信スケジュールテーブル７）の、第３通信スケジュール７３、第４通信スケジュール７４に登録する。
【００４１】
次に、シフト通信実行部６−４は、生成されたシフト通信スケジュールテーブル７中の、第３通信スケジュール７３、第４通信スケジュール７４に基づいて、配列データＢに対するシフト通信を実行する。
【００４２】
図４のサブルーチンＳＵＢ２が初めて起動された時、ループが並列実行される直前にシフト通信部６のマッピング解析部６−１が起動される。このとき、マッピング解析部６−１は、シフト対象の配列データＣの分割配置方法を解析する。
【００４３】
通信スケジュール再利用部６−２は、マッピング解析部６−１により特定された配列データＣの分割配置方法と同一の分割配置方法に対するシフト通信スケジュールテーブル７を検索する。通信スケジュール再利用部６−２は、この検索によって、図４のサブルーチンＳＵＢ１が初めて起動された時に生成されたシフト通信スケジュールテーブル７（新たなシフト通信スケジュールテーブル７）が、Ｃと同一の分割配置方法に対応するシフト通信スケジュールであることを検出する。さらに、通信スケジュール再利用部６−２は、サブルーチンＳＵＢ２のループで必要となる１次元目の下方向、１次元目の上方向のシフト通信スケジュールが未生成であることを検出し、２次元目の下方向の第３通信スケジュール７３が生成済であることを検出する。
【００４４】
通信スケジュール生成部６−３は、サブルーチンＳＵＢ２のループで必要となる１次元目の下方向１要素分、１次元目の上方向１要素分のシフト通信スケジュールを生成し、シフト通信スケジュールテーブル７中の、１元目下方向第１通信スケジュール７１、１元目上方向第２通信スケジュール７２に登録する。
【００４５】
シフト通信実行部６−４は、シフト通信スケジュールテーブル７中の、１元目下方向第１通信スケジュール７１、１元目上方向第２通信スケジュール７２、２元目下方向第３通信スケジュール７３、に基づいて、配列データＢに対するシフト通信を実行する。
【００４６】
図４のサブルーチンＳＵＢ１が２回目以降起動され、ループが並列実行される際には、ループ直前に起動されるシフト通信部６のマッピング解析部６−１がシフト対象の配列データＢの分割配置方法を解析する。通信スケジュール再利用部６−２は、マッピング解析部６−１により特定された配列データＢの分割配置方法と同一の分割配置方法に対するシフト通信スケジュールテーブル７を検索し、対応するシフト通信スケジュールテーブル７には、必要となる２次元目の下方向１要素分の第３通信スケジュール７３、２次元目の上方向２要素分の第４通信スケジュール７４のシフト通信スケジュールが既に登録されていることを検出する。
【００４７】
シフト通信実行部６−４は、シフト通信スケジュールテーブル７の２次元目の下方向の第３通信スケジュール７３、２次元目の上方向の第４通信スケジュール７４を参照して、必要なシフト通信を行う。
【００４８】
さらに、図４のサブルーチンＳＵＢ２が２回目以降起動され、ループが並列実行される際には、ループ直前に起動されるシフト通信部６のマッピング解析部６−１がシフト対象の配列データＣの分割配置方法を解析する。通信スケジュール再利用部６−２は、マッピング解析部６−１により特定された配列データＣの分割配置方法と同一の分割配置方法に対するシフト通信スケジュールテーブル７を検索し、対応するシフト通信スケジュールテーブル７には、１次元目下方向１要素分の第１通信スケジュール７１、１次元目上方向１要素分の第２通信スケジュール７２、２次元目下方向１要素分の第３通信スケジュール７３が既に登録されていることを検出する。
【００４９】
シフト通信実行部６−４は、１次元目の下方向の第１通信スケジュール７１、１次元目の上方向の第２通信スケジュール７２、２次元目の下方向の第３通信スケジュール７３を参照して、必要なシフト通信を行う。
【００５０】
以後、図４のサブルーチンＳＵＢ１、サブルーチンＳＵＢ２が繰り返し起動された際、必要なシフト通信のスケジュールは既に生成されており、シフト通信スケジュールテーブル７に登録されている。そのため、同様に、スケジュール生成を行わずに、シフト通信を実行することができる。
【００５１】
このように、必要なシフト通信の対象配列、対象次元や方向が毎回変化したり、異なる手続にまたがっていても、分割配置方法が同じであれば、１つのシフト通信スケジュールテーブル７中に、通信スケジュールを各次元、各方向独立に生成することにより通信スケジュール生成のコストを削減し、高速にシフト通信を行うことができる。
【図面の簡単な説明】
【００５２】
【図１】図１は、本実施の形態の分散メモリ型マルチプロセッサシステムの構成を例示するブロック図である。
【図２】図２は、本実施の形態におけるシフト通信実行部の構成を例示するブロック図である。
【図３】図３は、シフト通信スケジュールテーブルの構成を例示するテーブルである。
【図４】図４は、ＨＰＦ言語によるプログラム例である。
【図５】図５は、並列演算処理ノードの記憶装置に分割配置される配列の構成を例示している。
【符号の説明】
【００５３】
１…分散メモリ型マルチプロセッサシステム
２…並列演算処理ノード
２−１〜２−ｎ…演算処理ノード
３…計算装置群
３−１〜３−ｎ…計算装置
４…記憶装置群
４−１〜４−ｎ…記憶装置
５…演算処理ノード間通信部
６…シフト通信部
６−１…マッピング解析部
６−２…通信スケジュール再利用部
６−３…通信スケジュール生成部
６−４…シフト通信実行部
７…シフト通信スケジュールテーブル
７１〜７ｎ…第１〜第ｍ通信スケジュール
【図１】
2006285588.tif 000003
【図２】
2006285588.tif 000004
【図３】
2006285588.tif 000005
【図４】
2006285588.tif 000006
【図５】
2006285588.tif 000007