JP3411641B2 - 高次元配列処理方法 - Google Patents
高次元配列処理方法Info
- Publication number
- JP3411641B2 JP3411641B2 JP26103393A JP26103393A JP3411641B2 JP 3411641 B2 JP3411641 B2 JP 3411641B2 JP 26103393 A JP26103393 A JP 26103393A JP 26103393 A JP26103393 A JP 26103393A JP 3411641 B2 JP3411641 B2 JP 3411641B2
- Authority
- JP
- Japan
- Prior art keywords
- elements
- array
- buffer
- transferred
- dimension
- 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
Description
送などのために処理する方法に関するものである。
ケーション・プログラム(FORTRANなどの言語を
用いて開発)では巨大な高次元配列が使用されており、
それらの配列は転送元となる各プロセスのバッファに蓄
積されてから転送先となる各プロセスへ一括して送出さ
れる。
クセス長(配列要素間のアドレス長さ)と繰り返し回数
(各次元の配列要素数)とを用いてアドレス並びで表現
する。
次元を2次元へ引き下げ、2次元配列を一括して送出で
きるプロセスの転送バッファ(送信バッファ)に配列要
素を2次元単位で格納する。
2)において斜線が施された要素を転送する場合、その
配列を図27のアドレス並びで表現し、転送すべき要素
のアクセス長が同一となる1次元部分と2次元部分とを
単一化して1次元化し、配列の次元を3次元から2次元
へ引き下げる。
プロセスの転送バッファへ斜線の配列要素を2次元単位
で格納する(一般的には、n次元単位でデータの送出を
行なえるプロセスへn+1次元の配列をn次元に引き下
げてそのプロセスの転送バッファへ配列要素をn次元単
位で繰り返し格納する・・・図27においては2次元配
列を2回格納する)。
4つのプロセス1,2,3,4にバッファが各々用意さ
れている。
ッファが満杯となっており、したがって、プロセス1の
バッファへ配列要素を格納する際にはオーバーフローが
生ずる。
(フラッシュ)してから、配列要素を図29のように格
納する。その際には、バッファ内容の送出が完了するま
で、配列要素のバッファ格納を禁止する(バッファを再
利用するため、同期をとってそのバッファをロックす
る)。
要素を格納するときにもオーバーフローが生ずるので
(図30参照)、同バッファの内容を全て送出してか
ら、配列要素を格納する(図31参照)。
ると(図32参照)、配列要素格納の全バッファからこ
れらの格納内容を他のプロセスへ送出する(プロセス
1,2,3,4も送出先となる)。
合であっても(図27では1回目と2回目に格納される
内容が同様となっている)、それらが別々にバッファへ
格納されることから、1回に転送できるデータ量が少な
くなり、転送回数が多くなる。このため、配列の転送効
率が低下する。
する毎に、そのバッファの格納内容が送出されるまで同
バッファがロックされるので、配列の転送処理における
待ち時間の割合が大きくなる。したがって、同処理の速
度が低下する。
ものであり、その目的は、高次元配列をより高速に転送
することが可能となる方法を提供することにある。
て、全ての配列要素がアドレス順に並べられたメモリ領
域内(配列要素のアドレス並び)において転送の対象と
なる要素の間隔パターンが同一で互いに隣接する次元対
の存在有無を判断し(ステップ110)、次元対の存在
を示す判断結果が得られたときに、両次元にわたる領域
内において転送の対象となる要素の個数を両次元の領域
内において各々転送の対象となる要素の個数から求めて
両次元を単一化するとともに次元対の繰り返しサーチを
指示し(ステップ112)、次元対の存在を示す判断結
果が得られなかったときに、次元対が単一化された次元
と次元対の単一化が行なわれなかった次元との領域内に
おいて転送の対象となる要素をバッファへ格納する(ス
テップ114)。なお通常は、バッファに格納された配
列要素を一括して送出される(ステップ200)。
の各プロセスに設けられたバッファへ配列要素を格納し
(ステップ100)、いずれかのバッファが配列要素で
満杯となったときまたは全配列要素のバッファ格納が完
了したときに、配列要素が格納されているバッファを全
て特定し(ステップ210)、特定された各バッファに
格納の配列要素を該当のプロセスに全て送出させる(ス
テップ212)。
行のプロセス毎に複数のバッファを予め用意し(ステッ
プ214)、各プロセスに用意されたバッファのいずれ
かへ配列要素を格納し(ステップ216)、いずれかの
バッファが配列要素で満杯となったときに、該バッファ
に格納されている配列要素の送出を開始し、該バッファ
とプロセスが同一な他のバッファから配列要素を格納で
きるいずれかを選択し(ステップ218)、満杯のバッ
ファから選択のバッファへ配列要素の格納先を切り替え
る(ステップ220)。
いて互いに隣接しており、かつ、転送の対象となる配列
要素のパターンが同一な次元の対を、繰り返して検索
し、次元対が検索される毎に、両次元を単一化する。
目の転送分と2回目の転送分が単一化され、このため、
実際のデータ転送が1回のみとなる(図6,図7,図
8,図9参照)。
たバッファのいずれかが満杯となったときまたは転送の
対象となる要素の全てがそれらのバッファへ格納された
ときに、転送対象の要素が格納されているバッファの全
てからその内容を一斉に送出する(図12,図13,図
14,図15,図16参照)。
バッファが設けられて各プロセスにおけるいずれかのバ
ッファへ転送対象の配列要素が格納され、配列要素の格
納中にバッファが満杯となると、このバッファに格納さ
れた内容(転送対象の配列要素)の送出が開始されると
ともに、同一プロセスにおける他のバッファへ配列要素
の格納先が切り替えられる(図17,図18,図19,
図20,図21,図22,図23参照)。
いて、入力装置400から処理装置402のCPU40
4へデータが入力され、このデータは高次元配列の要素
として同処理装置402のメモリ402に格納される。
出されてデータ転送装置408に引き渡され、データ転
送装置408から回線410を介し他の処理装置へ例え
ば特開平4−167191のようにして転送される(後
述の第2実施例,第3実施例を組み合せても良い)。
処理の手順がフローチャートを用いて説明されており、
次にその処理のステップ500,502,504,50
6,508,510,512を順に説明する。
04,506,508,510,512においては、変
数I(次元数),J(次元数),ACCESS(配列の
アクセス長:要素間距離),ELEM(配列の繰り返し
回数)が使用される。
の配列をアドレス並びで表現し、配列の次元数(=
4),各次元の繰り返し回数,各次元のアクセス長を取
得し、変数I,Jの値を各々2,1にセットする。
数(=4)を越えたか否かを判断し(処理終了の判
定)、変数Iの値が配列の次元数(=4)を越えた場合
には図5の処理を終了する。また、変数Iの値が配列の
次元数(=4)を越えた場合にはステップ504へ進
む。
セス長ACCESSと変数Jが示す次元のアクセス長A
CCESSとの一致判定を行ない、両者が一致する場合
にはステップ506へ進み、不一致の場合にはステップ
508へ進む。
LEMとI次元の繰り返し回数ELEMとの乗算でJ次
元の繰り返し回数ELEMを求めてJ次元とI次元を単
一の次元にまとめ、ステップ512へ進む。なお、アク
セス長は変更されない。
ントしてから、ステップ510へ進む。 ステップ510:変数Iが示す次元のアクセス長ACC
ESSと繰り返し回数ELEMを変数Jのものに設定し
てから、ステップ512へ進む。 ステップ512:変数Iの値をインクリメントしてか
ら、ステップ502へ戻る。
4次元配列が図7のアドレス並びで表現された場合(従
来では2次元配列が4回転送される)、図7の2次元配
列部分と3次元配列部分のアクセス長が同一となること
から、それらが図8のように単一の2次元配列部分にま
とめられる。
列部分のアクセス長も同一となるので、それらが図9の
ように単一の2次元配列部分にまとめられる(図6の4
次元配列が図9の2次元配列に変換される)。
り返し回数ELEM,各次元のアクセス長ACCESS
を通知することにより、データ転送装置408へに斜線
部分の各配列要素が引き渡される。
クセス長が同一な隣接の次元対が逐次的に単一化される
ので、1回に転送できる配列要素の数が増加し、転送回
数が減少する。したがって、配列要素の転送効率を向上
させてその速度を高めることが可能となる。
おいて、各CPU1000のプロセス1002(任意数
が生成され、これらは並列的に実行される)毎に送信バ
ッファ(転送バッファ)1004と受信バッファ100
6とが用意される。
われる処理の手順がフローチャートを用いて説明されて
おり、次にその処理のステップ1100,1102,1
104,1106,1108,1111,1112,1
114,1116,1118を順に説明する。
バッファ1004,1006を用意し、カウンタ変数C
TRをゼロリセットし、並列実行されるプロセス100
2の数を設定する。
有無を調べ、転送すべき配列要素が存在しない場合には
図6の処理を終了する。また、転送すべき配列要素が存
在する場合には、ステップ1104へ進む。
に空きがあるか否かを判断し、空きがある場合にはステ
ップ1106へ進む。また、空きのない場合にはステッ
プ1108へ進む。
送信バッファ1004へ格納してから、ステップ110
2へ戻る。 ステップ1108:変数Iの値(プロセス1002の順
次指定用)をゼロリセットしてから、ステップ1110
へ進む。
を変数Iの値が越えたか否かを判断し、越えていない場
合にはステップ1112へ進む。越えた場合には、ステ
ップ1118へ進む。
該当の送信バッファ1004に格納されているか否かを
判断し、格納されているときにはステップ1114へ進
む。格納されていない場合にはステップ1116へ進
む。
004に格納されている配列要素(転送の対象となるも
の)を送出させてこれを空にしてから、ステップ111
6へ進む。
メントしてから、ステップ1110へ戻る。 ステップ1118:カウンタ変数CTRが転送要素の数
へ達するまで待つ(転送待ちでバッファ内容を保護す
る)。カウンタ変数CTRが転送要素数へ達したときに
この変数CTRをゼロリセットしてステップ1102へ
戻る。
施例の作用が説明されており、図16には本実施例のタ
イムチャートが示されている(並列実行されるプロセス
1002の数は4とする)。
ァ(1004)が配列要素で満杯となっており、次回に
この送信バッファ(1004)へ配列要素(転送すべき
もの)が格納される。
送信バッファ(1004)がフラッシュされてから(ス
テップ1108,1110,1112,1114,11
16:図16参照)、転送すべき配列要素が該当の送信
バッファ(1004)へ格納される(図13参照)。
1,2,3,4の送信バッファ(1004)へ図14の
ように格納され、その後、転送すべき配列要素の全てが
格納されると(図15参照)、全ての送信バッファ10
04がフラッシュされる(図16参照)。
かの送信バッファ1004が満たされると、配列要素が
格納されている送信バッファ1004の全てからそれら
の格納内容(転送すべき配列要素)が送出される。
ァ(1004)がオーバーフローしたときに全ての転送
バッファ(配列要素が格納されているものの全て)が一
斉にフラッシュされるので(図16参照)、図33との
比較からも理解されるように、バッファフラッシュの完
了まで配列要素の格納がバッファロックで待たされる時
間を全体として大幅に削減でき、したがって、配列転送
の処理速度をより高めることが可能となる。
おいて、CPU1700のプロセス1702(任意数が
生成され、これらは並列的に実行される)毎に一対の送
信バッファ(転送バッファ)1704と受信バッファ1
706が用意される。
われる処理の手順がフローチャートを用いて説明されて
おり、次にその処理のステップ1800,1802,1
804,1806,1808,1810,1812,1
814を順に説明する。
各々一対のバッファ1704,1706を用意し(プロ
セス1702毎にバッファ1704,1706を複数容
易しても良い)、バッファ1704,1706の一方を
指定し、カウンタ変数CTRをゼロリセットする。
有無を調べ、転送すべき配列要素が存在しない場合には
図6の処理を終了する。また、転送すべき配列要素が存
在する場合には、ステップ1804へ進む。
ァ1004に空きがあるか否かを判断し、空きがある場
合にはステップ1806へ進む。また、空きのない場合
にはステップ1808へ進む。
指定された送信バッファ1004へ格納してから、ステ
ップ1802へ戻る。 ステップ1808:転送先識別用のプロセス番号,転送
要素数,送信元アドレス,送信先アドレスを特定して指
定の送信バッファ1004に格納されている配列要素の
送出を開始する。配列要素の送出毎に、カウンタ変数C
TRの値をインクリメントする。
の送信バッファ1004を配列要素の格納に使用できる
か否かを判断し、使用できない場合にはステップ181
2へ進む。使用できる場合にはステップ1814へ進
む。
値が転送すべき配列要素の数(バッファ格納のもの)に
達するまで待ち続け、達したときにこの値をゼロクリア
してからステップ1802へ戻る。
施例の作用が説明されており、図23には本実施例のタ
イムチャートが示されている(並列実行されるプロセス
1002の数は3とする)。
ァ(1804)の一方(配列要素の格納先として指定さ
れたもの)が配列要素で満杯となっており、次回に転送
すべき配列要素がこの送信バッファ(1804)へ格納
される。
の格納内容を送出する動作が開始されてから(図23参
照)、転送すべき配列要素の格納先としてが他方の送信
バッファ(1804)が指定される(図20参照)。
における送信バッファ(1804)の一方(配列要素の
格納先として指定されたもの)が満杯となった場合にも
(図21参照)、同送信バッファ(1804)の格納内
容を送出する動作が開始されてから(図23参照)、転
送すべき配列要素の格納先としてが他方の送信バッファ
(1804)が指定される。
バッファ(1804)に格納されると(図22参照)、
配列要素を格納している送信バッファ(1804)の全
てが一斉に送出される(図23参照)。
る送信バッファ(1804)がオーバーフローすると、
そのバッファフラッシュが開始されるとともに、配列要
素の格納先が他方の送信バッファ1804へ切り替えら
れる。
バッファがオーバーフローするときに、そのフラッシュ
が開始されるとともに、配列要素の格納先となるバッフ
ァが切り替えられるので(図23参照)、配列要素の格
納が中断されることなく連続して行なわれ、したがっ
て、その転送速度を著しく高めることが可能となる。
回に転送される配列要素の数を増加させて配列の転送回
数を減ずることで、また、いずれかの転送バッファがオ
ーバーフローするときに全ての転送バッファをフラッシ
ュして転送要素の格納待ちとなる時間を単縮することに
より、あるいは、バッファオーバーフロー毎に転送要素
の格納先となるバッファを切り替えて配列要素の格納を
連続的に行なうることで、配列要素の転送速度が高めら
れる。
トである。
る。
ートである。
ートである。
Claims (5)
- 【請求項1】 高次元配列の全要素がアドレス順に並べ
られたメモリ領域内において転送の対象となる要素の間
隔パターンが同一で互いに隣接する次元対の存在有無を
判断し(ステップ110)、 次元対の存在を示す判断結果が得られたときに、両次元
にわたる領域内において転送の対象となる要素の個数を
両次元の領域内において各々転送の対象となる要素の個
数から求めて両次元を単一化するとともに次元対の繰り
返しサーチを指示し(ステップ112)、 次元対の存在を示す判断結果が得られなかったときに、
次元対が単一化された次元と次元対の単一化が行なわれ
なかった次元との領域内において転送の対象となる要素
をバッファへ格納する(ステップ114)、 ことを特徴とした高次元配列の転送方法。 - 【請求項2】 並列実行の各プロセスに設けられたバッ
ファへ転送の対象となる高次元配列の要素を格納し(ス
テップ100)、 いずれかのバッファが配列要素で満杯となったときまた
は全配列要素のバッファ格納が完了したときに、配列要
素が格納されているバッファを全て特定し(ステップ2
10)、 特定された各バッファに格納の配列要素を該当のプロセ
スに全て送出させる(ステップ212)、 ことを特徴とした高次元配列処理方法。 - 【請求項3】 並列実行のプロセス毎に複数のバッファ
を予め用意し(ステップ214)、 各プロセスに用意されたバッファのいずれかへ高次元配
列の要素を格納し(ステップ216)、 いずれかのバッファが配列要素で満杯となったときに、
該バッファに格納されている配列要素の送出を開始し、
該バッファとプロセスが同一な他のバッファから配列要
素を格納できるいずれかを選択し(ステップ218)、 満杯のバッファから選択のバッファへ配列要素の格納先
を切り替える(ステップ220)、 ことを特徴とした高次元配列処理方法。 - 【請求項4】 高次元配列の全要素がアドレス順に並べ
られたメモリ領域内において転送の対象となる要素の間
隔パターンが同一で互いに隣接する次元対の存在有無を
判断し(ステップ110)、 次元対の存在を示す判断結果が得られたときに、両次元
にわたる領域内において転送の対象となる要素の個数を
両次元の領域内において各々転送の対象となる要素の個
数から求めて両次元を単一化するとともに次元対の繰り
返しサーチを指示し(ステップ112)、 次元対の存在を示す判断結果が得られなかったときに、
次元対が単一化された次元と次元対の単一化が行なわれ
なかった次元との領域内において転送の対象となる要素
をバッファへ格納する(ステップ114)、 方法で、 並列実行の各プロセスに設けたバッファへ転送の対象と
なる高次元配列の要素を格納し(ステップ100)、 いずれかのバッファが配列要素で満杯となったときまた
は全配列要素のバッファ格納が完了したときに、配列要
素が格納されているバッファを全て特定し(ステップ2
10)、 特定された各バッファに格納の配列要素を該当のプロセ
スに全て送出させる(ステップ212)、 ことを特徴とした高次元配列処理方法。 - 【請求項5】 高次元配列の全要素がアドレス順に並べ
られたメモリ領域内において転送の対象となる要素の間
隔パターンが同一で互いに隣接する次元対の存在有無を
判断し(ステップ110)、 次元対の存在を示す判断結果が得られたときに、両次元
にわたる領域内において転送の対象となる要素の個数を
両次元の領域内において各々転送の対象となる要素の個
数から求めて両次元を単一化するとともに次元対の繰り
返しサーチを指示し(ステップ112)、 次元対の存在を示す判断結果が得られなかったときに、
次元対が単一化された次元と次元対の単一化が行なわれ
なかった次元との領域内において転送の対象となる要素
をバッファへ格納する(ステップ114)、 方法で、 並列実行のプロセス毎に複数のバッファを予め用意し
(ステップ214)、 各プロセスに用意されたバッファのいずれかへ高次元配
列の要素を格納し(ステップ216)、 いずれかのバッファが配列要素で満杯となったときに、
該バッファに格納されている配列要素の送出を開始し、
該バッファとプロセスが同一な他のバッファから配列要
素を格納できるいずれかを選択し(ステップ218)、 満杯のバッファから選択のバッファへ配列要素の格納先
を切り替える(ステップ220)、 ことを特徴とした高次元配列処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26103393A JP3411641B2 (ja) | 1993-10-19 | 1993-10-19 | 高次元配列処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26103393A JP3411641B2 (ja) | 1993-10-19 | 1993-10-19 | 高次元配列処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07114508A JPH07114508A (ja) | 1995-05-02 |
JP3411641B2 true JP3411641B2 (ja) | 2003-06-03 |
Family
ID=17356126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP26103393A Expired - Fee Related JP3411641B2 (ja) | 1993-10-19 | 1993-10-19 | 高次元配列処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3411641B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001101145A (ja) | 1999-09-28 | 2001-04-13 | Fujitsu Ltd | 分散メモリ型並列計算機におけるデータ転送方式 |
-
1993
- 1993-10-19 JP JP26103393A patent/JP3411641B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07114508A (ja) | 1995-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3033203B2 (ja) | 配線経路探索装置及び配線経路探索方法 | |
US5285528A (en) | Data structures and algorithms for managing lock states of addressable element ranges | |
JP4881052B2 (ja) | タグ情報を使用してコマンドバッファから廃棄されたエントリを除去するシステム及び方法 | |
US6948050B1 (en) | Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware | |
US7290096B2 (en) | Full access to memory interfaces via remote request | |
JPH10512699A (ja) | コンピュータのネットワークからワールドワイドウェッブ上のページを捜し出したり、ドキュメントを捜し出したりするためのシステム及び方法 | |
CN115335823A (zh) | 用于最短路径图搜索的向量化的队列 | |
US5367677A (en) | System for iterated generation from an array of records of a posting file with row segments based on column entry value ranges | |
US5671405A (en) | Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts | |
US7254687B1 (en) | Memory controller that tracks queue operations to detect race conditions | |
JP3411641B2 (ja) | 高次元配列処理方法 | |
US4811411A (en) | Image processing method and system | |
Nakano | Asynchronous memory machine models with barrier synchronization | |
JP2000227872A (ja) | 複数メモリ要求の動的スロット割当および追跡 | |
US7269542B2 (en) | System and method for determining a cache optimized ordering of cells in an unstructured graph | |
Suel | Routing and sorting on meshes with row and column buses | |
Bokka et al. | Time-and VLSI-optimal convex hull computation on meshes with multiple broadcasting | |
Bhagavathi et al. | Selection on rectangular meshes with multiple broadcasting | |
JP4117621B2 (ja) | データ一括転送装置 | |
US12072808B2 (en) | Data storage | |
JPH0728836A (ja) | データベース検索方法及びこの方法を用いたデータベースシステム | |
Segal | Hardware sorting chip steps up software pace | |
JPH06103477B2 (ja) | 並列キャッシュメモリ | |
CN1293481C (zh) | 直接访问高速缓存的数据的系统和方法 | |
EP0170443A2 (en) | Method for searching an association matrix |
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: 20030311 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080320 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090320 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100320 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100320 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110320 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |