JPH0793269A - データ転送の一括化処理方法 - Google Patents

データ転送の一括化処理方法

Info

Publication number
JPH0793269A
JPH0793269A JP5292919A JP29291993A JPH0793269A JP H0793269 A JPH0793269 A JP H0793269A JP 5292919 A JP5292919 A JP 5292919A JP 29291993 A JP29291993 A JP 29291993A JP H0793269 A JPH0793269 A JP H0793269A
Authority
JP
Japan
Prior art keywords
data
access
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.)
Granted
Application number
JP5292919A
Other languages
English (en)
Other versions
JP3261239B2 (ja
Inventor
Hidetoshi Iwashita
英俊 岩下
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP29291993A priority Critical patent/JP3261239B2/ja
Priority to US08/242,451 priority patent/US5799183A/en
Publication of JPH0793269A publication Critical patent/JPH0793269A/ja
Application granted granted Critical
Publication of JP3261239B2 publication Critical patent/JP3261239B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Abstract

(57)【要約】 【目的】メモリが遠近2階層にモデル化できる計算機シ
ステムにおけるデータ転送の一括化処理方法に関し,ル
ープ内のデータ転送を一括化してループ外に出すことに
より,転送回数および転送総量を削減することを目的と
する。 【構成】グローバルメモリ17にある配列データのアクセ
スを含むループ手続きを持つプログラム10について,そ
のアクセスの先行順序関係を解析し,シャドウを共通化
するグループに分類する。そして,各グループに属する
アクセスについて,それぞれアクセス要素の集合和を求
め,データを転送する範囲を決定する。その範囲の配列
データを一括アクセスする命令コードをループ外に生成
し,最適化されたプログラム16を出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,階層型のメモリを持つ
並列計算機等において,遠方の配列データのアクセスを
含むループ手続きが与えられたとき,アクセスを一括化
してループ外に出すことにより,プログラムの最適化を
実現したデータ転送の一括化処理方法に関する。
【0002】並列計算機,ネットワーク接続された分散
計算機環境,大容量外部メモリ装置を使用する計算機等
では,一般に遠近2階層にモデル化されるメモリを使用
する。このような階層型のメモリシステムにおいて,オ
ーバヘッドの削減のためには,メモリ間のデータ転送回
数および全体的なデータ転送量を減らすことが必要とな
る。
【0003】
【従来の技術】図13は本発明に関係する2階層メモリ
のモデル説明図,図14は本発明の課題説明図である。
【0004】並列計算機,ネットワーク接続された分散
計算機環境,大容量外部メモリ装置を使用する計算機等
では,図13に示すようにメモリが遠近2階層にモデル
化できる。図中の80はプロセッサ,81はプロセッサ
80が高速に直接アクセスできるローカル(Local) メモ
リ空間,82はローカルメモリ空間81を介してアクセ
スされるデータを保持するグローバル(Global)メモリ空
間である。グローバルメモリ空間82は,仮想的なもの
であってもよく,また,例えば分散メモリ型並列計算機
では,物理的には他のプロセッサのローカルメモリであ
ってもよい。
【0005】図13に示すような計算機構成では,グロ
ーバルメモリ空間82とローカルメモリ空間81との間
のデータ転送は,1要素ずつ行うよりも一括化して転送
回数を減らすほうが,立ち上がりのオーバヘッドが削減
され効率がよい。また,可能な限り転送量を減らすほう
がよい。
【0006】しかし,従来,例えば図14(a)に示す
ようなプログラムのループにおいて,グローバルメモリ
空間にある配列データA(i)等を参照または定義する
命令があるような場合に,グローバルメモリ空間82と
ローカルメモリ空間81との間で必要最小限のデータだ
けを一括して転送することは考えられていなかった。そ
のため,データ転送回数が多くなる,または転送総量が
多くなるという問題があった。なお,以下の説明におい
て,グローバルメモリ空間82にある配列データは英大
文字で始まる配列名〔例:A(i)〕で表し,ローカル
メモリ空間81上の配列データは英小文字で始まる配列
名〔例:c(i)〕で表す。
【0007】
【発明が解決しようとする課題】ところで,ループにお
けるデータをできるだけ大きな単位で扱う技術として,
いわゆるベクトル計算機における最適化処理方法があ
る。ここで用いられるベクトル化技術では,アクセスす
るデータの先行順序関係を解析して,できるだけ大量な
データのベクトル計算を効率よく実行できるような命令
コードの生成を行っている。
【0008】前述のように,グローバルメモリ空間82
とローカルメモリ空間81との間のデータ転送は,1要
素ずつ行うよりも一括化して転送回数を減らすほうが,
立ち上がりのオーバヘッドが削減され効率がよい。そこ
で,ベクトル化技術を流用することを考える。ベクトル
化技術を流用してデータの一括転送を図ることにより,
2階層メモリにモデル化されるシステムにおいても,あ
る程度のデータ転送の一括化は可能であると考えられ
る。
【0009】例えば,図14(a)に示すようなプログ
ラムをベクトル化すると,図14(b)に示すようにな
る。図14(b)において,c(1:100)は,ロー
カルメモリ空間81における配列cの1から100まで
の要素を表す。A(1:100)は,グローバルメモリ
空間82における配列Aの1から100までの要素を表
す。他の配列表記も同様である。
【0010】まず,図14(a)に示すプログラムを,
図14(b)に示すように既存の方法でベクトル化し,
これをもとに,図14(c)に示すようにデータの受信
/送信命令を付加する。すなわち,グローバル配列Aの
参照を,グローバルメモリ空間82からローカルメモリ
空間81の一時域(tmp1)への転送(receive) と,一時域
(tmp1)の参照に置き換え,また,グローバル配列Aの定
義を,ローカルメモリ空間81における一時域(tmp2)の
定義と,一時域(tmp2)からグローバルメモリ空間82へ
の転送(send)に置き換える。
【0011】しかし,この方法では,データ依存関係に
よってベクトル化できない場合には,データ転送の一括
化はできない。例えば図14(d)に示すようなプログ
ラムの場合である。このプログラムでは,配列A(1)
の参照と配列A(2)の定義が同じループ内で行われ,
次のループで配列A(2)が参照される。したがって,
配列A(2)の定義が,配列A(2)の参照より先に実
行されるが,ベクトル化するとこの順序が逆転すること
になるので,ベクトル化はできない。すなわち,この例
の場合,一時域の適当な共通化によって,転送の一括化
は可能であると考えられるが,ベクトル化技術の延長で
は実現は難しい。
【0012】また,ベクトル化では,主に単一のループ
をその対象とするので,データ転送の効率化に十分な要
素量の一括化ができない。一般にベクトル化では数十要
素で十分であるが,データ転送では数千〜数万要素を一
括化してはじめて十分な効率が得られることが多い。特
に,ループが多重の場合,多重ループ全体について一括
化する技術が必要とされる。
【0013】本発明は,一時変数をグループ分けし,グ
ループごとに共通化することにより,ベクトル化できな
いループについても転送の一括化を可能にすることを目
的とする。また,多重ループについてもデータ転送の一
括化を図り,プログラムの高速実行を可能とすることを
目的とする。さらにまた,転送データ量の削減を図るこ
とを目的とする。
【0014】
【課題を解決するための手段】図1は本発明の原理説明
図である。図1(A)に示すプログラム10は,図1
(B)に示すような計算機システムで実行されるプログ
ラムであって,グローバルメモリ17が保持する配列デ
ータのアクセスを含むループ(LOOP)手続きを持つ
プログラムである。プロセッサ19は,グローバルメモ
リ17の配列データを通常の演算命令でダイレクトに読
み込んで処理したり,グローバルメモリ17へダイレク
トに書き出したりすることはできず,一旦ローカルメモ
リ18に転送して,ローカルメモリ18内で処理し,書
き出す際には,処理結果をローカルメモリ18からグロ
ーバルメモリ17へ転送する。ローカルメモリ18にお
ける,グローバルメモリ17の写しをシャドウという。
【0015】最適化処理部11は,プログラム10を最
適化し,実行の高速化を図る手段である。本発明では,
各処理部により以下の処理を行う。アクセス先行順序関
係解析処理部12は,グローバルメモリ17にある配列
データのアクセスを含むループ手続きを持つプログラム
10が与えられたとき,そのアクセスの先行順序関係を
解析する。
【0016】シャドウグループ決定処理部13は,アク
セスの先行順序関係を解析した結果に基づいて,ループ
内の配列アクセスを,シャドウを共通化するグループ
(これを,シャドウグループという)に分類する。すな
わち,先行順序が特定の関係にある複数の配列アクセス
は必ず同一のグループに属するように分類する。
【0017】転送範囲決定処理部14は,各シャドウグ
ループに属するアクセスについて,それぞれアクセス要
素の集合和を求め,データを転送する範囲を決定する。
特に,請求項2記載の発明では,転送範囲決定処理部1
4は,ループ内で参照するアクセス要素の集合のうち,
参照に先立って定義されるアクセス要素の集合を受信転
送範囲から除外して,受信転送範囲および送信転送範囲
についてのアクセス要素の集合和を求め,データを転送
する範囲を決定することにより,さらに受信転送データ
量の削減を図る。
【0018】コード生成処理部15は,各シャドウグル
ープに属する転送範囲の配列データを一括アクセスする
命令コードをループ外に生成し,ループ内にあるグロー
バルメモリ17への配列アクセスは,シャドウのアクセ
スに変形する。これより,最適化されたプログラム16
が生成され,出力される。
【0019】
【作用】本発明は,図1(B)のようなシステムにおい
て,グローバルメモリ17に対するアクセスの一括化に
よるオーバヘッドの削減と,データ転送量の削減を図っ
たものであり,そのために,ループ内の配列アクセスを
先行順序関係を基にグループ分けし,各グループに対応
する一括アクセスを,ループ外に生成するようにしたも
のである。
【0020】例えば,最適化対象のプログラム10にお
いて,ループ内にグローバルメモリ17における配列デ
ータのアクセスA1,A2,…があるとき,これらをシ
ャドウを共通化するグループに分類し,転送範囲とシャ
ドウの形状を決定する。そして,シャドウごとにグロー
バルメモリ17から必要な配列データの一括受信を行う
命令をループの前に付加し,また処理結果である配列デ
ータをグローバルメモリ17へ一括送信する命令をルー
プの後に付加する。ループ内ではローカルメモリ18に
おけるシャドウをアクセスする。
【0021】これにより,各ループ実行ごとにグローバ
ルメモリ17との間の要素単位のデータ転送が不要にな
り,一括転送によるデータ転送回数の削減および転送量
の削減により,プログラムの高速実行が可能になる。ベ
クトル化できないようなケースでも,高速化を実現する
ことができる。
【0022】さらに,請求項2記載の発明では,データ
依存解析をもとに受信が不要である配列要素を算出し,
それを受信対象から外すので,一層の転送データ量の削
減が可能になる。
【0023】
【実施例】図2は,本発明の適用例説明図である。ソー
スファイル21は,最適化対象となるソースプログラム
が格納されたファイルである。構文解析部22は,ソー
スファイル21からソースプログラムを読み出し,所定
の構文規則に従って構文を解析し,解析結果を中間コー
ド23として出力する。中間コード23は,本計算機シ
ステムによって定められた内部形式データであり,実質
的内容はソースプログラムと同等のものである。中間コ
ード23は,実際にファイルとして保持してもよく,ま
たメモリ内に保持するようにしてもよい。
【0024】ここで,本発明に係る最適化処理部11に
よる最適化を行う。前後に,他の最適化部28a,28
bによる最適化を行ってもよい。ファイル出力部24
は,最適化処理後の中間コード23をもとに,最適化さ
れたソースファイル25を出力する。これをコンパイラ
26の入力ファイルとしてコンパイルすることにより,
データの一括転送を行うオブジェクトモジュール27が
生成される。
【0025】図2に示す方式は,いわゆるプリコンパイ
ラ方式による最適化の構成例であるが,プリコンパイラ
方式によらずに,コンパイラ26内部で最適化処理を実
行するようにしてもよい。
【0026】〔請求項1の発明の実施例〕図3は,請求
項1記載の発明の実施例処理フローチャートである。す
べてのグローバル変数Gi (i=1,…,m)につい
て,図3に示す(a) 〜(c) を実行し,最後に(d) を実行
する。ここでグローバル変数とは,図1(B)に示すグ
ローバルメモリ17内に設けられる変数である。以下,
この処理の流れに従って,本発明の実施例を説明する。
【0027】(a) 先行順序関係の解析 同一の対象配列をアクセスする組(f,g)のうち,
f,gともに参照の場合を除くすべてについて,その先
行順序関係を求める。先行順序関係は,次の4通りにつ
いて識別する。この先行順序関係の解析処理では,ベク
トル化技術として知られている既存の技術を用いること
ができる。
【0028】 f→g アクセスfがアクセスgに常に先行する。 g→f アクセスgがアクセスfに常に先行する。 f←→g アクセスfがアクセスgに先行するとき
と,逆のときがある。
【0029】または,順序関係が不明である。 φ アクセスされる配列要素に重なりがない。 (b) シャドウグループSij(j=1,…,nm )の決定 対象配列のアクセスを,シャドウを共通化するグループ
(シャドウグループ)に分類する。図4は,そのシャド
ウグループの決定論理説明図である。先行順序が図4に
示す○印の関係にある2つのアクセスは,必ず同一のグ
ループに属するように分類する。例えば,アクセスfが
アクセスgに常に先行し,fが定義,gが参照のアクセ
スである場合,この2つのアクセスは同一のグループと
する。
【0030】(c) シャドウ形状と転送範囲の決定 上記(b) で決定したすべてのシャドウグループSijにつ
いて,以下の処理を行う。
【0031】 シャドウグループに属する参照および
定義について,それぞれアクセス要素の集合和を求め
る。それがシャドウの受信および送信データの範囲とな
る。この受信データの範囲をΛ,送信データの範囲をΣ
で表す。
【0032】 ΛとΣの集合和を求める。これをシャ
ドウ空間と呼ぶ。要素とシャドウ空間上の位置とのマッ
ピングを示す関数かテーブルを求めておく。以下の説明
では,このマッピングをMで表す。
【0033】シャドウ空間が重なり合っていて,共通化
するとメモリ領域が節約できると判断できた場合,複数
のシャドウを共通化して一つのシャドウとしてもよい。
そのとき,ΛおよびΣは,それぞれもとのシャドウのΛ
およびΣの集合和とする。
【0034】(d) 出力コード生成 シャドウごとに,シャドウ空間とΛ,Σに応じたコード
生成を行う。 シャドウ空間を動的または静的に確保するコードを
生成する。必要なシャドウ空間を包含する大きめの領域
を確保してもよい。
【0035】 グローバルメモリからシャドウへΛを
受信するコードを,ループの直前に生成する。同様に,
Σをシャドウからグローバルメモリへ送信するコード
を,ループの直後に生成する。
【0036】 ループ内でのグローバルメモリへのア
クセス部分は,マッピングMに応じて,シャドウのアク
セスに変形する。次に,実際の最適化処理の例を説明す
る。図5は本発明の具体例説明図,図6は出力コードの
例を示す図である。
【0037】例えば図5(A)に示すようなプログラム
を最適化するものとする。このプログラムは,ループ変
数J,Iについての多重ループとなっている。配列A
は,グローバル変数である。
【0038】(a) 先行順序の解析 図5(A)に示す配列アクセスu1,u4をfとし配列
アクセス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)より
常に先行する。
【0039】(b) シャドウグループの決定 図5(B)に示す先行順序関係の解析結果を,図4に示
す共通化の決定論理にあてはめると,共通化が必須のア
クセスのペアは,次の組となる。
【0040】 u1とu2 u1とu5 u3とu4 よって,シャドウグループは,以下の2つとなる。
【0041】 S1={u1,u2,u5} S2={u3,u4} (c) シャドウ形状と転送範囲の決定 シャドウグループS1について,次のようにシャドウ空
間を決定する。
【0042】 Λ=(u2のアクセス範囲)∪(u5のアクセス範囲) ={(1,1),(2,1),…,(100,1), …,(100,100)} Σ=(u1のアクセス範囲) ={(1,1),(2,1),…,(100,1), …,(100,100)} Λ∪Σ={(1,1),(2,1),…,(100,1), …,(100,100)} この結果から,シャドウ領域として,ローカルメモリ上
に二次元配列a1(100,100)を確保する。グロ
ーバルとシャドウは,同じ添字を持つ要素同士を対応づ
ける。すなわち,A(i,j)とa1(i,j)とを対
応づける。
【0043】またシャドウグループS2について,次の
ようにシャドウ空間を決定する。 Λ=(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)とを対応づける。
【0044】(d) 出力コード生成 シャドウグループS1,S2について,シャドウ空間を
確保するコードを生成し,グローバルメモリからシャド
ウへΛを受信するコードと,シャドウからグローバルメ
モリへΣを送信するコードを,それぞれループの前後に
付加する。また,ループ内のアクセスを配列a1,a2
へのアクセスに変換する。
【0045】この結果,図6に示すような内容のコード
が生成されることになる。すなわち,図5(A)に示す
プログラムが,図6に示すような最適化されたプログラ
ムに変換される。
【0046】図6において,allocはローカルメモ
リの領域割り当て命令であり,「alloc a1(1
00,100)」は,100×100要素の二次元配列
a1をローカルメモリに確保することを指示している。
同様に,「alloc a2(100,170)」は,
100×170要素の二次元配列a2をローカルメモリ
に確保することを指示している。
【0047】receiveは,グローバルメモリから
ローカルメモリへのデータ転送(受信)命令であり,
「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)までの領域に転送する
ことを指示している。
【0048】アクセスu1〜u5の命令は,図6に示す
ように配列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)までの領域に転送することを指示
している。
【0049】「free a1」,「free a2」
は,それぞれローカルメモリ上の配列a1,a2の領域
を解放する命令である。 〔請求項2の発明の実施例〕図7は,請求項2記載の本
発明の実施例処理フローチャートである。
【0050】すべてのグローバル変数Gi (i=1,
…,m)について,図7に示す(a),(b),(e),(f) を実行
し,最後に(d) を実行する。ここでグローバル変数と
は,図1(B)に示すグローバルメモリ17内に設けら
れる変数である。以下,この処理の流れに従って,本発
明の実施例を説明するが,(a),(b),(d) の処理について
は請求項1記載の実施例と同様であるので,説明を省略
する。
【0051】(e) 受信転送範囲の縮小 処理(b) で決定したシャドウグループSij(j=1,
…,nm )の配列要素の集合のうち,受信転送範囲から
除外することができるアクセス要素範囲を検出する。図
8は,受信転送範囲の縮小の実施例の処理フローチャー
トである。
【0052】図8において,シャドウグループSijに属
する参照をrk (k=1,…,K),シャドウグループ
ijに属する定義をgl (l=1,…,L),参照また
は定義fでアクセスされる配列要素の集合をα(f) と
し,すべての参照rについて,以下の処理を行う。
【0053】 すべての参照rk について,参照rk
の受信転送範囲λ(rk ) の初期値をα(rk ) とす
る。 参照rk と同一のシャドウグループに属し,先行順
序がgl →rk の関係にあるかどうかを検出する。
【0054】 λ(rk )とα(gl ) の集合差を改
めてλ(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)。
【0055】なお,他の実施例として,参照rと同一の
シャドウグループに属し,g←→rの関係にある定義g
を検出して,λ(r)とα(g) の共通要素のうち,最
初のアクセスが定義であるものをさらにλ(r)から削
除するようにしてもよい。
【0056】(f) シャドウ形状と転送範囲の決定 上記(e) の処理の後,すべてのシャドウグループSij
ついて,以下の処理を行う。
【0057】 シャドウグループに属するすべての参
照rの受信転送範囲λ(r) の集合和をシャドウの受信
転送データの範囲とする。これをΛと表すと,シャドウ
グループSijの受信転送範囲Λは,Λ=λ(r1 ) ∪λ
(r2 ) ∪…∪λ(rK ) となる。また,シャドウグル
ープに属するすべての定義gのアクセス範囲α(g)の
集合和をシャドウの送信転送範囲とする。以下,これを
Σと表す。
【0058】 ΛとΣの集合和を求める。これをシャ
ドウ空間と呼ぶ。要素とシャドウ空間上の位置とのマッ
ピングを示す関数かテーブルを求めておく。シャドウ空
間が重なり合っていて,共通化するとメモリ領域が節約
できると判断できた場合,複数のシャドウを共通化して
一つのシャドウとしてもよい。そのとき,ΛおよびΣ
は,それぞれもとのシャドウのΛおよびΣの集合和とす
る。
【0059】次に,実際の最適化処理の例を前述の図5
を用いて説明する。例えば図5(A)に示すようなプロ
グラムを最適化するものとする。このプログラムは,ル
ープ変数J,Iについての多重ループとなっている。配
列Aはグローバル変数である。
【0060】(a)先行順序の解析 図5(A)に示す配列アクセスu1,u4をfとし配列
アクセス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)より
常に先行する。
【0061】(b) シャドウグループの決定 図5(B)に示す先行順序関係の解析結果を,前述の図
4に示す共通化の決定論理にあてはめると,共通化が必
須のアクセスのペアは,次の組となる。
【0062】 u1とu2 u1とu5 u3とu4 よって,シャドウグループは,以下の2つとなる。
【0063】 S1={u1,u2,u5} S2={u3,u4} (e) 受信転送範囲の縮小 シャドウグループS1についての受信転送範囲は,次の
ようになる。
【0064】参照u2については,定義u1との先行順
序関係がu1←→u2である。参照u2に対し,u1の
要素の一部が先行するが,パターンが複雑と判断し無視
する。受信範囲の縮小化はここでは行わない。
【0065】λ(u2)=α(u2) ={(1,1),(2,1),…,(100,1), …,(100,100)} 参照u5に対して,定義u1が常に先行する。
【0066】λ(u5)=α(u5)−α(u1)=φ 一方,シャドウグループS2については,次のようにな
る。参照u3に対して,定義u4が常に先行する。
【0067】λ(u3)=α(u3)−α(u4) ={(1,31),(2,31),…,(100,31),…,(100,100)} (f) シャドウ形状と転送範囲の決定 シャドウグループS1について,次のようにシャドウ空
間を決定する。
【0068】Λ=λ(u2)∪λ(u5) ={(1,1),(2,1),…,(100,1), …,(100,100)} Σ=α(u1) ={(1,1),(2,1),…,(100,1), …,(100,100)} Λ∪Σ={(1,1),(2,1),…,(100,1), …,(100,100)} この結果から,シャドウ領域として,ローカルメモリ上
に二次元配列a1(100,100)を確保する。グロ
ーバルとシャドウは,同じ添字を持つ要素同士を対応づ
ける。すなわち,A(i,j)とa1(i,j)とを対
応づける。
【0069】またシャドウグループS2について,次の
ようにシャドウ空間を決定する。 Λ=λ(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)とを対応づける。
【0070】(d) 出力コード生成 シャドウグループS1,S2について,シャドウ空間を
確保するコードを生成し,グローバルメモリからシャド
ウへΛを受信するコードと,シャドウからグローバルメ
モリへΣを送信するコードを,それぞれループの前後に
付加する。また,ループ内のアクセスを配列a1,a2
へのアクセスに変換する。
【0071】この結果,図9に示すような内容のコード
が生成されることになる。すなわち,図5(A)に示す
プログラムから,図9に示すような最適化されたプログ
ラムが得られる。
【0072】前述の実施例における図6の出力コードと
の違いは,シャドウグループS2についての受信転送範
囲Λが,図6では二次元配列のA(1,31)からA
(100,130)までの領域であるのに対し,本実施
例では,A(1,31)からA(100,100)まで
の領域であり,受信転送範囲が縮小されていることであ
る。
【0073】なお,上記(e) の受信転送範囲の縮小処理
において,シャドウグループS1とS2を共通化する方
がよいと判断できた場合には,シャドウ空間を次のよう
にしもよい。
【0074】Λ=Λ(S1)∪Λ(S2) ={(1,1),(2,1),…,(100,1), …,(100,100)} Σ=Σ(S1)∪Σ(S2) ={(1,1),(2,1),…,(100,1), …,(100,200)} Σ∪Λ={(1,1),(2,1),…,(100,1), …,(100,200)} この結果から,シャドウ領域として,ローカルメモリ上
に二次元配列a(100,200)を確保する。グロー
バルとシャドウは,同じ添字を持つ要素同士を対応づけ
る。すなわち,A(i,j)とa(i,j)とを対応づ
ける。
【0075】この結果,図10に示すような内容のコー
ドが生成されることになる。すなわち,受信転送範囲Λ
は,Λ(S1)∪Λ(S2)により,二次元配列のA
(1,1)からA(100,100)までの領域が対象
となる。また,送信転送範囲Σは,Σ(S1)∪Σ(S
2)により,A(1,1)からA(100,200)ま
での領域が対象となる。
【0076】図11は,本発明の適用結果の例を示す図
である。例えば図11(A)に示すようなプログラムに
ついて,請求項1記載の発明によってデータ転送の一括
化を図った場合,出力コードは図11(B)に示すよう
になる。また,請求項2記載の発明によって,さらに受
信転送範囲の縮小化を行った場合,その結果は図11
(C)に示すようになる。
【0077】図11(A)に示す元のプログラムから明
らかなように,A(k)(ただし,k=2,3,4,
…,)の定義は,A(k)の参照より先行する。したが
って,A(2),A(3),…の受信は不要であり,図
11(C)の例では,グローバルメモリから受信するデ
ータがA(1)だけになっている。
【0078】図12は,本発明が適用可能なシステム構
成の例を示す図である。本発明によるデータ転送の一括
化処理方法は,例えば図12(A)〜(C)に示すよう
な2階層のメモリ構造を持つシステムで動作するプログ
ラムを対象として適用することができる。
【0079】図12(A)のシステムは,共有メモリ4
を各プロセッサ・エレメント1が共有する並列計算機シ
ステムである。各プロセッサ・エレメント1は,CPU
2とローカルメモリ3からなる。CPU2が実行するプ
ログラムのループ中に,共有メモリ4上の配列に対する
アクセスがあるとき,本発明の適用により,その配列デ
ータをループの直前で共有メモリ4からローカルメモリ
3へ受信するようにし,ループの直後でローカルメモリ
3から共有メモリ4へ送信するようにすることにより,
プログラムの高速化が可能になる。
【0080】図12(B)のシステムは,仮想的共有メ
モリを持つ並列計算機または分散計算機環境のシステム
であって,各プロセッサ・エレメント1は,ネットワー
ク6で接続されている。各プロセッサ・エレメント1
は,CPU2とローカルメモリ3と他のプロセッサがア
クセスできるメモリ5を持つ。各プロセッサ・エレメン
ト1に分散して配置されたメモリ5は,例えば全体で一
つのメモリ空間を構成するように扱われる。CPU2
は,メモリ5のデータにアクセスする必要があるとき,
メモリ5のデータをローカルメモリ3に複写して,ロー
カルメモリ3上でアクセスする。このような他のプロセ
ッサがアクセスできるメモリ5を,図1に示すグローバ
ルメモリ17として,本発明を適用することができる。
【0081】図12(C)のシステムは,大容量外部メ
モリ装置7を持つ計算機システムである。プロセッサ・
エレメント1は,CPU2とローカルメモリ3とを持
ち,大容量外部メモリ装置7上のデータを参照・更新す
る場合には,ローカルメモリ3にデータを複写してアク
セスする。このようなローカルメモリ3と大容量外部メ
モリ装置7からなる2階層メモリのシステムにも,同様
に本発明を適用し,プログラム実行の高速化を図ること
ができる。
【0082】
【発明の効果】以上説明したように,本発明によれば,
アクセスの一括化により転送回数および転送総量の削減
が可能になり,データ転送に関するオーバヘッドが削減
される。また,対象変数の先行順序関係のみで転送対象
を共通化して抽出することができるので,従来のベクト
ル化技術におけるベクトル可否等の判断よりも容易であ
り,効果も大きい。また,転送を多重ループの外に出す
ことができるため,さらに転送のスケジューリングなど
の最適化が可能になる。例えば,非同期転送が可能なハ
ードウェアであれば,受信転送をなるべく早く開始し,
送信転送の終了待ちをなるべく遅らせることにより,計
算と転送のオーバラップによる処理の高速化を図ること
ができるようになる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の適用例説明図である。
【図3】本発明の実施例処理フローチャートである。
【図4】シャドウグループの決定論理説明図である。
【図5】本発明の具体例説明図である。
【図6】本発明の実施例による出力コードの例を示す図
である。
【図7】本発明の実施例処理フローチャートである。
【図8】受信転送範囲縮小の実施例処理フローチャート
である。
【図9】本発明の実施例による出力コードの例を示す図
である。
【図10】本発明の実施例による出力コードの例を示す
図である。
【図11】本発明の適用結果の例を示す図である。
【図12】本発明が適用可能なシステム構成の例を示す
図である。
【図13】2階層メモリのモデル説明図である。
【図14】本発明の課題説明図である。
【符号の説明】
10 プログラム 11 最適化処理部 12 アクセス先行順序関係解析処理部 13 シャドウグループ決定処理部 14 転送範囲決定処理部 15 コード生成処理部 16 最適化されたプログラム 17 グローバルメモリ 18 ローカルメモリ 19 プロセッサ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 1または複数のプロセッサ(19)と,その
    プロセッサ(19)が高速にアクセスできる第1のメモリ(1
    8)と,大容量または他のプロセッサと共用するデータを
    保持する第2のメモリ(17)とを備え,前記第2のメモリ
    (17)が保持するデータを前記第1のメモリ(18)に転送し
    て処理する計算機システム上で動作するプログラム(10)
    を最適化する処理方法であって,前記第2のメモリ(17)
    にある配列データのアクセスを含むループ手続きが与え
    られたとき,そのアクセスの先行順序関係を解析する処
    理過程(12)と,アクセスの先行順序関係を解析した結果
    に基づいて,ループ内の配列アクセスを,前記第1のメ
    モリ(18)におけるデータの一時的な格納場所の共通化が
    必要なグループに分類する処理過程(13)と,各グループ
    に属するアクセスについて,それぞれアクセス要素の集
    合和を求め,データを転送する範囲を決定する処理過程
    (14)と,前記各グループに属する転送範囲の配列データ
    を一括アクセスする命令コードをループ外に生成する処
    理過程(15)とを有することを特徴とするデータ転送の一
    括化処理方法。
  2. 【請求項2】 1または複数のプロセッサ(19)と,その
    プロセッサ(19)が高速にアクセスできる第1のメモリ(1
    8)と,大容量または他のプロセッサと共用するデータを
    保持する第2のメモリ(17)とを備え,前記第2のメモリ
    (17)が保持するデータを前記第1のメモリ(18)に転送し
    て処理する計算機システム上で動作するプログラム(10)
    を最適化する処理方法であって,前記第2のメモリ(17)
    にある配列データのアクセスを含むループ手続きが与え
    られたとき,そのアクセスの先行順序関係を解析する処
    理過程(12)と,アクセスの先行順序関係を解析した結果
    に基づいて,ループ内の配列アクセスを,前記第1のメ
    モリ(18)におけるデータの一時的な格納場所の共通化が
    必要なグループに分類する処理過程(13)と,各グループ
    に属するアクセスについて,ループ内で参照するアクセ
    ス要素の集合うち,参照に先立って定義されるアクセス
    要素の集合を受信転送範囲から除外し,各グループごと
    に受信転送範囲および送信転送範囲についてのアクセス
    要素の集合和を求め,データを転送する範囲を決定する
    処理過程(14)と,前記受信転送範囲の配列データを一括
    アクセスする命令コードをループの前に生成し,前記送
    信転送範囲の配列データを一括アクセスする命令コード
    をループの後に生成する処理過程(15)とを有することを
    特徴とするデータ転送の一括化処理方法。
