JPH05298272A - タイル化を利用するための並列処理装置および方法 - Google Patents

タイル化を利用するための並列処理装置および方法

Info

Publication number
JPH05298272A
JPH05298272A JP4273479A JP27347992A JPH05298272A JP H05298272 A JPH05298272 A JP H05298272A JP 4273479 A JP4273479 A JP 4273479A JP 27347992 A JP27347992 A JP 27347992A JP H05298272 A JPH05298272 A JP H05298272A
Authority
JP
Japan
Prior art keywords
tile
signal
tiles
execution
data
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.)
Withdrawn
Application number
JP4273479A
Other languages
English (en)
Inventor
Christopher L Reeve
クリストファ・エル・リーブ
Tani Shavit
タニ・シャビット
Jr James B Rothnie
ジェイムズ・ビー・ロスニー
Timothy G Peters
ティモシ・ジー・ピーターズ
Linda Q Lee
リンダ・キュー・リー
William F Mann
ウィリアム・エフ・マン
Jacklin Kotikian
ジャクリン・コティキアン
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.)
KENDARU SUKUUEA RES CORP
Kendall Square Research Corp
Original Assignee
KENDARU SUKUUEA RES CORP
Kendall Square Research Corp
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 KENDARU SUKUUEA RES CORP, Kendall Square Research Corp filed Critical KENDARU SUKUUEA RES CORP
Publication of JPH05298272A publication Critical patent/JPH05298272A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Manufacture, Treatment Of Glass Fibers (AREA)

Abstract

(57)【要約】 【目的】 反復命令シーケンスを実行するための改良さ
れた並列ディジタルデータ処理装置および方法を提供す
る。 【構成】 本発明では、反復命令シーケンスをサブタス
クに配列し、それらのサブタスクをプロセッサに割り付
けることによりこれを実行する。分割および割り付け
は、プロセッサ間のデータの競合を最小化するように、
またプロセッサに対するデータの局所性を最大化するよ
うに行われる。本発明の装置および方法は、大規模並列
のシステムを含め、種々のマルチプロセッサシステムに
応用できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ディジタルデータ処理
技術に関し、特定すると、並列処理コンピュータ上にお
いてプログラムを実行するための方法および装置に関す
る。
【0002】
【従来技術、発明の課題】従来のコンピュータは、プロ
セッシング機能を遂行するために、普通単一のプロセッ
シングユニット、すなわちCPUに依存した。これらの
コンピュータに対して書かれたソースコードプログラム
は、一連のマシン命令に翻訳され、これがCPUにより
一つずつ実行された。オリジナルプログラムに反復的ス
テップシーケンス、すなわちループが存在すると、単一
のプロセッサは、一度に一つずつループ内の各命令を取
り上げ、ループの各反復に対してこれらの同じ命令を繰
り返す。
【0003】その後の進歩で、若干組の命令を互いに平
列に実行することが可能となった。コープロセッシング
と称されるこの進歩した方法では、CPUとともに、特
別目的のプロセッサが用意される。このため、この種の
マシン上におけるプログラムの実行は、コープロセッサ
およびCPU間で分割された。
【0004】多重プロセッサを用いるコンピュータの進
歩で、全タスクを同時に動作している別個のCPUに割
り付けることが可能となった。並列プロセッサと称され
る特別の種類のこれらの多重プロセッサは、特別の同期
機構を装備しており、同じプログラムの同時実行部分に
特に適合する。コンピュータプログラムが並列プロセッ
サ上で効率的に動作し得るようにコンピュータプログラ
ム実行を「並列化」すことは、気力をくじくような仕事
である。第1に、プログラムのデータの流れおよび制御
の流れが理解されねばならず、ついで一組の明瞭に分割
可能な仕事を画定するように再配列されねばならぬ。今
日まで達成されたもっとも意味のある利点は、ループ実
行の再配列、すなわち「ループの交換」、同期および
(程度は低いが)タイル化(タイリング)にあった。
【0005】多くの平行化の仕事は手でなされるが、最
近の進歩はその仕事を自動化する方向になされた。これ
は、普通、ソースコードプログラムをマシンコードに変
換するコンパイルプロセスとの関連において遂行され
た。一つの商業的に入手し得る製品、イリノイ州所在の
Kuck and Associates Inc.から入手し得るKAP/KAI プリ
プロセッサは、これらの機能のあるものを遂行する。詳
しく言うと、このプリプロセッサは、ループ交換および
同期の能力を提供する。
【0006】上述の点にかんがみて、本発明の目的は、
改良されたディジタルデータプロセッシング装置および
方法を提供することである。
【0007】さらに詳しく言うと、本発明の目的は、大
規模に並列であるコンピュータを含む並列プロセッシン
グコンピュータ上でプログラムを実行するための改良さ
れた機構を提供することである。
【0008】本発明の特定の目的は、コピープログラム
の並列化を容易にする改良されたコンパイラを提供する
ことである。
【0009】本発明の他の特定の目的は、マルチプロセ
ッサシステム上でコンピュータプログラムを並列化し、
実行するためのコンピュータランタイム機構を提供する
ことである。
【0010】
【課題を解決するための手段】本発明のこれらおよびそ
の他の目的は、反復的命令シーケンスをサブタスク中に
配列(分割)し、それらをプロセッサに割付けすること
により、反復的命令シーケンスを実行するための改良さ
れた並列プロセッサを提供する本発明によって達成され
る。この分割および割付けは、プロセッサ間におけるデ
ータの競合を最小化し、そのデータにアクセスするプロ
セッサに対するデータの局所性を最大化するように行わ
れる。
【0011】本発明は、1側面として、各々命令を実行
するための複数のプロセッシングユニットと、データお
よび命令を記憶するためのメモリと、プロセッサ間の通
信を容易にするための機構とを有する形式の改良された
並列プロセッサを提供する。メモリそれ自体は、各々デ
ータおよび命令を記憶することができる複数のメモリ要
素を含む。通信機構は、例えば、メモリの共通領域を使
用する信号プロトコルとし得る。本発明は、反復的シー
ケンスを表わすタイル化された一連の命令をメモリに記
憶することにより、一部特徴づけられる。さらに、各プ
ロセッサは、タイル化された命令シーケンスの一部を実
行するためにその利用可能性を報知する。さらに、次の
タイル要素が、その報知に応答して、「タイル」すなわ
ち、反復的シーケンスと関連する反復スペースの一部を
の境界を表わす信号を発生する。信号を報知するプロセ
ッサは、ついで、そのタイルの間にタイル化シーケンス
を実行する。
【0012】次のタイル要素により生成されるタイル
は、互いに重複しない。しかしながら、すべてのタイル
は、一緒に反復スペースを覆う。上述のように、タイル
は、プロセッサに対するデータの局所性を最大化しなが
ら、プロセッサ間のデータに対する競合を最小化するよ
うに生成される。
【0013】上述の並列プロセッサは、タイルの反復ス
ペース内にジメンションを画定するタイル形状信号を発
生するタイル形成装置を備える。例えば、反復スペース
は、インデックス(i) および(j) により画定され得る。
ここで、(i) は1ないし100の間で変わり、(j) は1 な
いし25の間で変わる。このようなスペースに対するタイ
ルは、(i) に沿って16のインクリメントを、(j) に沿っ
て25のインクリメントを覆うように形成される。かくし
て、反復スペースは等しい寸法(すなわち16インクリ
メント)の6つのタイルと、縁部にある小寸法(すなわ
ち4インクリメントの)タイルとに分割される。
【0014】タイル形成装置は、得られるタイル間に存
在する依存性を考慮してタイル形状信号を発生する。こ
の点における依存性は、直列の実行命令が重要である場
合に保存されるように、タイルがアクセスするデータに
関するタイル間の関係について言及するタイル間特性で
ある。例えば、もしも第1のタイルが、データ片が第2
のタイルによって読み取られ得る前にデータ片を書き込
まねばならないならば、その第2のタイルは第1のタイ
ルに依存するといわれる。
【0015】さらに詳しく言うと、データ依存性は、次
の場合にタイル間に存在する。 (i) 第1タイル内の命令が選択されたデータ片を書き込
み、第2タイル内の命令が続いてそれを読み取る場合。 (ii)第1タイル内の命令が選択されたデータ片を読み取
り、第2タイル内の命令が続いてそれを書き込む場合、
または (iii) 第1タイル内の命令が選択されたデータ片を書き
込み、第2タイル内の命令もそれを続いて書き込む場
合。
【0016】依存性それ自体についてのさらに詳細な理
解は、「Optimizing Supercompilerfor Supercomputer
s」と題するWolfe の論文(The MIT Press, 1989)の参照
により得られよう。
【0017】タイル形成装置は、他にもあるが、メモリ
の利用を最適化する。例えば、タイル形成装置は、デー
タの移動を最小化するように、タイルの異なるものによ
り書込み形式のアクセスを受ける個々のデータ片の数を
最小化するタイル形状を選ぶことができる。さらに、タ
イル形成装置は、競合を最小化するために、複数の同時
に実行中のタイルにより書込み形式のアクセスを受ける
個々のデータ片の数を最小化するタイル形状を選ぶこと
ができる。
【0018】上述の並列プロセッサのタイル形成装置
は、一側面として、プロセッサ間におけるデータの転送
を最小化するタイル実行用シーケンスを表わす「親和性
(アフィニティ)」信号(または「ssb」 )を発生する。
【0019】タイルの形状は、少なくともタイルの依存
性の方向、親和性信号(ssb) 、タイルを実行するコスト
の評価値(例えばマシンサイクルの数)、反復スペース
のサイズ、タイル化シーケンスの実行に利用可能なプロ
セッサの数、タイルが親和性領域内にあるかどうか、す
なわち、反復スペースが、単一のシーケンスでなく複数
のタイルシーケンスにより形成されるプログラム領域に
存するかどうかに依存して発生する。
【0020】本発明の他の側面として、本発明に従う並
列プロセッサは、一組の戦略間でタイルを発生する態様
およびシーケンスを選択するタイル−戦略要素を備え
る。タイル戦略要素は、対応する信号を発生し、次のタ
イル要素は、この信号に応答してタイルを発生する。
【0021】「スライス」戦略で、利用可能なプロセッ
サの数により反復スペースを分割する。これらの各タイ
ルは、プロセッサの対応するものに割当てられる。かく
して、10のプロセッサがあれば、10のタイルが存
し、第1のタイルは第1のプロセッサに割り当てられ、
第2のタイルは第2のプロセッサに割り当てられ、以下
そのように割り当てられる。
【0022】この戦略は、得られたタイル間におけるデ
ータ依存性がないときに選ばれる。同様に、それらの間
に親和性がほとんどないとき、すなわち、タイルのいず
れか一つによりアクセスされる少しのデータが(読取り
のためでも、書込みのためでも)他のタイルによっても
アクセスされるときにも選ばれる。
【0023】「モジュロ」戦略で、反復スペースを多数
のタイルに分割するが、この数は、利用可能なプロセッ
サの数より大きくし得、そして該戦略は、得られたタイ
ルをタイル数の係数に基づいて割り当てる。かくして、
例えば、3つの利用可能なプロセッサがあり、9つのタ
イルがあれば、それらの利用可能性のタイミングに拘り
なく、第1のプロセッサにはタイル1,4および7が、
第2のプロセッサにはタイル2,5および8が、そして
第3のプロセッサにはタイル3,6および9が割り当て
られる。
【0024】この戦略は、タイル間に依存性がなく、ま
た親和性がほとんどないときにも選択される。さらにこ
の戦略は、反復スペースのサイズが変化するときでさ
え、得られたタイルおよびタイル割当によって各プロセ
ッサによるデータの再利用が最大化されるところで選ば
れる。
【0025】「ウェーブフロント」戦略も、利用可能な
プロセッサより多いタイルがあるように反復スペースを
分割する。これは、得られたタイルがデータ依存性を示
すとき、したがって、タイルが、その依存性の方向によ
り決定される順序で発生されねばならぬときに選ばれ
る。
【0026】例えば、第1のタイルは、第2のタイルお
よび第3タイル前に実行される必要がある場合がある。
ウェーブフロント戦略では、3つのプロセッサがこれら
のタイルを取るために同時に利用可能であったとして
も、それらの1つのみにタイルが与えられる。詳述する
と、1つのプロセッサにより実行のため、第1のタイル
が割り当てられる。それが完了した場合のみ、第1のタ
イルの実行の結果に依存して、第2および第3のタイル
が実行されよう。
【0027】モジュロ−ウェーブフロント戦略では、モ
ジュロおよびウェーブ両戦略にしたがって、反復スペー
スを分割し、タイルを割り当てる。これは、タイル間に
データ依存性が存在するところで、また、やはり反復ス
ペースのサイズの変化が存在してさえ、プロセッサによ
るデータの再使用が最大化され得るところで選ばれる。
【0028】グラブ戦略も、利用可能なプロセッサ以上
のタイルが存在するように反復空間を分割する。得られ
たファイルは、到着順作用の方式で要求プロセッサに割
り当てられる。モジュロおよびウェーブ戦略と異なり、
タイル間に依存性がなく、親和性が少ししかないところ
で採用される。これはプロセッサ間のロードの平衡化を
容易にする。
【0029】上に論述したことに加えて、タイル戦略要
素は、使用者の要求で上述の戦略の任意のものを選ぶこ
とができる。
【0030】上述のプロセッサは、1以上のタイル化さ
れたシーケンスを含む反復スペースを画定する親和性領
域形成要素を備えることができる。この要素は、その領
域を表わす信号を発生することに加えて、タイル次元を
画定する信号、タイルを生成するシーケンスおよび態様
を画定する信号、およびどのプロセッサがタイルを実行
すべきかを画定する信号を発生することができる。
【0031】本発明は、さらに他の側面として、コンピ
ュータプログラムを、複数の並列プロセッサにより実行
のためにロードするに適当な目的コードに翻訳するため
の形式の改良されたコンパイラを提供する。
【0032】改良は、反復シーケンスをソースプログラ
ムで表わすタイル化された一連の命令を発生するタイル
化要素を有することをその特徴とする。タイル化要素は
また、ラン時にタイル化されたシーケンスを実行すべき
タイル(該タイルに関して)を画定し生成するために上
述の形式の並列プロセッサにおいて使用するためのフレ
ームワークを提供する信号を発生する。これに関連し
て、タイル化要素は、反復シーケンスならびに使用者画
定パラメータに応答する。
【0033】本発明のこの側面に従うと、タイル化要素
は、反復シーケンスの依存性の方向並びに反復シーケン
スそれ自体に応答して、タイル化されたシーケンスを実
行すべき反復スペース(該スペースに関して)内のイン
デックスを選ぶための並列化装置を備えることができ
る。並列化装置は、当該インデックスに基づいてインデ
ックスを自動的に選ぶことができる。並列化装置は、こ
れらのインデックスに対する使用者により画定される選
択を受け入れることができるが、それらの実行可能性を
保証するために自動的に識別されるものと比較する。
【0034】上述の形式のコンパイラはまた、複数のタ
イルでの実行中読取り形式または書込み形式のいずれか
の形式のアクセスを受けるデータの転送を最小化するタ
イル実行シーケンスを表わす親和性信号(ssb)を発生す
るための最適化装置を備えることができる。
【0035】最適化装置はまた、同じデータにアクセス
するソースプログラムの1または複数の反復シーケンス
を識別する親和性領域信号を発生することができる。最
適化装置は、使用者により画定される親和性領域を受け
入れることもできるが、最適化装置は、それを自動的に
識別されるものと比較し、使用者によって画定される領
域が妥当であるか否かをチェックする。
【0036】他の側面として、最適化装置はタイル化さ
れたシーケンスの実行と関連するコストを決定して、そ
れを表わす信号を発生することができる。
【0037】コンパイラ内に呼び発生要素が設けられて
おり、該要素が、ソースコードの反復シーケンスを、コ
ードディスパッチングサブルーチンに対する呼びを表す
命令と交換できる。ラン実行要素が、プロセッサにより
タイル化されたシーケンスを開始するために、その呼び
を実行できる。
【0038】本発明のこれらおよびその他の側面は、図
面および以下に続く説明を参照することによって明らか
となろう。
【0039】
【実施例の説明】第1図は、本発明を実施するのに使用
される好ましいマルチプロセッシングシステムを示す線
図である。例示のシステム10は、3つの情報転送レベ
ルを含むすなわち、レベル1:0、レベル1:1および
レベル1:2である。各情報転送レベルは、1または複
数のセグメントを備えており、それぞれバス要素と複数
のインターフェース要素とをその特徴として有してい
る。詳述すると、例示のシステム10のレベル1:0
は、12A、12B、12C、12D、12Eおよび1
2Fで指示される6つのセグメントを備えている。同様
に、レベル1:1は、セグメント14Aおよび14Bを
備えており、レベル1:2はセグメント16を備えてい
る。レベル1:0の各セグメント、すなわち12A、1
2B、--- 、12Fは、複数のプロセッシングセルを含
んでいる。例えば、セグメント12Aは、セル18A、
18Bおよび18Cを含んであり、セグメント12Bは
セル18D、18Eおよび18Fを含んであり、以下同
様に構成されている。これらのセルは、各々、セル間プ
ロセッサバス(図示せず)により相互接続された中央プ
ロセッシングユニットとメモリ要素とを含んでいる。本
発明の好ましい実施例においては、各セルに包含される
メモリ要素は、その関連する中央プロセッシングユニッ
トにより使用される全制御およびデータ信号を記憶す
る。
【0040】プロセッシングシステム10のあるセル
は、二次メモリデバイスに接続されている。例示のシス
テムにおいて、例えばセル18Cはディスクドライブ1
9Aに、セル18Dはディスクドライブ19Bに、そし
てセル18Oはディスクドライブ19Cに結合される。
ディスクドライブ19A−19Cは、従来の設計とし
得、数種の商業的に入手されるデバイスの任意のものか
ら選択きる。情報を記憶するためには、ディスクドライ
ブ以外の二次記憶装置、例えばテープドライブを使用で
きることが理解されよう。
【0041】図2は、図1におけるプロセッシングシス
テム内のプロセッシングセルおよびそれらの相互接続を
詳細に例示している。この図において、複数の中央プロ
セッシングユニット40A,40Bおよび40Cが、そ
れぞれ関連するメモリ要素42A、42Bおよび42C
に接続されている。各対のプロセッシングおよびメモリ
ユニット間の通信は、図示されるように、バス44A、
44Bおよび44Cに沿って行われる。上述のレベルセ
グメントおよびルート設定セルを表わすネットワーク4
6が、例示のプロセッシングセル42A〜42C間にお
いて情報パケットを転送する(バス48A、48Bおよ
び48Cを経てネットワーク46に通される)。
【0042】例示の実施例において、中央プロセッシン
グユニット40A、40Bおよび40Cは、それぞれ5
0A、50Bおよび50Cの参照符号を付したアクセス
要求要素を備えている。これらのアクセス要求要素は、
メモリ要素42A、42Bおよび42Cに記憶されるデ
ータへのアクセス要求を発生する。要素50A、50B
および50Cにより発生されるアクセス要求信号の中に
は、メモリ要素に記憶されるデータ片への排他的変更ア
クセスの要求を表わす所有権要求がある。好ましい実施
例において、アクセス要求要素50A、50Bおよび5
0Cは、CPU40A、40Bおよび40C上で実施さ
れる命令セットのサブセットを含んでいる。この命令サ
ブセットは以下で説明する。
【0043】中央プロセッシングユニット40A、40
Bおよび40Cはオペレーティングシステム51の制御
下で動作するが、その部分51A、51Bおよび51C
が、中央プロセッシングユニットの対応するもの内に存
在している。オペレーティングシステム51は、中央プ
ロセッシングユニットおよびシステム(10)設備上で
実行されるアプリケーションプログラム間のインターフ
ェースを提供し、またデータアクセスおよび割付けを管
理するための管理システムを含む。
【0044】中央プロセッシングユニット40A,40
Bおよび40Cを制御するための好ましいオペレーティ
ングシステムは、UNIX様のオペレーティングシステム、
さらに好ましくは、本明細書の教示に従って変更された
OSF/1 である。
【0045】メモリ要素40A、40Bおよび40C
は、それぞれキャッシュ制御ユニット52A、52Bお
よび52Cを備えている。これらの各キャッシュ制御ユ
ニットは、図示のように、対応するディレクトリ要素5
6A、56Bおよび56Cを介してデータ記憶領域54
A、54Bおよび54Cされる。ストア54A、54B
および54Cは、それらの対応する中央プロセッシング
ユニットにより必要とされるデータおよび命令信号に対
する物理的記憶スペースを提供するように、例示のシス
テムにより利用される。
【0046】例示のディジタルデータプロセッシングシ
ステム10の構造および動作についての一層の理解は、
以下の現在特許出願中の一緒に譲渡された特許出願の参
照により得ることができるから、これらの特許出願も参
照されたい。
【0047】1) [MULTIPROCESSOR DIGITAL DATA PROCES
SING SYSTEM]と題する1987年12月22日付米国特許出願第
136,930 号. 2) 1991 年5月20日付米国特許出願第696,291 号. 3) [MULTIPROCESSOR SYSTEM WITH MULTIPLE INSTRUCTIO
N SOURCES]と題する1989年6月22日付米国特許出願第37
0,325 号. 4) [IMPROVED MEMORY SYSTEM FOR A MULTIPROCESSOR]と
題する1989年6月22日付米国特許出願第370,341 号. 5) [IMPROVED MULTIPROCESSOR SYSTEM] と題する1989年
6月22日付米国特許出願第370,287 号. 6) [HIGH-SPEED PACKET SWITCHING APPARATUS AND METH
OD] と題する1990年3月26日付米国特許出願第499,182
号. 7) [DYNAMIC PACKET ROUTING NETWORK] と題する1990年
5月10日付米国特許出願521,798 号. 8) [PACKT ROUTING SWTCH]と題する1990年5月18日付米
国特許第526,396 号. 9) [DYNAMIC HIERARCHICAL ASSOCIATIVE MEMORY]と題す
る1990年5月31日付米国特許出願531,506 号. 10) [DIGITAL DATA PROCESSOR WITH IMPROVED PAGING]
と題する本特許出願と同日の出願の米国特許出願. 11) [DIGITAL DATA PROCESSOR WITH IMPROVED CHECKPOI
NTING AND FORKING]と題する本特許出願と同日の出願の
米国特許出願. 12) [IMPROVED DIGITAL DATA PROCESSOR WITH DISTRIBU
TED MEMORY SYSTEMS] と題する本特許出願と同日の出願
の米国特許出願.
【0048】[コード並列化および実行]図3は、反復
シーケンスを含むソフトウェアプログラムの並列化およ
び実行のためディジタルデータプロセッサ10において
利用されるソフトウェアモジュールの好ましい配置を示
している。コンパイルシステム60は、ソースコード入
力を目的コードに翻訳する。ソースコードは、従来形式
のフォーマット、例えばフォルトラン77またはフォル
トラン90、またはCプログラミング言語ソースファイ
ルとし得、普通反復シーケンスまたはループを含む。従
来のプログラミングステートメントに加えて、ソースコ
ードは、並列化のための利用者により特定される指示文
を含むことができる。これらの指示文は、好ましくはコ
メント、すなわち非実行可能ステートメントとして提供
されるのがよい。これらの指示文を従来のコメント(普
通説明テキストとして利用される)から区別するため
に、指示文は、好ましくは、追って論述されるように、
特殊なフォーマットの形式をとるのがよい。
【0049】コンパイルシステム60は、プリプレプロ
セッサ60aおよびコンパイラ60bを備える。プリプ
ロセッサ60は、ソースコードにおける反復シーケンス
の事前分析を遂行して、その依存性の方向を決定し、か
つ特定のループの交換を遂行する。プリプロセッサ60
aはまた、コンパイラ60bで使用のため、上に言及し
た形式の指示文を発生する。依存性方向決定およびルー
プ交換のための技術は周知である。反復シーケンスの改
良された並列化のためこれらの周知の技術に加えられる
変更については以下に記述する。
【0050】コンパイルシステム60のコンパイラ60
bは、プログラムステートメントを事前処理されたソー
スコードフォーマットから目的コードフォーマットに翻
訳する。コンパイラ60bは、従来のコードを翻訳する
ことに加えて、並列の実行で使用のため、事前処理され
たソースコード内の反復シーケンスを「タイル化」され
たシーケンスに変換する。この手続きは、「タイル化」
と称され、一部は、プリプロセッサ60aにより生成さ
れる指示文、ならびにソースコード62に含まれる指示
文によって制御される。
【0051】コンパイルシステム60による目的コード
出力は、ディジタルデータプロセッサ10上における実
行に適当なコードを生ずるため、リンクエディタ64に
よりランタイムライブラリ66に結合されている。
【0052】以下に、好ましいプリプロセッサ60aに
ついて記述する。本技術は、フォルトラン77または9
0およびCプログラミング言語のような種々のソフトウ
ェアに応用し得るが、以下の論述は、フォルトラン77
ソースコードの翻訳に関係する。
【0053】以下の技術は、従来既知のプリプロセッシ
ングシステムとの関連において動作するように、特に以
下に説明されるようにソースコード反復シーケンスの依
存性方向を決定するように構成できる。この種の従来の
システムには、イリノイ州所在のKuck and Associates
から商業的に入手し得るKAP/KAI プリプロセッサや、Pa
cific Sierraから入手し得る( 例えば「Vast」プリプロセ
ッサのような)プリプロセッサ等がある。
【0054】[プリプロセッサ] 1.梗概 プリプロセッサ60aの主たる役割は、フォルトランプ
ログラムに、並列実行を可能にする注釈を入れる、すな
わちタイル化指示文を挿入することである。プリプロセ
ッサ60aはまた、任意的に、タイル化可能にするか最
適化を行なうように、ループ交換のようなコードのある
変換を遂行する。
【0055】例示の実施例において、プリプロセッサ6
0aに対する入力はフォルトランプログラムソースであ
り、その一次出力もタイル化指示文を含むフォルトラン
プログラムである--事前処理されたものであるが。その
二次プログラムは有効で正しいフォルトランプログラム
であり、そしてこれは、直列に実行されるとき、原プロ
グラムと同じ結果を計算する。この二次プログラムは、
コンパイラ60bに対する入力である。 2.タイル化用指示文−プリプロセッサ出力 C*KSR* TILE(<tiling-args>) C*KSR* END TILE 2.1 タイル化−アルゴリズム プリプロセッサ60aがタイル化指示文中に入れること
ができるタイル化−アルゴリズムは、次の一般的形式を
有する。 タイル化指示文に特定されるタイル化−アルゴリズム
は、タイル化されたループの属性についての情報を与え
る。例えば、タイル化指示文内の'local=t' tiling-arg
は、「このタイル化された−ループは、各プロセスに対
して局部的であるべき変数"t" を含むことを」を意味す
る。
【0056】プリプロセッサ60aが発生する タイル
化パラム(パラメータ)を下表に示す。 [パラメータの一次セット]
【表1】シンタクス オーダー = <dep-list> order=k 最終値 = <dep-list> smallest 局部 = <Var-list> tem or (t1,t2) 低減 = <var-list> sum
【0057】タイル化パラメータの一次セットは、以下
に論述のように、コンパイラ60b が受け入れることがで
きるタイル化パラメータの全リストのサブセットであ
る。しかしながら、これらのタイル化パラメータは、プ
ログラムの正確性に影響を及ぼす可能性のある情報を含
み、そしてこれがタイル化に如何に影響を及ぼすかは以
下の記述からわかろう。 2.2 タイル化指示文−概要 プリプロセッサ60a出力タイル化指示文のシタクスは
下記のごとくである。すなわち、
【表2】 C*KSR* TILE( <index> ... [, 命令=<dep-list>] [, 最終値=<variable-list>] [, 局所=<variable-list>] [, 削減=<variable-list>] [,<extra-params>]) ... C*KSR* RND TILE
【0058】TILE指示文は、インデックスが<tile-inde
x-list> に含まれるループ(すなわち、doステートメン
ト)前に起こらねばならない。<tile-index-list> にお
けるループ−インデックスは、それらがループネストに
おいて現れるのと同じ順序にある。しかして、左−右
は、ループネストにおける外部−内部に対応する。(可
読性のための慣例である。)
【0059】プリプロセッサ60aが形成できるタイル
化−パラメータは、コンパイラ60bが理解できるタイ
ル化パラメータのサブセット(時折一次セットと呼ばれ
る)。タイル化パラメータの一次セットは、オーダー、
最終値、局所、削減である。プリプロセッサ60aは、
タイル化−パラメータの全リストを知らず、その構文分
析のためのシタクス定義に依存する。
【0060】TILE入力指示文に特定されるタイル化パラ
メータは、「そのまま」TILE出力指示文に通されよう。
(すなわち、これらのタイル化指示文が一次セットに属
さなければ。 もしもそれが属すと、エラーとしてフラ
グが立てられ、ループはタイル化されない。)
【0061】[形式的シタクス定義]
【表3】 <tiled-loop> <tile-begin><Fortran-do-loop><tile-end> <tile-begin> C*KSR*TILE (<tiling-args>) <tile-end> C*KSR* TILE END <tiling-args> <tile-index-list>[,<tiling-param-list>] <tile-index> <loop-index-variable-name> <tiling-param> オーダー =<order-listing> または最終値 =<var-or-invelt-listing> または低減 =<var-or-invelt-listing> またはプライベート =<var-listing> または <extra-keyword>=<easy-to-parse-string> <order-listing> <order> または(<order-list>) <order> is [-] <loop-index-variable-name> <variable-or-invelt-listing> <var-or-invelt) または (<var-or-invelt-listing>) <var-or-invelt> < 変数名または配列要素名;配列要素名の場合、すべての 添字表現は被タイル化されたループネストに関して不変量 でなければならない> <var-listing> <var> または(<var-list> <var> < 変数名> <extra-keyword> < フォルトラン識別子>
【0062】3.自動タイル化 この節は、プリプロセッサ60a出力タイル化指示文に
焦点を絞って機能的観点から説明する。論述は(他に明
解な宣言がない限り)、3つのことを仮定する。すなわ
ち、プリプロセッサ60aは全自動化タイル化をなしつ
つあること、プリプロセッサ60a最適化指示文(AUTO
TILE. ROUNDOFF) は最大並列化を許容するように設定さ
れること、および主張はないことである。
【0063】タイル化のための原理は、最外部インデッ
クス限界(インバウンド)からタイル化することであ
る。また、できるだけ多くタイル化することである(す
なわちできるだけ多くのインデックスを)。
【0064】3.1 梗概 所与のループネストは、つねにすべての次元でタイル化
できない。しかしながら、正しいタイル化のための1以
上の可能性があり得る。この節では、プリプロセッサ6
0aがどのタイル化の可能性を選ぶかについて論述す
る。(利用者がタイル化のためにインデックスを選ぶ際
に如何に介入するかについては、次の節で論述する。)
【0065】プリプロセッサ60aは、反復シーケンス
について依存性分析を遂行する。データ依存性分析の原
理は、International Journal of Parallel Programmin
g, vol.16,No.2,1988 年4月発行のMichael Wolfe and
Utpal の「Data Dependence and Its Application to Pa
rallel Processing」なる論文、University of illinoi
s, Dept. of Computer Science, Report No. 82-1009,1
982年10月発行のMichael Wolfe の「Optimizing Superco
mpilers for Supercomputers」なる論文、Communication
s of the ACM, Vol. 29, No.12, 1986 年12月発行のDav
id Padua およびMichael Wolfe の「Advanced Compiler
Optimization for Supercomputerなる論文」の参照に
より理解されよう。
【0066】データ依存性はループにより運ばれること
が認められよう。加えて、プリプロセッサ60aの関係
において、タイル間に依存性があることも認められよ
う。
【0067】数種のタイル化の障害が、タイル化を阻害
することがあり得る。例えば、依存性における周期がそ
れである。依存性はループにより運ばれるから、そのル
ープのタイル化を阻害するが、同じループネストの他の
ループはなおタイル化され得る。さらに、あるステート
メントはタイル化できない。これらのステートメントに
は、ループネストのゴートゥーアウト(goto out)やサブ
ルーチン呼び等がある。このタイル化の障害は、非タイ
ル可能化ステートメントを包含する全ループネストに影
響を及ぼす。
【0068】他の障害は、不完全にネストされたループ
である。これは、ループネストのループ間に(ドゥー(D
O)以外の)ステートメントがある場合に起こる。不完全
なネスティングは、不完全なネスティングが起こる場合
にあたかも「壁」があるように一つの制約を導入する。
この場合、タイル化は、壁の上側または下側のいずれか
で起こり得るが、両側では起こり得ない。
【0069】さらに、ループの限界が外部ループのイン
デックスに依存する場合に起こる。これは、非方形的反
復空間を創成し、これらの2つのループがタイル化のた
めに相互に両立し得ないという制約を意味する。この制
約は、三角形ループのような特別のケースに対しては緩
和されることが認められるであろう。
【0070】プリプロセッサ60は、ループネストの分
析に基づいて(他のこともあるが、すべてのタイル化の
障害を見つける)、タイル化の障害を避けながらループ
をタイル化する。そのようにする際、タイル化の障害お
よびそれに基づくタイル化の決定を示すループテーブル
が得られる。
【0071】被タイル化ループを並列に実際に実行する
ことが価値があるか否かの最終的決定は、コンパイラに
より(またはラン時間に)なされる。プリプロセッサ6
0aは、依存性をもつ一次元( 「1D」)ループ、なら
びに少量のワークを有するループ等をタイル化し得る。
その種たる理由は、プリプロセッサ60aが一次に一つ
のループ60aを調べている間、メモリ分布のような他
の包括的な考察でタイル化戦略を左右し得るからであ
る。コンパイラは、如何なるランタイムオーバーヘッド
をも除去するために、TILE指示文を「除去」し得る。
【0072】再順序付け(ループ交換)が(もしあれ
ば)、タイル化の後に、かつタイルの内側においてのみ
行われる。 3.2 タイル化のためのインデックスの選択 プリプロセッサ60aの主たる役割は、タイル化指示文
をコードに挿入することである。すなわち、 C*KSR*TILE ( <tile-index-list) [,<tilting-param>...])
【0073】タイル化−インデックス−リストを選ぶこ
とが主たる決定である。他のタイル化−パラメータも相
応に決定される。
【0074】この論述の目的のため、プリプロセッサ6
0aは2ステップでループテーブルを形成するものと仮
定する。まず、プリプロセッサは、ループネスト、タイ
ル化障害、等についての情報を集める。ついで、どのイ
ンデックスをタイル化すべきかについての決定をなす
(ループテーブル内のループは、ループネスト内のルー
プと同じ順序で整理される、最外部が一番)。したがっ
て、プリプロセッサ60aの分析後、そしてタイル化に
ついての何らかの決定がなされた後、ループテーブルは
図4に示されるごとくである。
【0075】そこで、「タイル化可能?」フィールド
は、他のループがタイル化されるかされないかに拘りな
く、この特定のループがタイル化されるのを防ぐタイル
化障害があるか否かを指示する。これは、ループが依存
性のサイクルを担うか、ループボディが非タイル可能ス
テートメントを含むときなどに起こる。
【0076】「制約フィールド」は、ループネスト内の
どの他のループがこのループをタイル化することにより
影響を受けることがあり得るかに注目する。これは、例
えば。ループが不完全にネストされるとき、すなわち非
方形のときに起こる。前述のように、不完全にネストが
起こる点は、「壁」と考えることができる。壁は、先行
のループまたは後続のループのいずれかに取り付けるこ
とができる。任意的に、壁が先行のループに取り付けら
れると仮定し得る。
【0077】障害フィールドは、もしあればタイル化障
害についての記述情報を含むことができる。
【0078】ここでなされるべきことは、タイル可能化
?および抑制情報フィールド内の情報に基づいて、タイ
ル化決定フィールドを満たすことだけである。プリプロ
セッサ60aは、ループを外側内部限界からタイル化す
るから、プリプロセッサは、ループテーブルの第1行か
らスタートし、下方に動き、制約に注意しながらできる
だけ多くをタイル化するかのように観察できる。
【0079】ループテーブルは、抑制処理の概念を記述
するのに使用できる。ループをタイル化することが決定
されると、それは、タイル化−決定フィールドにおいて
タイルされるものとして記録される。ついで、その抑制
フィールドが調べられる。もしも「INPERFECT」 の指示が
あると、プリプロセッサ60aは、以下にある全行のタ
イル化−決定フィールドを不タイル化として記録する。
もしも、一つの<idx>(または1以上)があると、プリ
プロセッサ60aは、対応するループのタイル化−決定
フィールドを不タイル化として記録する。
【0080】プリプロセッサ60aは、つねに「下方」
のみに行くことを必要とすることに留意されたい。
【0081】プリプロセッサ60aがループネスト内の
第1のループをタイル化した後、ループテーブルに沿う
さらに下方の行は、すでにタイル化決定エントリを有し
ているかもしれない。これは、先にタイル化されたルー
プにより賦課された抑制からもたらされる。この場合、
プリプロセッサ60aは、そのループ行に来るときそれ
をスキップし、次へと動く。
【0082】概念的に、これは、プリプロセッサ60a
が、TILE指示文に対する<tile-index-list> を含むイン
デックスを選ぶ方法である。これに続いて、他の<tilin
g-param>が決定され、タイル化のプロセスが完了する。
【0083】この節の残りに掲げる例は、この態様を示
すものである。各例に対して、タイル化プログラムが提
供され、ループテーブルが図面に示されている。 3.3 例 [例 1] リンパックベンチマークにより示唆され
て、
【表4】 do k = 1,n-1 do j = k+1, n do i = 1, n-k a(k+i),j) = a(k+i,j) + t * a(k+1,k) enddo endoo enddo
【0084】図4Bに示されるように、kループは、依
存性のサイクルを担持するからタイル化できない。かく
して、kに対する制約エントリはjおよびiに対するタ
イル化決定に適用できない。
【0085】プリプロセッサ60aは、このループを下
記のようにタイル化する。
【表5】
【0086】[ 例 2] マトリクス乗算
【表6】
【0087】図4Cに示されるように、j−ループ上に
おける抑制は、その点において「Stop」に対するタイル化
を引き起こした。
【0088】プリプロセッサ60aは、下記のようにこ
のループをタイル化する。 C*KSR* TILE (I,J)
【表7】
【0089】[例 3] ルジャンドル変換に示唆され
て、
【表8】 do 400 l = 1, nlev do 300 k = 1, nwaves ip = nmp(k) do 200 j = 1, nlats do 100 i = 1, nnp(k) sd(l,ip+i)= sd(l,ip+i)+fsd1(l,k,j)*pnmd(ip+i) sp(l,ip+i)= sq(l,ip+i)+fsq1(l,k,j)*pnmd(ip+i) 100 continue 200 continue 300 continue 400 continue
【0090】この例を働かせるためには、仮定された依
存性を除去するため主張(ここに図示さず)を入れるこ
とが必要である。また、この例においては、k−ループ
およびj−ループが完全にネストされて作られ得るよう
に、順方向置換技術を使用する。それゆえ、プリプロセ
ッサ60aは、ループが下記のごとくであったかのよう
にプログラムをタイル化する。
【表9】 do 400 l = 1, nlev do 300 k = 1, nwaves do 200j = 1, nlats do 100 i = 1,nnp(k) sd(l,nmp(k)+i)= sd(l,nmp(k)+i)+fsd1(l,k,j)*pnmd(nmp(k)+i) sp(l,nmp(k)+i)= sq(l,nmp(k)+i)+fsq1(l,k,j)*pnmd(nmp(k)+i) 100 continue 200 continue 300 continue 400 continue
【0091】図4Dに示されるように、プリプロセッサ
60aがk−ループをタイル化することを決定すると
き、i−ループ上の抑制が、iに対する不タイル化決定
を強制する。
【表10】 C*KSR* TILE( L,K,J ) do 400 l = 1, nlev do 300 k = 1, nwaves do 200j = 1, nlats do 100 i = 1,nnp(k) sd(l,nmp(k)+i)= sd(l,nmp(k)+i)+fsd1(l,k,j)*pnmd(nmp(k)+i) sp(l,nmp(k)+i)= sq(l,nmp(k)+i)+fsq1(l,k,j)*pnmd(nmp(k)+i) 100 continue 200 continue 300 continue 400 continue C*KSR* END TILE
【0092】4.半自動化タイル化 この節は、タイル化のための半自動化方法を記述する。
この方法は、利用者が、プリプロセッサ60aによりな
されるタイル化の決定を部分的に無効化することを可能
にする。
【0093】4.1 梗概 一般的場合においては、タイル化のためのインデックス
選ぶ1以上の可能性がある。プリプロセッサ60aは、
自動化タイル化機構を通じてこれらの可能性の一つを選
ぶ。半自動化タイル化は、利用者がどのインデックスが
タイル化されることを望むかを明示的に特定することに
より、利用者がタイル化のためにインデックスを選ぶプ
ロセスに介入することを可能にする。利用者は、半自動
化タイル化を使用して、正確さについて自動化タイル化
と同じ保証を維持しながら、タイル化に関する追加の制
御を得る。
【0094】これは、下記のプリプロセッサ60a入力
指示文を使用することによってなされる。 C*KSR* TILE (<tile-index-list> [, <tiling-param>...])
【0095】<tiling-param>は、タイル化−パラメータ
の一次セットの一つでない任意のパラメータとし得る。
その理由は、上述のように、一次セット(オーダー、最
終値、局所、整理編集)内のタイル化パラメータが、プ
ログラムの正確性に影響を及ぼすことがあり得るからで
ある。
【0096】プリプロセッサ60aは、入力指示文を下
記のステートメントに変換する。
【0097】この場合、<tiling-param>は、C*KSR*TILE
指示文において特定された全タイル化パラメータ、そし
ておそらく一次セットからの追加のタイル化パラメータ
を含む。そしてまた、<tole-index-list> は、利用者が
特定したものと同じである。もしも利用者が正しくない
組合せ(プリプロセッサ60a基準に従い)を指定した
とすると、プリプロセッサ60aはエラーメッセージを
発する。4.2 例再度、順方向置換技術を使用して、上の
ルジャンドル変換により示唆される例を参照して説明す
ると、ループは3Dでタイル化される。しかしながら、
利用者は、ループネスト前に下記のラインを入れること
によってそれを2Dでタイル化することもできる。すな
わち C*KSR* TILE (1,k)
【0098】これは、プリプロセッサ60aにそれらの
インデックスのみでタイル化すべきことを指令する。こ
れは正当な可能性であるから(ループテーブルから分か
るように)、プリプロセッサ60aは、エラーメッセー
ジを発生することなくそれをなす。
【表11】
【0099】プリプロセッサ60aは次のようにタイル
化する。
【表12】 C*KSR* TILE ( l,K ) do 400 l = 1, nlev do 300 k = 1, nwaves do 200j = 1, nlats do 100 i = 1,nnp(k) sd (ω,nmp(k)+i)= sd(ω,nmp(k)+i)+fsd1(ω,k,j)*nmp((k)+i) sq (ω,nmp(k)+i)= sq(ω,nmp(k)+i)+fsq1(ω,k,j)*pnmd(nmp(k)+i) 100 continue 200 continue 300 continue 400 continue C*KSR* END TILE
【0100】5.関連する問題点 上の節は、プリプロセッサ60a動作のタイル化の側面
に焦点を絞った。以下は、タイル化には直接関係はない
が、タイル化されたプログラムの結果に影響し得るプリ
プロセッサ60aの動作の他の側面についての簡単な論
述である。
【0101】分配はタイル化を助けることができるとき
に遂行される。例えば、ループにI/O ステートメントが
あるときループの一部をタイル化するためである。
【0102】ある場合には、プログラムをタイル化する
ために、コード変換が生ずることを必要とする(例え
ば、整理編集の存在時、または最終値が必要とされると
き)。これらの変換のあるものは、タイルの限界−タイ
ルが実行されつつあるときに入手され得るランタイム値
を知ることを必要とする。
【0103】たいていの場合、変換はプリプロセッサ6
0aによりなされる。しかしながら、ある理由のため、
利用者(またはプリプロセッサ60a)がこの種の変換
をなすならば、このタイルの限界のランタイム値を知る
ことを必要とするかもしれない。これは固有の機能の使
用によって得ることができる。
【0104】タイル化された外側ループの内側の直列ル
ープの内部ループインデックスは、局所としてコンパイ
ラにより処理される。例えば、
【表13】 C*KSR* TILE ( L,K ) do 400 l = 1, n1ev do 300 k = 1, nwaves do 200j = 1, n1ats do 100 i = 1,nnp(k) sd (l,nmp(k)+i= sd(l,nmp(k)+i)+fsd1(l,k,j)*pnmp(nmp(k)+i) sq(l,nmp(k)+i)= sq(l,nmp(k)+i)+fsq1(l,k,j)*pnmd(nmp(k)+i) 100 continue 200 continue 300 continue 400 continue C*KSR* END TILE
【0105】コンパイラは、暗示的なlocal=(i,j) があ
るかのようにこのループを処理する。
【0106】[ランタイムライブラリ] 1.梗概 以下の節は、ランタイムライブラリ66の動作について
記述する。 2.プログラミングモデル ランタイムライブラリ66は言語に無関係である。これ
は、種々の言語、例えばフォルトラン77または90、
C言語等で呼ぶことができる。しかしながら、下記の節
は、フォルトランプログラムからの使用と関連してそれ
を論述する。
【0107】ランタイムライブラリ66が処理する3つ
の並列構成体は、タイル化構成体、並列領域構成体およ
び並列セクション構成体である。タイル化構成体は、利
用者がフォルトランドゥー(do)−ループを実行すること
を可能にする。並列セクション構成体は、利用者が、プ
ログラムの異なるコードセグメントを並列に実行するこ
とを可能にする。並列領域構成体は、利用者が、プログ
ラムランの単一コードセグメントを複数回同時にもつこ
とを可能にする。
【0108】すべての並列構成体はネストされ得る。し
かしながら、ランタイムライブラリ66は、十分な資源
が入手できない場合、どの並列構成体をも直列にランし
得る。
【0109】この節の残りの部分は、ランタイムライブ
ラリ66により支持される並列構成体についての短い論
述を含む。後続の各節は、その各々を詳細に論述する。
【0110】2.1 タイル化 フォルトランループネストのタイル化は、反復スペース
を方形のパイプライン化チャンクと呼ばれるタイルに区
分することである。それゆえ、タイルは反復スペースの
集合体である。ループネストを構成するタイル群はタイ
ルファミリと称される。タイルは、並列に実行される基
本的エンティティである。非常に多くのプロセッサが同
じループネストを実行し得、その各々が別個のタイル上
で同時に働く。
【0111】[例]
【表14】
【0112】この場合、ループネストは2つのインデッ
クスiおよびjでタイル化される。ループインデックス
の一部のみをタイル化することもできる。例えば上の例
において、下記のタイル化も可能である。すなわち、
【表15】
【0113】タイル化モデルは、ランタイムライブラリ
66にとって重要である2つの品質を有する。第1に、
ワーク/オーバーヘッド比により表わされる変幻性であ
る。すなわち、ランタイムライブラリ66は、一つの反
復と他の任意数の反復との間で変わる並列の細分性を取
り扱う一般的方法を提供する。第2には、依存性を取り
扱う上での便宜性である。すなわち、ランタイムライブ
ラリ66は、部分的順序(タイルの依存性)を定義する
単純な方法、および依存性の存在下において並列化を役
立てる方法を提供する。
【0114】2.2 親和性領域機構 親和性領域機構は、タイル化並列構成体に適用される。
該機構は、利用者がランタイムライブラリ66に最適化
情報を伝える方法を提供する。親和性領域は、ランタイ
ムライブラリ66がデータの競合および移動を避けるよ
うに実行しよとするタイルファミリの集合体である。ラ
ンタイムライブラリ66は、タイルファミリの全セット
についてのある種の情報を維持し、かつ、プロセッサが
各タイルファミリごとに同じデータに作用するように、
その情報を利用してタイルをプロセッサに分配する。
【0115】親和性領域を宣言するために、利用者は、
AFFINITY REGION およびEND AFFINITY REGUON 指示文内
の所望のコードを囲む。指示文は、タイルファミリを中
断してはならない。もしも親和性領域が並列セクション
内で宣言されれば、親和性領域は一つのセクションブロ
ック内にあるはずである。宣言は、単一のルーチンまた
は主プログラム内に泣ければならない。
【0116】これらは、正確性でなく実行の効率に影響
を及ぼすパラメータである。親和性領域は包括的意志決
定を必要とし、そしてこれは、利用者がパラメータを特
定する方法である。もしも利用者が、AFFINITY REGION
内に埋め込まれたTILE指示文内の同じパラメータを特定
したとすると、AFFINITY REGION 内のパラメータは、TI
LE指示文内のパラメータを無効化する。
【0117】親和性領域はネストされ得る。[例]
【表16】 C*KSR* AFFINITY REGION ( i,j, STRATEGY = MOD, NUMTHREADS = 8 ) do k C*KSR* TILE ( i,j ) do i do j ..... enddo enddo C*KSR* END TILE ( i,j ) enddo C*KSR* END AFFINITY REGION
【0118】2.3 チームオペレータ 並列構成体は、pスレッド群によりランタイムライブラ
リ66において実行される。省略時モードにおいて、こ
れらのpスレッド群は利用者には見えない。しかしなが
ら、ランタイムライブラリ66は、自己のプログラムの
より高度の制御を希望する利用者に対してこれらのスレ
ッド群に対するインターフェースを実現できない。pス
レッドを管理する機能は「チーム」オペレータと呼ばれ
る。インターフェースについては、この節の終りに詳細
に記述する。
【0119】2.3.1 チームの定義 各pスレッド群、すなわちチームは、1またはそれ以上
のpスレッドより成る。ここで、1つのpスレッドは
「リーダー」と称される。各チームメンバは、チーム内
の唯一のメンバidを有し、そしてこれは、0で始まり
シーケンス内にギャップなしに上昇する。チームリーダ
ーのメンバidは0である。 2.3.2 省略時のチーム利用
【0120】ランタイムライブラリ66は、利用者から
の指令なしにチームを自動的に創成し、管理し、そして
解体する。しかしながら、ランタイムライブラリ66イ
ンターフェースは、利用者がチームの創成、分散および
使用を明示的に特定することを可能にする。
【0121】利用者がチームの使用を特定しないと、ラ
ンタイムライブラリ66は、各新しい並列構成体に対す
る新しいスレッドチームを創成する一般的な実施方法に
従う。スレッドチームは、構成体の終了時に解体され
る。AFFINITY領域指示文内に辞書的に含まれるTILE構成
体については例外が作られる。すべてのこの種のタイル
構成体は、同じpスレッドチームにより実行される。
【0122】2.3.3 チームID チームIDは、プログラムを通じて唯一である。 2.3.4 チーム創成 ipr create team 呼びに遭遇するするpスレッドは、呼
びを実行し、チームリーダーとなる。pスレッドは、数
チーム中のメンバとし得る。2.3.5 チームの使用にお
ける制約
【0123】一つのチームは並列には使用できない−−
一時に1構成体のみを実行し得る。しかしながら、構成
体がネストされるならば、pスレッドは、数チームの中
の1つのメンバとし得、複数の構成体を実行し得る。
【0124】1つの並列構成体のみであれば、この構成
体に遭遇するpスレッドが1メンバであり、かつチーム
のリーダーである場合には、並列構成体はそのチームに
よって実行され得る。この制約に対するモチベーション
は、基本的実施の問題である。構成体に遭遇するpスレ
ッドは、並列構成体の前および後で直列コードを実行す
べき関係を有する唯一のpスレッドである。ランタイム
ライブラリ66は、pスレッドが、構成体を実行できな
いメンバを含むチームを呼ぶことを可能にすることもで
きようが、並列実行中原pスレッドはアイドル状態にな
されよう。
【0125】3.インターフェース 3.1 ランタイムライブラリ66/利用者インターフェ
ース 利用者は、ランタイムパラメータ、プログラム指示文ま
たはサブルーチン呼びにより入力をランタイムライブラ
リ66に通す。ランタイムパラメータは、利用者が、資
源およびランタイムライブラリ66によりなされる計算
を制御することを可能にし、利用者に性能に応じて調節
せしめる。プログラム指示文により、使用者は並列化の
機会を指示することができる。プログラム指示文は、ks
r コンパイルまたはプリプロセッサ60aまたはその両
者にアドレス指定されるえる。サブルーチン呼びが、ラ
ンタイムライブラリ66のスレッド群(チーム)管理を
明示的に制御するために使用される。
【0126】3.1.1 プログラム指示文 上述のように、プログラム指示分はフォルトランコメン
トの形式である。プログラム指示文が存在すると、コン
パイラは60bはランタイムライブラリ66呼びを発生
し、ループネストの並列実行を行わせる。
【0127】並列セクション、並列領域およびセット指
示文は、利用者のみによって発生され、コンパイラによ
ってのみ理解される。親和性領域指示文は、利用者また
はコンパイラにより発生され、コンパイラのみにより理
解される。タイル化指示文は、利用者および/またはコ
ンパイラ60bにより発生される。
【0128】フォルトランプログラムをタイル化するた
めには、利用者は、手によりタイル化指示分を入れても
よいし、そうするようにプリプロセッサ60aに依存し
てもよい。プリプロセッサ60aは、入力としてフォル
トランプログラムを取り、タイル化指示文を包含する変
換されたフォルトランプログラムを創成する。手動およ
び自動のタイルかの混合を使用することもできる。それ
ゆえ、プリプロセッサ60aは、部分的にタイル化され
たプログラムを取り、すでに単独でタイル化されたルー
プネストを保持し、他のループをタイル化する。プリプ
ロセッサ60aの出力は、正当なフォルトランプログラ
ムである。完全自動化モードの場合、利用者はコンパイ
ルシステム60を呼び出し、そして該システムがプリプ
ロセッサ66aを呼び出す。ランタイムライブラリそれ
自体は自動化および半自動化の差を知らないことが認め
られよう。この異なる方法は、ランタイムライブラリ6
6の観点からは同一の入力である。
【0129】3.1.2 ランタイムパラメータ 図6で述べたところのランタイム環境パラメータは、Un
ix環境の変数を使用して定義される。これらのパラメー
タは、SET 指示文を使用してもセットできる。
【0130】並列実行を達成するために、並列構成体内
のコードは、特定の種類のサブルーチンに変換される。
タスク−サブルーチンは、Pascalの態様でネストされた
サブルーチンに似ている。これは、プログラミング言語
自体に対する拡張ではなく、タスクサブルーチンは、コ
ンパイルシステムの内部データ構造体60のみに創成さ
れることが認められよう。
【0131】図5は、タイルのタスクサブルーチンへの
変換を例示している。図において、原プログラム(11f)
ブロック70aとして指示されている。タイル化プログ
ラム(11.comp) ブロック70bとして指示されている。
そのタイル化プログラムは、ブロック70Cに示される
コードに(「かのように」)内部的に変換される。
【0132】この変換をなすことにより、タイル化され
たループネストはサブルーチンに変更される。このサブ
ルーチンに対する独立変数は、タイルの限界である。図
5に示される例において、 do 10 i=1,n do 10 j=1,n は、 do 10 i=i1,j2 do 10 j=j1,j2 に変換され、限界はタスクサブルーチンに対する独立変
数となる。例えば、16×16サイズを有するタイルが
使用されると、一つのスレッドがタスクfoo $1(32,47,1
6,31) に対する呼びを発する。これは次のステップの実
行を行わせる。
【表17】 それゆえ、スレッドは、i次元において16の反復を実
行し、j次元において16の反復を実行する。ランタイ
ムライブラリ66は、すべての反復が実行されるよう
に、適当な独立変数を有する異なるスレッドからタスク
foo $1に対する呼びを呼び出す。並列化は、多くのスレ
ッドがタスクサブルーチンの異なる独立変数(すなわち
限界)を呼ぶことにより行使される。
【0133】並列構成体の存在は、ランタイムライブラ
リ66における「実行」ルーチンに対する呼びを誘発
し、コンパイルはタスクサブルーチンの名を独立変数と
して通す。これらの実行ルーチンの独立変数は、平列に
実行するに必要とされる構成体についてのすべての情報
を含む。この情報のあるものは、プログラム指示文それ
自体から(すなわちどのインデックスをタイル化すべき
か、依存性情報等)から得られ、ある情報はソースプロ
グラムから得られ(ループネストの限界およびストライ
ド)から得られ、また情報のあるものはコンパイルシス
テム60により発生される(すなわち、ssb 、コードサ
イズ−追って論述する)。タスクサブルーチンの内側の
コードと外側のコードとの間を接続(インターフェー
ス)するに必要なあるデータも存する(タスクサブルー
チンに対するポインタ。フレームポインタ、最終値をし
支持するためのフラグ)。
【0134】この実施例は、タイルを独立変数として
(サブルーチンとすることにより)実施し、かつ同時に
既存のコンパイラを使用し(ネスト化サブルーチンとす
ることにより)その親ルーチンの変数を確認するための
簡単な方法を提供する。この特定の例においては、配列
aを確認する。
【0135】3.2 ランタイムライブラリ/オペレーテ
ィングシステムインターフェース ランタイムライブラリ66の並列化は、pスレッドノOS
F の実施で実現される。OSおよびランタイムライブラ
リ66およびpスレッドおよびランタイムシステム66
間のインターフェースについてはここで論述しないが、
ランタイム66が存する世界に関してフレームワークを
確立するに必要とされるある基本的仮定がある。
【0136】ランタイムライブラリ66は、プログラム
の寿命中可変数のスレッドを使用するな単一のスレッド
はスタートアップ時に開始され、プログラムリーダース
レッドとなる。このスレッドは、プログラムの全直列部
分を実行する責任を果たす。
【0137】各並列構成体は、「スレッド群」と称せら
れるスレッドチームにより実行される。各スレッド群
は、グループリーダーと称される一つのスレッドを有す
るが、他のすべてのメンバは、グループの従属物であ
る。
【0138】ランタイムライブラリ66は、スレッド間
のロードのバランスの多くをオペレーティングシステム
スケジューラに委譲する。ある場合、ランタイムライブ
ラリ66は、スレッドがプロセッサと関連されており、
かつこの結合が残っていると仮定する。これは、セルが
すでに所有しているデータを参照するようにワークが区
分されている場合、モジュロタイル化戦略においてラン
タイムライブラリ66により使用される重要な仮定であ
る。
【0139】ランタイムライブラリ66は、情報をOS
スケジューラに通して、それを補助してロード並列につ
いての決定をより情報にとんだものにする。
【0140】4 タイル化 上述のように、タイル化は、並列にループネストを実行
する方法である。この節は、タイル化指示分の意味論を
説明し、タイル化されたループが実行される方法を例示
する。
【0141】4.1 すべてのループは簡単な方法でタイル化できない。ある
ループは全然タイル化できず、あるループは、正しい実
行を保証する特別の配慮でのみタイル化できる。この明
細書において、正しい実行は、例えば同じプログラムを
直列にランして同じ結果を得ることを意味する。
【0142】タイル化指示分のシンタクチックにより、
正しい実行を保証する必要とされる追加の情報を提供す
るタイル化パラメータの規格を得ることができる。これ
らは、オーダー、最終値、局所および削減である。
【0143】加えて、プログラムの正確さには影響しな
いが、性能に影響する他のタイル化パラメータがある。
【0144】4.2 オーダータイル化パラメータを有す
るタイル化 オーダータイル化パラメータは、タイル化実行の部分的
順序を特定するもので、これはタイル化ループ内のデー
タ依存性から誘導される。オーダータイル化パラメータ
は、この節において特別の注意を喚起するに値する、。
何故ならば、依存性、したがって正しい順序を決定する
ことは、混乱することがあり、直感的でないことが多い
からである。加えて、これは、プログラム実行の正確さ
に影響を及ぼし得るタイル化パラメータの一つである。
依存性、従って実行順序タイル化指示文が決定容易でな
いという事実は厄介ではない。何故ならば、それは、普
通プリプロセッサ60aにより自動的に決定されるから
である。もしも利用者が自分で指定し得るプリプロセッ
サ60を使用することを選ばないと、それは利用者の責
任となる。
【0145】ループネストがオーダータイル化パラメー
タでタイル化されるとき、ランタイムライブラリ66
は、実行の正しい順序を保証しながらそのループの並列
化実行を達成しようと試みる。ある場合には、オーダー
に従うと直列実行を生ずる。しかしながら、オーダーで
タイル化されたループは、並列にランすることがある。
ループネストが並列に実行される場合、反復は、必ずし
も、同じループネストの直列実行によるのと同じ順序で
実行されない。ある場合にはこれは重要でないが、他の
場合には、データ依存性のため、反復間にある部分的順
序が包含される。このため、正しい順序を保証するため
に、タイル間にある部分的順序が包含される。
【0146】これを処理する一つの方法は、オーダータ
イル化指示文を特定することである。これにより、ラン
タイムライブラリ66は、正しい実行を保証するために
タイル間に必要な同期を取ることができる。 [例]
【表18】 このループネストは、下記のように両次元でタイル化さ
れ得る。
【0147】これは、タイル間に次の部分順序を画定す
る。すなわち、タイルの実行は、i番目の指令前にタイ
ルが完了したときおよびj番目の指令後にタイルが完了
したときにスタートし得る。図6に提示される図におい
て、「x」により記録されるタイルは、「d」により記
録されるタイルが完了したときに実行される。これは、
これは、普通ランタイム66にウェーブフロントタイル
化戦略を取らしめるが、この戦略により二次元における
オーダーの存在下において並列実行が可能となる。 4.3 オーダータイル化パラメータおよびデータ依存性
−例として 上述のように、ORDER = -J, I は、普通プリプロセッサ
60により挿入される。この節は、例として、データ依
存性と、オーダーを有するタイル化間の関係を説明す
る。原プログラムを参照すると、 do 10 i = 1,n do 10 j = 1,m a(i,j) = a(i-1, j+1 ) + a (i+1, j-1) 10 continue
【0148】第1に、反復が実行されねばならない順序
を画定するために、ループ本体を調べねばならない。所
与の反復の位置は、「x」により記録され、それが依存
する反復の位置は「*」により記録されるものと仮定す
ると、結果は次のようになるすなわち、
【数1】
【0149】原ループにおいて、jは内部インデック
ス、したがってより早く動くものである。それゆえ、
「x」が実行されるとき、その右上における反復がすで
になされており(これは「+」により指示される)、そ
の左上における反復はなされていない(これは「−」に
より指示される)というのが真でなければならぬ。結果
は次のようになる。
【数2】 j --> + i x (I) | - V
【0150】他のワードにおいては、その右上における
反復がなされる場合そしてその場合のみ、いちxにおけ
る反復を実行するのが安全である。これは、下記のよう
に、2反復間の依存性に変換できる。
【数3】 j --> d i x (II) | V
【0151】次のステップは、タイル間の部分的−順序
を描くことである。タイルの内側においては、原順序は
保存される。タイル間で何が起こるかを試験するため
に、上記(I) 内の「ステンシル」は、下記に示さるよう
に、仮想タイルの限界の回りに移動し得る。
【数4】
【0152】図(II)に示されるものに等価なものは、下
記のようになる。ここでタイルを示すのに大文字が使用
されている。
【数5】
【0153】右上のDは冗長性である。底部のライン
は、タイルxが、スタートする前にその右側のタイルを
待たねばならないことを意味する。したがって、もしも
左下のタイルがその右上のタイルを待つならば、右上の
タイルがすでになされていることを保証するに十分であ
る。それゆえ、左下のタイル(xにより記録されてい
る)は、「上」および「右方の」タイルがなされるのを
待たねばならず、反復により正しい順序が画定される。
それゆえ、結果は、下記のようになるなる。
【数6】 これは下記の様に指示文で表わされる。すなわち、 C*KSR* TILE ( I,J,ORDER=( -J , I ) )
【0154】4.4 局所、最終値、削減を有するタイル
化 インデックスおよび依存性パラメータに加えて、プログ
ラムの正確さに影響し得る3つの他のタイル化パラメー
タがある。普通これらのタイル化パラメータはプリプロ
セッサ60aにより創成される。すなわち、LOCAL −新
しい辞書的サブルーチンにより必要とされる局部変数の
宣言。これは、コンパイラ60bにより処理され、ラン
タイムライブラリ66に通される。
【0155】LASTVALUE −ループインデックスの最終値
がループ実行の後保存されねばならないか否かを指示す
る。ランタイムライブラリ66がこれを扱わねばなら
ぬ。何故ならば、ループの並列化は反復の実行順序に影
響を及ぼすからである。ランタイムライブラリ66は、
実行された各タイルの限界をチェックすることによって
最終値を計算する。反復空間の最高限界を含むタイルが
実行されるとき、最終値は、ランタイムライブラリ66
によりコンパイルシステム60に通される。
【0156】REDUCTION ー削減がタイル内の変数上で処
理されねばならぬことの宣言。削減は、コンパイルシス
テム60により処理され、ランタイムライブラリ66か
らのある指示を必要とする。
【0157】4.5 他のタイル化パラメータ 利用者がランタイムライブラリ66の決定および影響効
率決定に関して介入することを可能にするタイル化パラ
メータがある。これらは、利用者によってのみ供給さ
れ、コンパイルシステム60により供給されることはな
く、先行の節においては「余分な」パラメータと称され
る。これらのパラメータを以下に掲げる。
【0158】TILESIZE−これは、以下のタイルファミリ
のタイルサイズに対する利用者により供給されるベクト
ルである。このベクトルは、そのタイルファミリに対し
てのみ有効であり、後続の如何なるループネストにも適
用されない。可能な値は、n(ここで nは0より大き
い数値である)、x(ここでxは変数である)または"*
" (タイルがその次元において全反復スペースを取るべ
きことを指示する符合)である。ベクトルは、すべての
インデックスに対して値を供給する。シンタックスは、
一般的コンパイルシステム60タイル化パラメータシン
タックスに従う。
【0159】STRATEGYーどんなタイル化戦術を後続のタ
イルファミリに使用すべきかに関する使用者指示文。こ
の値は、そのタイルファミリにのみ有効である。可能な
値はGRABまたはMOD である。シンタックスは一般的コン
パイルシステム60のタイル化パラメータシンタックス
に従う。
【0160】4.6 タイル化ループネストの実行 新タイル−ファミが実行をスタートせんとするとき、ラ
ンタイムライブラリ66はワークプランについて決定す
る。この決定は、親和性、依存性、データ局所性を含む
ファクタに基づく。
【0161】ワークプランは、スレッドの割付け、反復
スペースの区分およびタイル化戦略の選択を含む、タイ
ル−ファミリの並列実行を決める決定の集合である。正
しいワーク戦略、そしてとりわけ正しい戦略を選ぶこと
は、性能に大きな影響を与える。特に、ワークプラン
は、新タイル−ファミリがスタートするときに選ばれ
る。このタイルファミリが親和性領域に属すると、ワー
クプランは、親和性領域のワークプランの「テンプレー
ト」に基づく。これについては後で論述する。
【0162】4.7 スレッドの割付け タイル化時に、ランタイムライブラリ66は、利用可能
な資源の量を考慮し、各タイルファミリに対して、nの
スレッドを使用する。ここで、nは、このプログラムに
利用可能なプロセッサの数に等しいかそれ以下である。
省略時は、利用可能なプロセッサの最大数を使用するこ
とになろう。もしもタイルファミリが、最大数を使用す
ることが価値がないように構成されると、より少数のス
レッドが選ばれる。このアルゴリズムは、ネスト化に拘
りなく使用される。
【0163】使用されるタイル化戦略に従って、スレッ
ドの割付けに若干の差がある(タイル化戦略については
以下に記載する)。
【0164】GRAB戦略を使用すると、ランタイムライブ
ラリ66は、スケジューラに、すべてのスレッド−プロ
セッサ結合、ロード平衡化、親和性、等を処理させる。
【0165】MODULOおよびWAVEFRONT 戦略を使用する
と、ランタイムライブラリ66は、スレッド−>結合が
一定であることを仮定したくなるであろう。ランタイム
ライブラリ66は、相応にタイルを構成しそれを割り当
てる。この結合の仮定を採用すると、ランタイムライブ
ラリ66がそれらの種類のスレッドに関してより高レベ
ルのスレッド−>プロセッシング戦略を取ることを望む
ことをスケジューラに知らしめるのに有用となる。
【0166】ネスト化並列構造についてもこの規則に従
う。
【0167】4.8 タイルサイズおよび形状 タイルは、反復スペースの数で画定される。したがっ
て、タイルサイズは、反復スペースにより画定される。
タイルサイズベクトルは、タイル−ファミリの各次元で
反復の数を特定する。例えば、タイルに分割されるルー
【表19】 は、(16,32) のタイルサイズベクトルを有するものとし
得、したがって、タイルサイズは16×32= 512 反復であ
る。タイルサイズは、反復スペースに直接的に適合する
ことを要しないことに留意された。ランタイムライブラ
リ66は、反復スペースの外側にあふれるタイルの縁部
を「トリム」する。
【0168】タイルサイズは、タイル−ファミリの実行
の開始時に一度決定され、そのタイルファミリの実行中
一定に留まる。しかしながら、同じタイル−ファミリ
は、プログラム内において一度以上実行でき、そしてタ
イル−ファミリがその度に、例えばループの異なる限界
に起因して、異なることがあり得る。
【0169】タイル形状は、2つの対象に気をつけて選
ばねばならない。すなわち、並列化を最大化すること
と、全キャッシュメモリシステムを十分に利用すること
である。下記の論述は、2つのゴールを達成するため
に、依存性とサブページアクセスについての考察を織り
合わせたものである。
【0170】タイルは、矩形のn次元の平行六面体で、
一次元は、反復スペースの各次元に対応する。タイルの
形状の問題は、タイルを各次元においてどの位の長さに
すべきかである。基本的考えは、アレイの基準方向にお
いてタイルを「引き伸ばし」、また依存性の方向におい
てタイルを「引き伸ばす」ことである。
【0171】第1のポイントは、同じサブページに対し
て2またはそれ以上のスレッド間の競合を避けることで
ある。第2のポイントは、同期を最小化することであ
る。タイルは、複数のサブページ、すなわち2つのサブ
ページの乗算である。
【0172】タイル−サイズについての最終的決定は、
矛盾する考慮事項間の妥協である。すなわち、一つは、
各タイルを開始させことに伴う非回避的なオーバーヘッ
ドを目立たなくするために十分に大きいタイルを有した
いという希望である。他の一つは、ロードの平衡化を最
適化するために多くのタイルをもちたいとする希望であ
る。形状が決定された後、なさるべきワークの量や、多
数の利用可能なプロセッサ等を調べることによって、実
際のサイズを決定する。タイルが小さすぎれば、それを
「引き伸ばす」。4.9 タイル化戦略
【0173】タイル化戦略は、タイル−ファミリが正し
くかつ効率的に実行されるように、pスレッド間におい
てワークを分割するのに使用される方法である。
【0174】タイルサイズと同様に、タイル化戦略は、
新タイル−ファミリの実行の開始時に決定される。ラン
タイムライブラリ66は自己スケジューリング機構を使
用する。自己スケジューリング機構は、リーダーにより
初設定がなされたならば、各スレッドは、それ自体によ
りそれ自体のワークシャンク(塊)を見つけることがで
きるように機能する。それゆえ、戦略は、スレッドが次
に何をなすことが必要であるかを見出すためにスレッド
が何をなさねばならないかということにより表現され
る。
【0175】設計の適格性や低ランタイムオーバーヘッ
ドを希望することにより動機づけられたランタイムライ
ブラリ66に関する2つの基本的原理がある。第1は正
確さである。すなわち、戦略は、各状況において、次の
タイルが如何に選択されるかを正確に決定するものであ
る。この考えは、スレッドが次のタイルを得ることを必
要とする時点においてできるだけ少ない計算しか残さ
ず、それゆえ次のタイルを得るのにランタイム処理にお
けるオーバーヘッドを最小にすることである。一度、戦
略が選ばれたら、新タイルを選ぶことはきわめて高速の
操作でなければならない。
【0176】第2の原理は、進行に関するものである。
戦略は、実行が反復空間における既知の点からスタート
し、既知の方向に進行するように構成される。この動機
づけは、反復空間のどの部分がカバーされるのかを記録
し思い出すという複雑なデータ構造の必要性を回避する
ことである。
【0177】ランタイムライブラリ66は、タイル化戦
略を決めるとき次のファクタを考慮する。 1)データ依存性の存在。データ依存性は、タイル間に
おける同期を必要とするタイル間の順序づけ要件を作り
出す。極端な場合、データ依存性はタイル−ファミリを
直列に実行させることがある。これは、タイル−ファミ
リのすべてのタイルが同じ順序づけ関係にあるからであ
る。他の場合には、タイル−ファミリにおいてある程度
の並列かが得られる。これは、各ファイルがある数の他
のファイルから独立であるからである。 2)利用者による戦略の特定。 利用者は、SET 指示文を使用して、あるいは戦略値をパ
ラメータとしてTILEまたはAFFINITY REGION 指示文に通
すことによりPLSTRATEDY環境を可変に設定することによ
り戦略を特定できる。 3)利用者によるタイルサイズの特定。 もしも利用者が順序付け要件を有する次元がタイル化さ
れるべきことを特定すると、タイル化戦略は順序付けを
処理することが必要とされよう。
【0178】ランタイムライブラリ66のタイル化戦略
決定テーブルは下記のごとくである。
【表20】 (X) = 配慮無用 利用者 インデックス 利用者 利用者特定 選ばれた戦略 特定戦略 の数 特定 タイルサイズ w/オーダー タイルサイズ カット、nの 順番のインデ ックス 偽 1 x x MODULO/SLICE 偽 1 偽 x MODULO/SLISE 偽 1 真 0 MODULO/SLICE 偽 1 真 1 WAVEFRONT 偽 >=2 偽 x WAVEFRONT 偽 >=2 真 0 MODULO/SLICE:q 偽 >=2 真 1−2 WAVEFRONT 偽 >=2 真 > 2 エラー報告 真 0 x x 利用者特定戦略 真 1 偽 x 利用者特定戦略 真 1 真 0 利用者特定戦略 真 1 真 1 利用者戦略!= WAVEFRONT ならば エラー 真 >=2 偽 x 利用者戦略!= WAVEFRONT ならば エラー 真 >=2 真 0 利用者特定戦略 真 >=2 真 1−2 利用者戦略!= WAVEFRONT ならば エラー 真 >=2 真 > 2 エラー報告
【0179】タイル−ファミリがタイル化されかつタイ
ルがスレッドを多重化するために分配されるという事実
は、並列化を指令しないということに注目されたい。順
序付け要件を有するタイルファミリはタイル化され得る
が、順序付け情報により必要とされる同期に起因して、
なお直列に実行する。この状況は、もしも並列化の欠陥
がデータ親和性の利点により克服されるなら、最適化さ
れ得る。
【0180】以下はランタイムライブラリ66の戦略の
記述である。 [SLISE 戦略]この戦略は、タイル−ファミリ反復スペ
ースをnのタイルに単に分割し、ここでnは構成に関与
するpスレッドの数に等しい、そしてタイルを各スレッ
ドに割り当てる。これは、親和性領域内に包含されない
タイルファミリに対する省略時戦略であり、タイル化オ
ーバーヘッドおよびタイル境界におけるデータの競合の
可能性を最小化するように設計される。
【0181】[MODURO 戦略]この戦略は、タイルを全反
復スペースを通じて均等にスレッド群に分配する。スレ
ッドおよびタイルは0から初めて番号を付されると仮定
される。所与のスレッドにより実行されるタイルは、下
記のごときものである。すなわち、タイル番号 MODULO
割り付けされたスレッドの番号 = スレッド−id
【0182】自己スケジューリング戦略により表現され
るとき、これは、スレッド−idがpであるスレッドが
次のタイルを実行することを意味する。すなわち、 −第1のタイルは、番号がスレッド−idと同じである
タイルである。 −次のタイルは、先行のタイル+(関与するスレッドの
番号)である。
【0183】この戦略は、半静的戦略である。すなわ
ち、タイルファミリの実行がスタートされるとき利用可
能なプロセッサの数に関しては動的であるが、タイル−
ファミリの実行中のプロセッサの利用可能性の変化や不
平衡ロードに関しては調節できない。
【0184】この戦略の大きな利点は、タイル間に同期
が必要とされないということである。また、反復スペー
ス->スレッドマッピングが、特に親和静領域と使用され
るとき、データの親和姓を処理するように設計されてい
る。さらに、反復->スレッドマッピングの「MODULO」分
配方式は、親和性領域内の各タイルファミリが反復スペ
ースの異なる部分をカバーし得る場合、親和性領域内の
ロード平衡化を最適化するように設計される。この分配
方式のため、各スレッドに割付けされるワークの割合
は、単一のタイル−ファミリにより使用される反復スペ
ースに依存しない。
【0185】これは、親和性領域内に包含されるタイル
ファミリに対する省略時戦略である。
【0186】[WAVEFRONT戦略]この戦術は、データ依存
性をもつタイル−ファミリを正しくかつ最大の並列化を
伴って実行するように設計される。
【0187】この戦略では、タイルは、二次元平面上に
おいて「ウェーブフロント」パターンで実行される。ラ
ンタイムライブラリ66は、タイル化されるインデック
スのリストから、反復スペースの2Dウェーブフロント
平面を形成すべき順序付け要件を有する2つのインデッ
クスを選ぶ。一方のインデックスは「列」インデックス
と称され、他方は「サブタイトル」インデックスと称さ
れる。2D平面の列は、実行中のスレッドチームのメン
バにモジュロ態様で割り付けされる。各列は、ある数の
タイルより成る。。
【0188】各タイルは、それが依存する隣接する優勢
な近傍タイルを有しており、その近傍タイルが完了する
まで実行を開始できない。タイルの優勢な近傍タイル
は、列インデックスの順序付け要件に依存して、右方ま
たは左方の列にある。優勢タイルは、同じサブタイルイ
ンデックス値上にある。タイル−ファミリの実行は、列
の順序付けおよびサブタイルのインデックスに依存し
て、2D平面の4つの角部の一つから始まる。
【0189】この戦略もまた、タイルを、全反復スペー
スを通じて実行中のスレッドチームに分配しようとする
ものであり、親和性領域指示文の使用と両立する。
【0190】ランタイムライブラリ66は、順序付け要
件をもち、かつ多くの態様で2以上および2以下のイン
デックス次元を有する反復スペースを処理する。もしも
反復スペースが唯一のインデックス有し、かつ順序付け
要件を有するならば、ワークは直列になされねばなら
ず、ランタイムライブラリ66は一つのタイルを創成し
ようとする。サブタイルインデックスが1である場合、
もしも利用者がタイルサイズを特定することによってタ
イル化を強制すると、ランタイムライブラリ66は、タ
イル−ファミリを2Dウェーブフロントパターンで実行
する。
【0191】もしも反復スペースが2以上の次元を有す
るか、2つのインデックスのみが順序付け要件を有する
ならば、ランタイムライブラリ66は、タイル−ファミ
リを一連の2D平面として処理する。この場合、ウェー
ブフロント戦略は各平面上で独立に行われる。もしも二
以上の次元がありかつ順序付け要件を有する2以上のイ
ンデックスがあるならば、ランタイムライブラリ66は
追加の順番のインデックスをタイル化せず、2Dウェー
ブフロント戦略で実行のため「より塊状の」タイルを創
成する。
【0192】2以上の順番インデックスにおいてタイル
化を必要とする利用者特定タイルサイズは拒否される。
【0193】[GRAB戦略]この戦略は、タイルをファー
ストカム,ファーストサーブ(到来順作用)方式でスレ
ッド群に発行する。各スレッドは、実行のためのタイル
にアクセスするため共通のロックを得なければならな
い。この戦略は、スレッド群のスレッド間のロードの平
衡化を目的として設計されいる。
【0194】この戦略は、タイルをプロセッサに割り当
てるときデータの親和性についての考慮事項を考慮して
おらず、親和性領域との関連において選択することはよ
い戦略でないということに注意されたい。
【0195】4.10 諸戦略の相対的利点 半静的MODULOタイル化戦略は、2つの主たる利点を有す
る。すなわち、データの親和性を維持することが容易で
あり、同期化のオーバーヘッドを最小化する。他方、タ
イル−スレッド割当ては静的で、実行中の不平衡ロード
に対して調節できない。
【0196】SLICE タイル化戦略も、半静的であり、最
小のタイル化オーバーヘッドを有するが、全タイルファ
ミリにわたってデータ親和性を維持しようとしない。
【0197】GRABタイル化戦略は、動的であり、各スレ
ッドをできるだけビージーに維持するが、恐らくデータ
の移動を頻繁に引き起こす可能性がある。親和性損失の
問題に加えて、新タイルにアクセスするのに必要とされ
るロックの取得から、追加の同期のオーバーヘッドが要
る。
【0198】ウェーブフロントタイル化戦略は、タイル
ファミリがいつデータの依存性により引き起こされる順
番付け要件を有するかを必要とする。MOJULO戦略の場合
と同様にデータ親和性は維持されるが、必要とされるタ
イル対タイルの同期が追加のオーバーヘッドを生みだ
す。
【0199】4.11 ワークプランの例 以下は、タイル化−ループを実行すべきランタイムライ
ブラリ66により選ばれるワークプランの数例である。
何故特定のワークプランが選ばれたかについては記載し
ない。というよりも、この記述は、種々のワークプラン
の挙動の特質を示そうとするものである。
【0200】[例1]2Dの反復スペースを2Dでタイ
ル化する。利用可能なプロセッサの数は列の数よりも少
ない。依存性はない。ワークプランは、図7Aに示され
る。ここで、 プロセッサの数: 7 タイルサイズ: 全列 戦略: MODULO
【0201】[例2]この回のみ両方向において依存性
が存在する。使用される戦略は、依存性を有するMODULO
戦略(ウェーブフロント)である。この戦術は、先行の
例に示される標準のMODULO戦略と同じ親和性群において
使用されるとき、データ親和性に関して効率的であるこ
とに注意されたい。ワークプランは図7Bに示されてい
る。ここで、 プロセッサの数: N タイルサイズ: 列チャンク 戦略: ウェーブフロント
【0202】[例3]データの親和性は問題でなく、ロ
ードの平衡が重要である。依存性はない。ssb 点は、i
およびj両インデックス内にある。ワークプランは図7
Cに示されている。ここで、 プロセッサの数: N タイルサイズ: 列 戦略: GRAB
【0203】この例においては、矢印はタイルが如何に
番号を付されるかを示していることに注意されたい。こ
れはタイルの順番と混同されるべきでない。番号付け
は、単に何のトラックが実行されたかを維持する方法で
ある。タイルに番号を付す方法は任意であり、タイルが
実行されることを必要とする特定の順番をも表わしてい
ない。
【0204】5.親和性領域 ランタイム66は、競合およびデータの移動を最小化す
るようにワークをスレッドに割付けすることを試みるも
のである。親和領域の創成は、タイル−ファミリ群にな
されたタイル化ワークプランの決定を調整する方法であ
る。この目的を支持するため、下記の仮定がなされる。
【0205】1)データ移動は高価につく。 2)親和性領域内のタイルファミリは同じデータを参照
する。 3)親和性領域内のタイルファミリは、反復スペースマ
ッピングごとに同じデータスペースをもとうとする。 4)データスペースはサブページ境界上に整列され、デ
ータの競合を避けるようなタイルが構成され得る。
【0206】先行の節において、ワーク−プラン決定
は、2部分の決定として記述された。すなわち、タイル
−スレッドマッピング部分と、タイルサイズ部分とであ
る。親和性領域が宣言されると、これらの決定は、親和
領域におけるタイルファミリの全セットのわたってなさ
れる。
【0207】タイル−スレッドマッピングは、同じスレ
ッド(したがって、望ましくは同じプロセッサ)が各タ
イル上で作業し、データ局所性を維持するように、タイ
ルファミリにわたって維持される。親和性領域指示文
は、あるタイル化戦略でのみ有効である。例えば、GRAB
タイル化戦略は、タイル−スレッドマッピングの維持を
許容しない。
【0208】タイルサイズ決定も、単一のタイルファミ
リの反復スペースでなく、親和性領域の全タイルファミ
リの反復スペースを考慮することによってなされる。そ
の結果、全タイルファミリは、同じタイルサイズを共有
し、タイルファミリにわたるスレッドマッピングごとに
1タイルをを維持することを可能にする。
【0209】タイルワーク−プランの決定は、タイルフ
ァミリのあるもののみに影響するが、タイルファミリの
すべてに拡張されるファクタを表わす。例えば、データ
依存性は、タイルファミリのあるもの内の特定のインデ
ックス上にのみ存在し得る。依存性がタイル化戦略に及
ぼす影響は、親和性領域の全タイルファミリに当て嵌
る。
【0210】親和性領域の創成は、純粋に効率の問題で
あることに注意されたい。
【0211】5.1 親和性領域の確認 親和性領域は、利用者により宣言してもよいし、コンパ
イルシステム60により確認してもよい。
【0212】5.2 共通インデックスセット 親和性領域内にある前ループネストは、同じインデック
スセット上でタイル化されることができねばならない。
これが、「共通インデックスセット」ルールである。こ
れは、親和性指向の戦略は、どのプロセッサがタイルを
実行するかを決定する反復->プロセッサマッピング機能
を必要とするからである。もしもタイル化されるインデ
ックスの数がループネストごとに変わると、このマッピ
ングは失敗する。これは、各タイルファミリが同一のタ
イル化されたインデックスを有することを意味するので
なく、異なるループネスト間にインデックスの交叉があ
ることのみを意味する。
【0213】6.性能の問題 6.1 オーバーヘッド 下記の動作面にオーバーヘッドが存在する。すなわち、
(1) 親和性領域(テンプレートの創成)、(2) タイルフ
ァミリの開始(MCB の創成)、(3) 次のタイルの選択
(各スレッドによる)
【0214】6.2 ランタイムライブラリ66の決定操
作 ランタイムライブラリ66は、主たる考慮事項として効
率に関して設計される。一つの重要な概念は、もっとも
早い可能な時点での決定の伝達である。明らかに、ラン
タ時でなく、コンパイル時に決定をするのがより有効で
ある。したがって、各タイルの実行を開始する時でな
く、タイル−ファミリが実行をスタートするとき決定を
なすのがより効率的である。
【0215】ランタイムライブラリ66の方法は、入手
できるすべての情報に基づいて、できるだけ早く決定を
なすことである。決定がなされると、ランタイムライブ
ラリ66は、理由を忘れる。目標は、特定のスレッドが
実行すべき次のタイルを見つけることを必要とするま
で、二三の簡単な比較および追加を含む非常に簡単な操
作となることである。ラン時、ランタイムライブラリ6
6がタイル−ファミリを実行するようにスタートする
と、このループについてのすべての情報はすでに既知で
ある。すなわち、タイル間に依存性があるか否か、幾つ
のプロセッサが利用可能であるか、ループのサイズ(限
界)等。ランタイム66は、それに基づいてタイル化戦
略について決定し得る。
【0216】タイル化戦略の選択に影響を及ぼす多くの
ファクタがある。これらのあるものはコンパイル時に既
知である。例えば、依存性、ループ内のワークの量であ
る。他のもの、例えば利用可能なプロセッサの数は、コ
ンパイル時に知ることができる。情報のあるものは、一
般的場合にはラン時に利用可能であるが、実際にはコン
パイル時に知られている(か、それを指示文によりそれ
を提供できる利用者に知られている)ことは非常に多
い。
【0217】システムは、決定がなされ得るある決定点
を有する。これは、コンパイルシステム60によるコン
パイル時に存する。ラン時には、ランタイムライブラリ
66により、新タイル−ファミリをスタートする際 (
pr execuse tiles) 、およびなすべき次のタイルを探す
とき( pr tile next) である。下記は、ランタイムライ
ブラリ66の決定に影響を及ぼすことがあるファクタの
リストである。これらのファクタ順序は、提示されるよ
うに、本質的にランダムである。 −ループのサイズ(限界) −1反復におけるワークの静的量。 −1反復におけるワークの動的量。 −タイル間の依存性 −反復のデータへのマッピング −プロセスの数。 −データ親和性(ssb) −履歴(親和性領域) −資源(プロセッサ)利用可能性(ロードの平衡) −[重要アレイ]
【0218】7. ランタイムライブラリ66のアーキ
テクチャ 7.1 ブロック図 図8は、ランタイムライブラリ66の高レベルブロック
図である。この図は、主ルーチンおよび制御の流れを記
述している。これらのルーチンの機能は以下に記載され
る。 pr program master initは、プログラム実行の真の
開始時に一度呼ばれる。これは、利用者の形態(例えば
所望されるプロセッサ数のような)を得るためにランタ
イムライブラリ66の環境の変数を読む。ランタイムラ
イブラリ66の一般的イニシャライズをなす。 pr slv
e は、スレーブの「メイン」である。これエラーのうち
同時にランする多くのものがある。これは基本的にアイ
ドルループである。リーダーが「スイッチを閉じる
と」、この操作でタイルジェネレータを呼び(pr tile-g
en) 、そしてこれがその機能を完了すると、プロセスは
pr slaveに戻り、リーダーがそれを進行させる次の時点
まで、アイドルループに留る。
【0219】タイルファミリを実行すべき pr execute
tiles startは、スレッドを割り付ける(それを創成す
るか、既存のものを使用する)。また、特定のタイル化
されるループに対してデータの実行をイニシャライズす
る。これは、タイル化−戦略についての決定、および他
のイニシャライズスタッフを包含する。この出力は、MC
B と称される(Master Control Block)と称される中央デ
ータ構造に入る。MCB は、すべてのスレッドにとって不
可視的である。これがなされると、リーダーは、もはや
リーダーとして必要とされず、スレーブを作業せしめ
pr tile gen と合流する、すなわちそれを呼ぶ。
【0220】 pr tile genから戻ると、リーダーは、リ
ーダーとしての責任を回復する。リーダーは、すべての
スレーブがその作業を完了するまで待ち、必要なクリー
ナップをなし、その発呼者に戻る。
【0221】MCB 刃タイルに関する情報を保持する。第
1の部分は、タイル−ファミリに関する情報を保持す
る。第2部分は、タイルファミリの各次元(オーダー)
についての情報を保持する。したがって、これはフィー
ルドのアレイ(d)を含む、ここでd=1... 順序。
「オーダー」の代表的値は小さく(4で十分、8は十分
以上)。
【0222】下記の表において、各フィールドは、それ
がその値をいつ得るべきかに関する特性を指示する文字
が接頭語で付されている。「C」はコンパイルタイムの
略であり、「I」は、MCB のイニシャライズ、すなわち
タイルファミリの各実行にに対して一度、の略である。
【表21】 MSB-マスタ制御ブロック フィールド 記述 ファミリ部 I tile efp 親ルーチンのFP(フレームポインタ) C tile start タイルの次のものを指す(実際にはにはタイルのCP) C order タイル−ファミリ−パラメータにより特定 C affinity タイル−ファミリ−パラメータにより特定 C dependency タイル−ファミリ−パラメータにより特定 C code-size コンパイラにより計算される(バックエンド) I tile-strategy タイルファミリをカバーするための戦略を記述するコー ド オーダー部 I |tile size(d) この次元における反復数 C/I loop-low-bound(d) タイル−ファミリ−パラメータにより特定 C/I loop-low-bound(d) タイル−ファミリ−パラメータにより特定 C/I loop-stride(d) タイル−ファミリ−パラメータにより特定
【0223】 pr tile gen 適当な独立変数をもつタス
ク−サブルーチンに対する実際の呼びをなすサブルーチ
ンである。 pr tile next このスレッドにより実行され
るべき次のタイルを選択するルーチンである。これは、
タイルの下部限界、すなわちタイルの角部のリストであ
る整数のリストに戻る。タイル−サイズが固定される
と、これがタイルを限定する。 pr tile next はMCB に
相談する。これはタイル化−戦略が実際に効力を発揮す
るところである。 pr tile next の基本制御構造は、ワ
ークプランに従い、スイッチステートメント(C言語に
おいて言及されるような)あるいはケースステートメン
トである。
【0224】 pr excute parallel セクションは、セク
ションを実行するようにスレーブを割り付け、その各々
を第2のブロックに与える。 pr end は、プログラムが
完了するときに一度実行される。これは、一般的クリー
ンアップに加えて、統計値およびレポートを生ずる。 [ランタイムライブラリ−内部アーキテクチャ]
【0225】1.梗概 以下の説は、ランタイムライブラリ66、さらに詳しく
言うと、好ましい実施例の内部について詳細に記述す
る。
【0226】2.ランタイムライブラリ66のランタイ
ム環境は、プログラムがデータプロセッサ上において並
列にランすることを可能にする。取り扱われる並列構成
体は、タイル、並列部分、または並列領域である。並列
化は、スレッドの使用で全構成体において実施される。
並列構成体の外側の全コードは、プログラムスレッドの
一つによって直列に実行される。全直列コードは、同じ
「マスタ」プログラムスレッドにより実行される。
【0227】2.1 並列化の実施 コンパイルシステム60によるプログラム出力は、これ
らの構成体を並列に実行するため、ランタイムライブラ
リ66とリンクされる。この種のプログラムは、プレス
トプログラムと呼ばれる。並列構成体を含み、「ノー並
列ランタイムスイッチ」でコンパされるプログラムは、
並列構成体指示文をコメントとして処理し、ランタイム
ランライブラリ66のオーバーヘッドを伴わずに直列に
実行する。
【0228】各並列構成体は、1または複数のメンバを
有するチームと呼ばれるスレッド群により実行される。
各チームは、同期の目的のため、チームリーダーと称さ
れる1つのメンバを有する。プログラムがスタートする
と、プログラムリーダーと指示される1つのスレッドが
ある。ランタイムライブラリ66は、利用者に対して透
過性にスレッドチームを管理するが、利用者はチームを
明示的に制御できる。
【0229】スレッドは、実行のために1または複数の
コードセグメントを有することができる。ランタイムラ
イブラリ66は複数の戦略を実行する。並列構成体がタ
イルファミリであると、各スレッドは少なくとも1つ、
そして普通は多くのタイルを実行のために有する。並列
部分および並列領域構成体において、各スレッドは実行
のためにただ一つのコードセグメントしか有さない。
【0230】2.2 プログラムの直列および並列部分間
の転換 プログラムの全直列部分は、単一のスレッド、すなわち
プログラムマスタにより実行される。並列構成体に遭遇
すると、一群のスレッドが構成体に割り当てられる。構
成体の開始点は、スレッド群に対する同期点であり、そ
して構成体の終端はグループマスタに対する同期点で或
る。各グループメンバは、スレッドが割り当てられ、か
つグループマスタが先行の直列コードを完了するやいな
や、並列部分を開始する。グループメンバは、メンバデ
なく、グループマスタを扱わねばなければならないず、
メンバは扱わない。
【0231】終了時に、グループマスタは、全グループ
メンバが完了してしまうまで、並列部分に続くコードを
実行しない。グループマスタは全メンバを扱わねばなら
ない。プログラムの直列部分中、プログラムマスタを除
く全スレッドはアイドル状態である。
【0232】構成体の終端における同期点は、コード依
存性の既知の点がどうであるかで決まる。
【0233】並列構成体はネストされ得る。一般的実施
手法は、各レベルで同じである。各新しい構成体に対し
て、局部マスタを有する局部的一群のスレッドがある。
2.3 並列構成体間における資源割付けランタイムライブ
ラリ66は、プロセッサ間におけるロード平衡化の任務
の多くをオペレーティングシステム("OS") スケジュー
ラに委譲する。ランタイムライブラリ66は、並列構成
体に対する使用のためスレッドの数を選択することによ
って、資源割付けに影響を及ぼす。OSは、スレッド間
における資源の割付けを管理する。任意の瞬間に利用可
能なプロセッサより多いまたは少ないスレッドが存在し
てよい。
【0234】2.3.1 タイル化 タイル化の際、ランタイムライブラリ66は、利用可能
な資源の量を考慮し、各タイル化ファミリに対して、n
のスレッドを使用する。ここで、nはこのプログラムに
利用可能なプロセッサの数に等しいかそれ以下である。
省略時は、利用可能なプロセッサの最台数を使用するこ
とである。もしもタイルファミリが、最大数を使用する
ことが価値がないように構成されると、より少ない数の
スレッドが選ばれる。このアルゴリズムは、ネスト化に
拘らず使用される。
【0235】GRAB戦略を使用するとき、ランタイムライ
ブラリ66は、スケジューラに、すべてのスレッド−プ
ロセッサ結合および親和性の考慮事項を処理させる。
【0236】MODURO、WAVEFRONT 、またはSLICE 戦略を
使用すると、ランタイムライブラリ66は、スレッド->
プロセッサ結合が一定であることを仮定しようとする。
ランタイムライブラリ66は、相応にタイルを構成し、
割り当てる。この結合の仮定のため、ランタイムライブ
ラリ66はこれらの種類のスレッド上においてはより高
いスレッド->プロセッサの安定性を必要とすることをス
ケジューラに知らしめることが有用となる。
【0237】3.インターフェース 3.1 ランタイムライブラリ66/コンパイルシステム6
0 プリプロセッサ60aは、並列構成体により包含される
コードを辞書的サブルーチンに変換する。新サブルーチ
ンを創成すると、ランタイムライブラリ66は、スレッ
ドが同じコードを並列にランすることを許容する。コン
パイルシステム60はまた、並列実行を設定、惹起する
ランタイムルーチンに対する呼びを発生する。
【0238】タイル構成体において、辞書的サブルーチ
ンは、TILE指示文により包含されるコードより成る。一
つのサブルーチンが創成され、スレッドメンバの各々に
より呼ばれる。しかしてそのループ限界は異なる。
【0239】辞書的サブルーチンの「発呼者」となるコ
ードに可視の全変数は、サブルーチンそれ自体に利用可
能でなければならぬ。しかしながら、サブルーチンがラ
ンタイムライブラリ66により呼ばれるため、範囲をパ
ッチするに必要なメカニズムが必要とされる。コンパイ
ルシステム60からランタイムライブラリ66に通され
る情報の中には、辞書的サブルーチンに対するポインタ
および発呼コードのefp(enclosing frame pointer)があ
る。これにより、ランタイムライブラリ66スレッド
は、適当な範囲でサブルーチンを呼ぶことが可能とな
る。 3.1.1 一般的インターフェース ランタイムライブラリ66およびコンパイルシステム6
0は、あるインターフェース独立変数として次の値を使
用する。
【表22】−ブール値: 0=偽、1=真 −戦略値: 1=GRAB, 2=MODULO, 3=WAVEFRONT, 4=SLIC
E, -1= 特定されない −一般に、-1= 特定されない −サイズ: 0=全般的反復スペース, n= nの値
【0240】3.1.2 親和性領域のスタート コンパイルシステム60がAFFINITY REGION 利用者指示
文に遭遇すると、あるいは潜在的親和性領域を確認する
と、コンパイルシステム60は、親和性領域ワークプラ
ンをイニシャライズすべき(コンパイルシステム60か
ら領域ワークプランに対して)情報をもつ pr start af
finityを呼ぶ。これは、単に、コンパイルシステム60
からランタイムライブラリ66の内部データ構造体へ親
和性に関連する情報を転送するに過ぎず、いかなる並列
実行をもトリガしない。このインターフェースは、辞書
的に別個のタイルファミリおよび包囲ループ内にネスト
化されるタイルファミリの両者に適用され、そしてラン
タイムライブラリ66は両者間を識別しないことに注意
されたい。
【0241】利用者指示文は次のごとくである。すなわ
ち、
【表23】 この結果、コンパイラは次の呼びをなすこととなる。
【0242】独立変数は次のごとくである。すなわち、
Num Indices (long)。これは利用者によりリストされる
インデックスの数。コンパイルシステム60は、使用者
により特定されるインデックスが、含まれるタイルファ
ミリにより使用される全インデックスの論理積のサブセ
ットである。
【0243】共通のインデックスサブセットがなけれ
ば、コンパイルシステム60は、親和性領域は可能でな
かったこと、そして pr start affinityに対する呼びを
発しないという警報メッセージを利用者に生ずる。
【0244】Code size (long) 親和性領域によりカバ
ーされる全タイルファミリにわたるコードサイズであ
る。
【0245】Numthreads(long) -1=特定されず、0..n
=利用者により通される値。この親和性領域内のタイル
ファイルにより使用されるべきスレッドの数。
【0246】Strategy (long) 親和性領域内の全タイ
ルファミリにより使用されるべき戦略。範囲のみ親和性
領域に拡張。-1= 特定されず, 1=GRAB, 2=MODULO。
【0247】Tile size spec (long) もしもタイルサ
イズが利用者により通されなければ0、利用者により通
されれば 1である。
【0248】Teamid (long) 特定されなければ-1、そ
の他の場合はチームは利用者により通される。
【0249】Intercell 特定されなければ-1、他の場
合は0または1である。 Order num (long) 提供される依存性ベクトル値の数。
利用者はある種の依存性値を特定できないことに留意さ
れた。Dependency vector [order num] (long[]) 親和
性領域によりカバーされる全タイルファミリにわたる依
存性値。これは、全タイルファミリ特定依存性値の結合
である。例えば、
【0250】
【表24】 コンパイラが発生するOrder Num,タイル指示文 Order Vector C*ksr TILE( i,j,k, order={j,k}) order num=2, vector=(2,3) C*ksr TILE( i,j order={i,j}) order num=2, vector=(2,3) C*ksr TILE(j,k) order num=0 num indices=1 であるから、 order num=1 dependency vector={1} 他の例、 C*ksr TILE( i,j,k, order={j,k}) order num=2, vector=(2,3) C*ksr TILE( i,j,k, order={i,j}) order num=2, vector=(1,2) C*ksr TILE(i,j,k) order num=0 num indices=3 であるから、 order num=3 dependency vector={1,2,3}
【0251】pr excute 呼びにおいて通される依存性ベ
クトルと異なり、依存性値はすべて正の数である。ディ
レクタは無視される。利用者が任意の依存正値を特定す
ると、そのインデックスに対してその値を通す。そうで
ない場合、コンパイルシステム60が値を計算する。
【0252】LOW bound[num indices](long[]) 親和性
領域にわたる各インデックスに対する最低の低限界値。
利用者が特定。
【0253】High bound [num indices](long[]) 低限
界に類似、つねに利用者により提供される。
【0254】Affinity [num indices](SSB T) 親和性
群によりカバーされる各インデックスに対するssb 値。
コンパイルシステム60に対する有効ssb 値は、NONEお
よびSPである。ssb 計算にについての節6.4.1 は、ssb
が如何に発生されるかについて記述してある。
【0255】Tile size vals[num indices](long[]) フ
ォルトラン指示文から直接に通される利用者特定タイル
サイズ。コンパイルシステム60は、タイルサイズ値の
数がnum indices の値に整合するか否かをチェックす
る。タイルサイズは、実際上この1つの親和性領域に対
してのみ有効である。値の形式についてのTILE指示文に
関する動作参照。
【0256】3.1.3 親和性領域の終端 コンパイルシステム60がEND AFFINITY REGION 指示文
に遭遇すると、あるいはコンパイルシステム60により
検出される親和性領域の終端に来ると、コンパイルシス
テム60は、下記を呼ぶ。すなわち、 これは如何なる並列実行をもトリガしない。 3.1.4 セット指示文 コンパイルシステム60がSET 指示文に遭遇すると、適
当なランタイムライブラリ66のランタイムパラメータ
が変更される。コンパイルシステム60は、この指示文
が並列構成体内で使用されていないということをチェッ
クする。これは如何なる並列実行をもトリガしない。
【0257】利用者指示文は下記の如くである。
【表25】
【0258】コンパイルシステム60は下記を呼ぶ。
【表26】
【0259】各変数/利用者値対は、1対の2つの長い
ワードである。通すべき変数値はインクルードファイル
「ランタイムライブラリ66.h」に定められており、名前
の前の2本のアンダラインで定められるキーワードであ
る。コンパイルシステム60は、変数値を生成するため
に変数を文法解析しなければならない。例えば、 #define PR STRATEGY 0 /*もしもキーワードがPR STRATEGY であれば、変数値に
対してこれを使用する * /
【0260】コンパイルシステム60は、PL STRATEGY
値に対して{0,1,2,4} を通す。ここで、戦略値は次の途
を描く。(NONE=0, GRAB=1, MODULO=2, WAVEFRONT=2, SL
ICE=4). これらはランタイムライブラリ66.hに定められ
ている。すべての他のパラメータに対して、利用者値
は、指示文において利用者により通されるその値であ
る。
【0261】3.1.5 タイルファミリのスタート コンパイルシステム60は、TILE指示文に遭遇すると、
タイル化情報を設定しかつ並列化実行を開始させるラン
タイムライブラリ66ルーチンを呼ぶ。使用者指示文は
次のようになる。すなわち、
【表27】 C*ksr TILE(<index>, (primary set), [tilesize=<size list], [strategy={GRAB,MOD,WAVE,SLICE}], [numthreads=<val> | teamid=<team id>], [aff member={0,1}])
【0262】この結果、コンパイルシステム60は次の
呼びをなすこととなる。void
【表28】 pr excute tiles (family name, code size, frame pointer, num incides, strategy, tile size spec, teamid, order, this-level ar reduction-ptr psc ptr, numthreads, aff member, dep vector, -- orderと同数の#, low bound, -- num incidesと同数の#, high bound, -- num incidesと同数の#, loop stride, -- num incidesと同数の#, affinity, -- num incidesと同数の#, areg map, -- num incidesと同数の#, tile size vals) ---num incidesと同数の#, int (*family name)( ), (*reduction ptr)( ) (*psc ptr)( ); long code size; char *frame pointer; long num indices, strategy, tile size spec, teamid, numthreads, aff member; long order, this level ar; va dcl - ( 各値は長い) { }
【0263】独立変数は下記ごとくである。 Family name(int*) サブルーチン保持タイル本体に対
するポインタ。 Code size(long) タイル本体における命令の数。 Frame pointer(char*) タイル本体サブルーチンに対す
る発呼者の包含フレームポインタ。 Num incices(long) ループインデックスの数。 Strategy(long) -1= 利用者により特定されず, 1=GRA
B, 2=MODULO. ランタイムライブラリ66エラー要素
は、その戦略が有効値であることをチェックする。戦略
は、この1つのタイルファミリの間有効に留まる。 Tile size spec(long) もしもタイルサイズが利用者に
より通されなければ0、利用者により通されれば1であ
る。 Teamid(long) 特定されなければ-1、そうでなければte
am id が利用者により通される。 Order (long) オーダーベクトル値の数。
【0264】This level ar(long) このタイルファミ
リが親和性領域内に辞書的に包含されなければ0、この
タイツファミリが辞書的に親和性領域内にあれば1であ
る。 Reduction ptr(int*) タイル本体における何らかの削
減を完成するためのサブルーチン保持コードに対するポ
インタ。このポインタがゼロでなければ、このタイルフ
ァミリへ参加する各スレッドは、それがその共有のワー
クを完了したときこの呼びを実行する。このパターンイ
ンターバルがゼロであれば、影響はない。
【0265】Pct ptr(int*) 私的に共有される共通物
のランタイム指示のためのサブルーチンに対するポイン
タ。もしもポインタがゼロでなければ、次の4つのステ
ップが取られる。すなわち、 1)チームリーダが pr psc init mwuを呼ぶ。 2)各スレッドが、独立変数として sc ptr をもつ pr
psc use mwu を呼ぶ。 3)そのとき各スレッドは pr psc helper leaveを呼
ぶ。 4)マスタスレッドは pr psc master leaveを呼ぶ。
【0266】Numthreads(long) -1= 特定されず、0..2
−利用者に通される値。タイルファミリにより使用され
るべきスレッドの数。
【0267】Aff member(long) -1=特定されず、0=利用
者が、このファミリが包含親和性領域に含まれることを
希望しない、1=タイルファミリが親和性領域内において
実行されるべきである。
【0268】Dep vector(long[]) 依存性を有するイン
デックスの値。ベクトル値は、依存性が逆方向であれば
負、順方向であれば正である。例えば、−3のベクトル
値は、1から計数される第3のループインデックスが逆
方向依存性であることを意味する。
【0269】Low-bound(long[]) 全ループインデック
スに対する低限界値。 High-bound(long[]) 全ループインデックスに対する高
限界値。 Loop-stride(long[]) 全ループインデックスに対するル
ープストライド値。
【0270】Affinty[num indices](SSB T) タイルフ
ァミリによりカバーされる各インデックスに対するssb
値。コンパイルシステム60に対する有効ssb 値は、NO
NEおよびSPである。ssb 計算についての節6.4.1 は、ss
b が如何に発生されるかを記述している。
【0271】Areg map[num indices](long[]) このタ
イルファミリが利用者により宣言される、コンパイルシ
ステム60により識別される親和性領域の中央にあると
きのみ有効である。タイルファミリの各ループインデッ
クスに対して、ループインデックスが親密性領域に対し
て使用されていなければ−1、このループインデックス
が親和性領域の第nのループインデックスに対応してい
ればnである。
【0272】
【表29】例えば、 C*ksr START AFFINITY REAGION (i,j) C*ksr* TILE (i,j,k) - マッピングは{0,1,-1} C*ksr* END TILE C*ksr* YILE(j) - マッピングは{1} C*ksr* END TILE C*ksr* TILE (j,i) - マッピングは{1,0} C*ksr* END TILE C*ksr* END AFFINITY REGION
【0273】Tile size vals[num indices](long[])
フォルトラン指示文から直接に通される利用者特定タイ
ル寸法。コンパイルシステム60は、タイルサイズ値の
数がnum indices の値と整合することをチェックする。
タイルサイズは、このタイルファミリ中のみ有効に留ま
る。 C*ksr* Tile(i,j, tilesize=(1:16))--エラーを生ずる。 C*ksr* Tile(i,j, tilesize=(j:10,i:16) -- numindices=2, tilesize={16,10}
【0274】タイルサイズに対する有効値は定数、変数
および"*" である。例えば、n−ここでnはある定数、
x−ここでxはある変数、* −タイルサイズは、この次元において全反復スペース
であるべきである。
【0275】例えば、下記のタイル指示文は有効であ
る。 TILE(i,j, tilesize=(i:15, j:10))--tilesize={15,10} TILE(i,j, tilesize=(i:x, j:10))--(x==4)tilesize={4,10} TILE(i,j, tilesize=(i:*, j:10))--( iに対する限界は2->,tilesize={8,10}
【0276】areg shift[num indices](long[]) この
タイルファミリが利用者により宣言される親和性領域の
中央にあるか、コンパイルシステム60により識別され
る場合のみ有効である。タイルファミリが定数値により
シフトされるインデックスを使用するとき親和性の整列
を維持するのに使用される。
【0277】このタイルファミリの各ループインデック
スに対して、n=このインでの使用のために追加される
量。
【表30】例えば、 C*ksr* AFFINITY REGION (i,j) C*ksr* TILE(i,j)−areg shiftは{0,0} do i=1,10 do j=1,10 a(i,j)=x endoo endoo C*ksr* END TILE C*ksr* TILE(i,j)−areg shiftは{1,2} do i-1,10 do j=1,10 a(i+1,j+2)=x endoo endoo C*ksr* END TILE C*ksr* TILE(i,j) do i-1,10 −これに従わせることができない、 areg shift は {0,0} do j=1,10 a(i,j)=x a(i,j+1)=y endoo endoo C*ksr* END TILE C*ksr* TILE(i,j) do i-1,10 −これに従わせることができない、 areg shift は{0,0} do j=1,10 a(i,j)=b(i,j+1) endoo endoo C*ksr* END TILE C*ksr* END AFFINITY REGION 3.1.6 タイルファミリの実行 ランタイムライブラリ66は、タイルによりカバーされ
る反復スペースの限界をもつタイル本体を含む辞書的サ
ブルーチンと、ループインデックスの最終の値が必要と
されるかどうかを指示するブール値を呼ぶことによっ
て、このタイルファミリを実行する。独立変数の順序
は、順に、各インデックスの低限界および高限界、続い
て必要とされる最終値である。これは、 pr excute til
esに対するコンパイルシステム60の呼びによりトリガ
される。
【0278】3.2 オペレーティングシステムをもつイ
ンターフェーシングランタイムライブラリ66 ランタイムライブラリ66は、前述のように、ロード平
衡化スレッドに対する責任の多くをオペレーティングシ
ステム("OS")スケジューラに委譲する。ランタイムライ
ブラリ66は、下記の問題についてスケジューラとある
通信をなす。
【0279】3.2.1 利用可能なプロセッサ ランタイムライブラリ66は、タイルを生成するとき、
プログラムから利用可能なプロセッサの数についての情
報を使用する。スタート時、ランタイムライブラリ66
は、利用者が番号を特定した場合プロセッサのセット番
号を求めるか、、利用可能なプロセッサの「MAX」 数を求
める。OSスケジューラは、利用可能な実際の数で答え
る。
【0280】最小数のプロセッサの規格、プロセッサが
単一のリング0上にあるべき要求、またはioセルを使
用すべきでないという要求のような他の修飾子もあり得
る。
【0281】スケジューラがプロセッサセットを拡張ま
たは縮小する能力を有すると、ランタイムライブラリ6
6は、各nの並列構成体(nは構成し得る)の開始時に
スケジューラをチェックし、利用可能なプロセッサのそ
の計数値を変更する。
【0282】3.2.2 スケジューラヒント/優先性 スケジューラは、スレッド間の資源割付けに影響するよ
うに、応用に関して供給される情報を利用する。スケジ
ューラは、応用がスレッドのスケジューリング解除に影
響を及ぼすことを可能にするスリープ/ウェークアップ
機構を実現する。
【0283】3.2.2.1 同期 ランタイムライブラリ66の同期は、スレッドライブラ
リにより供給されるムテックスおよびバリヤ構成体で遂
行される。
【0284】3.2.2.2 アイドル スレッドは、構成体本体すなわち直列コードを実行して
いるとランしており、同期ルーチンに入ったら「同期」
している。他のすべての時間においては、スレッドは
「アイドル」である。スレッドが数個の並列構成体を実
行しているスレッド群のメンバであり、かつグループマ
スタでないと、スレッドはアイドルと成り得、終了して
構成体バリヤに入る。アイドルスレッドは、構成可能な
ある時間の間ループにおいて回転し、スリープ呼びを発
する。スレッドは、バリヤを出る時間となると、グルー
プマスタにより目覚めさせられる。
【0285】4.タイル化 4.1 タイルサイズの生成 タイルサイズおよび形状は、入力の組合せにより決定さ
れる。すなわち、 (1) 反復スペースのメモリ割り付けおよびメモリのタイ
ルファミリアクセス(タイルファミリのssb により記述
されるように)。ssb はコンパイルシステム60により
生成される。 (2) 所望な最小タイルサイズの考慮(PL MININIST PER
TILE環境の変数により記述されるように)。 (3) タイルインデックスに関する依存性。
【0286】ランタイムライブラリ66は、ssb および
依存性情報を使用するタイルサイズにて最初のパスをな
し、最小のサイズタイルを作る。コンパイルシステム6
0システムにより計算された2つの可能なssb 値は、NO
NEおよびSPである。この最初もパスは、ssb 値を依存性
情報で修正する。もしもこのインデックスに依存性があ
り、タイルに他の依存性がないと、依存性の同期化を避
けるためssb はMAX に変換される。このインデックスに
依存性があるが、タイル上により多くの依存性がある
と、SPの中間サイズが選ばれる。
【0287】下記の真理値表は、第1のパスタイルサイ
ズテンプレートを生成するためのアルゴズムを記述する
ものである。
【表31】x)=配慮無用。 コンパイラ このインデックス タイルファミリにおけ プレストssb 値 に関する依存性 る1より大きい依存性 ssb 値 NONe 偽 x NONE NONE 真 偽 MAX NONE 真 真 SP SP 偽 x SP SP 真 偽 MAX SP 真 真 SP
【0288】ランタイムライブラリ66は、このランタ
イムライブラリ66のssb 値を取って、最小タイルサイ
ズを生成する。インデックスに対するssb 値がMAX であ
ると、その次元におけるタイルサイズは、その次元にお
ける全反復スペースとなる。ssb 値がNONEであると、そ
の次元のサイズは1反復の最小となる。ssp がSPである
と、そのインデックスのタイルサイズは32である。こ
の最初のパスの後、依存性およびサブページ境界の考慮
事項に従い、かつ最小サイズであるタイル形状があるは
ずである。
【0289】ついで、ランタイムライブラリ66は第2
のパスをなすが、このパスはタイルサイズを、このタイ
ルに必要とされる最小のサイズに比較する。タイルファ
ミリガスライスサイズ戦略下で実行されると、この最小
サイズは、タイルファミリにおける命令の数を実行中の
チームのスレッドの数で割ったものに等しい。そうでな
い場合、命令(PL MIN INST PER TILE)によりタイルの最
小数を特定する環境変数により特定される。
【0290】タイルは、SSB 値の制約内で維持しなが
ら、この最小サイズを満足させるまで、引き伸ばされ
る。タイルの一側がすでに全反復スペースであると、そ
のジメンションに関してさらになすべきことは何もな
い。このサイズがSPのSSB 値を有すると、タイルは32
の倍数で引き伸ばされる。このサイズがNONEのSSB 値を
有すると、この次元におけるタイルサイズは、1のイン
クリメントずつ引き伸ばされる。
【0291】ランタイムライブラリ66は、次の順序で
タイルを引き伸ばすためインデックスを選ぶ。タイルフ
ァミリ戦略がWAVEFRONT であると、列インデックスが先
ず引き伸ばされ、続いてサブタイルインデックスが引き
伸ばされる。目的は、データ依存性がある場合、タイル
間の同期を最小にするために、次元におけるタイルサイ
ズを増すことである。
【0292】ついで、SPのSSB 値をもつインデックス
が、親和性を最適化するために選ばれる。これらのイン
デックスが順次引き伸ばされる。例えば、SPのssb 値に
関してインデックスiおよびjを有する場合、もしもタ
イルファイルがインデックスijおよびkを有するなら
ば、ランタイムライブラリ66はiを引き伸ばし、つい
でjを、ついでiを、というように引き伸ばす。これは
iおよびまたはjが排出されるまで、あるいはタイルが
その最小サイズに達するまで行われる。最後に、NONEの
SSB 値をもつインデックスが選ばれる。
【0293】4.2 Tile/thread 割当て タイルをスレッドに割り当てるため、戦略と呼ばれる数
種のアルゴリズムがある。上述の4つのうち、GRAB戦略
はロード平衡化の考慮事項を使用し、他方MODULO,WAVEF
RONTおよびSLICE 戦略はデータ親和性の考慮事項を使用
する。WAVEFRONT 戦略も、できるだけ多くの並列化をも
たらすような順序づけ要件でタイルファミリを実行する
ように設計される。
【0294】4.2.1 GRAB戦略 GRAB戦略においては、タイルは、純粋の到着順作用アル
ゴリズムでスレッドに割り当てられる。
【0295】4.2.2 MODURO戦略 MODURO戦略においては、タイルはスレッド間に均等に分
配される。マッピングは、((tilenumber % total tile
s)==thresa id) である。これは、スレッドidが局所
群スレッドidであるように、並列セクションに関して
変更できる。
【0296】加えて、もしもMODURO戦略が親和性領域と
関連して使用されるならば、ランタイムライブラリ66
は、データ親和性を維持するために、スレッドが先行の
タイルファミリにおいて使用した反復スペース内にある
タイルを各スレッドに実行させようとする。ランタイム
ライブラリ66は、反復スペース->マッピングが親和性
領域内の全タイルファミリにわたり一定であることを仮
定して、反復スペースのみを調べ、データスペースを調
べない。
【0297】ランタイムライブラリ66は、各スレッド
に割り当てられる反復スペースを思い出すことができ、
タイルファミリにわたり((tile number % total tiles
== thread id) マッピングを標準化するためにそれを使
用する。
【0298】4.2.3 データ依存性戦略 4.2.3.1 修正 データ依存性は、被タイル化コードを実行するとき、順
序づけ要件を生成する。タイルは、正しい結果を保証す
るために、依存性の方向を否定しない順序で実行され
る。
【0299】4.2.3.2 性能 データ依存性はタイルに順序付の制約を課するから、依
存の方向におけるタイル化は、そのタイルファミリの関
連においてのみ考慮されると価値がないことがしばしば
ある。例えば、依存性を有する一次元の反復スペースは
厳格な直列順序で実施されねばならないが、タイルを直
列化するに必要とされるオーバーヘッドは浪費である。
しかしながら、全プログラムの性能に関する考慮事項
は、ランいイムライブラリ66に、依存性の方向におけ
るタイル化を考慮させねばならないことがあり得る。
【0300】親和性は、依存性においてタイル化すべし
という決定をもたらすことがあり得るタイル化戦略を選
ぶ際に重要なファクタである。タイル直列化のオーバー
ヘッドは、制約を課さず完全に並列化され得るプログラ
ムにおける他のタイルファミリに対してデータの親和性
を維持するならば価値があろう。これはデータの依存性
に無関係にそうである。リンパックのsegfa ルーチン
は、第1のより小さい反復スペース1Dが第2の2D反
復スペースと矛盾なくタイル化される場合の1例であ
る。
【0301】依存性次元をタイル化することは、部分的
に直列化されたタイル化順序づけを使用する機会をも与
えよう。このような場合、タイルは群で組織化され、そ
してこれが直列的に実行されねばならぬ。しかしなが
ら、群においては、タイルは並列に実行され得る。部分
的に直列にタイル化順序づけは、反復スペースが1より
多い次元であるときのみ使用できる。
【0302】4.2.3.3 WAVEFRONT戦略 ランタイムライブラリ66は、親和性を保存し、かつ部
分的に直列化されたタイル化順序づけを使用するため
に、データ依存性をタイル化する。実施されるべきタイ
ル化順序づけは、ウェーブフロント順序づけである。
【0303】5.親和性領域は、ランタイムライブラリ
66がデータの競合および移動を避けるように実行しよ
うとするタイルファミリの集合である。ランタイムライ
ブラリ66が親和領域に遭遇すると、ランタイムライブ
ラリ66は、領域内のタイルファミリによりカバーされ
る反復スペースを要約する情報を受信する。ランタイム
ライブラリ66は、辞書的に別個のタイルファミリと外
部ループ内のタイルファミリを区別することを要しな
い。ランタイムライブラリ66は、この情報を利用し
て、領域内において全ファミリに関して使用されるタイ
ルサイズテンプレートおよびタイル化戦略を生成し、一
つのスレッドが、各タイルファミリに対して反復スペー
スの同じ部分にアクセスすることを可能にする。
【0304】親和性領域は、もしも選ばれるタイル化戦
略が純粋のGRAB戦略であれば有用でない。親和性領域は
ネスト化され得る。各新親和性領域は、新しいスレッド
群を生成し、それ自身のタイル化ワークプランを使用す
る。
【0305】5.1 共通インデックスセット タイルサイズテンプレートは、ループインデックスセッ
ト、それらの依存性およびそれらのssb を調べることに
よって創成される。関係するループインデックスのセッ
トは、親和性領域におけるタイルファミリのすべてに対
して使用されるものである。親和性領域内の全ループネ
ストは、インデックスの同じセット上においてタイル化
されることが可能でなければならない。これは「共通イ
ンデックスセット」ルールである。共通のインデックス
セットは、親和性領域内のタイルファミリにより使用さ
れるインデックスの論理積のサブセットである。これ
は、親和性指向戦略が、どのプロセッサがタイルを実行
するかを決定する反復->プロセッサマッピング機能を要
するから必要である。もしもタイル化インデックスの数
がループネストごとに変わるならば、このマッピングは
行われない。
【表32】例えば、共通のインデックスセットは、下記
の例に対して「i」である。
【0306】下記の例において、共通のインデックスセ
ットが識別され得るようにコードを変更することが必要
である。ここにオリジナルがある。すなわち、
【表33】
【0307】ここに変更コードがある。(n,m) の共通の
インデックスセットを創成するための最大の最適バージ
ョンは下記のごとくである。すなわち、
【表34】 --- 親和性領域スタート--- do n=2, 99 do m=2, 199 do l=2, 1999 u(l,m,n) = xx; enddo enddo enddo do n=2, 99 do m=2, 199 u(l,m,n) = xx; u(2000,m,n) =xx; enddo enddo mに対してループ追加 do n=2, 99 do l=2, 1999 do m=1,1 u(l,l,n) = xx; enddo enddo enddo −nに対するループを追加し、また、1プロセッサ上において、ステートメンが −一度のみなされるように条件を追加する。ランタイムライブラリ66は、反復 −が正しいプロセッサに行くことを確かめる。ループの内側においてハードコー −ド化されたメモリアクセス部にアクセスできない。 −代替方法は、ループを上のものと同様に見える2つのループに分割し、各ルー −プに一つのステートメントのみがあるようにすることである。交換条件は、新 −タイルファミリの追加である。 do m=2, 199 do 1=2, 1999 do n=1,100,100 if (n .eq. 1) u(l,m,l) = xx; if (n .eq. 100) u(l,m,l00) = yy; enddo enddo enddo --- 親和性領域終了---
【0308】5.2 親和性領域およびサブルーチン呼び 省略時要件は、親和性領域宣言内の全タイルファミリ
が、親和性領域宣言と同じ辞書的レベル内にあることで
ある。親和性宣言内の、ただし他のサブルーチンにある
全タイルファミリは、他のスレッド群により(それゆえ
恐らく他のプロセッサセットにより、同じ親和性を伴わ
ずに)ランせしめられるであろう。この動機づけは、親
和性領域宣言が、コンパイルシステム60に、宣言内の
すべてのタイルファミリを走査し、タイルファミリの特
性の要約を生成すべきことを要求するということであ
る。サブルーチンはコンパイルシステム60にアクセス
できず、親和性領域情報内に含まれることができない。
【0309】しかしながら、利用者は、この要件を無効
にするため、AFFINITY REGION 指示文の「呼び間」パラ
メータを使用できる。コンパイルシステム60は、同じ
辞書レベルにないタイルファミリを走査できず、もしも
利用者が他のパラメータを介して詳細な情報を提供しな
いならば、親和性領域は最適にに設定できない。
【0310】省略時挙動の例は下記のごとくである。す
なわち、
【表35】 C*ksr*AFFINITY REGION(i:l,n) C*ksr* PTILE(i,j) do i=1,n do j=1, n --- call foo ( ) -- Call #1: 他のスレッド群によりラン endoo enddo call foo ( ) -- #2: 他のスレッド群によりラン C*ksr* PTILE(i) do i= 1,n --- enddo C*ksr* END AFFINITY REGION
【0311】6.ランタイムライブラリ66アーキテク
チャ 6.1 同期の使用 ランタイムライブラリ66は、プレストプログラムの実
行中種々の時点においてそのメンバスレッドの同期を必
要とする。使用される同期機構は、臨界セクションおよ
びバリヤである。ランタイムライブラリ66は、臨界セ
クションを実現するためにpスレッドmutex 呼びを、バ
リヤを実現するためにpスレッドバリヤ呼びを使用す
る。
【0312】6.1.1 並列構成体(バリヤ)の開始および
終了。 タイルファミリすなわち並列セクションの開始時に、ス
レッド群マスタが全直列コードを終了するまで、並列構
成体に参加する全スレッドはバリヤ内に保持される。そ
の構成体の実行の終了時に、全メンバスレッドは復帰す
る。マスタスレッドは、全メンバスレッドがバリヤに入
るまで、並列構成体に続くコードを実行しない。
【0313】プログラムが並列構成体のネスト化を有す
る場合、宣言される数々のバリヤがあり得る。スレッド
は、数種のネスト化構成体に参加しているならば、数種
のバリヤ群のメンバとし得る。
【0314】6.1.2 GRAB戦略中のロッキング(臨界セ
クション) GRAB戦略は、すべてのメンバスレッドに、マーカーデー
タ構造を更新して次の利用可能なタイルを得べきことを
要求する。このマーカーデータ構造は、ロックに保持さ
れる。
【0315】6.1.3 スレッド群idのロッキング(臨
界セクション) 各新スレッド群には、可視化、ロギングおよびタギング
出力のため並列構成体を識別するのに使用される一意的
idが与えられる。現在の群idはデータロックに保持
され、各新しいスレッド群によりインクリメントされ
る。
【0316】6.1.4 スレッド群創成中のロックおよび
解体(臨界セクション) ランタイムライブラリ66は、pスレッドを創成し、そ
れをアイドルプールに残存維持させる。スレッド群が創
成され、そして解体されるとき、スレッドはアイドルプ
ールに割り当てられそしてそこから放出される。これ
は、利用可能なアイドルスレッドの数をデータロックに
保持することによって同期される。
【0317】6.1.5 チームの創成/破壊中のロック
(臨界セクション) ランタイムライブラリ66は、利用者が、単一の並列構
成体を越えて存在する恒久的チームを創成することを許
容する。これらのチームは、全体的な結合リストに保持
される。チームの創成および破壊は、ロック pr team
lockにより同期される。
【0318】6.1.6 統計値情報記憶のためのロッキン
グ(臨界セクション) ランタイムライブラリ66は、統計値性能情報を収集す
るために構成できる。このデータは、臨界セクションに
書かれねばならない全体的な変数として保持される。
【0319】6.2 スレッドの使用 6.2.1 スレッドチーム プレストプログラムは、プログラムマスタとして知られ
る一つのpスレッドでスタートする。スタート時、ラン
タイムライブラリ66は、追加のスレッドを創成し、そ
れを利用可能なスレッドのアイドルプールに維持する。
プログラムが実行されるとき、ランタイムライブラリ6
6は、遭遇する新しい並列構成体を処理するように、p
スレッドを創成する。スレッド群は、1または複数の並
列構成体を取り扱うことができる。チームが解体される
とき、pスレッドメンバは、ランタイムライブラリ66
アイドルプールに戻る。このアイドルプールは、pスレ
ッドの創成の高い費用を最低化するように設計される。
【0320】並列セクションおよび領域: 省略時解釈
により、各新しい並列セクションに対して新しいスレッ
ドチームが創成される。セクションの終了時に、スレッ
ドチームは解体される。もしも利用者がこの構成体にお
ける使用のためチームを特定するならば、そのチームが
使用され、構成体の終了時に解体されない。
【0321】親和性領域のないタイルファミリ: チー
ムが指示文に特定されない限り、親和性領域に包含され
ない各新タイルファミリに対して新スレッドチームが創
成される。タイルファミリの終了時に、新スレッド群は
解体される。
【0322】指示文にチームが特定されれば、そのチー
ムが使用され、新しいチームは創成されない。利用者特
定チームは、構成体の終了時に解体されない。
【0323】親和性領域内のタイルファミリ: 省略時
解釈により、親和領域内の全タイルファミリを実行する
ために、新しいスレッド群が創成される。もしも、親和
性領域指示文でチームが特定されれば、そのチームが使
用され、新しいチームは創成されない。スレッドチーム
は、親和性領域にわたって均一なタイル->スレッドマッ
ピングを保存するために、タイルファミリにわたり生き
状態に維持される。この動機づけは、スレッドが、スレ
ッドの寿命中同じプロセッサ上に留まろうとする傾向が
あるという仮定である。各親和性領域の終了時に、各ス
レッド群は、利用者により創成された特定チームでない
限り解体される。
【0324】もしも並列構成体がネスト化されるなら
ば、単一のスレッドは、数スレッドチームのメンバとし
得る。
【0325】6.2.2 スレッド群は、グループマスタと
0ないしnのグループスレーブより成る。プレストプロ
グラムは、一つのスレッド、すなわちプログラムマスタ
でスタートする。スレッド群が創成されるとき、現在マ
スタは新スレッド群のグループマスタと成り、スレーブ
が創成される。スレッド群が解体されるとき、グループ
スレーブはアイドルプールに戻る。
【0326】このプロセスは、ネスト化された並列構成
体に拡張される。2の深さでネスト化された一連の並列
構成体を有するプログラムを想定されたい。レベル1
で、プログラムマスタはスレッド群を創成し、グループ
マスタとなる。レベル2にて、他の並列構成体に遭遇す
るスレーブは、新スレッド群を構成し、レベル2のグル
ープマスタと成る。レベル2の構成体が終了すると、レ
ベル2のスレッド群は解体され、グループスレーブは元
に戻る。レベル2のグループマスタは、そのマスタのア
イデンティティを捨て、レベル1スレーブまたはマスタ
として自己のアイデンティティを回復する。レベル1の
スレッド群が解体されると、全グループスレーブは、グ
ループ(およびプログラム)に対するものを除き元に戻
る。
【0327】6.3 データ構造 6.3.1 プログラムに対して全体的 環境変数: すべての利用者インターフェース環境変数
は、プログラムに対して共有される全体的変数であり、
全並列構成体に応用し得る。 統計値情報: 種々のカテゴリによるこれらの測定命令
計数値は、共有される全体的変数として記憶される。 pr master thread: UDB 支援に対するプログラムマス
タのid。共有される全体的変数。 pr fp: プログラムの終了時に出力に対して使用され
るファイルポインタ。フォルトラン環境による標準の処
理のために必要とされる。共有される全体的変数。 pr t state: udb 支援のための、ラン、アイドルまた
は同期状態。専有的な全体的変数。 pr curr mcb p : udb 支援のための現在mcb に対する
ポインタ。専有的な全体的変数。 TEAM MEM ID : 現在チームにおけるこのスレッドのi
d。専有的な全体的変数。 POOL ID: ランタイムライブラリ66アイドルスレッ
ドプールに対するこのスレッドの現在id。専有的な全
体的パラメータ。 MY THREAD ID: このスレッドのpスレッドid。専
有的な全体的変数。
【0328】[概要]以上、上述の目的にあった改良さ
れたディジタルデータプロセッシングシステムについて
記述した。詳述すると、反復シーケンスをサブタスクに
分割し、それをプロセッサに割り付けすることによっ
て、反復シーケンスを実行する改良された並列プロセッ
サについて記述した。この分割および割り付けは、プロ
セッサ間のデータの競合を最小化しかつそのデータにア
クセスするプロセッサに対するデータの局所性を最大化
するように行われる。
【0329】当技術にし通したものであれば、ここに記
述される実施例は、単に例示であり、変更、追加および
削除を含む他の装置および方法が本発明の技術思想内に
おいて可能であることが認められよう。
【0330】例えば、プリプロセッサ60aの機能性は
コンパイラ60aそれ自体に合体できることが認められ
よう。かくして、別個のプリプロセッシングステップの
必要は除去される。
【0331】また、上述の技術は、大規模並列システム
や他のマルチプロセッサシステムに応用できることが認
められよう。例示として、タイル化情報を記憶する異な
るデータ構造体を使用できることも認められよう。反復
シーケンスを並列化し実行するために、等価であるが変
更された手続きを使用できよう。例示として、本発明の
技術思想を変更することなく、他のタイル化指示文も使
用できよう。
【0332】
【表36】
【0333】
【表37】
【図面の簡単な説明】
【図1】本発明の好ましい実施において使用するための
マルチプロセッシングシステムの構造を示す概略線図で
ある。
【図2】図2は本発明の好ましい実施において使用する
ためのマルチプロセッシングシステムの構造を示す概略
線図である。
【図3】反復シーケンスを含むソフトウェアプログラム
の並列化および実行のために利用されるモジュールを示
す線図である。
【図4】図3のプリプロセッサにより生成されるループ
テーブルを示す線図で、A、B、CおよびDはそれぞれ
別のループテーブルを示す。
【図5】タイルのタスクルーチンへの変換を示す図であ
る。
【図6】図3のシステムによる部分的タイル順序付けを
示す図である。
【図7】タイル化シーケンスを実行するために図3のシ
ステムにより実行されるワークプランを示す図で、A、
BおよびCはそれぞれ別のワークプランを示す。
【図8】図3のランタイムライブラリ66の高レベルブ
ロック図である。
【符号の説明】
10 マルチプロセッシングシステム 12A〜12F,14A,14B,16 セグメント 18A〜18R セル 19A〜19C ディスクドライブ 40A,40B,40C プロセッシングユニット(C
PU) 42A,42B,42C メモリ要素 44A,44B,44C バス 46 回路網(ネットワーク) 48,48B,48C バス 50A,50B,50C アクセス要求(リクエスト)
要素、 51A,51B,51C オペレーティングシステム 52A,52B,52C キャッシュ制御ユニット(装
置) 54A,54B,54C データ記憶領域(ストア) 56A,56B,56C ディレクトリ要素 60 コンパイルシステム 60a プリプロセッサ 60b コンパイラ 64 リンクエディタ 66 ランタイムライブラリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 タニ・シャビット アメリカ合衆国マサチューセッツ州レクシ ントン、ワン・シーボーン・プレイス(番 地なし) (72)発明者 ジェイムズ・ビー・ロスニー アメリカ合衆国マサチューセッツ州ブルッ クライン、マンマス・ストリート47 (72)発明者 ティモシ・ジー・ピーターズ アメリカ合衆国マサチューセッツ州ウォル サム、ウィルバ・ストリート11 (72)発明者 リンダ・キュー・リー アメリカ合衆国マサチューセッツ州ケンブ リッジ、ハールバット・ストリート28 (72)発明者 ウィリアム・エフ・マン アメリカ合衆国マサチューセッツ州サドベ リ、チェッカベリ・サークル23 (72)発明者 ジャクリン・コティキアン アメリカ合衆国マサチューセッツ州コンコ ード、バレッツ・ミル・ロード540

Claims (70)

    【特許請求の範囲】
  1. 【請求項1】 各々命令を実行する複数のプロセッシン
    グユニットと、該プロセッシングユニットに結合され
    て、データおよび命令の少なくとも一方を記録するため
    の記憶手段と、前記プロセッシングユニットに結合され
    てプロセッシング間で情報を転送するためのプロセッサ
    間通信手段とを備える形式の並列プロセッサディジタル
    データ処理装置において、 A.前記メモリ手段が、反復シーケンスを表わすタイル
    化命令シーケンスを記憶するための手段を具備し、前記
    各プロセッシングユニットが、前記反復シーケンスと関
    連する反復スペースの一部(タイルと称される)にわた
    り前記タイル化シーケンスを実行するのに利用できるこ
    とを信号するための手段を具備し、 B.前記プロセッサユニットに結合されて、これらプロ
    セッシングユニットによる前記信号の少なくとも選択さ
    れた各信号応答して、前記タイル化シーケンスを実行す
    べきタイルの境界を表示する信号を発生する次タイル手
    段を具備し、前記各タイルがいずれの他のタイルとも重
    複しておらず、全前記タイルが一緒に全反復空間をカバ
    ーしており、 C.前記次タイル手段が、1または複数の対応するタイ
    ルの実行中アクセスを受けるデータの局所性を最大化し
    かつ前記実行中前記データへのアクセスの競合を最小化
    するように前記境界表示信号を発生する手段を具備して
    おり、 D.前記各プロセッシングユニットが、そのプロセッシ
    ングユニットによる前記信号に応答して発生される境界
    応答信号に応答して、対応するタイルにわたり前記タイ
    ル化信号を実行するための手段を具備する反復命令シー
    ケンスを処理するための手段を備えることを特徴とする
    並列プロセッサディジタルデータ処理装置。
  2. 【請求項2】 A.対応するタイル間の依存性を考慮し
    て、前記境界表示信号の1または複数次元を指示するタ
    イル形状信号を発生するためのタイル構築ないし形成手
    段を具備し、 B.前記タイル化シーケンスが、前記メモリ手段に記憶
    されるデータ片への書込み形式のアクセスのための1ま
    たは複数の命令を含み、 C.前記メモリ手段が、 i)各々前記プロセッシングユニットの関連するもに結合
    されて、データおよび命令の少なくとも一方を記憶する
    ための複数のメモリ要素と、 ii) 前記メモリ要素に結合されて、メモリ間において情
    報を選択的に転送するためのメモリ管理手段を具備し、 iii)前記次タイル手段が、前記境界表示信号を前記タイ
    ル形状信号の関数として発生するための手段を具備する
    請求項1記載のディジタルデータ処理装置。
  3. 【請求項3】 前記タイル形成手段が、対応するタイル
    の異なるものの実行中書込み形式のアクセスを受ける個
    々のデータ片の数を最小化する前記境界表示信号の次元
    を指示する前記タイル形状信号を発生するための手段を
    具備する請求項2記載のディジタルデータ処理装置。
  4. 【請求項4】 前記タイル形成手段が、プロセッシング
    ユニットの複数の現在実行中のプロセッシングユニット
    による書込み形式のアクセスを受ける個々のデータ片の
    数を最小化する前記境界表示信号の次元を指示する前記
    タイル形状信号を発生するための手段を具備する請求項
    2記載のディジタルデータ処理装置。
  5. 【請求項5】 A.第1および第2のタイルが、 i) 選択されたデータ片へ書込み形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に読
    取り形式でアクセスする第2タイル内の命令と、 ii) 選択されたデータ片へ読取り形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に書
    込み形式でアクセスする第2タイル内の命令と、 iii)選択されたデータ片へ書込み形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に書
    込み形式でアクセスする第2タイル内の命令のいずれか
    を含み、 B.前記タイル形成手段が、前記選択されたデータ片の
    それぞれのアクセスに関して、前記第1タイルの実行へ
    の前記第2タイルの実行の依存性を最小化する前記境界
    表示信号の次元を指示するタイル形状信号を発生するた
    めの手段を具備する請求項2記載のディジタルデータ処
    理装置。
  6. 【請求項6】 前記タイル形成手段が、異なるプロセッ
    シングユニットによる逐次のタイルの実行中、読取り形
    式および書込み形式のいずれかのアクセスを受けるデー
    タの転送を最小化するタイル実行シーケンスを表わす親
    和性信号を発生するための手段を具備する請求項2記載
    のディジタルデータ処理装置。
  7. 【請求項7】 前記タイル形成手段が、下記のものの少
    なくとも一つの関数として、すなわち、 i) 前記プロセッシングユニットの異なるものによる前
    記のタイルの逐次の実行中、読取り形式または書込み形
    式のいずれかのアクセスを受けるデータの転送を最小化
    するタイル実行順序を表示する親和性信号と、 ii) 前記タイル化シーケンスの依存性の方向と、 iii)前記タイル化シーケンスの実行と関連する処理コス
    トと vi) 前記反復スペースのサイズと、 v) 前記タイル化シーケンスの実行に利用可能なプロセ
    ッシングユニットの数と、 vi) タイル化シーケンスが、複数のタイルシーケンスに
    より定められる反復スペース内で実行されるべきである
    ことを指示する親和性領域信号の少なくとも一つの関数
    として前記タイル形状信号を発生するための手段を具備
    する請求項2記載のディジタルデータ処理装置。
  8. 【請求項8】 A.前記次タイル手段が、下記のものの
    少なくとも一つの関数として、すなわち、 i)前記境界表示信号の1または複数の次元を指示するタ
    イル−形状信号、 ii) タイルを前記プロセッシングユニットに割当てる順
    序および態様の少なくとも一方を指示するタイル戦略信
    号と、 iii)タイル化シーケンスが、複数のタイルシーケンスに
    より定められる反復スペース内で実行されるべきである
    ことを指示する親和性領域信号の少なくとも一つの関数
    として前記境界表示信号の逐次の信号を発生し、 B.前記タイル戦略信号を発生するためのタイル戦略手
    段を含み、 C.前記反復スペースが複数のインデックスにより定め
    られる 請求項1記載のディジタルデータ処理装置。
  9. 【請求項9】 前記タイル戦略手段が、 i)前記インデックスの一つに関しては前記実行に割り付
    けられるプロセッシンセルグの数で反復スペースを割っ
    て、これらのインデックスの他のものに関しては反復ス
    ペースにわたる、境界表示信号を指示するタイル形状信
    号を発生し、 ii) タイルの各々が利用可能なプロセッシングユニット
    の対応するものにより実行せしめられるように、それぞ
    れのタイルの発生を指示するタイル戦略信号を発生する
    ための選択的に作動可能なスライス手段を具備し、しか
    して、それぞれのタイルの数が利用可能なプロセッシン
    グユニットの数に等しく、それらのタイルが実質的に大
    きさが等しい請求項8記載のディジタルデータ処理装
    置。
  10. 【請求項10】 前記タイル戦略手段が、 i)任意の前記タイルの実行中アクセスを受けるデータが
    他の前記タイルの実行中変更されるものに依存しない場
    合、および ii) 前記一つのタイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合、前記スライス手段を作動
    させるための手段を具備する請求項9記載のディジタル
    データ処理装置。
  11. 【請求項11】 利用者供給信号に応答して前記スライ
    ス手段を作動させるための手段を具備する請求項9記載
    のディジタルデータ処理装置。
  12. 【請求項12】 前記戦略手段が、 i)反復スペースを全前記インデックスに沿う固定長の増
    分で分割する境界表示信号を発生し、かつ ii) 各利用可能なプロセッシングユニットと関連する数
    値的識別子、および各タイルと関連する数値的識別子の
    モジュラスに基づき、それぞれのタイルの割当てを指示
    するタイル戦略信号を発生するための選択的に作動可能
    なモジュロ手段を具備する請求項8記載のディジタルデ
    ータ処理装置。
  13. 【請求項13】 前記タイル戦略手段が、 i)任意の前記タイルの実行中アクセスを受けるデータ
    が、他の前記タイルの実行中変更されるものに依存しな
    い場合、 ii) 一つの前記タイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合、 iii)複数のタイルを実行するプロセッシングユニットに
    よる読取り形式または書込み形式のいずれかのアクセス
    を受けるデータの再使用が、前記反復スペースのサイズ
    の変化の存在下においてさえ最大化される場合に、前記
    モジュロ手段を作動させる手段を具備する請求項12記
    載のディジタルデータ処理装置。
  14. 【請求項14】 利用者供給信号に応答して前記モジュ
    ロ手段を作動させるための手段を具備する請求項12記
    載のディジタルデータ処理装置。
  15. 【請求項15】 前記タイル戦略手段が、 i)反復スペースを1または複数のインデックスに沿って
    分割して境界表示信号を発生し、かつ ii) タイルの依存性方向にしたがって、それぞれのタイ
    ルの発生の順序を指示するタイル戦略信号を発生するた
    めの選択的に作動可能なウェーブフロント手段を具備
    し、しかして少なくとも選択されたタイルの実行中アク
    セスを受けるデータが、他のタイルの実行中変更される
    ものに依存せず、かつこれらのタイルが前記依存性方向
    を有している請求項8記載のディジタルデータ処理装
    置。
  16. 【請求項16】 前記タイル戦略手段が、少なくとも一
    つの前記タイルの実行中アクセスを受けるデータが、他
    の前記タイルの実行中変更されるものに依存する場合、
    前記ウェーブフロント手段を作動させるための手段を具
    備する請求項15記載のディジタルデータ処理装置。
  17. 【請求項17】 利用者供給信号に応答して前記ウェー
    ブフロント手段を作動させるための手段を具備する請求
    項15記載のディジタルデータ処理装置。
  18. 【請求項18】 前記戦略手段が、 i)反復スペースを全前記インデックスに沿う固定長の増
    分で分割する境界表示信号を発生し、かつ ii) 各利用可能なプロセッシングユニットと関連する数
    値的識別子および各ファイルと関連する数値的識別子の
    モジュラスと、その依存性の方向とに基づいてそれぞれ
    のタイルの割当てを指示するタイル戦略信号を発生する
    ための選択的に作動可能なモジュロ/ウェーブフロント
    手段を具備し、しかして少なくとも選択されたタイルの
    実行中アクセスを受けるデータが1または複数の他のタ
    イルの実行中変更されるものに依存し、かつ前記タイル
    が前記の依存性方向を有している請求項8記載のディジ
    タルデータ処理装置。
  19. 【請求項19】 前記タイル戦略手段が、 i)すなくとも一つの前記タイルの実行中アクセスを受け
    るデータが、1または複数の他の前記タイルの実行中変
    更されるものに依存し、かつ ii) 複数のタイルを実行するプロセッシングユニットに
    よる読取り形式または書込み形式のいずれかのアクセス
    を受けるデータの再使用が、前記反復スペースのサイズ
    の変化の存在下においてさえ最大化される場合に、前記
    モジュロ/ウェーブフロント手段を作動する手段を具備
    する請求項18記載のディジタルデータ処理装置。
  20. 【請求項20】 利用者供給信号に応答して前記モジュ
    ロ/ウェーブフロント手段を作動させるための手段を具
    備する請求項18記載のディジタルデータ処理装置。
  21. 【請求項21】 前記タイル戦略手段が、 i)反復スペースを全前記インデックスに沿う固定長の増
    分で分割する境界表示信号を発生し、かつ ii) 前記プロセッシングユニットによる利用可能性を表
    わす前記信号に応答して、到着順作用の方式で、それぞ
    れのタイルの発生の順序を指示するタイル戦略信号を発
    生するための選択的に作動可能なGRAB手段を具備し、し
    かして任意のタイルの実行中アクセスを受けるデータ
    が、他のタイルの実行中変更されるものに依存しない請
    求項8記載のディジタルデータ処理装置。
  22. 【請求項22】 前記タイル戦略手段が、 i)前記タイルを実行するプロセッシングユニット間のロ
    ード平衡化を容易にし、かつ ii) 一つの前記タイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合に、前記GRAB手段を作動す
    るための手段を具備する請求項21記載のディジタルデ
    ータ処理装置。
  23. 【請求項23】 前記ウェーブフロント手段を作動させ
    るための利用者応答手段を具備する請求項21記載のデ
    ィジタルデータ処理装置。
  24. 【請求項24】 A.同じデータにアクセスする1また
    は複数の反復シーケンスを表わす親和性領域を提供する
    ための手段と、 B.下記の信号の1または複数、すなわち i)親和性領域内の1または複数のタイル化シーケンスが
    実行されるべき反復スペースを表わす信号と、 ii) 境界表示信号の1または複数の次元を表わすタイル
    形状信号と、 iii)タイルを前記プロセッシングユニットに割り当てる
    順序および態様の少なくとも一方を指示するタイル戦略
    信号と、 vi) 実行中読取り形式または書込み形式のいずれかのア
    クセスを受けるデータの転送を最小化するように、親和
    性領域内のタイル化シーケンスが実行されるべき一組
    (セット)の プロセッシングユニットを表示するチー
    ム信号の1または複数を発生するための親和性領域形成
    手段を具備する請求項1記載のディジタルデータ処理装
    置。
  25. 【請求項25】 前記親和性領域形成手段が、該親和性
    領域にあるタイルシーケンスの1または複数の反復スペ
    ースを包含するように、前記反復スペースを画定する手
    段を具備する請求項24記載のディジタルデータ処理装
    置。
  26. 【請求項26】 反復シーケンスを含むプログラムをソ
    ースコード形式で表わすプログラム信号を、複数の並列
    ディジタルデータプロセッシングユニットにより実行の
    ためロードするに適当な目的コード形式の命令のコード
    シーケンスに翻訳するための形式のコンパイラであっ
    て、前記反復シーケンスの依存性方向を決定し、それを
    表わす信号を発生するための依存性手段を具備するもの
    において、ソースコード形式の前記反復シーケンスに応
    答して、目的コード形式で反復シーケンスを表わすタイ
    ル化された命令シーケンスを生成し、かつその反復シー
    ケンスおよび0、1または複数の利用者特定信号に応答
    して、前記タイル化シーケンスを実行すべき1または複
    数のタイルに対して境界を生成するためのフレームワー
    クを表わす1または複数の信号を発生するためのタイル
    化手段を具備することを特徴とするコンパイラ。
  27. 【請求項27】 前記反復シーケンス内の命令および前
    記依存性方向表示信号に応答して、前記タイル化シーケ
    ンスを実行すべき反復スペース内の1または複数のイン
    デックスを表わす信号を発生するための並列化手段を具
    備する請求項26記載のコンパイラ。
  28. 【請求項28】 A.前記反復シーケンスの利用者特定
    インデックシングを表わす信号を表わす信号を受け入れ
    る入力手段を具備し、 B.前記入力手段および前記並列手段結合される手段
    が、前記利用者特定インデックシング信号を前記並列化
    手段により発生される信号と比較し、かつ少なくとも選
    択された不一値の場合通知信号を発生するための手段を
    具備する請求項27記載のコンパイラ。
  29. 【請求項29】 前記並列化手段に結合されて、前記タ
    イル化シーケンスの並列実行を最適化するに際してラン
    時に使用するための1または複数の信号を発生する最適
    化手段を具備する請求項27記載のコンパイラ。
  30. 【請求項30】 前記最適化手段が、複数タイルで実行
    中読取りまたは書込みのいずれかの形式のアクセスを受
    けるデータの転送を最小化するタイル実行順序を表わす
    親和性信号を発生するための手段を具備する請求項29
    記載のコンパイラ。
  31. 【請求項31】 前記最適化手段が、同じデータにアク
    セスする1または複数のの反復シーケンスを表わす親和
    性領域信号を発生するための手段を具備する請求項29
    記載のコンパイラ。
  32. 【請求項32】 A.利用者特定親和性領域を表わす信
    号を受け入れる入力手段を具備し、 B.前記入力手段および前記並列手段に結合される手段
    が、前記利用者特定親和性領域信号を前記最適化手段に
    より発生される信号と比較し、かつ少なくとも選択され
    た不一値の場合通知信号を発生するための手段を具備す
    る請求項31記載のコンパイラ。
  33. 【請求項33】 前記最適化手段が、前記タイル化シー
    ケンスの実行と関連する処理コストの評価値を表わす信
    号を発生するための手段を具備する請求項29記載のコ
    ンパイラ。
  34. 【請求項34】 前記ソースコード形式の前記反復シー
    ケンスを、コードディスパッチングサブルーチンに対す
    る呼びを表わす命令で置き代えるための呼び生成手段を
    具備する請求項26記載のコンパイラ。
  35. 【請求項35】 前記呼び表示命令を実行して、前記プ
    ロセッシングユニットによる前記タイル化シーケンスの
    実行を開始するためのランタイム手段を具備する請求項
    34記載のコンパイラ。
  36. 【請求項36】 各々命令を実行する複数のプロセッシ
    ングユニットと、該プロセッシングユニットに結合され
    て、データおよび命令の少なくとも一方を記録するため
    の記憶手段と、前記プロセッシングユニットに結合され
    てプロセッシング間で情報を転送するためのプロセッサ
    間通信手段とを備える形式の並列プロセッサディジタル
    データ処理装置を操作する方法において、 A.反復シーケンスを表わすタイル化命令シーケンスを
    記憶し、 B.各プロセッサごとに、前記反復シーケンスと関連す
    る反復スペースの一部(タイルと称される)にわたり前
    記タイル化シーケンスを実行するのに利用できることを
    信号し、 C.これらプロセッシングユニットによる前記信号の少
    なくとも選択された各信号応答して、前記タイル化シー
    ケンスを実行すべきタイルの境界を表示する信号を発生
    し、しかして前記各タイルはいずれの他のタイルとも重
    複しておらず、全前記タイルは一緒に全反復空間をカバ
    ーしているものとし、そして D.1または複数の対応するタイルの実行中アクセスを
    受けるデータの局所性を最大化しかつ前記実行中前記デ
    ータへのアクセスの競合を最小化するように前記境界表
    示信号を発生し、 E.そのプロセッシングユニットによる前記信号に応答
    して発生される境界応答信号に応答して、対応するタイ
    ルにわたり前記タイル化信号を実行する諸段階を含む反
    復命令シーケンスを処理するプロセスを含むことを特徴
    とする並列プロセッサディジタルデータ処理装置操作方
    法。
  37. 【請求項37】 A.対応するタイル間の依存性を考慮
    して、前記境界表示信号の1または複数次元を指示する
    タイル形状信号を発生し、 B.前記タイル化シーケンスが、前記メモリ手段に記憶
    されるデータ片への書込み形式のアクセスのための1ま
    たは複数の命令を含み、 C.前記メモリ手段が、各々前記プロセッシングユニッ
    トの関連するもに結合されて、データおよび命令の少な
    くとも一方を記憶するための複数のメモリ要素を提供
    し、かつ該メモリ要素において情報を選択的に転送し、 D.前記境界表示信号を前記タイル形状信号の関数とし
    て発生することを含む請求項36記載のディジタルデー
    タ処理装置操作方法。
  38. 【請求項38】 対応するタイルの異なるものの実行中
    書込み形式のアクセスを受ける個々のデータ片の数を最
    小化する前記境界表示信号の次元を指示する前記タイル
    形状信号を発生することを含む請求項37記載のディジ
    タルデータ処理装置操作方法。
  39. 【請求項39】 プロセッシングユニットの複数の現在
    実行中のプロセッシングユニットによる書込み形式のア
    クセスを受ける個々のデータ片の数を最小化する前記境
    界表示信号の次元を指示する前記タイル形状信号を発生
    することを含む請求項37記載のディジタルデータ処理
    装置操作方法。
  40. 【請求項40】 A.第1および第2のタイルが、 i) 選択されたデータ片へ書込み形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に読
    取り形式でアクセスする第2タイル内の命令と、 ii) 選択されたデータ片へ読取り形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に書
    込み形式でアクセスする第2タイル内の命令と、 iii)選択されたデータ片へ書込み形式でアクセスする第
    1タイル内の命令、および続いてその同じデータ片に書
    込み形式でアクセスする第2タイル内の命令のいずれか
    を含み、 B.前記選択されたデータ片のそれぞれのアクセスに関
    して、前記第1タイルの実行への前記第2タイルの実行
    の依存性を最小化する前記境界表示信号の次元を指示す
    るタイル形状信号を発生することを含む請求項37記載
    のディジタルデータ処理装置操作方法。
  41. 【請求項41】 異なるプロセッシングユニットによる
    逐次のタイルの実行中、読取り形式および書込み形式の
    いずれかのアクセスを受けるデータの転送を最小化する
    タイル実行シーケンスを表わす親和性信号を発生するこ
    とを含む請求項37記載のディジタルデータ処理装置操
    作方法。
  42. 【請求項42】 下記のものの少なくとも一つの関数と
    して、すなわち、 i) 前記プロセッシングユニットの異なるものによる前
    記のタイルの逐次の実行中、読取り形式または書込み形
    式のいずれかのアクセスを受けるデータの転送を最小化
    するタイル実行順序を表示する親和性信号と、 ii) 前記タイル化シーケンスの依存性の方向と、 iii)前記タイル化シーケンスの実行と関連する処理コス
    トと、 vi) 前記反復スペースのサイズと、 v) 前記タイル化シーケンスの実行に利用可能なプロセ
    ッシングユニットの数と、 vi) タイル化シーケンスが、複数のタイルシーケンスに
    より定められる反復スペース内で実行されるべきである
    ことを指示する親和性領域信号の少なくとも一つの関数
    として前記タイル形状信号を発生することを含む請求項
    37記載のディジタルデータ処理装置操作方法。
  43. 【請求項43】 A.下記のものの少なくとも一つの関
    数として、すなわち、 i)前記境界表示信号の1または複数の次元を指示するタ
    イル−形状信号、 ii) タイルを前記プロセッシングユニットに割り当てる
    順序および態様の少なくとも一方を指示するタイル戦略
    信号と、 iii)タイル化シーケンスが、複数のタイルシーケンスに
    より定められる反復スペース内で実行されるべきである
    ことを指示する親和性領域信号の少なくとも一つの関数
    として前記境界表示信号の逐次の信号を発生し、 B.前記タイル戦略信号を発生し、 C.前記反復スペースが複数のインデックスにより定め
    られる請求項36記載のディジタルデータ処理装置操作
    方法。
  44. 【請求項44】 i)前記インデックスの一つに関しては
    前記実行に割り付けられるプロセッシンセルグの数で反
    復スペースを割って、これらのインデックスの他のもの
    に関しては反復スペースにわたる、境界表示信号を指示
    するタイル形状信号を発生し、 ii) タイルの各々が利用可能なプロセッシングユニット
    の対応するものにより実行せしめられるように、それぞ
    れのタイルの発生を指示するタイル戦略信号を発生する
    ための選択的に作動可能なスライス手段を提供すること
    を含み、しかしてそれぞれのタイルの数が利用可能なプ
    ロセッシングユニットの数に等しく、それらのタイルが
    実質的に大きさが等しい請求項43記載のディジタルデ
    ータ処理装置操作方法。
  45. 【請求項45】 前記タイル戦略手段が、 i)任意の前記タイルの実行中アクセスを受けるデータが
    他の前記タイルの実行中変更されるものに依存しない場
    合、および ii) 前記一つのタイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合、前記スライス手段を作動
    させることを含む請求項44記載のディジタルデータ処
    理装置操作方法。
  46. 【請求項46】 利用者供給信号に応答して前記スライ
    ス手段を作動させることを含む請求項44記載のディジ
    タルデータ処理装置操作方法。
  47. 【請求項47】 i)反復スペースを全前記インデックス
    に沿う固定長の増分で分割する境界表示信号を発生し、
    かつ ii) 各利用可能なプロセッシングユニットと関連する数
    値的識別子、および各タイルと関連する数値的識別子の
    モジュラスに基づき、それぞれのタイルの割当てを指示
    するタイル戦略信号を発生する諸段階を実行するための
    選択的に作動可能なモジュロ手段を提供することを含む
    請求項43記載のディジタルデータ処理装置操作方法。
  48. 【請求項48】 i)任意の前記タイルの実行中アクセス
    を受けるデータが、他の前記タイルの実行中変更される
    ものに依存しない場合、 ii) 一つの前記タイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合、 iii)複数のタイルを実行するプロセッシングユニットに
    よる読取り形式または書込み形式のいずれかのアクセス
    を受けるデータの再使用が、前記反復スペースのサイズ
    の変化の存在下においてさえ最大化される場合に、前記
    モジュロ手段を作動させることを含む請求項47記載の
    ディジタルデータ処理装置操作方法。
  49. 【請求項49】 利用者供給信号に応答して前記モジュ
    ロ手段を作動させることを含む請求項47記載のディジ
    タルデータ処理装置操作方法。
  50. 【請求項50】 i)反復スペースを1または複数のイン
    デックスに沿って分割して境界表示信号を発生し、かつ ii) タイルの依存性方向にしたがって、それぞれのタイ
    ルの発生の順序を指示するタイル戦略信号を発生する諸
    段階を実行するための選択的に作動可能なウェーブフロ
    ント手段を提供することを含み、しかして少なくとも選
    択されたタイルの実行中アクセスを受けるデータが、他
    のタイルの実行中変更されるものに依存せず、かつこれ
    らのタイルが前記依存性方向を有している請求項43記
    載のディジタルデータ処理装置操作方法。
  51. 【請求項51】 前記タイル戦略手段が、少なくとも一
    つの前記タイルの実行中アクセスを受けるデータが、他
    の前記タイルの実行中変更されるものに依存する場合、
    前記ウェーブフロント手段を作動させための手段を含む
    請求項50記載のディジタルデータ処理装置操作方法。
  52. 【請求項52】 利用者供給信号に応答して前記ウェー
    ブフロント手段を作動させることを含む請求項50記載
    のディジタルデータ処理装置操作方法。
  53. 【請求項53】 i)反復スペースを全前記インデックス
    に沿う固定長の増分で分割する境界表示信号を発生し、
    かつ ii) 各利用可能なプロセッシングユニットと関連する数
    値的識別子および各ファイルと関連する数値的識別子の
    モジュラスと、その依存性の方向とに基づいてそれぞれ
    のタイルの割当てを指示するタイル戦略信号を発生する
    諸段階を実行するための選択的に作動可能なモジュロ/
    ウェーブフロント手段を提供することを含み、しかして
    少なくとも選択されたタイルの実行中アクセスを受ける
    データが1または複数の他のタイルの実行中変更される
    ものに依存し、かつ前記タイルが前記の依存性方向を有
    している請求項43記載のディジタルデータ処理装置操
    作方法。
  54. 【請求項54】 i)すなくとも一つの前記タイルの実行
    中アクセスを受けるデータが、1または複数の他の前記
    タイルの実行中変更されるものに依存し、かつ ii) 複数のタイルを実行するプロセッシングユニットに
    よる読取り形式または書込み形式のいずれかのアクセス
    を受けるデータの再使用が、前記反復スペースのサイズ
    の変化の存在下においてさえ最大化される場合に、前記
    モジュロ/ウェーブフロント手段を作動することを含む
    請求項53記載のディジタルデータ処理装置操作方法。
  55. 【請求項55】 利用者供給信号に応答して前記モジュ
    ロ/ウェーブフロント手段を作動させることを含む請求
    項53記載のディジタルデータ処理装置操作方法。
  56. 【請求項56】 i)反復スペースを全前記インデックス
    に沿う固定長の増分で分割する境界表示信号を発生し、
    かつ ii) 前記プロセッシングユニットによる利用可能性を表
    わす前記信号に応答して、到着順作用の方式で、それぞ
    れのタイルの発生の順序を指示するタイル戦略信号を発
    生するための選択的に作動可能なGRAB手段を提供するこ
    とを含み、しかして任意のタイルの実行中アクセスを受
    けるデータが、他のタイルの実行中変更されるものに依
    存しない請求項43記載のディジタルデータ処理装置操
    作方法。
  57. 【請求項57】 前記タイル戦略手段が、 i)前記タイルを実行するプロセッシングユニット間のロ
    ード平衡化を容易にし、かつ ii) 一つの前記タイルによる読取り形式および書込み形
    式のいずれかのアクセスを受ける相当量のデータが、他
    の前記タイルによる読取り形式および書込みのいずれか
    のアクセスをも受けない場合に、前記GRAB手段を作動す
    るための手段を含む請求項56記載のディジタルデータ
    処理装置。
  58. 【請求項58】 利用者供給信号に応答して前記ウェー
    ブフロント手段を作動させることを含む請求項56記載
    のディジタルデータ処理装置操作方法。
  59. 【請求項59】 A.同じデータにアクセスする1また
    は複数の反復シーケンスを表わす親和性領域を提供し、 B.下記の信号の1または複数、すなわち i)親和性領域内の1または複数のタイル化シーケンスが
    実行されるべき反復スペースを表わす信号と、 ii) 境界表示信号の1または複数の次元を表わすタイル
    形状信号と、 iii)タイルを前記プロセッシングユニットに割り当てる
    順序および態様の少なくとも一方を指示するタイル戦略
    信号と、 vi) 実行中読取り形式または書込み形式のいずれかのア
    クセスを受けるデータの転送を最小化するように、親和
    性領域内のタイル化シーケンスが実行されるべき一組
    (セット)のプロセッシングユニットを表示するチーム
    信号の1または複数を発生することを含む請求項36記
    載のディジタルデータ処理装置操作方法。
  60. 【請求項60】 前記親和性領域形成手段が、該親和性
    領域にあるタイルシーケンスの1または複数の反復スペ
    ースを包含するように、前記反復スペースを画定する手
    段を含む請求項59記載のディジタルデータ処理装置。
  61. 【請求項61】 反復シーケンスを含むプログラムをソ
    ースコード形式で表わすプログラム信号を、複数の並列
    ディジタルデータプロセッシングユニットにより実行の
    ためロードするに適当な目的コード形式の命令のコード
    シーケンスに翻訳するための形式のコンパイラであっ
    て、前記反復シーケンスの依存性方向を決定し、それを
    表わす信号を発生するための依存性手段を具備するもの
    操作方法において、ソースコード形式の前記反復シーケ
    ンスに応答して、目的コード形式で反復シーケンスを表
    わすタイル化された命令シーケンスを生成し、かつその
    反復シーケンスおよび0、1または複数の利用者特定信
    号に応答して、前記タイル化シーケンスを実行すべき1
    または複数のタイルに対して境界を生成するためのフレ
    ームワークを表わす1または複数の信号を発生する諸段
    階を含むことを特徴とするコンパイラ操作方法。
  62. 【請求項62】 前記反復シーケンス内の命令および前
    記依存性方向表示信号に応答して、前記タイル化シーケ
    ンスを実行すべき反復スペース内の1または複数のイン
    デックスを表わす信号を発生することを含む請求項61
    記載のコンパイラ操作方法。
  63. 【請求項63】 A.前記反復シーケンスの利用者特定
    インデックシングを表わす信号を表わす信号を受け入
    れ、 B.前記利用者特定インデックシング信号を前記方法に
    より発生される信号と比較し、かつ少なくとも選択され
    た不一値の場合通知信号を発生することを含む請求項6
    2記載のコンパイラ操作方法。
  64. 【請求項64】 前記タイル化シーケンスの並列実行を
    最適化するに際してラン時に使用するための1または複
    数の信号を発生することを含む請求項62記載のコンパ
    イラ操作方法。
  65. 【請求項65】 複数タイルで実行中読取りまたは書込
    みのいずれかの形式のアクセスを受けるデータの転送を
    最小化するタイル実行順序を表わす親和性信号を発生す
    ることを含む請求項64記載のコンパイラ操作方法。
  66. 【請求項66】 最適化するための手段が、同じデータ
    にアクセスする1または複数の反復シーケンスを表わす
    親和性領域信号を発生するための手段を具備する請求項
    64記載のコンパイラ操作方法。
  67. 【請求項67】 A.利用者特定親和性領域を表わす信
    号を受け入れ、 B.前記利用者特定親和性領域信号を前記方法により発
    生される信号と比較し、かつ少なくとも選択された不一
    値の場合通知信号を発生することを含む請求項66記載
    のコンパイラ操作方法。
  68. 【請求項68】 前記タイル化シーケンスの実行と関連
    する処理コストの評価値を表わす信号を発生することを
    含む請求項64記載のコンパイラ操作方法。
  69. 【請求項69】 前記ソースコード形式の前記反復シー
    ケンスを、コードディスパッチングサブルーチンに対す
    る呼びを表わす命令で置き代えることを含む請求項61
    記載のコンパイラ操作方法。
  70. 【請求項70】 前記呼び表示命令を実行して、前記プ
    ロセッシングユニットによる前記タイル化シーケンスの
    実行を開始することを含む請求項69記載のコンパイラ
    操作方法。
JP4273479A 1991-09-20 1992-09-18 タイル化を利用するための並列処理装置および方法 Withdrawn JPH05298272A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US76350791A 1991-09-20 1991-09-20
US763507 1991-09-20

Publications (1)

Publication Number Publication Date
JPH05298272A true JPH05298272A (ja) 1993-11-12

Family

ID=25068020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4273479A Withdrawn JPH05298272A (ja) 1991-09-20 1992-09-18 タイル化を利用するための並列処理装置および方法

Country Status (6)

Country Link
US (1) US5535393A (ja)
EP (1) EP0533445B1 (ja)
JP (1) JPH05298272A (ja)
AT (1) ATE211275T1 (ja)
CA (1) CA2078315A1 (ja)
DE (1) DE69232300T2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502029A (ja) * 2004-03-16 2008-01-24 テクノロジー プロパティーズ リミテッド コンピュータ・プロセッサ・アレイ
WO2013018184A1 (ja) * 2011-07-29 2013-02-07 富士通株式会社 割当方法、およびマルチコアプロセッサシステム
JP2013539888A (ja) * 2010-10-12 2013-10-28 マイクロソフト コーポレーション タイルコミュニケーションオペレーター
US8930929B2 (en) 2010-10-21 2015-01-06 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing a nested loop
US9395957B2 (en) 2010-12-22 2016-07-19 Microsoft Technology Licensing, Llc Agile communication operator
US9430204B2 (en) 2010-11-19 2016-08-30 Microsoft Technology Licensing, Llc Read-only communication operator
US9507568B2 (en) 2010-12-09 2016-11-29 Microsoft Technology Licensing, Llc Nested communication operator

Families Citing this family (296)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0746816B1 (en) * 1993-08-03 2001-10-24 Sun Microsystems, Inc. Flexible multi-platform partitioning for computer applications
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
JP3444671B2 (ja) * 1994-11-08 2003-09-08 富士通株式会社 並列コード変換処理方法とそのシステム
US5815715A (en) * 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5822588A (en) * 1995-06-09 1998-10-13 Sun Microsystem, Inc. System and method for checking the use of synchronization locks in a multi-threaded target program
JP3095163B2 (ja) * 1995-07-19 2000-10-03 株式会社日立製作所 自動ログオン機能の制御方法
US5634056A (en) * 1995-10-06 1997-05-27 Runtime Design Automation Run time dependency management facility for controlling change propagation utilizing relationship graph
US6345311B1 (en) * 1995-12-27 2002-02-05 International Business Machines Corporation Method and system of dynamically moving objects between heterogeneous execution environments
US5774728A (en) * 1995-12-27 1998-06-30 International Business Machines Corporation Method and system for compiling sections of a computer program for multiple execution environments
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6021274A (en) * 1996-12-19 2000-02-01 Raytheon Company Automated data distribution system and method for massively parallel processes
US5860003A (en) * 1997-02-28 1999-01-12 Mti Technology, Inc. I/O controller software with each I/O command having a plurality of nets, each with a group of threads
US6226790B1 (en) * 1997-02-28 2001-05-01 Silicon Graphics, Inc. Method for selecting optimal parameters for compiling source code
US5937194A (en) * 1997-03-12 1999-08-10 International Business Machines Corporation Method of, system for, and article of manufacture for providing a generic reduction object for data parallelism
US6237134B1 (en) 1997-03-12 2001-05-22 International Business Machines Corporation Method of, system for, and article of manufacture for providing a generic adaptor for converting from a non-future function pointer to a future function object
US5987255A (en) * 1997-03-12 1999-11-16 International Business Machines Corporation Method of, system for, and article of manufacture for providing a generic adaptor for converting from a sequential iterator to a pre-thread parallel iterator
US5991764A (en) * 1997-03-12 1999-11-23 International Business Machines Corporation Data structure specifying differing fan-in tree and fan-out tree computation patterns supporting a generic reduction object for data parallelism
US6567976B1 (en) 1997-03-20 2003-05-20 Silicon Graphics, Inc. Method for unrolling two-deep loops with convex bounds and imperfectly nested code, and for unrolling arbitrarily deep nests with constant bounds and imperfectly nested code
US5946493A (en) * 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions
US5953531A (en) * 1997-07-25 1999-09-14 International Business Machines Corporation Method of, system for, and computer program product for minimizing loop execution time by optimizing block/tile sizes
US6601084B1 (en) * 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
US5991792A (en) * 1998-01-02 1999-11-23 International Business Machines Corporation Method, apparatus and computer program product for dynamically managing a thread pool of reusable threads in a computer system
JPH11259437A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6106575A (en) * 1998-05-13 2000-08-22 Microsoft Corporation Nested parallel language preprocessor for converting parallel language programs into sequential code
US6088511A (en) * 1998-05-13 2000-07-11 Microsoft Corporation Nested parallel 2D Delaunay triangulation method
US6604122B1 (en) 1998-11-03 2003-08-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for evaluating a data processing request performed by distributed processes
US6463580B1 (en) * 1998-11-18 2002-10-08 Intel Corporation Parallel processing utilizing highly correlated data values
US6433802B1 (en) * 1998-12-29 2002-08-13 Ncr Corporation Parallel programming development environment
JP2000207223A (ja) * 1999-01-12 2000-07-28 Matsushita Electric Ind Co Ltd 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
JP3946393B2 (ja) * 1999-10-19 2007-07-18 株式会社東芝 階層構造をもつ並列計算機
JP3608993B2 (ja) * 1999-11-10 2005-01-12 富士通株式会社 コンパイラ装置及びコンパイラプログラムを記録した記録媒体
JP2001273313A (ja) * 2000-01-19 2001-10-05 Fuji Xerox Co Ltd プロセス記述装置および方法ならびにプロセス分類方法
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US8799138B2 (en) * 2000-04-10 2014-08-05 Stikine Technology, Llc Routing control for orders eligible for multiple markets
US7813991B1 (en) 2000-04-10 2010-10-12 Christopher Keith Automated trading negotiation protocols
US7472087B2 (en) 2000-04-10 2008-12-30 Stikine Technology, Llc Trading program for interacting with market programs on a platform
US8775294B1 (en) 2000-04-10 2014-07-08 Stikine Technology, Llc Automated linked order processing
US8296215B1 (en) * 2000-04-10 2012-10-23 Stikine Technology, Llc Trading system with elfs and umpires
US8249975B1 (en) 2000-04-10 2012-08-21 Stikine Technology, Llc Automated first look at market events
US7908198B1 (en) 2000-04-10 2011-03-15 Stikine Technology, Llc Automated preferences for market participants
US7774246B1 (en) 2000-04-10 2010-08-10 Christopher Keith Automated price setting for paired orders
US7792733B1 (en) 2000-04-10 2010-09-07 Christopher Keith Automated synchronization of orders represented in multiple markets
US7882007B2 (en) * 2000-04-10 2011-02-01 Christopher Keith Platform for market programs and trading programs
US7539638B1 (en) 2000-04-10 2009-05-26 Stikine Technology, Llc Representation of order in multiple markets
US6643630B1 (en) 2000-04-13 2003-11-04 Koninklijke Philips Electronics N.V. Apparatus and method for annotating an intermediate representation of an application source code
US6598221B1 (en) 2000-04-13 2003-07-22 Koninklijke Philips Electronics N.V. Assembly code performance evaluation apparatus and method
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6708331B1 (en) * 2000-05-03 2004-03-16 Leon Schwartz Method for automatic parallelization of software
IL137085A (en) * 2000-06-29 2004-08-31 Eci Telecom Ltd Method for effective utilizing of shared resources in computerized systems
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
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US7055144B2 (en) * 2001-07-12 2006-05-30 International Business Machines Corporation Method and system for optimizing the use of processors when compiling a program
US20030037319A1 (en) * 2001-08-20 2003-02-20 Ankur Narang Method and apparatus for partitioning and placement for a cycle-based simulation system
US7069556B2 (en) * 2001-09-27 2006-06-27 Intel Corporation Method and apparatus for implementing a parallel construct comprised of a single task
JP2004021425A (ja) * 2002-06-13 2004-01-22 Hitachi Ltd コンパイラにおけるメモリ配置方式
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
US20040034858A1 (en) * 2002-08-14 2004-02-19 Kushlis Robert J. Programming a multi-threaded processor
US7765532B2 (en) * 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7603664B2 (en) * 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7222218B2 (en) 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7296256B2 (en) * 2003-10-20 2007-11-13 International Business Machines Corporation Method and apparatus for automatic modeling building using inference for IT systems
US7797683B2 (en) * 2003-12-29 2010-09-14 Intel Corporation Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
US7617496B2 (en) 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US7395419B1 (en) * 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7730456B2 (en) * 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
JP3901182B2 (ja) * 2004-06-30 2007-04-04 日本電気株式会社 プログラム並列化装置及びその方法並びにプログラム
US7318223B2 (en) * 2004-08-26 2008-01-08 International Business Machines Corporation Method and apparatus for a generic language interface to apply loop optimization transformations
US20060048118A1 (en) * 2004-08-30 2006-03-02 International Business Machines Corporation Method and apparatus for optimizing code with artificial statements
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US7779399B2 (en) * 2005-05-16 2010-08-17 Armorize Technologies, Inc. System and method for securing web application code and verifying correctness of software
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US7620945B1 (en) * 2005-08-16 2009-11-17 Sun Microsystems, Inc. Parallelization scheme for generic reduction
US7539689B2 (en) * 2005-12-19 2009-05-26 Sap Ag Bundling database
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US8284206B2 (en) 2006-03-14 2012-10-09 Transgaming, Inc. General purpose software parallel task engine
US7882498B2 (en) * 2006-03-31 2011-02-01 Intel Corporation Method, system, and program of a compiler to parallelize source code
US20070250681A1 (en) * 2006-04-10 2007-10-25 International Business Machines Corporation Independent programmable operation sequence processor for vector processing
US8032821B2 (en) * 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US7940926B2 (en) * 2006-06-08 2011-05-10 Novell, Inc. Cooperative encoding of data by pluralities of parties
US8250550B2 (en) * 2007-02-14 2012-08-21 The Mathworks, Inc. Parallel processing of distributed arrays and optimum data distribution
US8239846B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Device for performing parallel processing of distributed arrays
US8010954B2 (en) 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US8239845B2 (en) * 2007-02-14 2012-08-07 The Mathworks, Inc. Media for using parallel processing constructs
US8239844B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8255890B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Media for performing parallel processing of distributed arrays
US8255889B2 (en) * 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8776052B2 (en) * 2007-02-16 2014-07-08 International Business Machines Corporation Method, an apparatus and a system for managing a distributed compression system
US8112751B2 (en) * 2007-03-01 2012-02-07 Microsoft Corporation Executing tasks through multiple processors that process different portions of a replicable task
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US8046750B2 (en) * 2007-06-13 2011-10-25 Microsoft Corporation Disco: a simplified distributed computing library
US8091079B2 (en) * 2007-08-29 2012-01-03 International Business Machines Corporation Implementing shadow versioning to improve data dependence analysis for instruction scheduling
WO2009033248A1 (en) * 2007-09-10 2009-03-19 Novell, Inc. A method for efficient thread usage for hierarchically structured tasks
US8087010B2 (en) 2007-09-26 2011-12-27 International Business Machines Corporation Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework
US8087011B2 (en) * 2007-09-26 2011-12-27 International Business Machines Corporation Domain stretching for an advanced dual-representation polyhedral loop transformation framework
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US20090165007A1 (en) * 2007-12-19 2009-06-25 Microsoft Corporation Task-level thread scheduling and resource allocation
CN101582064B (zh) * 2008-05-15 2011-12-21 阿里巴巴集团控股有限公司 一种大数据量数据处理方法及系统
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
WO2010067377A2 (en) 2008-12-08 2010-06-17 Kpit Cummins Infosystems Ltd. Method for reorganizing tasks for optimization of resources
US8060857B2 (en) * 2009-01-31 2011-11-15 Ted J. Biggerstaff Automated partitioning of a computation for parallel or other high capability architecture
US8418155B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Generating parallel SIMD code for an arbitrary target architecture
US8549496B2 (en) * 2009-02-27 2013-10-01 Texas Tech University System Method, apparatus and computer program product for automatically generating a computer program using consume, simplify and produce semantics with normalize, transpose and distribute operations
US10127295B2 (en) * 2009-06-05 2018-11-13 Microsoft Technolofy Licensing, Llc Geographic co-location service for cloud computing
US8577892B2 (en) * 2009-06-05 2013-11-05 Microsoft Corporation Utilizing affinity groups to allocate data items and computing resources
US8539456B2 (en) * 2009-06-30 2013-09-17 Intel Corporation Automatic conversion of MPI source code programs into MPI thread-based programs
US8572359B2 (en) 2009-12-30 2013-10-29 International Business Machines Corporation Runtime extraction of data parallelism
US9696995B2 (en) * 2009-12-30 2017-07-04 International Business Machines Corporation Parallel execution unit that extracts data parallelism at runtime
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing
US8683185B2 (en) 2010-07-26 2014-03-25 International Business Machines Corporation Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set
CN102855131B (zh) * 2011-06-30 2016-01-13 国际商业机器公司 用于软件配置管理的装置和方法
US9830133B1 (en) 2011-12-12 2017-11-28 Significs And Elements, Llc Methods and apparatus for automatic communication optimizations in a compiler based on a polyhedral representation
US9165035B2 (en) 2012-05-10 2015-10-20 Microsoft Technology Licensing, Llc Differential dataflow
US9081953B2 (en) 2012-07-17 2015-07-14 Oracle International Corporation Defense against search engine tracking
US20140068581A1 (en) * 2012-08-30 2014-03-06 International Business Machines Corporation Optimized division of work among processors in a heterogeneous processing system
US9832068B2 (en) 2012-12-17 2017-11-28 Microsoft Technology Licensing, Llc Reachability-based coordination for cyclic dataflow
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US9176716B2 (en) * 2013-04-18 2015-11-03 Siemens Aktiengesellschaft Method and apparatus for exploiting data locality in dynamic task scheduling
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
US10181051B2 (en) 2016-06-10 2019-01-15 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10423996B2 (en) 2016-04-01 2019-09-24 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10452866B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10949170B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US12118121B2 (en) 2016-06-10 2024-10-15 OneTrust, LLC Data subject access request processing systems and related methods
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US10496803B2 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10585968B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10437412B2 (en) 2016-06-10 2019-10-08 OneTrust, LLC Consent receipt management systems and related methods
US10803200B2 (en) 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US10586075B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US10430740B2 (en) 2016-06-10 2019-10-01 One Trust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US10353673B2 (en) 2016-06-10 2019-07-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10509920B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for processing data subject access requests
US10275614B2 (en) 2016-06-10 2019-04-30 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10614247B2 (en) 2016-06-10 2020-04-07 OneTrust, LLC Data processing systems for automated classification of personal information from documents and related methods
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10204154B2 (en) 2016-06-10 2019-02-12 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US10452864B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US10642870B2 (en) 2016-06-10 2020-05-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10440062B2 (en) 2016-06-10 2019-10-08 OneTrust, LLC Consent receipt management systems and related methods
US10235534B2 (en) 2016-06-10 2019-03-19 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10509894B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10438017B2 (en) * 2016-06-10 2019-10-08 OneTrust, LLC Data processing systems for processing data subject access requests
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10454973B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
DE102017209697A1 (de) * 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations
US11797528B2 (en) 2020-07-08 2023-10-24 OneTrust, LLC Systems and methods for targeted data discovery
WO2022026564A1 (en) 2020-07-28 2022-02-03 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
WO2022032072A1 (en) 2020-08-06 2022-02-10 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
WO2022061270A1 (en) 2020-09-21 2022-03-24 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11397819B2 (en) 2020-11-06 2022-07-26 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
WO2022170047A1 (en) 2021-02-04 2022-08-11 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US11494515B2 (en) 2021-02-08 2022-11-08 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US20240098109A1 (en) 2021-02-10 2024-03-21 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
WO2022178089A1 (en) 2021-02-17 2022-08-25 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
WO2022178219A1 (en) 2021-02-18 2022-08-25 OneTrust, LLC Selective redaction of media content
US11533315B2 (en) 2021-03-08 2022-12-20 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
CN113299344A (zh) * 2021-06-23 2021-08-24 深圳华大医学检验实验室 基因测序分析方法、装置、存储介质和计算机设备
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US3800291A (en) * 1972-09-21 1974-03-26 Ibm Data processing system memory relocation apparatus and method
US4358823A (en) * 1977-03-25 1982-11-09 Trw, Inc. Double redundant processor
GB2077468B (en) * 1980-06-04 1984-10-24 Hitachi Ltd Multi-computer system with plural serial bus loops
US4410944A (en) * 1981-03-24 1983-10-18 Burroughs Corporation Apparatus and method for maintaining cache memory integrity in a shared memory environment
US4445171A (en) * 1981-04-01 1984-04-24 Teradata Corporation Data processing systems and methods
US4476524A (en) * 1981-07-02 1984-10-09 International Business Machines Corporation Page storage control methods and means
US4488256A (en) * 1981-11-23 1984-12-11 Motorola, Inc. Memory management unit having means for detecting and preventing mapping conflicts
US4497023A (en) * 1982-11-04 1985-01-29 Lucasfilm Ltd. Linked list of timed and untimed commands
US5212773A (en) * 1983-05-31 1993-05-18 Thinking Machines Corporation Wormhole communications arrangement for massively parallel processor
US4768144A (en) * 1983-10-25 1988-08-30 Keycom Electronic Publishing, Inc. Method and apparatus for retrieving information distributed over nonconsecutive pages
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
GB2176918B (en) * 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
EP0211613A3 (en) * 1985-07-31 1989-05-10 Sperry Corporation Scientific processor vector file organization
IT1184013B (it) * 1985-12-13 1987-10-22 Elsag Memoria ad elevata capacita accessibile a diverse agenti
US4730249A (en) * 1986-01-16 1988-03-08 International Business Machines Corporation Method to operate on large segments of data in a virtual memory data processing system
US4758946A (en) * 1986-04-09 1988-07-19 Elxsi Page mapping system
US4780873A (en) * 1986-05-19 1988-10-25 General Electric Company Circuit switching network with routing nodes
JPS6336348A (ja) * 1986-07-30 1988-02-17 Toshiba Corp バツフアメモリ管理方法
CA1293819C (en) * 1986-08-29 1991-12-31 Thinking Machines Corporation Very large scale computer
US4888726A (en) * 1987-04-22 1989-12-19 Allen-Bradley Company. Inc. Distributed processing in a cluster of industrial controls linked by a communications network
US4984235A (en) * 1987-04-27 1991-01-08 Thinking Machines Corporation Method and apparatus for routing message packets and recording the roofing sequence
IT1223142B (it) * 1987-11-17 1990-09-12 Honeywell Bull Spa Sistema multiprocessore di elaborazione con multiplazione di dati globali
US4980816A (en) * 1987-12-18 1990-12-25 Nec Corporation Translation look-aside buffer control system with multiple prioritized buffers
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5119481A (en) * 1987-12-22 1992-06-02 Kendall Square Research Corporation Register bus multiprocessor system with shift
CA1320003C (en) * 1987-12-22 1993-07-06 Steven J. Frank Interconnection system for multiprocessor structure
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5101402A (en) * 1988-05-24 1992-03-31 Digital Equipment Corporation Apparatus and method for realtime monitoring of network sessions in a local area network
US4930106A (en) * 1988-08-29 1990-05-29 Unisys Corporation Dual cache RAM for rapid invalidation
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5136717A (en) * 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
CA2019300C (en) * 1989-06-22 2001-06-12 Kendall Square Research Corporation Multiprocessor system with shared memory
CA2019299C (en) * 1989-06-22 2002-01-15 Steven Frank Multiprocessor system with multiple instruction sources
US5101485B1 (en) * 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
US5226175A (en) * 1989-07-21 1993-07-06 Graphic Edge, Inc. Technique for representing sampled images
JPH04211830A (ja) * 1990-02-05 1992-08-03 Matsushita Electric Ind Co Ltd 並列化コンパイル方式
US5226109A (en) * 1990-04-26 1993-07-06 Honeywell Inc. Three dimensional computer graphic symbol generator

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502029A (ja) * 2004-03-16 2008-01-24 テクノロジー プロパティーズ リミテッド コンピュータ・プロセッサ・アレイ
JP4856053B2 (ja) * 2004-03-16 2012-01-18 ブイエヌエス ポートフォリオ エルエルシー コンピュータ・プロセッサ・アレイ
US9489183B2 (en) 2010-10-12 2016-11-08 Microsoft Technology Licensing, Llc Tile communication operator
JP2013539888A (ja) * 2010-10-12 2013-10-28 マイクロソフト コーポレーション タイルコミュニケーションオペレーター
US8930929B2 (en) 2010-10-21 2015-01-06 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing a nested loop
US9430204B2 (en) 2010-11-19 2016-08-30 Microsoft Technology Licensing, Llc Read-only communication operator
US10620916B2 (en) 2010-11-19 2020-04-14 Microsoft Technology Licensing, Llc Read-only communication operator
US9507568B2 (en) 2010-12-09 2016-11-29 Microsoft Technology Licensing, Llc Nested communication operator
US10282179B2 (en) 2010-12-09 2019-05-07 Microsoft Technology Licensing, Llc Nested communication operator
US9395957B2 (en) 2010-12-22 2016-07-19 Microsoft Technology Licensing, Llc Agile communication operator
US10423391B2 (en) 2010-12-22 2019-09-24 Microsoft Technology Licensing, Llc Agile communication operator
JPWO2013018184A1 (ja) * 2011-07-29 2015-03-02 富士通株式会社 割当方法、およびマルチコアプロセッサシステム
US9189279B2 (en) 2011-07-29 2015-11-17 Fujitsu Limited Assignment method and multi-core processor system
WO2013018184A1 (ja) * 2011-07-29 2013-02-07 富士通株式会社 割当方法、およびマルチコアプロセッサシステム

