(57)【特許請求の範囲】
【請求項１】
逐次プログラムもしくは逐次プログラムに並列化用の指示を加えたプログラムを分散メモリ型の並列計算機用のプログラムに変換する際に、手続き呼び出しの上位手続き側での実引数に対して、上位手続き側での分散パターンから下位手続きでの分散パターンへの再分散を行うコードを生成するプログラム並列化変換装置であって、
上記上位手続きでの上記下位手続きの呼び出しの前に、上記実引数に対応する上記下位手続き側の仮引数の分散パターンを取得するコードと、該仮引数の分散パターンと上記実引数の分散パターンとの一致を判定し、双方の分散パターンが一致している場合には上記再分散を行わずに上記上位手続きでの下位手続きの呼び出しを実行するコードとを生成し、
上記取得した双方の分散パターンが一致していない場合に上記再分散を行うコードを上記上位手続きでの下位手続きの呼び出しの後に生成するコード変換手段を有することを特徴とするプログラム並列化変換装置。
【請求項２】
逐次プログラムもしくは逐次プログラムに並列化用の指示を加えたプログラムを分散メモリ型の並列計算機用のプログラムに変換する際に、手続き呼び出しの上位手続き側での実引数に対して、上位手続き側での分散パターンから下位手続きでの分散パターンへの再分散を行うコードを生成するプログラム並列化変換装置であって、
上記実引数に対応する上記下位手続き側の仮引数の分散パターンを上記上位手続きと上記下位手続き間で共有されるメモリ領域を介して取得するコードと、該仮引数の分散パターンと上記実引数の分散パターンとの一致を判定し、双方の分散パターンが一致している場合には上記再分散を行わずに上記上位手続きでの下位手続きの呼び出しを実行するコードとを生成し、
上記取得した双方の分散パターンが一致していない場合に上記再分散を行うコードを上記上位手続きでの下位手続きの呼び出しの後に生成するコード変換手段を有することを特徴とするプログラム並列化変換装置。
【請求項３】
逐次プログラムもしくは逐次プログラムに並列化用の指示を加えたプログラムを分散メモリ型の並列計算機用のプログラムに変換するプログラム並列化変換方法であって、
上位手続き側で手続き呼び出しの実引数となっているデータに対応する下位手続き側の仮引数の分散パターンを取得するための関数を呼び出すコードと、取得した上記下位手続き側の仮引数の分散パターンと上記上位手続き側の実引数の分散パターンとの一致を判定し、双方の分散パターンが一致している場合に上記再分散を行わずに上記下位手続きの仮引数に対して上記実引数をそのまま与えて上記上位手続きで上記下位手続きを呼び出すコードとを該手続き呼び出しの前に生成するステップと、
上記取得した双方の分散パターンが一致していない場合に上記上位手続きの分散パターンから上記下位手続きの分散パターンへの再分散を行うコードと、上記下位手続きの仮引数に対して再分散後の仮引数を与えて上記下位手続きを呼び出すコードとを上記上位手続きでの手続き呼び出しの後に生成するステップと
を有することを特徴とするプログラム並列化変換方法。
【請求項４】
逐次プログラムもしくは逐次プログラムに並列化用の指示を加えたプログラムを分散メモリ型の並列計算機用のプログラムに変換するプログラム並列化変換方法であって、
上記上位手続きと上記下位手続き間で共有されるメモリ領域を介して、上記上位手続き側で上記下位手続きの仮引数の分散パターンを取得するコードを生成するステップと、
取得した上記下位手続き側の仮引数の分散パターンと上記上位手続き側の実引数の分散パターンとの一致を判定するコードと、双方の分散パターンが一致している場合に上記再分散を行わずに上記下位手続きの仮引数に対して上記実引数をそのまま与えて上記上位手続きで上記下位手続きを呼び出すコードとを該手続き呼び出しの前に生成するステップと、
上記取得した双方の分散パターンが一致していない場合に上記上位手続きの分散パターンから上記下位手続きの分散パターンへの再分散を行うコードと、上記下位手続きの仮引数に対して再分散後の仮引数を与えて上記下位手続きを呼び出すコードとを上記上位手続きでの下位手続き呼び出しの後に生成するステップと
を有することを特徴とするプログラム並列化変換方法。
【請求項５】
コンピュータに、請求項３、もしくは、請求項４のいずれかに記載のプログラム並列化変換方法での各ステップを実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、物理的に分散したメモリを持つ並列計算機向けにプログラムを変換するコンパイル技術に係り、特に、手続き間での分散パターンの再分散を効率的に行うのに好適なプログラム並列化変換装置と方法およびそのプログラムを記録した記録媒体に関するものである。
【０００２】
【従来の技術】
図１０は、分散メモリ型の並列計算機の構成例を示すブロック図である。
分散メモリ型の並列計算機では、自プロセッサ１０１〜１０ｎの持つメモリ１１１〜１１ｎ（ローカルメモリ）に対しては高速にアクセスできるが、他プロセッサの持つメモリにアクセスするためには、相互結合ネットワーク１２１を介してプロセッサ間で通信を行なわなければならず、ローカルメモリに比べ大きな時間を必要とする。
【０００３】
そのため、分散メモリ型の並列計算機では、効率よく計算を行なうために、できるだけプロセッサ間での通信が少なくなるように、配列等のデータを各プロセッサの持つローカルメモリに分散させる。このようなデータの各プロセッサへの分散のしかたを、分散パターンと呼ぶ。尚、ここでいう分散メモリ型並列計算機とは、ハードウェア又はオペレーティングシステムにより、物理的には各プロセッサに分散したメモリを、ソフトウェア的には１つのアドレス空間を持つ共有メモリとして扱うことができるようにした、分散共有メモリ型並列計算機も含む。
【０００４】
一般に、各プロセッサがアクセスするデータの範囲は、プログラムの実行中に変化するため、１つの分散パターンだけでプログラムを実行しようとしても、プロセッサ間での通信が多発して、性能が低下することが多い。そのため、プログラムの途中でデータの分散パターンを変更して、プロセッサ間での通信をできるだけ減らすことが行なわれる。このようなプログラムの途中でデータの分散パターンを変更することを、再分散と呼ぶ。
【０００５】
コンパイラを用いて逐次計算機用に書かれたプログラムを並列計算機用に変換する場合、計算の各プロセッサへの割り当てや、プロセッサ間での通信の生成は、コンパイラにより自動的に行なわれるが、データの分散パターンは、プログラマが、指示文の形でプログラムに挿入することによって指定するのが通常であった。しかし、最適な分散パターンは、コンパイラが生成するプロセッサ間通信の量や、プログラムを実行しようとしているプラットフォームの特性に大きく依存するため、これを人手によって求めるのは困難な作業であった。
【０００６】
このような問題に対処するために、データの分散パターンについても、コンパイラが最適なものを自動的に選択する自動データ分散コンパイラについての技術が、例えば、特開平６−１６１７７６号公報に記載されている。一般にプログラムは複数の手続きから構成され、データの分散パターンは各手続き毎に異なる場合があるため、手続き呼び出しにおいて上位手続きと下位手続きでの分散パターンが異なる場合、再分散を行なって、データの分散パターンをそれぞれの手続きでの分散パターンに合わせる必要があるが、特開平６−１６１７７６号公報に記載の技術では、コンパイラによりこれを実現することができる。
【０００７】
すなわち、この技術では、コンパイラが、手続き呼び出しの実引数となっているデータに対して、そのデータの分散パターンに関する情報を格納する変数を生成し、その変数を手続き呼び出しの引数に追加している。この技術によれば、各手続きを別々にコンパイルした場合でも、実行時に、手続き呼び出しの下位手続きで、上位手続きでのデータの分散パターンを知ることができるので、コンパイラは、この情報を元に、上位手続きでの分散パターンを下位手続きでの分散パターンに合わせて変更することができる。
【０００８】
このように、コンパイルを各手続き毎に独立に行なう場合、コンパイラが自動的にデータ分散を決定するか、あるいは手続き呼び出しの下位手続き側に、上位手続き側での引数の分散パターンに関する情報がプログラマにより与えられていないと、下位手続きのコンパイル時には、上位手続きでの分散パターンの情報は不明である。このため、上記技術では、仮引数を、その仮引数に対応する分散パターンの情報に基づいて、下位手続き内で使用される分散パターンに合わせて再分散するコードを、下位手続き内に出力している。
【０００９】
しかし、実際には実引数と仮引数の分散パターンが一致しているような場合もある。このような場合に再分散を行なうことは、たとえプロセッサ間での通信が起きないにしても、余分なオーバーヘッドとなる。なぜなら、コンパイラは、コンパイル時には再分散が必要かどうか判定できないため、必ず再分散が行なわれるものとして、再分散後の領域を使うようなコードを出力するので、たとえ再分散が必要なくても、仮引数を再分散後の領域にコピーする処理が発生するためである。
【００１０】
このような問題には、各手続きを独立にコンパイルするのではなく、全手続きの分散パターンに関する情報を集め、手続き間での分散パターンに関する情報を各手続きのコンパイルに利用する、手続き間コンパイル技術で対処できる。すなわち、この手続き間コンパイル技術を使えば、手続き呼び出しにおいて、実引数と仮引数の分散パターンが一致しているかどうかをコンパイル時に判定し、一致している場合には再分散コードを出力しないようにできる。
【００１１】
しかし、このような手続き間コンパイルを行なうと、全手続きの情報をまとめて扱わなければならないため、コンパイルに必要なメモリ量や、コンパイル時間が増加するという問題がある。また、１つの手続きを修正すると、他の手続きもコンパイルし直さなければならなくなるという問題もある。
【００１２】
【発明が解決しようとする課題】
解決しようとする問題点は、分散メモリ型並列計算機向けにプログラムを変換する際、従来の手続き毎にコンパイルを行う技術では、手続き間で分散パターンが一致する場合における再分散を回避できない点である。
【００１３】
本発明の目的は、これら従来技術の課題を解決し、コンパイラによる分散メモリ型並列計算機向けのプログラム変換における実行性能の向上を可能とするプログラム並列化変換装置と方法およびそのプログラムを記録した記録媒体を提供することである。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、本発明のプログラム並列化変換装置と方法は、変換したプログラムの実行時に、実引数に対応する下位手続き側の仮引数の分散パターンを取得して、この仮引数の分散パターンと実引数の分散パターンとを比較し、双方の分散パターンが一致している場合には再分散を不要と判定してそのまま下位手続きを呼び出し、一致していない場合には、手続きの呼び出し前に上位手続きでの分散パターンから下位手続きでの分散パターンへの再分散を行い、手続き呼び出し後に下位手続きでの分散パターンから上位手続きでの分散パターンへの再分散を行うようなコードを出力することで、不要な再分散を削減する。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
図１は、本発明のプログラム並列化変換方法の処理手順例を示すフローチャートであり、図２は、本発明のプログラム並列化変換方法を実行するコンパイラの構成例を示すブロック図、図３は、図２におけるコンパイラを実装した本発明のプログラム並列化変換装置の構成例を示すブロック図である。
【００１６】
図３において、３１はＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等からなる表示装置、３２はキーボードやマウス等からなる入力装置、３３はハードディスクドライブ等からなる外部記憶装置、３４はＣＰＵ（Central Processing Unit）や主メモリ等を有し蓄積プログラム方式によるコンピュータ処理を行なう情報処理装置、３５は本発明に係る処理プログラムやデータ等を記録した光ディスク、３６は光ディスク３５の読み取り動作を行なう駆動装置である。
【００１７】
光ディスク３５に記録された処理プログラムやデータを外部記憶装置３３および情報処理装置３４内の主メモリに読み込むことにより、情報処理装置３４内に、図２に示す構成のコンパイラ１が実装される。
【００１８】
以下、図２を用いてコンパイラ１の構成と動作を説明する。
図２に示す本例のコンパイラ１は、構文解析部２、並列化解析部３、分散パターン決定部４、手続き呼び出しコード変換部５、分散パターン情報取得手続き生成部６、並列化変換部７、コード生成部８により構成され、本発明のプログラム並列化変換方法を実行して、図１０に示した分散メモリ型の並列計算機用のプログラムを生成する。
【００１９】
すなわちコンパイラ１は、プログラマが作成した逐次計算機用プログラム又は逐次計算機用プログラムに並列化指示文を付加したプログラムである変換前プログラム９を入力し、これを構文解析部２により、コンパイラ内部での表現形式に変換する。
【００２０】
並列化解析部３では、並列化に必要なデータフローや制御フローの解析を行ない、その結果を元に分散パターン決定部４において分散パターンを決定する。そして、手続き呼び出しコード変換部５では、プログラム中に含まれる手続き呼び出しを検出し、それぞれに対して、本発明を適用したコード変換を行なう。
【００２１】
すなわち、手続き呼び出しコード変換部５において、手続き呼び出しを変換する際、まず、下位手続きの仮引数の分散パターンの情報を取得する関数の呼び出しにより、あるいは手続き間で共有されるメモリによって、下位手続きでの分散パターンの情報を取得するコードを生成する。
【００２２】
そして、取得した下位手続きでの分散パターンの情報に基づいて、手続き呼び出し時に、実引数と仮引数の双方の分散パターンが一致しているか否か、すなわち、上位手続きで再分散が必要かどうか実行時に判定し、再分散が必要でない場合はそのまま下位手続きを呼び出し、再分散が必要な場合は、手続きの呼び出し前に上位手続きでの分散パターンから下位手続きでの分散パターンへの再分散を行い、手続きの呼び出し後に下位手続きでの分散パターンから上位手続きでの分散パターンへの再分散を行なうようなコードを出力する。
【００２３】
また、分散パターン情報取得手続き生成部６では、処理中の手続きの仮引数の分散パターンを与える手続きを生成する。その後、並列化変換部７において、並列化に必要なその他の変換を行ない、最後にコード生成部８により、実際のコードを生成して、変換後プログラム１０を出力する。
【００２４】
このようなコンパイラ１による本発明に係るプログラム変換方法の処理の流れを、図１に基づき説明する。
図１におけるステップ１０１では、まず処理中の手続き内での分散パターンを、自動的あるいはプログラマの指示に基づいて決定する。ステップ１０２では、処理中の手続きに手続き呼び出しがあるかどうか判定し、無い場合はステップ１０５に進む。
【００２５】
手続き呼び出しがあった場合、それぞれの手続き呼び出しについて、ステップ１０３で、実引数に対応する仮引数の下位手続きでの分散パターン情報取得関数の呼び出しを生成し、ステップ１０４で、実引数と仮引数の分散パターンが一致しているかどうか判定し、一致していない場合にのみ再分散を行なって、下位手続きを呼び出すコードを出力する。
【００２６】
ステップ１０５では、処理中の手続きが他の手続きから呼ばれる可能性がある手続きかどうか、すなわちＭＡＩＮ関数以外であるかどうかを判定し、ＭＡＩＮ関数であれば、処理を終了する。ＭＡＩＮ関数以外であれば、ステップ１０６で、処理中の手続きの仮引数の分散パターン情報取得関数を生成する。
【００２７】
次に、図４〜図７に示す具体的な例を用いて、コンパイラ１の動作、すなわち、本発明によるプログラムの変換例を説明する。
図４は、図２における変換前プログラムの具体例を示す説明図である。
【００２８】
図４における変換前上位手続きプログラム４１は、変換前のプログラムで、かつ、手続き呼び出しの上位手続き側となるプログラムである。この変換前上位手続きプログラム４１で呼び出している手続きは「SUB１」である。
また、変換前下位手続きプログラム４２は、変換前のプログラムで、かつ、手続き呼び出しの下位手続き側となるプログラムであり、変換前上位手続きプログラム４１の「call SUB１」で呼び出される。
【００２９】
図５は、図４に示した手続きに対して考えられる分散パターンの例を示す説明図である。
尚、ここでは、プロセッサ数を４台とし、図中のＰ０，Ｐ１，Ｐ２，Ｐ３は、それぞれ、０，１，２，３番のプロセッサに割り付けられた配列の領域を示す。
【００３０】
図４に示す変換前上位手続きプログラム４１では、２つの「do 10」ループのうち、内側のｉループにループの繰り返しにまたがる依存が存在するため、配列ａ，ｂの分散は、外側のｊループに対応する次元、すなわち２次元目を分散した方が、良い性能が得られる。
【００３１】
よって、配列ａは、図５における分散パターン５１のように、２次元目をブロック状に分散し、配列ｂも同様に、分散パターン５２のように２次元目をブロック分散することができる。このようにして決まった分散パターン５１，５２が、手続き「SUB1」の呼び出し時点での実引数ａ，ｂの分散パターンとなる。
【００３２】
一方、図４に示す変換前下位手続きプログラム４２は、２つの「do 20」ループのうち、外側のｊループに依存があるため、配列ａ，ｂは、内側のｉループに対応する１次元目を分散するのが良い。よって、配列ａは、図５における分散パターン５３のように、１次元目をブロック状に分散し、配列ｂも同様に、分散パターン５４のように１次元目をブロック分散することができる。
このようにして決まった分散パターン５３，５４が、下位手続きの仮引数ａ，ｂの手続き入口での分散パターンとなる。
【００３３】
図６は、図４における変換前上位手続きプログラムと変換前下位手続きプログラムの変換後プログラムの例を示す説明図である。
変換後上位手続きプログラム６１では、３〜４行目で、配列ａ，ｂの分散パターンに関する情報を、それぞれ「info_a」、「info_b」という変数に格納する。分散パターン「*,BLOCK」は、２次元配列の１次元目を非分散とし、２次元目をBLOCK分散することを表している。
【００３４】
次に１０行目では、手続き「SUB１」の呼び出しの前に、「SUB１」の仮引数の分散パターン情報を取得するための関数「sub1_info」を呼び出し、実引数ａに対応する仮引数の分散パターンを「info_a'」に取得し、実引数ｂに対応する仮引数の分散パターンを「info_b'」に取得するコードを出力する。
【００３５】
１１行目で、上位手続き側での分散パターン「info_a」、「info_b」と、下位手続き側での分散パターン「info_a'」、「info_b'」がそれぞれ一致しているかどうか判定し、全て一致している場合、１２行目で、下位手続き「SUB１」を呼び出す。この時の引数は、「ａ」と「ｂ」をそのまま渡す。
【００３６】
上位手続き側での分散パターンと下位手続き側での分散パターンが１つでも異なっている場合、１５行目で、配列ａの分散パターンを「info_a」から「info_a'」に変更する再分散を行ない、配列ａ'に格納し、１６行目で、配列ｂの分散パターンを「info_b」から「info_b'」に変更する再分散を行ない、配列ｂ'に格納する。
【００３７】
１７行目で、下位手続き「SUB１」を、再分散を行なった後の配列ａ'，ｂ'を実引数として呼び出す。１８，１９行目では、配列ａ，ｂの分散パターンを、元の分散パターン「info_a」、「info_b」に戻す再分散を行なうコードを出力している。
【００３８】
この例では、上位手続き側の実引数のうち、１つでも仮引数と分散パターンが一致していないものがあれば、全ての引数について再分散を行なっているが、これを、各実引数について、仮引数と分散パターンが一致するかしないかの２通りの組合わせを考えて、必要な引数にのみ再分散を行なうようなコードに変換することも可能である。ただしこの場合、引数の数のべき乗のオーダで必要なコード量が増えていくため、実際には、コード量とのかねあいを考えて変換を行なう必要がある。
【００３９】
また、変換後下位手続きプログラム６２では、３，４行目で、仮引数配列ａ，ｂの分散パターンに関する情報を、「info_a」、「info_b」という変数に格納している。分散パターン「BLOCK,*」は、２次元配列の１次元目をBLOCK分散し、２次元目を非分散とすることを表している。仮引数は、上位手続きにおいて、下位手続き入口での分散パターンに合うように再分散されていることが保証されているため、下位手続き側では再分散コードは必要ない。
【００４０】
図７は、手続き呼び出しの下位手続き側での引数の分散パターンを取得する関数の例を示す説明図である。
下位手続きをコンパイルする際には、下位手続き内での分散パターンは決定しているため、その分散パターンを、分散パターンを表す変数「info_a」，「info_b」に設定するコードを生成する。上位手続き側では、この分散パターン取得関数７１を呼び出すことで、下位手続きでの分散パターンを知ることができる。
【００４１】
以上の例では、下位手続きでの分散パターンを、分散パターンの情報を返す関数を呼び出すことで取得しているが、これは、手続き間で共有されるメモリを介して取得するようにしても実現できる。以下、その動作を図８，９を用いて説明する。
【００４２】
図８は、Fortranのコモン変数を用いて、下位手続きでの分散パターンを上位手続きで取得できるようにする例を示す説明図である。
変換後上位手続きプログラム８１における２行目のコモン変数（common）の宣言で、下位手続きの仮引数の情報を表す変数を宣言することで、下位手続きでの分散パターン情報が使用可能となる。
【００４３】
図９は、図８において上位手続きから参照される下位手続きの分散パターンを定義するプログラムの例を示す説明図である。
図９におけるプログラム９１は、Fortranの「block data」の機能を用いたもので、下位手続きをコンパイルするときに同時に生成する。３、４行目の「data」文で、下位手続きでの仮引数の分散パターンの情報を、分散パターンを保持する変数に設定する。
【００４４】
以上、図１〜図１０を用いて説明したように、本例のプログラム並列化変換装置と方法では、手続き呼び出しコード変換部５において手続き呼び出しを変換する際に、下位手続きの仮引数の分散パターンの情報を取得する関数を呼び出し、実引数と仮引数の分散パターンが一致している場合にはデータ分散を行なわないようにするコードを出力する。
【００４５】
このことにより、分散メモリ型の並列計算機向けにプログラムを変換する際、手続き呼び出しの際に発生する不必要な再分散を削減することができる。
特に、コンパイルに必要なメモリ量や時間が増加するという問題、および、１つの手続きを修正すると他の手続きもコンパイルし直さなければならなくなるという問題がある手続き間コンパイル方式を使用することなく、再分散を削減できるので、実行性能を向上することができる。
【００４６】
尚、本発明は、図１〜図１０を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、プログラム言語として「Fortran」を用いて説明したが、Ｃ言語等を用いたプログラムに対しても同様に適用できる。また、本例では、本発明に係る処理手順を記述したプログラムを記録する記録媒体として光ディスクを用いているが、ＦＤ（Flexible Disk）等の磁気ディスクを用いることでも良い。また、ネットワークを介してダウンロードすることでも良い。
【００４７】
【発明の効果】
本発明によれば、分散メモリ型並列計算機向けにプログラムを変換する際、手続き毎にコンパイラを行いながらも、手続き間で分散パターンが一致する場合におけるコンパイラによる再分散を回避でき、余分な再分散を行なわずに手続き呼び出しを実行できるので、コンパイルに必要なメモリ量や時間が増加するという問題がある手続き間コンパイル技術を用いる必要がなく、実行性能を向上させることが可能である。
【図面の簡単な説明】
【図１】本発明のプログラム並列化変換方法の処理手順例を示すフローチャートである。
【図２】本発明のプログラム並列化変換方法を実行するコンパイラの構成例を示すブロック図である。
【図３】図２におけるコンパイラを実装した本発明のプログラム並列化変換装置の構成例を示すブロック図である。
【図４】図２における変換前プログラムの具体例を示す説明図である。
【図５】図４に示した手続きに対して考えられる分散パターンの例を示す説明図である。
【図６】図４における変換前上位手続きプログラムと変換前下位手続きプログラムの変換後プログラムの例を示す説明図である。
【図７】手続き呼び出しの下位手続き側での引数の分散パターンを取得する関数の例を示す説明図である。
【図８】  Fortranのコモン変数を用いて、下位手続きでの分散パターンを上位手続きで取得できるようにする例を示す説明図である。
【図９】図８において上位手続きから参照される下位手続きの分散パターンを定義するプログラムの例を示す説明図である。
【図１０】分散メモリ型の並列計算機の構成例を示すブロック図である。
【符号の説明】
１：コンパイラ、２：構文解析部、３：並列化解析部、４：分散パターン決定部、５：手続き呼び出しコード変換部、６：分散パターン情報取得手続き生成部、７：並列化変換部、８：コード生成部、９：変換前プログラム、１０：変換後プログラム、３１：表示装置、３２：入力装置、３３：外部記憶装置、３４：情報処理装置、３５：光ディスク、３６：駆動装置、４１：変換前上位手続きプログラム、４２：変換前下位手続きプログラム、５１〜５４：分散パターン、６１：変換後上位手続きプログラム、６２：変換後下位手続きプログラム、７１：分散パターン取得関数、８１：変換後上位手続きプログラム、８２：変換後下位手続きプログラム、９１：プログラム、１０１〜１０ｎ：自プロセッサ、１１１〜１１ｎ：メモリ（ローカルメモリ）、１２１：相互結合ネットワーク。
【図１】
0003932748.tif 000002
【図２】
0003932748.tif 000003
【図３】
0003932748.tif 000004
【図４】
0003932748.tif 000005
【図５】
0003932748.tif 000006
【図６】
0003932748.tif 000007
【図７】
0003932748.tif 000008
【図８】
0003932748.tif 000009
【図９】
0003932748.tif 000010
【図１０】
0003932748.tif 000011