JP29291993A 1993-07-27 1993-11-24 データ転送の一括化処理方法 Expired - Fee Related JP3261239B2 (ja)

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 true JPH0793269A (ja) 1995-04-07
JP3261239B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305580A (ja) * 1995-05-01 1996-11-22 Nec Corp 並列プログラムの言語処理装置
US7698696B2 (en) 2002-07-03 2010-04-13 Panasonic Corporation Compiler apparatus with flexible optimization

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US9442826B2 (en) * 2013-03-14 2016-09-13 Intel Corporation Kernel functionality checker
KR102152735B1 (ko) 2013-09-27 2020-09-21 삼성전자주식회사 그래픽 처리 장치 및 이의 동작 방법
JP7035751B2 (ja) * 2018-04-12 2022-03-15 富士通株式会社 コード変換装置、コード変換方法、及びコード変換プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08305580A (ja) * 1995-05-01 1996-11-22 Nec Corp 並列プログラムの言語処理装置
US7698696B2 (en) 2002-07-03 2010-04-13 Panasonic Corporation Compiler apparatus with flexible optimization
US8418157B2 (en) 2002-07-03 2013-04-09 Panasonic Corporation Compiler apparatus with flexible optimization

Also Published As

Publication number Publication date
US5799183A (en) 1998-08-25
JP3261239B2 (ja) 2002-02-25

Similar Documents

Publication Publication Date Title
US5701482A (en) Modular array processor architecture having a plurality of interconnected load-balanced parallel processing nodes
Alt et al. Deterministic simulation of idealized parallel computers on more realistic ones
US5832272A (en) Apparatus and method for parallel computation
US6126331A (en) Determining a communication schedule between processors
US5619680A (en) Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning
Arvind et al. Dataflow architectures
US4853872A (en) Program execution method in a system having plural computers
JPH08185325A (ja) コンパイラにおけるコード生成方法及びコンパイラ
CA2204518A1 (en) Multicomputer system and method
JP3261239B2 (ja) データ転送の一括化処理方法
Neele et al. Partial-order reduction for GPU model checking
Arvind et al. Executing a program on the MIT tagged-token dataflow architecture
Lipovski On a varistructured array of microprocessors
Yasugi et al. ABCL/onEM-4: A new software/hardware architecture for object-oriented concurrent computing on an extended dataflow supercomputer
Kuck Automatic program restructuring for high-speed computation
Butler et al. Parallel architecture for OPS5
Ma et al. Solving a trillion unknowns per second with HPGMG on Sunway TaihuLight
JPH07271744A (ja) 並列計算機
Haddad Optimal Load Allocation for Parallel and Distributed Processing
Chen Crystal: A synthesis approach to programming parallel machines
US20240036871A1 (en) Placement Method Based On A Sorted Operation Unit Graph For An Iterative Placement And Routing On A Reconfigurable Processor
Rosing et al. Low latency messages on distributed memory multiprocessors
Sastry et al. OR-parallel evaluation of logic programs on a multi-ring dataflow machine
Taniguchi et al. AMP: an autonomous multi-processor for image processing and computer vision
Krishnamoorthy et al. Layout transformation support for the disk resident arrays framework

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