Also Published As

Publication number Publication date
DE69232300D1 (de) 2002-01-31
EP0533445A2 (en) 1993-03-24
US5535393A (en) 1996-07-09
CA2078315A1 (en) 1993-03-21
EP0533445A3 (en) 1993-06-02
ATE211275T1 (de) 2002-01-15
EP0533445B1 (en) 2001-12-19
DE69232300T2 (de) 2002-08-08

Similar Documents

Publication Publication Date Title
JPH05298272A (ja) タイル化を利用するための並列処理装置および方法
Finkel et al. DIB—a distributed implementation of backtracking
Organick Computer system organization: the B5700/B6700 series
Quinn et al. Compiling C* programs for a hypercube multicomputer
Freeh A comparison of implicit and explicit parallel programming
Boehning et al. A parallel integer linear programming algorithm
Abdelrahman et al. Parallel branch and bound algorithms on hypercube multiprocessors
Alverson et al. Abstractions for portable, scalable parallel programming
Gross et al. Parallel compilation for a parallel machine
Hagerup et al. FORK: A high-level language for PRAMs
Vree et al. Design considerations for a parallel reduction machine
Dennis The Fresh Breeze model of thread execution
López et al. Design and implementation of communication patterns using parallel objects
Eigenmann et al. Cedar Fortrand its compiler
Keßler et al. Integrating synchronous and asynchronous paradigms: The Fork95 parallel programming language
Li PARALLEL PROCESSING OF COMBINATORIAL SEARCH PROBLEMS (DIVIDE-AND-CONQUER, BRANCH-AND-BOUND, LOGIC PROGRAMMING, DYNAMIC)
Kale A tutorial introduction to CHARM
Paronyan Agent-based computational geometry
Haines Distributed runtime support for task and data management
Polychronopoulos Parallel programming issues
Dorochevsky et al. Constraint handling, garbage collection and execution model issues in ElipSys
Hart MASS CUDA: Abstracting Many Core Parallel Programming From Agent Based Modeling Frameworks
Gottlieb PLUS: a PL/I Based Ultracomputer Simulator, I.
Hächler ALWAN: Design and Implementation of a parallel Coordination Language
Afshar An open parallel architecture for data-intensive applications

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19991130