JP3261239B2 - データ転送の一括化処理方法 - Google Patents
データ転送の一括化処理方法Info
- Publication number
- JP3261239B2 JP3261239B2 JP29291993A JP29291993A JP3261239B2 JP 3261239 B2 JP3261239 B2 JP 3261239B2 JP 29291993 A JP29291993 A JP 29291993A JP 29291993 A JP29291993 A JP 29291993A JP 3261239 B2 JP3261239 B2 JP 3261239B2
- Authority
- JP
- Japan
- Prior art keywords
- access
- data
- memory
- loop
- transfer
- 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.)
- Expired - Fee Related
Links
- 238000003672 processing method Methods 0.000 title claims description 6
- 230000015654 memory Effects 0.000 claims description 101
- 238000000034 method Methods 0.000 claims description 22
- 238000004458 analytical method Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 17
- 238000005457 optimization Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Description
並列計算機等において,遠方の配列データのアクセスを
含むループ手続きが与えられたとき,アクセスを一括化
してループ外に出すことにより,プログラムの最適化を
実現したデータ転送の一括化処理方法に関する。
計算機環境,大容量外部メモリ装置を使用する計算機等
では,一般に遠近2階層にモデル化されるメモリを使用
する。このような階層型のメモリシステムにおいて,オ
ーバヘッドの削減のためには,メモリ間のデータ転送回
数および全体的なデータ転送量を減らすことが必要とな
る。
のモデル説明図,図14は本発明の課題説明図である。
計算機環境,大容量外部メモリ装置を使用する計算機等
では,図13に示すようにメモリが遠近2階層にモデル
化できる。図中の80はプロセッサ,81はプロセッサ
80が高速に直接アクセスできるローカル(Local) メモ
リ空間,82はローカルメモリ空間81を介してアクセ
スされるデータを保持するグローバル(Global)メモリ空
間である。グローバルメモリ空間82は,仮想的なもの
であってもよく,また,例えば分散メモリ型並列計算機
では,物理的には他のプロセッサのローカルメモリであ
ってもよい。
ーバルメモリ空間82とローカルメモリ空間81との間
のデータ転送は,1要素ずつ行うよりも一括化して転送
回数を減らすほうが,立ち上がりのオーバヘッドが削減
され効率がよい。また,可能な限り転送量を減らすほう
がよい。
ようなプログラムのループにおいて,グローバルメモリ
空間にある配列データA(i)等を参照または定義する
命令があるような場合に,グローバルメモリ空間82と
ローカルメモリ空間81との間で必要最小限のデータだ
けを一括して転送することは考えられていなかった。そ
のため,データ転送回数が多くなる,または転送総量が
多くなるという問題があった。なお,以下の説明におい
て,グローバルメモリ空間82にある配列データは英大
文字で始まる配列名〔例:A(i)〕で表し,ローカル
メモリ空間81上の配列データは英小文字で始まる配列
名〔例:c(i)〕で表す。
けるデータをできるだけ大きな単位で扱う技術として,
いわゆるベクトル計算機における最適化処理方法があ
る。ここで用いられるベクトル化技術では,アクセスす
るデータの先行順序関係を解析して,できるだけ大量な
データのベクトル計算を効率よく実行できるような命令
コードの生成を行っている。
とローカルメモリ空間81との間のデータ転送は,1要
素ずつ行うよりも一括化して転送回数を減らすほうが,
立ち上がりのオーバヘッドが削減され効率がよい。そこ
で,ベクトル化技術を流用することを考える。ベクトル
化技術を流用してデータの一括転送を図ることにより,
2階層メモリにモデル化されるシステムにおいても,あ
る程度のデータ転送の一括化は可能であると考えられ
る。
ラムをベクトル化すると,図14(b)に示すようにな
る。図14(b)において,c(1:100)は,ロー
カルメモリ空間81における配列cの1から100まで
の要素を表す。A(1:100)は,グローバルメモリ
空間82における配列Aの1から100までの要素を表
す。他の配列表記も同様である。
図14(b)に示すように既存の方法でベクトル化し,
これをもとに,図14(c)に示すようにデータの受信
/送信命令を付加する。すなわち,グローバル配列Aの
参照を,グローバルメモリ空間82からローカルメモリ
空間81の一時域(tmp1)への転送(receive) と,一時域
(tmp1)の参照に置き換え,また,グローバル配列Aの定
義を,ローカルメモリ空間81における一時域(tmp2)の
定義と,一時域(tmp2)からグローバルメモリ空間82へ
の転送(send)に置き換える。
よってベクトル化できない場合には,データ転送の一括
化はできない。例えば図14(d)に示すようなプログ
ラムの場合である。このプログラムでは,配列A(1)
の参照と配列A(2)の定義が同じループ内で行われ,
次のループで配列A(2)が参照される。したがって,
配列A(2)の定義が,配列A(2)の参照より先に実
行されるが,ベクトル化するとこの順序が逆転すること
になるので,ベクトル化はできない。すなわち,この例
の場合,一時域の適当な共通化によって,転送の一括化
は可能であると考えられるが,ベクトル化技術の延長で
は実現は難しい。
をその対象とするので,データ転送の効率化に十分な要
素量の一括化ができない。一般にベクトル化では数十要
素で十分であるが,データ転送では数千〜数万要素を一
括化してはじめて十分な効率が得られることが多い。特
に,ループが多重の場合,多重ループ全体について一括
化する技術が必要とされる。
ループごとに共通化することにより,ベクトル化できな
いループについても転送の一括化を可能にすることを目
的とする。また,多重ループについてもデータ転送の一
括化を図り,プログラムの高速実行を可能とすることを
目的とする。さらにまた,転送データ量の削減を図るこ
とを目的とする。
図である。図1(A)に示すプログラム10は,図1
(B)に示すような計算機システムで実行されるプログ
ラムであって,グローバルメモリ17が保持する配列デ
ータのアクセスを含むループ(LOOP)手続きを持つ
プログラムである。プロセッサ19は,グローバルメモ
リ17の配列データを通常の演算命令でダイレクトに読
み込んで処理したり,グローバルメモリ17へダイレク
トに書き出したりすることはできず,一旦ローカルメモ
リ18に転送して,ローカルメモリ18内で処理し,書
き出す際には,処理結果をローカルメモリ18からグロ
ーバルメモリ17へ転送する。ローカルメモリ18にお
ける,グローバルメモリ17の写しをシャドウという。
適化し,実行の高速化を図る手段である。本発明では,
各処理部により以下の処理を行う。アクセス先行順序関
係解析処理部12は,グローバルメモリ17にある配列
データのアクセスを含むループ手続きを持つプログラム
10が与えられたとき,そのアクセスの先行順序関係を
解析する。
セスの先行順序関係を解析した結果に基づいて,ループ
内の配列アクセスを,シャドウを共通化するグループ
(これを,シャドウグループという)に分類する。すな
わち,先行順序が特定の関係にある複数の配列アクセス
は必ず同一のグループに属するように分類する。
ループに属するアクセスについて,それぞれアクセス要
素の集合和を求め,データを転送する範囲を決定する。
特に,請求項2記載の発明では,転送範囲決定処理部1
4は,ループ内で参照するアクセス要素の集合のうち,
参照に先立って定義されるアクセス要素の集合を受信転
送範囲から除外して,受信転送範囲および送信転送範囲
についてのアクセス要素の集合和を求め,データを転送
する範囲を決定することにより,さらに受信転送データ
量の削減を図る。
ープに属する転送範囲の配列データを一括アクセスする
命令コードをループ外に生成し,ループ内にあるグロー
バルメモリ17への配列アクセスは,シャドウのアクセ
スに変形する。これより,最適化されたプログラム16
が生成され,出力される。
て,グローバルメモリ17に対するアクセスの一括化に
よるオーバヘッドの削減と,データ転送量の削減を図っ
たものであり,そのために,ループ内の配列アクセスを
先行順序関係を基にグループ分けし,各グループに対応
する一括アクセスを,ループ外に生成するようにしたも
のである。
いて,ループ内にグローバルメモリ17における配列デ
ータのアクセスA1,A2,…があるとき,これらをシ
ャドウを共通化するグループに分類し,転送範囲とシャ
ドウの形状を決定する。そして,シャドウごとにグロー
バルメモリ17から必要な配列データの一括受信を行う
命令をループの前に付加し,また処理結果である配列デ
ータをグローバルメモリ17へ一括送信する命令をルー
プの後に付加する。ループ内ではローカルメモリ18に
おけるシャドウをアクセスする。
ルメモリ17との間の要素単位のデータ転送が不要にな
り,一括転送によるデータ転送回数の削減および転送量
の削減により,プログラムの高速実行が可能になる。ベ
クトル化できないようなケースでも,高速化を実現する
ことができる。
依存解析をもとに受信が不要である配列要素を算出し,
それを受信対象から外すので,一層の転送データ量の削
減が可能になる。
スファイル21は,最適化対象となるソースプログラム
が格納されたファイルである。構文解析部22は,ソー
スファイル21からソースプログラムを読み出し,所定
の構文規則に従って構文を解析し,解析結果を中間コー
ド23として出力する。中間コード23は,本計算機シ
ステムによって定められた内部形式データであり,実質
的内容はソースプログラムと同等のものである。中間コ
ード23は,実際にファイルとして保持してもよく,ま
たメモリ内に保持するようにしてもよい。
よる最適化を行う。前後に,他の最適化部28a,28
bによる最適化を行ってもよい。ファイル出力部24
は,最適化処理後の中間コード23をもとに,最適化さ
れたソースファイル25を出力する。これをコンパイラ
26の入力ファイルとしてコンパイルすることにより,
データの一括転送を行うオブジェクトモジュール27が
生成される。
ラ方式による最適化の構成例であるが,プリコンパイラ
方式によらずに,コンパイラ26内部で最適化処理を実
行するようにしてもよい。
項1記載の発明の実施例処理フローチャートである。す
べてのグローバル変数Gi (i=1,…,m)につい
て,図3に示す(a) 〜(c) を実行し,最後に(d) を実行
する。ここでグローバル変数とは,図1(B)に示すグ
ローバルメモリ17内に設けられる変数である。以下,
この処理の流れに従って,本発明の実施例を説明する。
f,gともに参照の場合を除くすべてについて,その先
行順序関係を求める。先行順序関係は,次の4通りにつ
いて識別する。この先行順序関係の解析処理では,ベク
トル化技術として知られている既存の技術を用いること
ができる。
と,逆のときがある。
(シャドウグループ)に分類する。図4は,そのシャド
ウグループの決定論理説明図である。先行順序が図4に
示す○印の関係にある2つのアクセスは,必ず同一のグ
ループに属するように分類する。例えば,アクセスfが
アクセスgに常に先行し,fが定義,gが参照のアクセ
スである場合,この2つのアクセスは同一のグループと
する。
いて,以下の処理を行う。
定義について,それぞれアクセス要素の集合和を求め
る。それがシャドウの受信および送信データの範囲とな
る。この受信データの範囲をΛ,送信データの範囲をΣ
で表す。
ドウ空間と呼ぶ。要素とシャドウ空間上の位置とのマッ
ピングを示す関数かテーブルを求めておく。以下の説明
では,このマッピングをMで表す。
するとメモリ領域が節約できると判断できた場合,複数
のシャドウを共通化して一つのシャドウとしてもよい。
そのとき,ΛおよびΣは,それぞれもとのシャドウのΛ
およびΣの集合和とする。
生成を行う。 シャドウ空間を動的または静的に確保するコードを
生成する。必要なシャドウ空間を包含する大きめの領域
を確保してもよい。
受信するコードを,ループの直前に生成する。同様に,
Σをシャドウからグローバルメモリへ送信するコード
を,ループの直後に生成する。
クセス部分は,マッピングMに応じて,シャドウのアク
セスに変形する。次に,実際の最適化処理の例を説明す
る。図5は本発明の具体例説明図,図6は出力コードの
例を示す図である。
を最適化するものとする。このプログラムは,ループ変
数J,Iについての多重ループとなっている。配列A
は,グローバル変数である。
アクセスu1〜u5をgとして,前述した4通りのそれ
ぞれの先行順序関係を調べると,図5(B)に示す先行
順序関係の解析結果が得られる。例えば,アクセスu1
とアクセスu2とは,それぞれA(I,J)の定義と,
A(J,I)の参照であり,IとJの位置が逆転してい
るので,u1が先行するときとu2が先行するときがあ
る。また,アクセスu1とアクセスu3とは,u3がA
(I,J+30)であるので,u1のA(I,J)より
常に先行する。
す共通化の決定論理にあてはめると,共通化が必須のア
クセスのペアは,次の組となる。
間を決定する。
に二次元配列a1(100,100)を確保する。グロ
ーバルとシャドウは,同じ添字を持つ要素同士を対応づ
ける。すなわち,A(i,j)とa1(i,j)とを対
応づける。
ようにシャドウ空間を決定する。 Λ=(u3のアクセス範囲) ={(1,31),(2,31),…,(100,31),…,(100,130)} Σ=(u4のアクセス範囲) ={(1,101),(2,101),…,(100,101), …,(100,200)} Λ∪Σ={(1,31),(2,31),…,(100,31),…,(100,200)} この結果から,シャドウ領域として,二次元配列a2
(100,170)を確保する。グローバルとシャドウ
は,二次元目を30ずらして対応づける。すなわち,A
(i,j)とa2(i,j−30)とを対応づける。
確保するコードを生成し,グローバルメモリからシャド
ウへΛを受信するコードと,シャドウからグローバルメ
モリへΣを送信するコードを,それぞれループの前後に
付加する。また,ループ内のアクセスを配列a1,a2
へのアクセスに変換する。
が生成されることになる。すなわち,図5(A)に示す
プログラムが,図6に示すような最適化されたプログラ
ムに変換される。
リの領域割り当て命令であり,「alloc a1(1
00,100)」は,100×100要素の二次元配列
a1をローカルメモリに確保することを指示している。
同様に,「alloc a2(100,170)」は,
100×170要素の二次元配列a2をローカルメモリ
に確保することを指示している。
ローカルメモリへのデータ転送(受信)命令であり,
「receive a1(1:100,1:100)=
A(1:100,1:100)」は,二次元配列のA
(1,1)からA(100,100)までの全データ
を,a1(1,1)からa1(100,100)までの
領域に転送することを指示している。次の「recei
ve a2(1:100,1:100)=A(1:10
0,31:130)」は,二次元配列のA(1,31)
からA(100,130)までのデータを,a2(1,
1)からa2(100,100)までの領域に転送する
ことを指示している。
ように配列a1,a2の対応する領域に対するアクセス
に変更される。sendは,ローカルメモリからグロー
バルメモリへのデータ転送(送信)命令であり,「se
nd A(1:100,1:100)=a1(1:10
0,1:100)」は,二次元配列のa1(1,1)か
らa1(100,100)までのデータを,A(1,
1)からA(100,100)までの領域に転送するこ
とを指示している。次の「send A(1:100,
101:200)=a2(1:100,71:17
0)」は,二次元配列のa2(1,71)からa2(1
00,170)までのデータを,A(1,101)から
A(100,200)までの領域に転送することを指示
している。
は,それぞれローカルメモリ上の配列a1,a2の領域
を解放する命令である。 〔請求項2の発明の実施例〕図7は,請求項2記載の本
発明の実施例処理フローチャートである。
…,m)について,図7に示す(a),(b),(e),(f) を実行
し,最後に(d) を実行する。ここでグローバル変数と
は,図1(B)に示すグローバルメモリ17内に設けら
れる変数である。以下,この処理の流れに従って,本発
明の実施例を説明するが,(a),(b),(d) の処理について
は請求項1記載の実施例と同様であるので,説明を省略
する。
…,nm )の配列要素の集合のうち,受信転送範囲から
除外することができるアクセス要素範囲を検出する。図
8は,受信転送範囲の縮小の実施例の処理フローチャー
トである。
する参照をrk (k=1,…,K),シャドウグループ
Sijに属する定義をgl (l=1,…,L),参照また
は定義fでアクセスされる配列要素の集合をα(f) と
し,すべての参照rについて,以下の処理を行う。
の受信転送範囲λ(rk ) の初期値をα(rk ) とす
る。 参照rk と同一のシャドウグループに属し,先行順
序がgl →rk の関係にあるかどうかを検出する。
めてλ(rk ) とする。すべての定義gl についてこれ
を繰り返す。すなわち,k=1と初期化し(処理10
0),処理108によってkを1ずつ増加させて,kが
参照の個数Kを超える(処理101)まで,以下の処理
を行う。処理102により,k番目の参照rk の受信転
送範囲λ(rk ) の初期値をα(rk ) とする。次に,
同一のシャドウグループに属するl=1からLまでの定
義gl について,先行順序が先行順序がgl →rk の関
係にあるものを検出し,検出できたならば,λ(rk )
とα(gl ) の集合差を求めて,λ(rk ) と置き換え
る(処理103〜107)。
シャドウグループに属し,g←→rの関係にある定義g
を検出して,λ(r)とα(g) の共通要素のうち,最
初のアクセスが定義であるものをさらにλ(r)から削
除するようにしてもよい。
ついて,以下の処理を行う。
照rの受信転送範囲λ(r) の集合和をシャドウの受信
転送データの範囲とする。これをΛと表すと,シャドウ
グループSijの受信転送範囲Λは,Λ=λ(r1 ) ∪λ
(r2 ) ∪…∪λ(rK ) となる。また,シャドウグル
ープに属するすべての定義gのアクセス範囲α(g)の
集合和をシャドウの送信転送範囲とする。以下,これを
Σと表す。
ドウ空間と呼ぶ。要素とシャドウ空間上の位置とのマッ
ピングを示す関数かテーブルを求めておく。シャドウ空
間が重なり合っていて,共通化するとメモリ領域が節約
できると判断できた場合,複数のシャドウを共通化して
一つのシャドウとしてもよい。そのとき,ΛおよびΣ
は,それぞれもとのシャドウのΛおよびΣの集合和とす
る。
を用いて説明する。例えば図5(A)に示すようなプロ
グラムを最適化するものとする。このプログラムは,ル
ープ変数J,Iについての多重ループとなっている。配
列Aはグローバル変数である。
アクセスu1〜u5をgとして,前述した4通りのそれ
ぞれの先行順序関係を調べると,図5(B)に示す先行
順序関係の解析結果が得られる。例えば,アクセスu1
とアクセスu2とは,それぞれA(I,J)の定義と,
A(J,I)の参照であり,IとJの位置が逆転してい
るので,u1が先行するときとu2が先行するときがあ
る。また,アクセスu1とアクセスu3とは,u3がA
(I,J+30)であるので,u1のA(I,J)より
常に先行する。
4に示す共通化の決定論理にあてはめると,共通化が必
須のアクセスのペアは,次の組となる。
ようになる。
序関係がu1←→u2である。参照u2に対し,u1の
要素の一部が先行するが,パターンが複雑と判断し無視
する。受信範囲の縮小化はここでは行わない。
る。参照u3に対して,定義u4が常に先行する。
間を決定する。
に二次元配列a1(100,100)を確保する。グロ
ーバルとシャドウは,同じ添字を持つ要素同士を対応づ
ける。すなわち,A(i,j)とa1(i,j)とを対
応づける。
ようにシャドウ空間を決定する。 Λ=λ(u3) ={(1,31),(2,31),…,(100,31),…,(100,100)} Σ=α(u4) ={(1,101),(2,101),…,(100,101), …,(100,200)} Λ∪Σ={(1,31),(2,31),…,(100,31),…,(100,200)} この結果から,シャドウ領域として,二次元配列a2
(100,170)を確保する。グローバルとシャドウ
は,二次元目を30ずらして対応づける。すなわち,A
(i,j)とa2(i,j−30)とを対応づける。
確保するコードを生成し,グローバルメモリからシャド
ウへΛを受信するコードと,シャドウからグローバルメ
モリへΣを送信するコードを,それぞれループの前後に
付加する。また,ループ内のアクセスを配列a1,a2
へのアクセスに変換する。
が生成されることになる。すなわち,図5(A)に示す
プログラムから,図9に示すような最適化されたプログ
ラムが得られる。
の違いは,シャドウグループS2についての受信転送範
囲Λが,図6では二次元配列のA(1,31)からA
(100,130)までの領域であるのに対し,本実施
例では,A(1,31)からA(100,100)まで
の領域であり,受信転送範囲が縮小されていることであ
る。
において,シャドウグループS1とS2を共通化する方
がよいと判断できた場合には,シャドウ空間を次のよう
にしもよい。
に二次元配列a(100,200)を確保する。グロー
バルとシャドウは,同じ添字を持つ要素同士を対応づけ
る。すなわち,A(i,j)とa(i,j)とを対応づ
ける。
ドが生成されることになる。すなわち,受信転送範囲Λ
は,Λ(S1)∪Λ(S2)により,二次元配列のA
(1,1)からA(100,100)までの領域が対象
となる。また,送信転送範囲Σは,Σ(S1)∪Σ(S
2)により,A(1,1)からA(100,200)ま
での領域が対象となる。
である。例えば図11(A)に示すようなプログラムに
ついて,請求項1記載の発明によってデータ転送の一括
化を図った場合,出力コードは図11(B)に示すよう
になる。また,請求項2記載の発明によって,さらに受
信転送範囲の縮小化を行った場合,その結果は図11
(C)に示すようになる。
らかなように,A(k)(ただし,k=2,3,4,
…,)の定義は,A(k)の参照より先行する。したが
って,A(2),A(3),…の受信は不要であり,図
11(C)の例では,グローバルメモリから受信するデ
ータがA(1)だけになっている。
成の例を示す図である。本発明によるデータ転送の一括
化処理方法は,例えば図12(A)〜(C)に示すよう
な2階層のメモリ構造を持つシステムで動作するプログ
ラムを対象として適用することができる。
を各プロセッサ・エレメント1が共有する並列計算機シ
ステムである。各プロセッサ・エレメント1は,CPU
2とローカルメモリ3からなる。CPU2が実行するプ
ログラムのループ中に,共有メモリ4上の配列に対する
アクセスがあるとき,本発明の適用により,その配列デ
ータをループの直前で共有メモリ4からローカルメモリ
3へ受信するようにし,ループの直後でローカルメモリ
3から共有メモリ4へ送信するようにすることにより,
プログラムの高速化が可能になる。
モリを持つ並列計算機または分散計算機環境のシステム
であって,各プロセッサ・エレメント1は,ネットワー
ク6で接続されている。各プロセッサ・エレメント1
は,CPU2とローカルメモリ3と他のプロセッサがア
クセスできるメモリ5を持つ。各プロセッサ・エレメン
ト1に分散して配置されたメモリ5は,例えば全体で一
つのメモリ空間を構成するように扱われる。CPU2
は,メモリ5のデータにアクセスする必要があるとき,
メモリ5のデータをローカルメモリ3に複写して,ロー
カルメモリ3上でアクセスする。このような他のプロセ
ッサがアクセスできるメモリ5を,図1に示すグローバ
ルメモリ17として,本発明を適用することができる。
モリ装置7を持つ計算機システムである。プロセッサ・
エレメント1は,CPU2とローカルメモリ3とを持
ち,大容量外部メモリ装置7上のデータを参照・更新す
る場合には,ローカルメモリ3にデータを複写してアク
セスする。このようなローカルメモリ3と大容量外部メ
モリ装置7からなる2階層メモリのシステムにも,同様
に本発明を適用し,プログラム実行の高速化を図ること
ができる。
アクセスの一括化により転送回数および転送総量の削減
が可能になり,データ転送に関するオーバヘッドが削減
される。また,対象変数の先行順序関係のみで転送対象
を共通化して抽出することができるので,従来のベクト
ル化技術におけるベクトル可否等の判断よりも容易であ
り,効果も大きい。また,転送を多重ループの外に出す
ことができるため,さらに転送のスケジューリングなど
の最適化が可能になる。例えば,非同期転送が可能なハ
ードウェアであれば,受信転送をなるべく早く開始し,
送信転送の終了待ちをなるべく遅らせることにより,計
算と転送のオーバラップによる処理の高速化を図ること
ができるようになる。
である。
である。
である。
図である。
図である。
Claims (2)
- 【請求項1】 1または複数のプロセッサと,そのプロ
セッサが高速にアクセスできる第1のメモリと,大容量
または他のプロセッサと共用するデータを保持する第2
のメモリとを備え,前記第2のメモリが保持するデータ
を前記第1のメモリに転送して処理する計算機システム
上で動作するプログラムを最適化する処理方法であっ
て, 前記第2のメモリにある配列データのアクセスを含むル
ープ手続きが与えられたとき,そのアクセスの先行順序
関係を解析する処理過程と, アクセスの先行順序関係を解析した結果に基づいて,ル
ープ内の配列アクセスについてアクセスの先行順序が特
定の関係にあるデータを同一グループに分類する処理過
程と, 各グループに属するアクセスについて,それぞれアクセ
ス要素の集合和を求め,データを転送する範囲を決定す
る処理過程と, 前記各グループに属する転送範囲の配列データを一括ア
クセスする命令コードをループ外に生成する処理過程と
を有することを特徴とするデータ転送の一括化処理方
法。 - 【請求項2】 1または複数のプロセッサと,そのプロ
セッサが高速にアクセスできる第1のメモリと,大容量
または他のプロセッサと共用するデータを保持する第2
のメモリとを備え,前記第2のメモリが保持するデータ
を前記第1のメモリに転送して処理する計算機システム
上で動作するプログラムを最適化する処理方法であっ
て, 前記第2のメモリにある配列データのアクセスを含むル
ープ手続きが与えられたとき,そのアクセスの先行順序
関係を解析する処理過程と, アクセスの先行順序関係を解析した結果に基づいて,ル
ープ内の配列アクセスについてアクセスの先行順序が特
定の関係にあるデータを同一グループに分類する処理過
程と, 各グループに属するアクセスについて,ループ内で参照
するアクセス要素の集合のうち,参照に先立って定義さ
れるアクセス要素の集合を受信転送範囲から除外し,各
グループごとに受信転送範囲および送信転送範囲につい
てのアクセス要素の集合和を求め,データを転送する範
囲を決定する処理過程と, 前記受信転送範囲の配列データを一括アクセスする命令
コードをループの前に生成し,前記送信転送範囲の配列
データを一括アクセスする命令コードをループの後に生
成する処理過程とを有することを特徴とするデータ転送
の一括化処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29291993A JP3261239B2 (ja) | 1993-07-27 | 1993-11-24 | データ転送の一括化処理方法 |
US08/242,451 US5799183A (en) | 1993-07-27 | 1994-05-13 | Method of processing data batch transfer among the memories in a computer system having a hierarchical memory structure |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18506593 | 1993-07-27 | ||
JP5-185065 | 1993-07-27 | ||
JP29291993A JP3261239B2 (ja) | 1993-07-27 | 1993-11-24 | データ転送の一括化処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0793269A JPH0793269A (ja) | 1995-04-07 |
JP3261239B2 true JP3261239B2 (ja) | 2002-02-25 |
Family
ID=26502877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29291993A Expired - Fee Related JP3261239B2 (ja) | 1993-07-27 | 1993-11-24 | データ転送の一括化処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5799183A (ja) |
JP (1) | JP3261239B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305580A (ja) * | 1995-05-01 | 1996-11-22 | Nec Corp | 並列プログラムの言語処理装置 |
US6279152B1 (en) * | 1996-10-18 | 2001-08-21 | Fujitsu Limited | Apparatus and method for high-speed memory access |
JP2000305796A (ja) * | 1999-04-22 | 2000-11-02 | Hitachi Ltd | 電子計算機間のジョブ転送方法およびジョブ転送システム |
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
JP3847672B2 (ja) | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
US7120746B2 (en) * | 2002-09-09 | 2006-10-10 | International Business Machines Corporation | Technique for data transfer |
US7639596B2 (en) * | 2003-12-07 | 2009-12-29 | Adaptive Spectrum And Signal Alignment, Inc. | High speed multiple loop DSL system |
US20090193400A1 (en) * | 2008-01-30 | 2009-07-30 | Ivan Baev | Interprocedural register allocation for global variables |
CN105027089B (zh) * | 2013-03-14 | 2018-05-22 | 英特尔公司 | 内核功能性检查器 |
KR102152735B1 (ko) | 2013-09-27 | 2020-09-21 | 삼성전자주식회사 | 그래픽 처리 장치 및 이의 동작 방법 |
JP7035751B2 (ja) * | 2018-04-12 | 2022-03-15 | 富士通株式会社 | コード変換装置、コード変換方法、及びコード変換プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2667818B2 (ja) * | 1986-10-09 | 1997-10-27 | 株式会社日立製作所 | トランザクション処理方法 |
US5233702A (en) * | 1989-08-07 | 1993-08-03 | International Business Machines Corporation | Cache miss facility with stored sequences for data fetching |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5437034A (en) * | 1991-04-19 | 1995-07-25 | Hitachi, Ltd. | Method of generating from source program object program by which final values of variables for parallel execution are guaranteed |
US5457793A (en) * | 1992-03-30 | 1995-10-10 | International Business Machines Corporation | Software cache management of a shared electronic store in a supplex |
-
1993
- 1993-11-24 JP JP29291993A patent/JP3261239B2/ja not_active Expired - Fee Related
-
1994
- 1994-05-13 US US08/242,451 patent/US5799183A/en not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
Carr,S.,Kennedy,K.,Blocking Linear Algebra Code for Memory Hierarchies,Proc.of 4th SIAM Conf.on Parallel Processing for Scientific Computing |
Also Published As
Publication number | Publication date |
---|---|
US5799183A (en) | 1998-08-25 |
JPH0793269A (ja) | 1995-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5088034A (en) | Compiling method for determining programs to be executed parallelly by respective processors in a parallel computer which transfer data with a data identifier to other processors | |
Vegdahl | A survey of proposed architectures for the execution of functional languages | |
US5832272A (en) | Apparatus and method for parallel computation | |
US5555417A (en) | Method and apparatus for compiling computer programs with interprocedural register allocation | |
US5619680A (en) | Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning | |
Abe et al. | High performance integrated Prolog processor IPP | |
US6016397A (en) | Method and apparatus for compilation of a data parallel language | |
US4853872A (en) | Program execution method in a system having plural computers | |
JP3261239B2 (ja) | データ転送の一括化処理方法 | |
Neele et al. | Partial-order reduction for GPU model checking | |
Kou et al. | Taem: fast transfer-aware effective loop mapping for heterogeneous resources on cgra | |
Lipovski | On a varistructured array of microprocessors | |
Bershad | High-performance cross-address space communication | |
Stankovic | The Spring Architecture | |
Uchida | Inference machine: From sequential to parallel | |
Schwab | Extended parallelism in the Gröbner basis algorithm | |
Li et al. | Lazy allocation and transfer fusion optimization for GPU-based heterogeneous systems | |
Leeman et al. | Automated dynamic memory data type implementation exploration and optimization | |
McCrary et al. | Integrating PGAS and MPI-based Graph Analysis | |
Qian et al. | Online scheduling of two-machine flowshop with lookahead and incompatible job families | |
Sastry et al. | OR-parallel evaluation of logic programs on a multi-ring dataflow machine | |
US20210279044A1 (en) | Performance optimization of class instance comparisons | |
Yamaguchi et al. | Architecture of high performance integrated Prolog processor IPP | |
JP2526481B2 (ja) | 分散メモリ型並列計算機におけるデ―タ転送コ―ド自動生成方法 | |
Lee et al. | A microprogrammable list processor for personal computers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20011204 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071214 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081214 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091214 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091214 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101214 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111214 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |