JPH0962639A - 並列計算機のプロセッサ間通信方法 - Google Patents

並列計算機のプロセッサ間通信方法

Info

Publication number
JPH0962639A
JPH0962639A JP7215601A JP21560195A JPH0962639A JP H0962639 A JPH0962639 A JP H0962639A JP 7215601 A JP7215601 A JP 7215601A JP 21560195 A JP21560195 A JP 21560195A JP H0962639 A JPH0962639 A JP H0962639A
Authority
JP
Japan
Prior art keywords
communication
processors
parameter
parameters
work area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7215601A
Other languages
English (en)
Other versions
JP3051972B2 (ja
Inventor
Kazuaki Ishizaki
一明 石崎
Hideaki Komatsu
秀昭 小松
Takeshi Ogasawara
武史 小笠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Japan Ltd
Original Assignee
IBM Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Japan Ltd filed Critical IBM Japan Ltd
Priority to JP7215601A priority Critical patent/JP3051972B2/ja
Priority to US08/700,898 priority patent/US5761426A/en
Publication of JPH0962639A publication Critical patent/JPH0962639A/ja
Application granted granted Critical
Publication of JP3051972B2 publication Critical patent/JP3051972B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 (修正有) 【課題】過去の通信履歴を用いて通信パターンの計算を
省略し、高速にプロセッサ間通信を行う。 【解決手段】並列計算機において、プロセッサ間の通信
パターンを決定する複数のパラメータを抽出するステッ
プ、前記パラメータを保存する作業領域を作成するステ
ップ、前記パラメータを作業領域に格納する実行時コー
ドを生成するステップ、通信パターンの履歴又はプロセ
ッサ間の通信のためのデータの読み書きを行うメモリア
クセスパターンの履歴を記憶するために、作業領域に前
記パラメータを格納するステップ、及び実行時コードが
実行された場合、実行時コードの実行に基づいた前記パ
ラメータを作業領域に記憶された前記パラメータと比較
するステップを有し、その比較結果に応じて、通信パタ
ーン又はメモリアクセスパターンを再利用して、プロセ
ッサ間の通信を実行する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、並列計算機のプロセッ
サ間通信方法に係り、特に過去の通信履歴を用いてプロ
セッサ間の通信パターンの計算を省略し、高速にプロセ
ッサ間通信を実行する方法に関する。
【0002】
【従来の技術】複数のプロセッサを有し、それぞれのプ
ロセッサがメモリを有するコンピュータシステムにおい
て、プログラムを高速に実行するためには、データをそ
れぞれのプロセッサに分割し、データに対する演算をそ
れぞれのプロセッサに分割する必要がある。この場合、
プロセッサ間でデータを受け渡すためにプロセッサ間で
データの受け渡し、すなわち通信が発生する。マルチプ
ロセッサシステムでプログラムを高速に実行するために
は、この通信を高速化することが重要である。
【0003】プロセッサ間の通信を高速化する方法とし
て、以下のような従来技術が知られている。配列xの要
素ベクタkが与えられたとき、その要素をもつプロセッ
サを与える関数をDx(k)とする。また、ループネス
トjにおいて、ループインデックスベクタiが与えられ
たとき、ループインデックスベクタiの計算を実行する
プロセッサを与える関数をCj(i)とする。さらにル
ープネストjにおいて、ループインデックスベクタiが
与えられたとき、jで参照する配列要素xを決定する関
数をFjx(i)とする。このとき、次式が成立するなら
ば、プロセッサ間の通信は発生しないが、成立しないな
らば通信が発生する。
【0004】
【数1】Dx(Fjx(i))=Cj(i)
【0005】この式は、iというインデックスでアクセ
スされる配列xの要素をもつプロセッサとiというイン
デックスの計算を行うプロセッサが等しいことを示して
いる。
【0006】通信が発生する場合、Dx(Fjx(i))
からCj(i)へ転送を行うプロセッサ間の通信パター
ンを決定する必要がある。
【0007】以下では、プログラム中の代入文における
通信の説明を簡単にするために、計算を行うプロセッサ
を求める関数Cj(i)を、代入文の左辺の配列の分割
と同一にする。この場合、プロセッサ間の通信が必要で
あるかどうかを求めるには、代入文の左辺の配列LHS
(Left-Hand-Side)と右辺の配列RHS(Right-Hand-Sid
e)について、以下の式が成立するかどうかを調べればよ
い。
【0008】
【数2】 DLHS(FjLHSx(i))=CRHSj(FJRHS(i))
【0009】この式は、iというインデックスでアクセ
スされる配列LHSの要素をもつプロセッサと、iとい
うインデックスでアクセスされる配列RHSの要素をも
つプロセッサが等しいことを示している。
【0010】代入文でアクセスされる配列の分割は、配
列を分割するプロセッサ数、各次元の大きさ及び分割方
法によって決定される。ここで、以下のようなベクタを
定義する。
【0011】ベクタp:配列の各次元を分割するプロセ
ッサの個数を示すベクタ ベクタn:配列の各次元の大きさを示すベクタ ベクタd:配列の各次元の分割方法を示すベクタ ベクタa:配列参照を決定する式(ループインデックス
変数に関する一次式)のパラメータ
【0012】このような定義において、配列xの分割を
決定する関数Dx(k)は、ベクタp,ベクタn及びベ
クタdで決定される。また、ループインデックスベクタ
は、ループインデックスの上下限によって決定される。
さらに、ループネストjで、ループインデックスベクタ
iが与えられたとき、参照する配列要素を決定する関数
jx(i)はベクタaで決定される。
【0013】従って、ある代入文を実行する際に必要と
なる通信を決定するには、プログラム中の以下のパラメ
ータが必要になる。
【0014】(1) ループインデックスの上下限 (2) 左辺の配列の各次元を分割するプロセッサ個数 (3) 左辺配列の各次元の大きさ (4) 左辺の配列の各次元の分割方法 (5) 左辺の配列参照を決定する式のパラメータ (6) 右辺の配列の各次元を分割するプロセッサ個数 (7) 右辺配列の各次元の大きさ (8) 右辺の配列の各次元の分割方法 (9) 右辺の配列参照を決定する式のパラメータ
【0015】これを以下のプログラムリスト1を例に説
明する。なお、一般に与えられたプログラムでは、アク
セスされる配列の内容は異なっているが、プロセッサ間
のデータ通信パターンは繰り返し実行される部分は同じ
であることが多いことが知られている。
【0016】
【数3】
【0017】なお、この例で、「!HPF$ PROCESSORS P
(4)」というステートメントは、4つのプロセッサを1
次元に配置し、そのプロセッサ配置にPという名前を付
けることを意味する。また、「!HPF$ DISTRIBUTE (BLOC
K) onto P :: A」というステートメントは、配列Aの分
割方法を表し、具体的には、配列Aを、ブロック分割
し、Pというプロセッサに配置することを意味する。ま
た、「A(I)=A(I-1)+A(I)+A(I+1)」を代入文という。
【0018】プログラム1において、上述のパラメータ
は、以下のようになる。
【数4】 (1) ループインデックスの上下限: 2,N-1 (2) 左辺の配列の各次元を分割するプロセッサ個数:1次元目 4 (3) 左辺配列の各次元の大きさ: 1次元目 N (4) 左辺の配列の各次元の分割方法: 1次元目 BLOCK (5) 左辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=0 (6) 右辺の配列の各次元を分割するプロセッサ個数:1次元目 4 (7) 右辺配列の各次元の大きさ: 1次元目 N (8) 右辺の配列の各次元の分割方法: 1次元目 BLOCK (9) 右辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=-1 1次元目 a=1,b=0 1次元目 a=1,b=1
【0019】従来の方法では、DO Iのループネストが
実行されるたびに繰り返し通信パターンを計算し、計算
された通信パターンに従って、相手プロセッサにデータ
を送信していた。従って、通信が発生する度に、通信パ
ターンを計算し、プロセッサ間通信を行う時間が必要で
あった。
【0020】
【発明が解決しようとする課題】上述のように、従来の
方法では、プロセッサ間のデータの受け渡しに必要とな
る度に、通信パターンを計算する必要が生じていた。こ
の通信パターンの計算に要する時間が、通信におけるオ
ーバーヘッドとなっていた。そこで、本発明は、プロセ
ッサ間の通信を高速化することを目的とする。
【0021】
【課題を解決するための手段】上記のプログラムリスト
1において、DO Iのループネストが繰り返し実行され
る度に、上記のパラメータは変更がない。ループネスト
が実行される際の通信パターンは、TIME=1の時に一度計
算してしまえば、TIME=2...10の次回以降は通信パター
ンの計算を行わずに、既に計算された通信パターンを再
利用してデータを送信すればよく、プロセッサ間の通信
パターンの計算を省略することができる。
【0022】そこで本発明は、複数のプロセッサを有す
るコンピュータにおけるプロセッサ間の通信を実行する
方法において、(a) プロセッサ間の通信パターンを決定
する複数のパラメータを抽出するステップと、(b) パラ
メータを保存する作業領域を作成するステップと、(c)
パラメータを作業領域に格納する実行時コードを生成す
るステップと、(d) 通信パターンの履歴、またはプロセ
ッサ間の通信のためのデータの読み書きを行うメモリア
クセスパターンの履歴を記憶するために、作業領域にパ
ラメータを格納するステップと、(e) 実行時コードが実
行された場合、実行時コードの実行に基づいたパラメー
タを作業領域に記憶されたパラメータと比較するステッ
プと、(f) その比較結果に応じて、作業領域に格納され
たパラメータを使用することにより、通信パターン又は
メモリアクセスパターンを再利用して、プロセッサ間の
通信を実行するステップとを有する方法を提供する。
【0023】ここで、ステップ(a)は、それぞれのパラ
メータが、ループネストを実行している間に値が変化す
るか、定数かどうかを調べることにより、通信パターン
がキャッシュ可能であるかどうかを判断することにより
抽出されるようにしてもよい。
【0024】また、ステップ(e)は、実行時コードの実
行に基づいたパラメータを作業領域に記憶された通信パ
ターンに関するパラメータと一致するかどうかを比較す
るようにしてもよい。
【0025】ステップ(e)は、実行時コードの実行に基
づいたパラメータを作業領域に記憶された通信パターン
に関するパラメータと一致するかどうかを比較し、パラ
メータと一致する場合には、さらにメモリアクセスパタ
ーンに関するパラメータと一致するかどうかを比較する
ようにしてもよい。
【0026】ステップ(a)において抽出されるパラメー
タは、プログラム中のループに関するパラメータ、ルー
プ内の代入文中の左辺及び右辺の配列を分割するプロセ
ッサの個数、配列の各次元の大きさ、配列の各次元の分
割方法、配列参照を決定する式にパラメータを有するよ
うにしてもよい。
【0027】また、上記の通信パターンは、一のプロセ
ッサから他のプロセッサへデータを受け渡しをする領域
を記述したものであってもよい。
【0028】さらに上記のメモリアクセスパターンは、
通信パターンに従いデータを受け渡しする際に、あるプ
ロセッサが管理するメモリ領域を記述したものであって
もよい。
【0029】
【実施例】図1は、本発明の実施例を示すフローチャー
トである。このフローチャートは、コンパイラによる解
析とコード生成(ステップ11からステップ13)及び
実行時コードによる解析と通信パターンの保存(ステッ
プ14からステップ18)とから構成されている。
【0030】キャッシュ解析(ステップ11) まず、対象とするループネスト内の代入文を実行する際
に発生する通信パターンが、キャッシュ可能かどうか、
すなわち、過去の履歴を使用することが可能かどうかを
解析する。そのためには、以下のパラメータについて調
べる必要がある。
【0031】(1) ループインデックスの上下限 (2) 左辺の配列の各次元を分割するプロセッサ個数 (3) 左辺の配列の各次元の大きさ (4) 左辺の配列の各次元の分割方法 (5) 左辺の配列参照を決定する式のパラメータ (6) 右辺の配列の各次元を分割するプロセッサ個数 (7) 右辺の配列の各次元の大きさ (8) 右辺の配列の各次元の分割方法 (9) 右辺の配列参照を決定する式のパラメータ
【0032】キャッシュ可能であるためには、これらの
パラメータが以下の条件を満たすことが必要である。 条件1:それぞれのパラメータが、定数又はループネス
トを実行している間に値が変化しないループ内不変変数
であること この条件を満たす場合には、通信パターンのキャッシュ
が可能であると判断し、次のステップに進む。
【0033】キャッシュのためのデータ抽出(ステップ
12) 上記のパラメータのうちで、実行時コードの実行時に変
化する可能性のあるパラメータを調べる。そして、通信
パターンの履歴またはメモリアクセスパターンの履歴を
記憶するために作業領域を設け、変化する可能性がある
パラメータの個数だけ、コンパイル時に旧パラメータと
現パラメータの領域を作業領域中に確保する。
【0034】図2は、本実施例における作業領域を示す
図である。ここで、図中の「フラグ」には、旧パラメー
タの値が有効であるならば1を設定し、無効ならば0を
設定する。また領域を確保する際には0を設定してお
く。また、「通信パターンへのポインタ」は、自プロセ
ッサからデータを一括して送ることのできる配列領域を
全てのプロセッサに対して求めた結果としてのポインタ
を示が示されている。「アクセスパターンへのポイン
タ」は、プロセッサ間通信パターンに従ってデータを送
る際に、自プロセッサのメモリから読み出すベースアド
レス、ストライド、要素雄へのポインタが示されてい
る。さらに、「旧パラメータ」には、前回通信パターン
を計算した際のパラメータの値を、「現パラメータ」に
は、現在のパラメータの値が示されている。
【0035】実行時に変化する可能性のあるパラメータ
について、上記の作業領域の現パラメータに格納するコ
ードを生成する。但し、実行時に変化する可能性のある
パラメータであっても、以下の2つの条件を満たすなら
ば、そのパラメータを作業領域に保存するコードを生成
しない。
【0036】条件2: (1) 配列のある次元をアクセスする式に、ループインデ
ックスが現れない。 (2) 配列のある次元を分割するプロセッサ数が1である
か、又は、プロセッサへ分割されていない。
【0037】これは、プロセッサ間通信パターンを計算
するパラメータの値が異なっても、プロセッサ内のメモ
リアクセスパターンが異なるだけで、プロセッサ間通信
パターンは同じである点に着目したものである。従っ
て、このような条件を満たせば、通信パターンの計算を
省略することができる。
【0038】なお、このとき、配列の次元に関する全て
のパラメータを、キャッシュ可能解析のパラメータとし
て、作業領域に保存することはしない。但し、このパラ
メータは、実行時に各プロセッサにおいて、プロセッサ
間通信を行うデータの読み込み・書き込みを行うメモリ
アドレスを決定する際のパラメータとして用いる。
【0039】以上のステップ12及びステップ13によ
り、プロセッサ間の通信パターンを決定する複数のパラ
メータが抽出される。
【0040】実行時キャッシュ解析のためのコード生成
(ステップ13) 次のステップでの処理を行うためのサブルーチンコール
を生成する。
【0041】キャッシュ可能解析(ステップ14) ステップ13において生成されたサブルーチンコール中
のライブラリの処理について以下に説明する。なお、以
下の説明は、このライブラリが実行される時点で、コン
パイル時に確保した作業領域の現パラメータに、最新の
値が入っていることを前提としている。まず、前回利用
した通信パラメータが利用可能であるかどうかを調べる
(ステップ14)。すなわち、作業領域における現パラ
メータと旧パラメータとが一致するかどうかを調べる。
なお、このステップについては、後述する。
【0042】通信データのメモリアクセスパターン計算
チェック(ステップ15) プロセッサ間通信パターンに従って転送するデータを、
メモリから読み出し、又は書き込みするアクセスパター
ンがキャッシュされたデータと同じであるかどうかをチ
ェックする。ステップ12における条件2を満たすパラ
メータが存在しない場合、すなわち、メモリアクセスパ
ターンが変化しない場合には、ステップ18に進む。条
件2を満たすパラメータがある場合には、通信パターン
が同じであっても、メモリアクセスパターンが異なる場
合があるので、ステップ17に進め、メモリアクセスパ
ターンを計算する。ステップ17のメモリアクセスパタ
ーンの計算は、次のステップ16のプロセッサ間通信パ
ターンの計算に比べて、オーバーヘッドが短いので、再
計算を実行してもキャッシュの効果は大きい。
【0043】プロセッサ間通信パターン計算(ステップ
16) プロセッサ間通信パターンを計算する場合には、以下の
どちらかの場合がある。 (1) はじめてプロセッサ間の通信パターンを計算する場
合 (2) 前回のプロセッサ間通信パターンを計算したときに
用いたパラメータと今回のパラメータとが等しくない場
【0044】作業領域の現パラメータの値を用いて、プ
ロセッサ間通信パターンを計算する。通信パターンと
は、自プロセッサからデータを一括して送ることのでき
る配列領域を、全てのプロセッサに対して求めた結果で
ある。
【0045】通信パターンの計算は以下の手順で行う。 (1) 代入文の左辺の配列の分散から、自プロセッサがま
わるループのインデックス範囲を計算する。 (2) (1)で求められたループのインデックス範囲によっ
て右辺の配列について読み込みが行われる領域を計算す
る。 (3) (2)で求められた配列の読み込みが行われる領域と
実際に自プロセッサでもつ領域の差が、プロセッサ間通
信パターンとなる。 また、プロセッサ間通信パターンへのポインタをコンパ
イル時に確保した作業領域に保存する。
【0046】通信データのメモリアクセスパターン計算
(ステップ17) プロセッサ間通信パターンに従って転送するデータを、
メモリから読み出し、または書き込みするアクセスパタ
ーンを決定する。メモリアクセスパターンとは、プロセ
ッサ間通信パターンに従って、データを送る際に、自プ
ロセッサのメモリから読み出す、ベースアドレス、スト
ライド、要素数のことである。また、計算されたメモリ
アクセスパターンへのポインタを、コンパイル時に確保
された作業領域に保存する。
【0047】プロセッサ間通信の実行(ステップ18) キャッシュされた、または再計算されたプロセッサ間通
信パターンとメモリアクセスパターンに従って、実際の
プロセッサ間通信を行う。
【0048】ここで、ステップ14のキャッシュ可能解
析についてさらに詳述する。このステップは、作業領域
における現パラメータと旧パラメータとが一致するかど
うかを調べるステップであるが、これは図3のようなフ
ローを実行し、キャッシュフラグの状態で判断される。
【0049】まず、キャッシュフラグに1を設定し(ス
テップ31)、作業領域からパラメータを1つ選ぶ(ス
テップ32)。そして、フラグを1かどうか、すなわち
旧パラメータが有効かどうかを判断する(ステップ3
2)。フラグが1の場合、すなわち旧パラメータが有効
な場合には、現パラメータが旧パラメータと一致してい
るかどうかを判断する(ステップ34)。ステップ33
で、フラグが1でない場合、またはステップ34で現パ
ラメータと旧パラメータとが一致しない場合には、ステ
ップ35に進み、キャッシュフラグに0をたてると共
に、現パラメータを旧パラメータに代入する。ステップ
34がYesの場合またはステップ35の処理の後、全
てのパラメータを処理したかどうかを判断する(ステッ
プ36)。Yesの場合には、フラグに1をたてた(ス
テップ37)後に処理を終了する。Noの場合には、ス
テップ32に戻る。
【0050】この処理が終了したときにキャッシュフラ
グが1のままであれば、前回計算したプロセッサ通信パ
ターンと同じものを使用することができる。この場合に
は、ステップ15に進む。また、キャッシュフラグが0
になった場合には、プロセッサ間通信パターンを再計算
する必要があるのでステップ16に進む。
【0051】以上の手順により、既に計算された通信パ
ターンを繰り返す場合には、プロセッサ間の通信パター
ンの再計算を省略することができる。次に、実際のプロ
グラムを例に本発明を説明する。
【0052】プロセッサ間通信パターンの計算を省略す
る方法 下記のプログラムリスト2は、差分法の一例であり、実
行するプロセッサは4台で、配列Aを分割している。
【0053】
【数5】
【0054】このプログラムを本発明を適用してコンパ
イルすると、以下のようなコードが生成される。
【0055】
【数6】
【0056】以下では、N=100と仮定して1番プロセッ
サの振る舞いについて説明するが、2番から4番プロセ
ッサについても同様である。まず、TIME=1の場合を考え
る。Compute_LISで、1番プロセッサが計算を実行する
ループインデックスIの範囲を計算する。このとき、上
述の(1)乃至(9)のパラメータのうち、(1)乃至(5)のパラ
メータが必要になる。
【0057】
【数7】 (1) ループインデックスの上下限: 2,N-1 (2) 左辺の配列の各次元を分割するプロセッサ個数:1次元目 4 (3) 左辺配列の各次元の大きさ: 1次元目 N (4) 左辺の配列の各次元の分割方法: 1次元目 BLOCK (5) 左辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=0
【0058】実行時に変化する可能性のあるパラメータ
は、配列の大きさNと、ループインデックスの上限のN-1
であるから、この2つをコンパイル時に確保した作業領
域w0の旧パラメータに保存して、Compute_LISを呼ぶ。
初めて呼ばれたときには、作業領域内のフラグが0にな
っているので、フラグを1にして、現パラメータを旧パ
ラメータ領域にコピーした後に、インデックスの範囲を
計算する。これらのパラメータから、プロセッサ1が担
当するインデックスの範囲を計算し、Fortran90の三つ
組み形式で表現すると[2:25:1]となる。
【0059】プロセッサ間通信パターンを計算するため
には、このインデックス範囲と、上述の(1)乃至(9)のパ
ラメータのうち、(6)乃至(9)のパラメータが必要にな
る。
【0060】
【数8】 (6) 右辺の配列の各次元を分割するプロセッサ個数;1次元目 4 (7) 右辺配列の各次元の大きさ: 1次元目 N (8) 右辺の配列の各次元の分割方法: 1次元目 BLOCK (9) 右辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=-1 1次元目 a=1,b=0 1次元目 a=1,b=1
【0061】実行時に変化する可能性のあるパラメータ
は、配列の大きさのNであるから、これをコンパイル時
に確保した作業領域w1,w2,w3の旧パラメータに保存し
て、通信計算のためのライブラリを呼ぶ。このループ内
の代入文の右辺に現れる配列は3つあるので、これらの
パラメータから、それぞれの右辺の配列参照についてプ
ロセッサ間通信パターンを計算すると、結果は次のよう
になる。
【0062】A(I-1)に関する通信は、[26:26:1]をプロ
セッサ2からループ実行直後に送信。A(I)は、左辺と同
じアクセスなので通信は不要。A(I+1)に関する通信は、
[26:26:1]をプロセッサ2へループ実行直前に受信。
【0063】従って、A(I+1)に関するパラメータを作業
領域w1に保存して、ループ実行直前にデータの送受信を
行う。さらにA(I-1)に関するパラメータを作業領域w2,w
3に保存して、ループ実行直前にデータを受信し、ルー
プ実行直後にデータの送信を行う。
【0064】次に、TIME=2の場合を考える。TIME=2の場
合においても、TIME=1の場合と同様に100である。ま
ず、Compute_LISでループインデックスの範囲を計算す
る。Compute_LISを呼ぶ際に、配列の大きさNと、ループ
インデックスの上限N-1を、作業領域w0の旧パラメータ
に保存してから呼ぶ。今回は、作業領域内のフラグが1
なので、TIME=1のときの旧パラメータと今回の現パラメ
ータとを比較する。その結果、全てのパラメータが等し
いので,TIME=1の時に使用したループインデックス[2:2
5:1]を再使用する。
【0065】その後、プロセッサ間通信パターンを計算
する。まず、A(I+1)に関する通信について考える。Do_P
refetch_Commを呼ぶ際に、配列の大きさNを作業領域w1
の旧パラメータに保存してから呼ぶ。今回は、作業領域
内のフラグが1であるから、TIME=1のときの旧パラメー
タと今回の現パラメータとを比較する。この結果、全て
のパラメータが等しいので、TIME=1の時に使用した[26:
26:1]をプロセッサ2へループ実行直後に送る、という
通信パターンを再使用する。以後、TIME=3からTIME=10
までTIME=1のときの通信パターンを再使用できるので、
通信時のオーバーヘッドを最小限にし、高速なプロセッ
サ間通信が可能となる。
【0066】プロセッサ内のメモリアクセスパターンが
異なるだけで、通信パターンを省略する方法 下記のプログラム3は、差分法の一例である。実行する
プログラムは4台で、配列Aの1次元目を分割してい
る。配列Aの2次元目は分割されていない。
【0067】
【数9】
【0068】このプログラムを本発明を適用してコンパ
イルすると、以下のようなコードが生成される。
【0069】
【数10】
【0070】以下では、N=100と仮定して1番プロセッ
サの振る舞いについて説明するが、2番から4番プロセ
ッサについても同様である。まず、TIME=1の場合を考え
る。COMPUTE_LISで、1番プロセッサが計算を実行する
ループインデックスIの範囲を計算する。このとき、上
述の(1)乃至(9)のパラメータのうち、(1)乃至(5)のパラ
メータが必要になる。
【0071】
【数11】 (1) ループインデックスの上下限: 2,N-1 (2) 左辺の配列の各次元を分割するプロセッサ個数:1次元目 4 2次元目 0 (3) 左辺配列の各次元の大きさ: 1次元目 N 2次元目 N (4) 左辺の配列の各次元の分割方法: 1次元目 BLOCK 2次元目 * (5) 左辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=0 2次元目 a=0,b=K
【0072】ループインデックスの決定に影響し、実行
時に変化する可能性があるパラメータは、配列の1次元
目の大きさNと、ループインデックスの上限N-1であるか
ら、この2つをコンパイル時に確保した作業領域w0の旧
パラメータに保存して、Compute_LISを呼ぶ。
【0073】初めて呼ばれた場合には、作業領域内のフ
ラグが0になっているので、フラグを1にして、現パラ
メータを旧パラメータ領域にコピーした後に、インデッ
クスの範囲を計算する。これらのパラメータから、プロ
セッサ1が担当するインデックスの範囲を計算し、Fort
ran90の三つ組み形式で表現すると[2:25:1]となる。
【0074】プロセッサ間通信パターンを計算するため
には、このインデックス範囲と、上述の(1)乃至(9)のパ
ラメータのうち、(6)乃至(9)のパラメータが必要にな
る。
【0075】
【数12】 (6) 右辺の配列の各次元を分割するプロセッサ個数;1次元目 4 2次元目 0 (7) 右辺配列の各次元の大きさ: 1次元目 N 2次元目 N (8) 右辺の配列の各次元の分割方法: 1次元目 BLOCK 2次元目 * (9) 右辺の配列参照を決定する式のハ゜ラメータ(aI+b): 1次元目 a=1,b=-1 2次元目 a=0,b=K 1次元目 a=1,b=0 2次元目 a=0,b=K 1次元目 a=1,b=1 2次元目 a=0,b=K
【0076】プロセッサ間通信パターンに影響があるパ
ラメータは、配列がBLOCKで分割されている1次元目の
パラメータだけで、さらに実行時に変化する可能性があ
るのは、配列の大きさのNだけであるから、これをコン
パイル時に確保した作業領域w1,w2の旧パラメータに保
存する。また、配列が分割されていない次元に現れる配
列参照式のループインデックスでない変数Kについて
は、メモリアクセスパターンを計算するため実行時ライ
ブラリにパラメータを渡して、通信計算のためのライブ
ラリを呼ぶ。このループ内の代入文の右辺に現れる配列
は3つあるので、それぞれについて計算する。作業領域
に保存されたパラメータから、それぞれの右辺の配列参
照についてプロセッサ間通信パターンを計算し、以下の
結果を得る。
【0077】A(I-1,K)に関する通信は、[26:26:1]をプ
ロセッサ2へループ実行直後に送信。A(I,K)は、左辺と
同じアクセスなので通信は不要。A(I+1,K)に関する通信
は、[26:26:1]をプロセッサ2からループ実行直前に受
信。
【0078】従って、A(I+1)に関するパラメータを作業
領域w1に保存して、ループ実行直前にデータの送受信を
行う。さらにA(I-1)に関するパラメータを作業領域w2に
保存して、ループ実行直前にデータを受信し、ループ実
行直後にデータの送信を行う。
【0079】次に、TIME=2の場合を考える。TIME=2の場
合においても、TIME=1の場合と同様に100である。但
し、Kは2になっている。まず、Compute_LISでループ
インデックスの範囲を計算する。Compute_LISを呼ぶ際
に、配列の大きさNと、ループインデックスの上限N-1
を、作業領域w0の旧パラメータに保存してから呼ぶ。今
回は、作業領域内のフラグが1なので、TIME=1のときの
旧パラメータと今回の現パラメータとを比較する。その
結果、全てのパラメータが等しいので,TIME=1の時に使
用したループインデックス[2:25:1]を再使用する。
【0080】その後、プロセッサ間通信パターンを計算
する。まず、A(I+1)に関する通信について考える。Do_P
refetch_Commを呼ぶ際に、配列の大きさNを作業領域w1
の旧パラメータに保存してから呼ぶ。今回は、作業領域
内のフラグが1であるから、TIME=1のときの旧パラメー
タと今回の現パラメータとを比較する。この結果、全て
のパラメータが等しいので、TIME=1の時に使用した[26:
26:1]をプロセッサ2へループ実行直後に送る、という
通信パターンを再使用する。A(I-1)に関する通信も同様
にして、[26:26:1]をプロセッサ2からループ実行直前
に受け取る、という通信パターンを再使用する。但し、
メモリアクセスパターンについては、前回と異なる可能
性があるので再計算する。パラメータKを使って計算す
ると、K=2であるので、以下のようになる。
【0081】A(I-1)に関しては、[26:26:1][2]を通信デ
ータとして読み込む。A(I+1)に関しては、[26:26:1][2]
へ受け取ったデータを書き込む。
【0082】以後、TIME=3からTIME=10までTIME=1のと
きの通信パターンを再使用し、メモリアクセスパターン
を再計算するだけでよいので、通信時のオーバーヘッド
を最小限にし、高速なプロセッサ間通信が可能となる。
【0083】
【効果】従来の分散メモリ型並列コンピュータでは、過
去の通信履歴を利用してプロセッサ間通信パターンの計
算を省略することができるので、プロセッサ間の通信を
高速化することができる。
【図面の簡単な説明】
【図1】本発明の実施例を示すフローチャートである。
【図2】本実施例における作業領域を示す図である。
【図3】キャッシュ可能解析について詳述したフローチ
ャートである。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサを有するコンピュータに
    おけるプロセッサ間の通信を実行する方法において、
    (a) プロセッサ間の通信パターンを決定する複数のパラ
    メータを抽出するステップと、(b) 前記パラメータを保
    存する作業領域を作成するステップと、(c) 前記パラメ
    ータを前記作業領域に格納する実行時コードを生成する
    ステップと、(d) 通信パターンの履歴またはプロセッサ
    間の通信のためのデータの読み書きを行うメモリアクセ
    スパターンの履歴を記憶するために、前記作業領域に前
    記パラメータを格納するステップと、(e) 前記実行時コ
    ードが実行された場合、前記実行時コードの実行に基づ
    いた前記パラメータを前記作業領域に記憶された前記パ
    ラメータと比較するステップと、(f) その比較結果に応
    じて、前記通信パターン又は前記メモリアクセスパター
    ンを再利用して、プロセッサ間の通信を実行するステッ
    プとを有することを特徴とする方法。
  2. 【請求項2】上記ステップ(a)における前記パラメータ
    の抽出は、定数又はループネストを実行している間に値
    が変化するかどうかを調べ、前記通信パターンがキャッ
    シュ可能であるかどうかを判断することにより行うこと
    を特徴とする請求項1に記載の方法。
  3. 【請求項3】上記ステップ(e)は、前記実行時コードの
    実行に基づいた前記パラメータが、前記作業領域に記憶
    された前記通信パターンに関する前記パラメータと一致
    するかどうかを比較することを特徴とする請求項1に記
    載の方法。
  4. 【請求項4】上記ステップ(e)は、前記実行時コードの
    実行に基づいた前記パラメータが、前記作業領域に記憶
    された前記通信パターンに関する前記パラメータと一致
    するかどうかを比較するとともに、前記パラメータと一
    致する場合には、さらに前記メモリアクセスパターンに
    関する前記パラメータと一致するかどうかを比較するこ
    とを特徴とする請求項1に記載の方法。
  5. 【請求項5】上記ステップ(a)において抽出される前記
    パラメータは、プログラム中のループに関するパラメー
    タ、前記ループ内の代入文中の左辺及び右辺の配列を分
    割するプロセッサの個数、前記配列の各次元の大きさ、
    前記配列の各次元の分割方法、前記配列参照を決定する
    式にパラメータを有することを特徴とする請求1又は2
    に記載の方法。
  6. 【請求項6】前記通信パターンは、一のプロセッサから
    他のプロセッサへデータを受け渡しをする領域を記述し
    たものであることを特徴とする請求項1に記載の方法。
  7. 【請求項7】前記メモリアクセスパターンは、前記通信
    パターンに従いデータを受け渡しする際に、あるプロセ
    ッサが管理するメモリ領域を記述したものであることを
    特徴とする請求項1に記載の方法。
  8. 【請求項8】上記ステップ(f)は、前記作業領域に格納
    された前記パラメータを用いていることを特徴とする請
    求項1に記載の方法。
  9. 【請求項9】複数のプロセッサを有するコンピュータに
    おけるプロセッサ間の通信を実行する方法において、
    (a) プロセッサ間の通信パターンを決定する複数のパラ
    メータを抽出するステップと、(b) 通信パターンの履歴
    またはメモリアクセスパターンの履歴を記憶するため
    に、前記パラメータを保存する作業領域を作成するステ
    ップと、(c) 前記パラメータを前記作業領域に格納する
    実行時コードを生成するステップとを有することを特徴
    とする方法。
  10. 【請求項10】複数のプロセッサを有するコンピュータ
    におけるプロセッサ間の通信を実行する方法において、
    (a) プロセッサ間の通信パターンを決定する複数のパラ
    メータを、予め確保された作業領域に格納するステップ
    と、(b) 実行時コードが実行された場合、前記実行時コ
    ードの実行に基づいたパラメータを前記作業領域に記憶
    された前記パラメータと比較するステップと、(c) その
    比較結果に応じて、前記通信パターン又は前記メモリア
    クセスパターンを再利用するステップとを有することを
    特徴とする方法。
JP7215601A 1995-08-24 1995-08-24 並列計算機のプロセッサ間通信方法 Expired - Fee Related JP3051972B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP7215601A JP3051972B2 (ja) 1995-08-24 1995-08-24 並列計算機のプロセッサ間通信方法
US08/700,898 US5761426A (en) 1995-08-24 1996-08-21 Method for executing communication between processors in parallel computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7215601A JP3051972B2 (ja) 1995-08-24 1995-08-24 並列計算機のプロセッサ間通信方法

Publications (2)

Publication Number Publication Date
JPH0962639A true JPH0962639A (ja) 1997-03-07
JP3051972B2 JP3051972B2 (ja) 2000-06-12

Family

ID=16675138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7215601A Expired - Fee Related JP3051972B2 (ja) 1995-08-24 1995-08-24 並列計算機のプロセッサ間通信方法

Country Status (2)

Country Link
US (1) US5761426A (ja)
JP (1) JP3051972B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181388A (ja) * 2007-01-25 2008-08-07 Nec Corp 分散メモリ型マルチプロセッサシステムの多次元シフト通信高速化装置、その方法及びそのプログラム
US8000343B1 (en) 1999-08-18 2011-08-16 Fujitsu, Limited Communication device, and method of communication between communication devices and medium thereof

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US6546359B1 (en) 2000-04-24 2003-04-08 Sun Microsystems, Inc. Method and apparatus for multiplexing hardware performance indicators
US6647546B1 (en) 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6986130B1 (en) 2000-07-28 2006-01-10 Sun Microsystems, Inc. Methods and apparatus for compiling computer programs using partial function inlining
US6910107B1 (en) 2000-08-23 2005-06-21 Sun Microsystems, Inc. Method and apparatus for invalidation of data in computer systems
US7406681B1 (en) 2000-10-12 2008-07-29 Sun Microsystems, Inc. Automatic conversion of source code from 32-bit to 64-bit
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
US7197505B2 (en) * 2000-12-22 2007-03-27 Star Bridge Systems, Inc. Multi-dimensional recursive wavefront behavioral synthesis
US7082508B2 (en) * 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
KR102192198B1 (ko) * 2014-02-24 2020-12-17 삼성전자주식회사 전자 장치 및 그것의 통신 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355492A (en) * 1991-11-05 1994-10-11 Thinking Machines Corporation System for compiling parallel communications instructions including their embedded data transfer information
US5509010A (en) * 1993-06-25 1996-04-16 At&T Corp. Communications signaling protocols
US5530703A (en) * 1994-09-23 1996-06-25 3Com Corporation Remote communication server with automatic filtering

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8000343B1 (en) 1999-08-18 2011-08-16 Fujitsu, Limited Communication device, and method of communication between communication devices and medium thereof
JP2008181388A (ja) * 2007-01-25 2008-08-07 Nec Corp 分散メモリ型マルチプロセッサシステムの多次元シフト通信高速化装置、その方法及びそのプログラム
JP4529188B2 (ja) * 2007-01-25 2010-08-25 日本電気株式会社 分散メモリ型マルチプロセッサシステムの多次元シフト通信高速化装置、その方法及びそのプログラム

Also Published As

Publication number Publication date
JP3051972B2 (ja) 2000-06-12
US5761426A (en) 1998-06-02

Similar Documents

Publication Publication Date Title
US5245550A (en) Apparatus for wire routing of VLSI
JPH0962639A (ja) 並列計算機のプロセッサ間通信方法
US5963972A (en) Memory architecture dependent program mapping
CN112559163B (zh) 优化张量计算性能的方法及装置
JPH0830561A (ja) プログラムの並列化実行方法及び並列化実行コンパイラ
EP0602772A1 (en) Multiprocessor system
US7454749B2 (en) Scalable parallel processing on shared memory computers
CN115599966B (zh) 一种分布式图数据的数据局部性度量方法和系统
US9218317B2 (en) Parallelization method, system, and program
CN112685178A (zh) 一种图数据处理方法、装置、设备及可读存储介质
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법
CN112328532A (zh) 多gpu通信的方法及装置、存储介质、电子装置
Gil et al. Parallel VLSI test in a shared‐memory multiprocessor
Sachdeva et al. Evaluating the jaccard-tanimoto index on multi-core architectures
CN109947559A (zh) 优化MapReduce计算的方法、装置、设备和计算机存储介质
CN115861030B (zh) 图形处理器及其系统变量生成方法、介质
KR102625105B1 (ko) 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법
US20200409746A1 (en) Information processing apparatus and recording medium
KR100912114B1 (ko) 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법
JP3304445B2 (ja) プログラム生成処理装置
CN115577760A (zh) 一种数据处理方法、系统及相关设备
Wang et al. Mmalloc: A Dynamic Memory Management on Many-core Coprocessor for the Acceleration of Storage-intensive Bioinformatics Application
CN114721799A (zh) 数据处理方法、装置、设备及存储介质
JP3540837B2 (ja) コンパイル処理装置
JP3628718B2 (ja) 処理コード最適化装置及び処理コード最適化方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
R150 Certificate of patent or registration of utility model

Ref document number: 3051972

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees
S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371