JP2000284950A - データフロープログラムの開発のための方法、データ処理システム及びユーザインターフェイス、データフロープログラムの実行のためのデータ処理システム、データフロープログラムの開発のための方法を実行するための命令を格納したコンピュータ可読媒体、データフロープログラムの実行最適化のための方法及びシステム、並びに、データフロープログラムの実行最適化方法を実行するための命令を格納したコンピュータ可読媒体 - Google Patents
データフロープログラムの開発のための方法、データ処理システム及びユーザインターフェイス、データフロープログラムの実行のためのデータ処理システム、データフロープログラムの開発のための方法を実行するための命令を格納したコンピュータ可読媒体、データフロープログラムの実行最適化のための方法及びシステム、並びに、データフロープログラムの実行最適化方法を実行するための命令を格納したコンピュータ可読媒体Info
- Publication number
- JP2000284950A JP2000284950A JP2000024087A JP2000024087A JP2000284950A JP 2000284950 A JP2000284950 A JP 2000284950A JP 2000024087 A JP2000024087 A JP 2000024087A JP 2000024087 A JP2000024087 A JP 2000024087A JP 2000284950 A JP2000284950 A JP 2000284950A
- Authority
- JP
- Japan
- Prior art keywords
- block
- queue
- blocks
- program
- priority
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】マルチプロセッサコンピュータシステム上で実
行するためのデータフロープログラムを容易に設計及び
開発することができるようにする。 【解決手段】プログラマがブロックに分割される領域を
定義することができるようにするインターフェイスを表
示する開発ツールを設ける。前記ブロックは、関数に関
連付けられた数値の集合から構成される。また、前記ツ
ールは、プログラマがブロックの集合を定義することが
できるようにする。集合に含まれるブロックは、各ブロ
ックを構成する数値を前記関数に基づいて変換するプロ
グラムの部分に対応するステートを有する。また、前記
インターフェイスは、2つのブロック間において一方が
他方より前に実行されることの必要性を意味する依存性
を記録する。プログラム開発後には、記録された依存性
に基づいてブロックが選択され、プログラムの対応する
指定された部分が実行される。
行するためのデータフロープログラムを容易に設計及び
開発することができるようにする。 【解決手段】プログラマがブロックに分割される領域を
定義することができるようにするインターフェイスを表
示する開発ツールを設ける。前記ブロックは、関数に関
連付けられた数値の集合から構成される。また、前記ツ
ールは、プログラマがブロックの集合を定義することが
できるようにする。集合に含まれるブロックは、各ブロ
ックを構成する数値を前記関数に基づいて変換するプロ
グラムの部分に対応するステートを有する。また、前記
インターフェイスは、2つのブロック間において一方が
他方より前に実行されることの必要性を意味する依存性
を記録する。プログラム開発後には、記録された依存性
に基づいてブロックが選択され、プログラムの対応する
指定された部分が実行される。
Description
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
コンピュータシステムの分野に関し、そして特に、マル
チプロセッサコンピュータシステムを用いるコンピュー
タプログラムのデータ駆動型処理に関する。
コンピュータシステムの分野に関し、そして特に、マル
チプロセッサコンピュータシステムを用いるコンピュー
タプログラムのデータ駆動型処理に関する。
【0002】
【従来の技術】マルチプロセッサコンピュータシステム
は、コンピュータプログラムの種々の命令を実行するた
めに使用される2以上のプロセッサを含む。特別な命令
セットは、他のプロセッサが関連のない命令セットを実
行する間に、1つのプロセッサによって実行されるかも
しれない。
は、コンピュータプログラムの種々の命令を実行するた
めに使用される2以上のプロセッサを含む。特別な命令
セットは、他のプロセッサが関連のない命令セットを実
行する間に、1つのプロセッサによって実行されるかも
しれない。
【0003】マルチプロセッサシステムのような高速コ
ンピュータシステムは、科学研究遂行の新しい方法の急
速な進歩を刺激した。理論科学や実験科学の広範囲な古
典的な枝葉はコンピュータを使用する科学によって結び
付けられた。コンピュータを使用する科学者は、理論的
に信頼性を高めるには複雑すぎる現象や、研究室で再現
するには危険過ぎる或いは費用がかかる現象をスーパー
コンピュータにより、シミュレートする。コンピュータ
を使用する科学の成功は、近年、スーパーコンピュータ
資源の必要性を急速に高めた。
ンピュータシステムは、科学研究遂行の新しい方法の急
速な進歩を刺激した。理論科学や実験科学の広範囲な古
典的な枝葉はコンピュータを使用する科学によって結び
付けられた。コンピュータを使用する科学者は、理論的
に信頼性を高めるには複雑すぎる現象や、研究室で再現
するには危険過ぎる或いは費用がかかる現象をスーパー
コンピュータにより、シミュレートする。コンピュータ
を使用する科学の成功は、近年、スーパーコンピュータ
資源の必要性を急速に高めた。
【0004】この期間に、並列コンピュータとも呼ばれ
るマルチプロセッサコンピュータシステムは、研究室の
実験装置から進化して、コンピュータを使用するととも
に問題解決のためコンピュータ資源の最高のものを必要
とする科学者の日常の道具になった。幾つかの要因が、
この進化を刺激した。それは、光の速度や熱消費効率が
シングルプロセッサの速度に物理的な限界を強要したこ
とだけでない。最新のシングルプロセッサコンピュータ
の費用はその能力よりも急速に増大していることもその
要因である。そして、必要とされる計算能力が新規に購
入することなく既存の資源から見出されるとすれば、価
格対性能比は、より望ましくなる。これにより、パラレ
ルコンピュータとしてワークステーションネットワーク
を用いることにより、元々ちょっとした雑用のために購
入されていたワークステーションネットワークが、「ス
キャン」(夜中のスーパーコンピュータの略語)として
使われる機会が増加した。この計画は、大変うまくいく
ことが証明され、個人のワークステーションの費用効果
が急速に増大したので、ワークステーションのネットワ
ークが、比較的高速なスーパーコンピュータで実行して
いた並列ジョブ専用に、購入されるようになってきた。
このように、ピーク性能と価格対性能比の両方を考慮す
ると、大規模なコンピュータ計算が並列処理へ向けて移
行することを後押ししている。これらの進歩があるにも
関わらず、パラレルコンピュータは広範囲で採用される
には至っていない。
るマルチプロセッサコンピュータシステムは、研究室の
実験装置から進化して、コンピュータを使用するととも
に問題解決のためコンピュータ資源の最高のものを必要
とする科学者の日常の道具になった。幾つかの要因が、
この進化を刺激した。それは、光の速度や熱消費効率が
シングルプロセッサの速度に物理的な限界を強要したこ
とだけでない。最新のシングルプロセッサコンピュータ
の費用はその能力よりも急速に増大していることもその
要因である。そして、必要とされる計算能力が新規に購
入することなく既存の資源から見出されるとすれば、価
格対性能比は、より望ましくなる。これにより、パラレ
ルコンピュータとしてワークステーションネットワーク
を用いることにより、元々ちょっとした雑用のために購
入されていたワークステーションネットワークが、「ス
キャン」(夜中のスーパーコンピュータの略語)として
使われる機会が増加した。この計画は、大変うまくいく
ことが証明され、個人のワークステーションの費用効果
が急速に増大したので、ワークステーションのネットワ
ークが、比較的高速なスーパーコンピュータで実行して
いた並列ジョブ専用に、購入されるようになってきた。
このように、ピーク性能と価格対性能比の両方を考慮す
ると、大規模なコンピュータ計算が並列処理へ向けて移
行することを後押ししている。これらの進歩があるにも
関わらず、パラレルコンピュータは広範囲で採用される
には至っていない。
【0005】パラレルコンピュータ計算の採用と経済性
及び性能上の利益についての最大の障害となっているの
は、ソフトウェアが適当ではないという問題である。コ
ンピュータを利用する重要な科学問題のためのパラレル
アルゴリズムを実行するプログラムを開発する者は、現
在のソフトウェア環境が、非常に性能が高く、利用可能
で費用効果が高いハードウェアを円滑に利用するに至っ
ておらず、むしろその障害となっていることに気付くで
あろう。何故なら、コンピュータプログラマーは、一般
に、マルチプロセッサコンピュータシステムによって実
行されるプログラムを含むプログラムの開発時には、
「制御フロー」モデルに従うからである。このモデルに
よれば、コンピュータは、プログラムカウンタによって
制御されて、プログラムの命令を順々に実行する(即
ち、第1の命令から最後の命令までを直列に実行す
る。)。この手法は、プログラム開発過程を単純化する
が、本質的に処理が遅い。
及び性能上の利益についての最大の障害となっているの
は、ソフトウェアが適当ではないという問題である。コ
ンピュータを利用する重要な科学問題のためのパラレル
アルゴリズムを実行するプログラムを開発する者は、現
在のソフトウェア環境が、非常に性能が高く、利用可能
で費用効果が高いハードウェアを円滑に利用するに至っ
ておらず、むしろその障害となっていることに気付くで
あろう。何故なら、コンピュータプログラマーは、一般
に、マルチプロセッサコンピュータシステムによって実
行されるプログラムを含むプログラムの開発時には、
「制御フロー」モデルに従うからである。このモデルに
よれば、コンピュータは、プログラムカウンタによって
制御されて、プログラムの命令を順々に実行する(即
ち、第1の命令から最後の命令までを直列に実行す
る。)。この手法は、プログラム開発過程を単純化する
が、本質的に処理が遅い。
【0006】例えば、プログラムカウンタが、プログラ
ムにおいて他の命令或いは命令セットの結果を必要とす
る特定の命令に至ると、その特定の命令は、結果に「依
存」すると言われ、プロセッサはその結果が利用できる
まで命令を実行することができない。更に、制御フロー
モデルの下で開発されたプログラムを、並列処理コンピ
ュータにおいて実行すると、これらの依存性のために、
結果的に資源を無駄に使用することになる。例えば、制
御フロープログラムの1セットの命令を実行する第1の
プロセッサは、第1のプロセッサがそのセットの命令を
実行するするために結果が必要とされる他のセットの命
令に関して、第2のプロセッサが実行を完了するまで、
待機しなければならないかもしれない。この待機時間
は、2つのプロセッサからなる構成の少なくとも1つの
コンピュータがそのプログラムが実行されている間中ず
っと、稼動しないという点で、コンピュータ資源の許容
しがたい無駄遣いであると言うことができる。
ムにおいて他の命令或いは命令セットの結果を必要とす
る特定の命令に至ると、その特定の命令は、結果に「依
存」すると言われ、プロセッサはその結果が利用できる
まで命令を実行することができない。更に、制御フロー
モデルの下で開発されたプログラムを、並列処理コンピ
ュータにおいて実行すると、これらの依存性のために、
結果的に資源を無駄に使用することになる。例えば、制
御フロープログラムの1セットの命令を実行する第1の
プロセッサは、第1のプロセッサがそのセットの命令を
実行するするために結果が必要とされる他のセットの命
令に関して、第2のプロセッサが実行を完了するまで、
待機しなければならないかもしれない。この待機時間
は、2つのプロセッサからなる構成の少なくとも1つの
コンピュータがそのプログラムが実行されている間中ず
っと、稼動しないという点で、コンピュータ資源の許容
しがたい無駄遣いであると言うことができる。
【0007】プログラムにおける効果的な並列処理の適
用のために、科学者は制御フローモデルの代わりに「デ
ータフロー」モデルを使用することを示唆している。こ
のデータフローモデルの基本的な概念は、必要とされる
オペランドが利用可能になるときは必ず、命令を実行す
ることができることである。そして、このように、デー
タ駆動型のコンピュータ計算において、プログラムカウ
ンタは必要ではない。命令開始は、データの利用可能性
に依存するが、プログラムにおける命令の物理的な位置
には依存しない。言い換えれば、プログラムにおける命
令は、順序づけられていない。実行は、単純にデータ依
存性の制約に従う。
用のために、科学者は制御フローモデルの代わりに「デ
ータフロー」モデルを使用することを示唆している。こ
のデータフローモデルの基本的な概念は、必要とされる
オペランドが利用可能になるときは必ず、命令を実行す
ることができることである。そして、このように、デー
タ駆動型のコンピュータ計算において、プログラムカウ
ンタは必要ではない。命令開始は、データの利用可能性
に依存するが、プログラムにおける命令の物理的な位置
には依存しない。言い換えれば、プログラムにおける命
令は、順序づけられていない。実行は、単純にデータ依
存性の制約に従う。
【0008】データ駆動型のコンピュータ計算のプログ
ラムは、データフローグラフで表現される。次の式で表
される計算のデータフローグラフの例は図1に表示され
る。 z=(x+y)*2 例えば、xが5で、yが3であるときには、結果zは1
6である。図示されたように、zは合計とxとyの結果
に依存する。前記データフローグラフは、そのノードが
演算子に相当し、弧がデータ進行のポインタの役目を果
たす有向非循環グラフ(「DAG」)である。そのグラ
フは、順序制約(即ち、データ依存性に関する制約)を
明らかにする。
ラムは、データフローグラフで表現される。次の式で表
される計算のデータフローグラフの例は図1に表示され
る。 z=(x+y)*2 例えば、xが5で、yが3であるときには、結果zは1
6である。図示されたように、zは合計とxとyの結果
に依存する。前記データフローグラフは、そのノードが
演算子に相当し、弧がデータ進行のポインタの役目を果
たす有向非循環グラフ(「DAG」)である。そのグラ
フは、順序制約(即ち、データ依存性に関する制約)を
明らかにする。
【0009】例えば、一般的なコンピュータでは、
(i)プログラムがよりよい資源利用及びコードの最適
化をもたらすためにプログラムがコンパイルされると
き、(ii)より高速のシステムスループットのため
に、協働する算術論理演算動作を明らかにするための実
行時に、プログラム解析が度々なされる。例えば、次の
命令列を仮定する。 1.P=X+Y 2.Q=P/Y 3.R=X*P 4.S=R−Q 5.T=R*P 6.U=S/T
(i)プログラムがよりよい資源利用及びコードの最適
化をもたらすためにプログラムがコンパイルされると
き、(ii)より高速のシステムスループットのため
に、協働する算術論理演算動作を明らかにするための実
行時に、プログラム解析が度々なされる。例えば、次の
命令列を仮定する。 1.P=X+Y 2.Q=P/Y 3.R=X*P 4.S=R−Q 5.T=R*P 6.U=S/T
【0010】直列計算システム(例えば、単一プロセッ
サシステム)で前記命令が実行されるときには、これら
の命令について次の5つの計算順序が、正しい結果を担
保するために許容される。 1,2,3,4,5,6 1,3,2,5,4,6 1,3,5,2,4,6 1,2,3,5,4,6 1,3,2,4,5,6
サシステム)で前記命令が実行されるときには、これら
の命令について次の5つの計算順序が、正しい結果を担
保するために許容される。 1,2,3,4,5,6 1,3,2,5,4,6 1,3,5,2,4,6 1,2,3,5,4,6 1,3,2,4,5,6
【0011】例えば、第一の命令は始めに実行されなけ
ればならないが、第2或いは第3の命令は2番目に実行
されることができる。何故なら、第1の命令の結果は、
第2及び第3の命令で必要とされるが、第2或いは第3
の命令は他の命令の結果を必要としないからである。夫
々のシーケンスの残りは、オペランド(又は入力)が利
用可能になるまで命令を実行しないという単純なルール
に従う。
ればならないが、第2或いは第3の命令は2番目に実行
されることができる。何故なら、第1の命令の結果は、
第2及び第3の命令で必要とされるが、第2或いは第3
の命令は他の命令の結果を必要としないからである。夫
々のシーケンスの残りは、オペランド(又は入力)が利
用可能になるまで命令を実行しないという単純なルール
に従う。
【0012】2つのプロセッサを含むマルチプロセッサ
コンピュータシステムでは、前記6の演算を4つ(6で
はない)のステップで実行することが可能である。それ
は、第1のプロセッサによる計算ステップ1、次に両方
のプロセッサで同時に行う計算ステップ2及び3、次に
両方のプロセッサで同時に行う計算ステップ4及び5、
そして、最後にどちらかのプロセッサで行う計算ステッ
プ6である。これは、実行時間が減少されるので、単一
プロセッサによる手法に対して明白な改良である。
コンピュータシステムでは、前記6の演算を4つ(6で
はない)のステップで実行することが可能である。それ
は、第1のプロセッサによる計算ステップ1、次に両方
のプロセッサで同時に行う計算ステップ2及び3、次に
両方のプロセッサで同時に行う計算ステップ4及び5、
そして、最後にどちらかのプロセッサで行う計算ステッ
プ6である。これは、実行時間が減少されるので、単一
プロセッサによる手法に対して明白な改良である。
【0013】並列処理の手段としてデータフローを用い
ると、このようにシステムの処理を最大限に並列処理化
することができる。しかしながら、ほとんどのソースコ
ードは、あらゆるタイプの問題について効率的に並列処
理することが難しくてふさわしくない制御フォームに含
まれる。
ると、このようにシステムの処理を最大限に並列処理化
することができる。しかしながら、ほとんどのソースコ
ードは、あらゆるタイプの問題について効率的に並列処
理することが難しくてふさわしくない制御フォームに含
まれる。
【0014】
【発明が解決しようとする課題】本発明は、開発者がも
っと容易にデータフロープログラムを開発することがで
きるように、そして、容易に既存の制御フロープログラ
ムをマルチプロセッサコンピュータシステムで実行する
ためのデータフロープログラムに変換することができる
ようにすることを課題とする。また、マルチプロセッサ
コンピュータシステムでのデータフロープログラムの動
作を最適化する技術を提供することも課題とする。
っと容易にデータフロープログラムを開発することがで
きるように、そして、容易に既存の制御フロープログラ
ムをマルチプロセッサコンピュータシステムで実行する
ためのデータフロープログラムに変換することができる
ようにすることを課題とする。また、マルチプロセッサ
コンピュータシステムでのデータフロープログラムの動
作を最適化する技術を提供することも課題とする。
【0015】
【課題を解決するための手段】本発明に係る方法、シス
テム及び製品は、開発者が容易に制御フロープログラム
をデータフロー手法に変換することができるようにする
こと及び新しいプログラムをデータフローモデルにより
開発することを可能にすることにより既存のシステムの
欠点を克服している。本発明の1つの側面によれば、こ
こに具体化されあまねく記載される方法、システム及び
製品のように、本プログラム開発工程は、メモリ領域を
定義してそれを複数のブロックに分割することを含み、
各ブロックは、関数に関連付けられた数値の集合を定義
する。ブロックの集合が定義され、集合に含まれる各ブ
ロックは、ブロックを構成する数値を前記関数に基づい
て変換するプログラムの指定された部分に対応するステ
ートを有する。更に、ブロック間の依存性がユーザによ
って指定される。各依存性は、2つのブロック間の関係
を示し、2つのブロックの1つに関連付けられたプログ
ラムの部分が、他のブロックに関連付けられたプログラ
ムの部分より前に実行されることが必要であることを意
味する。
テム及び製品は、開発者が容易に制御フロープログラム
をデータフロー手法に変換することができるようにする
こと及び新しいプログラムをデータフローモデルにより
開発することを可能にすることにより既存のシステムの
欠点を克服している。本発明の1つの側面によれば、こ
こに具体化されあまねく記載される方法、システム及び
製品のように、本プログラム開発工程は、メモリ領域を
定義してそれを複数のブロックに分割することを含み、
各ブロックは、関数に関連付けられた数値の集合を定義
する。ブロックの集合が定義され、集合に含まれる各ブ
ロックは、ブロックを構成する数値を前記関数に基づい
て変換するプログラムの指定された部分に対応するステ
ートを有する。更に、ブロック間の依存性がユーザによ
って指定される。各依存性は、2つのブロック間の関係
を示し、2つのブロックの1つに関連付けられたプログ
ラムの部分が、他のブロックに関連付けられたプログラ
ムの部分より前に実行されることが必要であることを意
味する。
【0016】本発明の他の側面によれば、方法、システ
ム及び製品は、ここに具体化されあまねく記載されるよ
うに、データフロープログラムをマルチプロセッサコン
ピュータシステムにおいて実行する。プログラムの実行
は、プログラムの関数に関連付けられた数値の集合から
なるブロックを識別するキューにおける情報の選択と、
選択されたブロックに関連付けられたプログラムの部分
の実行が他のブロックに関連付けられたプログラムの部
分の実行結果に依存するか否かの決定を含む。その選択
されたブロックに関連付けられたプログラムの部分の実
行が、他のブロックに関連付けられたプログラムの部分
の実行結果に依存しないと決定されたときに、選択され
たブロックに関連付けられたプログラムの部分は実行さ
れる。この選択と決定は、選択されたブロックに関連付
けられたプログラムの部分の実行が他のブロックに関連
付けられたプログラムの部分の実行結果に依存すること
が決定される場合に、繰り返される。
ム及び製品は、ここに具体化されあまねく記載されるよ
うに、データフロープログラムをマルチプロセッサコン
ピュータシステムにおいて実行する。プログラムの実行
は、プログラムの関数に関連付けられた数値の集合から
なるブロックを識別するキューにおける情報の選択と、
選択されたブロックに関連付けられたプログラムの部分
の実行が他のブロックに関連付けられたプログラムの部
分の実行結果に依存するか否かの決定を含む。その選択
されたブロックに関連付けられたプログラムの部分の実
行が、他のブロックに関連付けられたプログラムの部分
の実行結果に依存しないと決定されたときに、選択され
たブロックに関連付けられたプログラムの部分は実行さ
れる。この選択と決定は、選択されたブロックに関連付
けられたプログラムの部分の実行が他のブロックに関連
付けられたプログラムの部分の実行結果に依存すること
が決定される場合に、繰り返される。
【0017】更に、本発明の更に他の側面によれば、方
法、システム及び製品は、マルチプロセッサコンピュー
タシステムにおけるデータフロープログラムの実行を最
適化するように提供される。データフロープログラム
は、ブロック情報及び依存性情報を含むメモリ領域の情
報からなる。メモリ領域の情報はブロック情報と依存性
情報を含む。前記ブロック情報はメモリ領域を定義する
複数のブロックを表わす。各ブロックは、関数に関連付
けられた数値の集合からなり、ブロックを構成する数値
を前記関数に基づいて変換するプログラムの指定された
部分に対応するステートを有する。前記依存性情報は、
ブロック間の依存性を示唆する。各依存性は、2つのブ
ロック間の関係を示し、関係に係る第1のブロックに関
連付けられたプログラムの部分が、該関係に係る第2の
ブロックに関連付けられたプログラムの部分よりも前に
実行されることを必要とすることを意味する。キュー
は、データフロープログラムの実行を最適化するように
メモリ領域情報を組織化するように構成される。
法、システム及び製品は、マルチプロセッサコンピュー
タシステムにおけるデータフロープログラムの実行を最
適化するように提供される。データフロープログラム
は、ブロック情報及び依存性情報を含むメモリ領域の情
報からなる。メモリ領域の情報はブロック情報と依存性
情報を含む。前記ブロック情報はメモリ領域を定義する
複数のブロックを表わす。各ブロックは、関数に関連付
けられた数値の集合からなり、ブロックを構成する数値
を前記関数に基づいて変換するプログラムの指定された
部分に対応するステートを有する。前記依存性情報は、
ブロック間の依存性を示唆する。各依存性は、2つのブ
ロック間の関係を示し、関係に係る第1のブロックに関
連付けられたプログラムの部分が、該関係に係る第2の
ブロックに関連付けられたプログラムの部分よりも前に
実行されることを必要とすることを意味する。キュー
は、データフロープログラムの実行を最適化するように
メモリ領域情報を組織化するように構成される。
【0018】本発明の1つの側面によれば、ここにあま
ねく記載されるように、キューは、各ブロックに対応す
るノードをグラフに設けることによりメモリ領域情報に
基づく有向非循環グラフを生成し、予め定めた関数に従
って前記有向非循環グラフを走査し、前記有向非循環グ
ラフの前記走査に基づいて各ブロックを識別する情報を
キューに配置することによって、生成される。本発明の
他の側面によれば、ここにあまねく記載されるように、
前記キューは部分に分けられてもよく、複数のキューを
採用してもよい。この場合には、キューの各部分又は個
々のキューは優先度を有する、そして、(i)ブロック
は、各ブロックに関連付けられた優先度に基づいてキュ
ーの部分又はキューに割り当てられ、(ii)前記キュ
ー割り当てに従って実行するために部分又はキューから
選択される。
ねく記載されるように、キューは、各ブロックに対応す
るノードをグラフに設けることによりメモリ領域情報に
基づく有向非循環グラフを生成し、予め定めた関数に従
って前記有向非循環グラフを走査し、前記有向非循環グ
ラフの前記走査に基づいて各ブロックを識別する情報を
キューに配置することによって、生成される。本発明の
他の側面によれば、ここにあまねく記載されるように、
前記キューは部分に分けられてもよく、複数のキューを
採用してもよい。この場合には、キューの各部分又は個
々のキューは優先度を有する、そして、(i)ブロック
は、各ブロックに関連付けられた優先度に基づいてキュ
ーの部分又はキューに割り当てられ、(ii)前記キュ
ー割り当てに従って実行するために部分又はキューから
選択される。
【0019】
【発明の実施の形態】これより、添付図面によって示さ
れる本発明に係る実施の形態を、詳細に説明する。添付
図面は、この説明に組み込まれ、この説明の一部を成
し、発明の実施の形態を図解し、記載と協働して発明の
有用性及び原理を説明する。図において、できる限り、
図面及び以下の記載を通して、同一又は同義の部分を参
照するために同一の符号を用いている。
れる本発明に係る実施の形態を、詳細に説明する。添付
図面は、この説明に組み込まれ、この説明の一部を成
し、発明の実施の形態を図解し、記載と協働して発明の
有用性及び原理を説明する。図において、できる限り、
図面及び以下の記載を通して、同一又は同義の部分を参
照するために同一の符号を用いている。
【0020】序論 本発明に従う方法、システム及び製品は、開発者が、制
御フロープログラムをデータフロープログラムに変換す
ることを可能にし、データフローモデルによる新規プロ
グラムを開発することを可能にする。かかる方法、シス
テム及び製品は、データフロープログラムを設計及び開
発するためにコンピュータ対人間インターフェイスを含
む開発ツールを用いてもよい。
御フロープログラムをデータフロープログラムに変換す
ることを可能にし、データフローモデルによる新規プロ
グラムを開発することを可能にする。かかる方法、シス
テム及び製品は、データフロープログラムを設計及び開
発するためにコンピュータ対人間インターフェイスを含
む開発ツールを用いてもよい。
【0021】本発明の原理により開発されたデータフロ
ープログラムは、データフローモデルを用いるマルチプ
ロセッサコンピュータシステム上で実行される。前記イ
ンターフェイスは、プログラム実行に使用されるものと
異なるデータ処理システム上で操作されるようにしても
よい。代わりに、前記インターフェイスは、プログラム
実行のためのシステム上で操作されるようにしてもよ
い。
ープログラムは、データフローモデルを用いるマルチプ
ロセッサコンピュータシステム上で実行される。前記イ
ンターフェイスは、プログラム実行に使用されるものと
異なるデータ処理システム上で操作されるようにしても
よい。代わりに、前記インターフェイスは、プログラム
実行のためのシステム上で操作されるようにしてもよ
い。
【0022】本発明によるデータフローモデルの特徴の
1つは、処理がメモリ領域のブロックで並列に実行され
る点である。ブロックは、数列や行列又は他の情報のよ
うなデータの集合からなる。複数のブロックは、全体と
してメモリ領域を構成する。
1つは、処理がメモリ領域のブロックで並列に実行され
る点である。ブロックは、数列や行列又は他の情報のよ
うなデータの集合からなる。複数のブロックは、全体と
してメモリ領域を構成する。
【0023】データフロープログラム開発ツールは、開
発者がシステムに関連するデータが入るメモリ領域を定
義することを可能にするインターフェイスを供給する。
これに関連して、用語「システム」は、ビルの構造解析
又はパイプの流体流量等の物理的、数学的、そしてコン
ピュータ計算についての問題に関連する。典型的には、
このような複雑なシステムは、多くの方程式を解決する
ために膨大な処理を必要とし、1つの集合の方程式の結
果は、他の集合の方程式の結果に依存する。例えば、パ
イプを流れる流体は、パイプの内側の摩擦によって速度
を落とされる。その摩擦は、パイプ内側に接する流体の
スピードに直接影響し(第1集合の方程式によって定義
される)、内側に接しないパイプ内の他の流体に間接的
に影響する(同じ方程式によって定義されるが、ことに
よると、第1集合の方程式の結果に依存する)。このよ
うに、この場合に、パイプ内側による摩擦のパイプ内の
流体に対する影響は、パイプ内における位置によって異
なる。
発者がシステムに関連するデータが入るメモリ領域を定
義することを可能にするインターフェイスを供給する。
これに関連して、用語「システム」は、ビルの構造解析
又はパイプの流体流量等の物理的、数学的、そしてコン
ピュータ計算についての問題に関連する。典型的には、
このような複雑なシステムは、多くの方程式を解決する
ために膨大な処理を必要とし、1つの集合の方程式の結
果は、他の集合の方程式の結果に依存する。例えば、パ
イプを流れる流体は、パイプの内側の摩擦によって速度
を落とされる。その摩擦は、パイプ内側に接する流体の
スピードに直接影響し(第1集合の方程式によって定義
される)、内側に接しないパイプ内の他の流体に間接的
に影響する(同じ方程式によって定義されるが、ことに
よると、第1集合の方程式の結果に依存する)。このよ
うに、この場合に、パイプ内側による摩擦のパイプ内の
流体に対する影響は、パイプ内における位置によって異
なる。
【0024】領域を定義した後、開発者は、該領域をブ
ロックに分割し、各ブロックについて、該領域の該ブロ
ックと他のブロックの間の依存性に加え、該ブロックの
数値をについて実行するプログラムコードを指定する。
同一のプログラムコードを有するブロックは、同じ「ス
テート」を共有すると言われる。それらは、一般に、結
果に関して相互に依存しないので、並列に実行される。
前記流体フローの例においては、パイプの内側に接して
流れる流体に関連付けられたブロックは、同じステート
を共有し(従って、実行用の同じプログラムコードを有
する)、しかし、このステート(及びコード)は、内側
に接しないが少なくとも該流体に接している流体のステ
ート(及びコード)とは異なる。パイプの中心へ移動す
るにつれて、パイプ内の流体に関連する各ブロックのス
テート(及びコード)は、同様にして、依存性を反映し
て変化する。
ロックに分割し、各ブロックについて、該領域の該ブロ
ックと他のブロックの間の依存性に加え、該ブロックの
数値をについて実行するプログラムコードを指定する。
同一のプログラムコードを有するブロックは、同じ「ス
テート」を共有すると言われる。それらは、一般に、結
果に関して相互に依存しないので、並列に実行される。
前記流体フローの例においては、パイプの内側に接して
流れる流体に関連付けられたブロックは、同じステート
を共有し(従って、実行用の同じプログラムコードを有
する)、しかし、このステート(及びコード)は、内側
に接しないが少なくとも該流体に接している流体のステ
ート(及びコード)とは異なる。パイプの中心へ移動す
るにつれて、パイプ内の流体に関連する各ブロックのス
テート(及びコード)は、同様にして、依存性を反映し
て変化する。
【0025】依存性は、依存するブロックの夫々と依存
されるブロックとの間のリンクにより表わされる。前記
システムにおいて第1のブロックが正しく動作するため
に、前記第1のブロックが前記第2のブロックの結果を
必要とするときには、ブロックは、他のブロックに依存
する。この関係は、有向非循環グラフ(「DAG」)に
より図表を用いて見られるようにしてもよい。ブロック
単位で決定されるプログラムコードとデータは、前記グ
ラフの各ノードに関連付けられる。
されるブロックとの間のリンクにより表わされる。前記
システムにおいて第1のブロックが正しく動作するため
に、前記第1のブロックが前記第2のブロックの結果を
必要とするときには、ブロックは、他のブロックに依存
する。この関係は、有向非循環グラフ(「DAG」)に
より図表を用いて見られるようにしてもよい。ブロック
単位で決定されるプログラムコードとデータは、前記グ
ラフの各ノードに関連付けられる。
【0026】ブロックは、マルチプロセッサコンピュー
タシステムにおける処理のためにキューに入れられる。
実際には、ブロック自身は、キューに入れられない。む
しろ、ポインタのような各ブロックを識別する情報が、
キューに置かれる。ブロックは、特定の方法でキューに
入れられるか又はキューに組織され、データフロープロ
グラムを実行するスレッドは、データフロープログラム
を実行中の所与の時点で、対応するプログラムコードの
実行のための適当なブロックを選択することができる。
1つの実施の形態では、ブロックは、各ブロックに関連
付けられた依存性情報に従いキューに入れられる。
タシステムにおける処理のためにキューに入れられる。
実際には、ブロック自身は、キューに入れられない。む
しろ、ポインタのような各ブロックを識別する情報が、
キューに置かれる。ブロックは、特定の方法でキューに
入れられるか又はキューに組織され、データフロープロ
グラムを実行するスレッドは、データフロープログラム
を実行中の所与の時点で、対応するプログラムコードの
実行のための適当なブロックを選択することができる。
1つの実施の形態では、ブロックは、各ブロックに関連
付けられた依存性情報に従いキューに入れられる。
【0027】プログラムの動作最適化のためにブロック
をキューに入れるこの工程は、前記DAGの組織化の後
に続く。言い換えれば、前記DAGは、プログラムの実
行よりも前に、キューの最良の構成を選択するために多
数の種々の方法を用いて論理的に走査される。更に、キ
ューの構成は、プログラム実行の前にたやすく決定する
ことができないプログラム動作に影響する要素の位置を
決めるために、プログラム実行中に修正される。
をキューに入れるこの工程は、前記DAGの組織化の後
に続く。言い換えれば、前記DAGは、プログラムの実
行よりも前に、キューの最良の構成を選択するために多
数の種々の方法を用いて論理的に走査される。更に、キ
ューの構成は、プログラム実行の前にたやすく決定する
ことができないプログラム動作に影響する要素の位置を
決めるために、プログラム実行中に修正される。
【0028】ブロックの組織化の1つの手法は、各ノー
ドに重み付けをする重み付け関数やDAGに利用可能な
ある種のアルゴリズムのような特定の関数を利用する
間、ブロックのメモリ領域に関連するDAGを走査する
ことを含む。しかしながら、データフロープログラムの
動作を最適化するために、複数のキューが採用され、各
キューは、ブロックが該キューから出される順序を定義
する優先度を有する。即ち、キューに関連付けられた優
先度に基づいて他のキューのブロックより前に優先度の
高いキューのブロックが実行のために選択される。
ドに重み付けをする重み付け関数やDAGに利用可能な
ある種のアルゴリズムのような特定の関数を利用する
間、ブロックのメモリ領域に関連するDAGを走査する
ことを含む。しかしながら、データフロープログラムの
動作を最適化するために、複数のキューが採用され、各
キューは、ブロックが該キューから出される順序を定義
する優先度を有する。即ち、キューに関連付けられた優
先度に基づいて他のキューのブロックより前に優先度の
高いキューのブロックが実行のために選択される。
【0029】開発者は、ブロックを処理するために利用
可能なスレッドの数を指定してもよい。各スレッドは、
ブロックに関連付けられたプログラムコードを実行する
ために、プログラムカウンタと一時メモリを必要に応じ
て管理する。例えば、開発者は1つのプロセッサに対し
て1のスレッドを指定してもよい。他の構成も、本発明
の原理に従って、可能である。
可能なスレッドの数を指定してもよい。各スレッドは、
ブロックに関連付けられたプログラムコードを実行する
ために、プログラムカウンタと一時メモリを必要に応じ
て管理する。例えば、開発者は1つのプロセッサに対し
て1のスレッドを指定してもよい。他の構成も、本発明
の原理に従って、可能である。
【0030】各スレッドは、順番に、キューからブロッ
クを選択し,そのブロックのために開発者が指定したプ
ログラムコードを実行する。キューにブロックが有る限
り、前記スレッドは、利用可能なときには、それらを選
択し、該当するプログラムコードを実行する。更に、キ
ューに入れられたブロックは、各ブロックの依存性情報
を反映する手法で実行のために選択される。利用可能な
スレッドが、キューに入れられたブロックを実行のため
に選択すると、そのスレッドはブロックの依存性情報
(即ち、他のブロックへのリンク)を先ず検査して、も
し、選択されたブロックが依存するブロックの実行が完
了すると、スレッドは、選択されたブロックのプログラ
ムコードの実行を進行することができる。さもなけれ
ば、選択されたブロックのプログラムコードの実行を開
始するまでスレッドは待ち状態に入る。代わりに、スレ
ッドは、適当ならば優先度に基づいて、キューにおける
次に利用可能なブロックを選択して、それが依存するブ
ロックに関するステートを決定するためにブロックを検
査する(即ち、選択されたブロックのプログラムコード
が安全に実行することができるように、それが依存する
全てのブロックの実行を完了させる)。この工程は、ス
レッドがキューの全てのブロックに関連付けられたプロ
グラムコードの実行を完了するまで継続される。
クを選択し,そのブロックのために開発者が指定したプ
ログラムコードを実行する。キューにブロックが有る限
り、前記スレッドは、利用可能なときには、それらを選
択し、該当するプログラムコードを実行する。更に、キ
ューに入れられたブロックは、各ブロックの依存性情報
を反映する手法で実行のために選択される。利用可能な
スレッドが、キューに入れられたブロックを実行のため
に選択すると、そのスレッドはブロックの依存性情報
(即ち、他のブロックへのリンク)を先ず検査して、も
し、選択されたブロックが依存するブロックの実行が完
了すると、スレッドは、選択されたブロックのプログラ
ムコードの実行を進行することができる。さもなけれ
ば、選択されたブロックのプログラムコードの実行を開
始するまでスレッドは待ち状態に入る。代わりに、スレ
ッドは、適当ならば優先度に基づいて、キューにおける
次に利用可能なブロックを選択して、それが依存するブ
ロックに関するステートを決定するためにブロックを検
査する(即ち、選択されたブロックのプログラムコード
が安全に実行することができるように、それが依存する
全てのブロックの実行を完了させる)。この工程は、ス
レッドがキューの全てのブロックに関連付けられたプロ
グラムコードの実行を完了するまで継続される。
【0031】以下の記載は、データフロープログラムの
設計及び開発及びそれに続く実行段階の局面についての
詳細を含む。領域とブロックを用いるデータフロープログラムの定義 設計と開発工程の始めには、開発者は、メモリ領域を指
定し、その領域を複数のブロックに分割する。これは開
発ツールにより供給されるインターフェイスを用いて図
表を用いて行われる。図2は、4x4の行列に配置され
た16のブロックを含むメモリ領域100の例を示して
おり、各ブロックは、行番号と列番号で識別される。例
えば、メモリ領域100の左上角のブロックは、第1行
の第1列に設置されていることを示すラベル(1,1)
を付され、領域100の右下角のブロックは右下角に設
置されていることを示すラベル(4,4)を付される。
残りの14ブロックの全ては、同様のラベル付けの約束
に従いラベルを付される。説明されるように、各ブロッ
クは、数値又は情報の行列又は列のようなデータ集合を
含み、プログラムコードに従って処理される。
設計及び開発及びそれに続く実行段階の局面についての
詳細を含む。領域とブロックを用いるデータフロープログラムの定義 設計と開発工程の始めには、開発者は、メモリ領域を指
定し、その領域を複数のブロックに分割する。これは開
発ツールにより供給されるインターフェイスを用いて図
表を用いて行われる。図2は、4x4の行列に配置され
た16のブロックを含むメモリ領域100の例を示して
おり、各ブロックは、行番号と列番号で識別される。例
えば、メモリ領域100の左上角のブロックは、第1行
の第1列に設置されていることを示すラベル(1,1)
を付され、領域100の右下角のブロックは右下角に設
置されていることを示すラベル(4,4)を付される。
残りの14ブロックの全ては、同様のラベル付けの約束
に従いラベルを付される。説明されるように、各ブロッ
クは、数値又は情報の行列又は列のようなデータ集合を
含み、プログラムコードに従って処理される。
【0032】メモリ領域の定義及びブロックへの分割の
後に、開発者は各ブロックのステートを指定する。説明
されるように、ブロックのステートは開発者がそのブロ
ックに割り当てたプログラムコードに対応しており、開
発者はマルチプロセッサコンピュータシステムが指定さ
れたプログラムコードを用いてブロックのデータを処理
するようにするつもりであることを意味する。前記イン
ターフェイスは、プログラムコードをブロックに付与す
るためのウィンドウ又は他の手段を、開発者に提供す
る。開発ツールは、そのコードをそのブロックに関連付
ける。
後に、開発者は各ブロックのステートを指定する。説明
されるように、ブロックのステートは開発者がそのブロ
ックに割り当てたプログラムコードに対応しており、開
発者はマルチプロセッサコンピュータシステムが指定さ
れたプログラムコードを用いてブロックのデータを処理
するようにするつもりであることを意味する。前記イン
ターフェイスは、プログラムコードをブロックに付与す
るためのウィンドウ又は他の手段を、開発者に提供す
る。開発ツールは、そのコードをそのブロックに関連付
ける。
【0033】例示した領域100において、ラベル
(1,1)、(2,1)、(3,1)及び(4,1)の
ブロックグループ100aは、同じステートを共有し、
ラベル(1,2)、(1,3)及び(1,4)のブロッ
クグループ100bは、同じステートを共有し、ラベル
(2,2)、(2,3)、(2,4)、(3,2)、
(3,3)、(3,4)、(4,2)、(4,3)及び
(4,4)のブロックグループ100cは、同じステー
トを共有する。図2において、3つの異なるステート
は、各グループのブロックに、異なる陰影(又は塗りつ
ぶし)を施すことによって表される。
(1,1)、(2,1)、(3,1)及び(4,1)の
ブロックグループ100aは、同じステートを共有し、
ラベル(1,2)、(1,3)及び(1,4)のブロッ
クグループ100bは、同じステートを共有し、ラベル
(2,2)、(2,3)、(2,4)、(3,2)、
(3,3)、(3,4)、(4,2)、(4,3)及び
(4,4)のブロックグループ100cは、同じステー
トを共有する。図2において、3つの異なるステート
は、各グループのブロックに、異なる陰影(又は塗りつ
ぶし)を施すことによって表される。
【0034】領域100及びそのブロックはサイズが統
一されているように示されるが、実際には、メモリ領域
及びブロックは異なる形状及びサイズを有する。例え
ば、メモリ領域100は4x4の行列の16のブロック
からなり、図では示されていないが、各ブロックは8x
8の行列を有するようにしてもよい。代わりに、適用に
応じて、メモリ領域は、4x3のブロックの行列からな
るようにしてもよく、各ブロックは3x2のデータの行
列からなるようにしてもよい。
一されているように示されるが、実際には、メモリ領域
及びブロックは異なる形状及びサイズを有する。例え
ば、メモリ領域100は4x4の行列の16のブロック
からなり、図では示されていないが、各ブロックは8x
8の行列を有するようにしてもよい。代わりに、適用に
応じて、メモリ領域は、4x3のブロックの行列からな
るようにしてもよく、各ブロックは3x2のデータの行
列からなるようにしてもよい。
【0035】次に、開発者は、ブロック間の依存関係を
指定する。更に、依存関係は、1つのブロックがプログ
ラム実行中に他のブロックの結果又は最終的なステート
に依存する関係として定義される。換言すれば、1つの
ブロックは他の依存するブロックが処理される前に処理
されなければならない。図3A及び3Bは、図2の領域
100を使用する依存関係の複数の例を示す。図3Aに
示すように、(1,2)、(1,3)及び(1,4)の
ラベルを付されたブロックの夫々は、(1,1)、
(2,1)、(3,1)及び(4,1)のラベルを付さ
れたブロックに依存する。これは、(1,1)、(2,
1)、(3,1)及び(4,1)のラベルを付されたブ
ロックの全ては、(1,2)、(1,3)及び(1,
4)のラベルを付されたブロックよりも先に処理されな
ければならないことを意味する。
指定する。更に、依存関係は、1つのブロックがプログ
ラム実行中に他のブロックの結果又は最終的なステート
に依存する関係として定義される。換言すれば、1つの
ブロックは他の依存するブロックが処理される前に処理
されなければならない。図3A及び3Bは、図2の領域
100を使用する依存関係の複数の例を示す。図3Aに
示すように、(1,2)、(1,3)及び(1,4)の
ラベルを付されたブロックの夫々は、(1,1)、
(2,1)、(3,1)及び(4,1)のラベルを付さ
れたブロックに依存する。これは、(1,1)、(2,
1)、(3,1)及び(4,1)のラベルを付されたブ
ロックの全ては、(1,2)、(1,3)及び(1,
4)のラベルを付されたブロックよりも先に処理されな
ければならないことを意味する。
【0036】同様に、図3Bは(1,2)、(1,3)
及び(1,4)のラベルを付された各ブロックと、
(2,2)、(2,3)、(2,4)、(3,2)、
(3,3)、(3,4)、(4,2)、(4,3)及び
(4,4)のラベルを付されたブロックとの間の依存関
係を示す。図示の如く、ラベル(1,2)のブロックは
同じ列のラベル(2,2)、(3,2)、(4,2)の
ブロックよりも前に処理されなければならず、ラベル
(1,3)のブロックは、同じ列のラベル(2,3)、
(3,3)、(4,3)のブロックよりも前に処理され
なければならず、ラベル(1,4)のブロックは、同じ
列のラベル(2,4)、(3,4)、(4,4)のブロ
ックよりも前に処理されなければならない。図は、単純
に依存性構成の1例を示し、開発者は他の構成を選んで
もよい。
及び(1,4)のラベルを付された各ブロックと、
(2,2)、(2,3)、(2,4)、(3,2)、
(3,3)、(3,4)、(4,2)、(4,3)及び
(4,4)のラベルを付されたブロックとの間の依存関
係を示す。図示の如く、ラベル(1,2)のブロックは
同じ列のラベル(2,2)、(3,2)、(4,2)の
ブロックよりも前に処理されなければならず、ラベル
(1,3)のブロックは、同じ列のラベル(2,3)、
(3,3)、(4,3)のブロックよりも前に処理され
なければならず、ラベル(1,4)のブロックは、同じ
列のラベル(2,4)、(3,4)、(4,4)のブロ
ックよりも前に処理されなければならない。図は、単純
に依存性構成の1例を示し、開発者は他の構成を選んで
もよい。
【0037】依存関係を示す図表を完成させるときに、
ユーザインターフェイスを用いて視覚的に見ることがで
き、完成することができれば便利である。図4は、図3
A及び3Bにおける依存関係を図示するDAGである。
図4において示すDAGは、第1のステートを共有する
ブロックの全ての出力は、第2のステートを共有するブ
ロックの夫々の処理に必要とされることを視覚的に示
す。次に、第2のステートを共有するブロックの夫々
は、第3のステートを共有するとともに夫々が3つのブ
ロックからなる3つのグループの夫々よりも前に処理さ
れなければならない。このようなグラフが、本発明の原
理(下に論じられる)に従って処理するためにブロック
を順序付けるために、使用される。
ユーザインターフェイスを用いて視覚的に見ることがで
き、完成することができれば便利である。図4は、図3
A及び3Bにおける依存関係を図示するDAGである。
図4において示すDAGは、第1のステートを共有する
ブロックの全ての出力は、第2のステートを共有するブ
ロックの夫々の処理に必要とされることを視覚的に示
す。次に、第2のステートを共有するブロックの夫々
は、第3のステートを共有するとともに夫々が3つのブ
ロックからなる3つのグループの夫々よりも前に処理さ
れなければならない。このようなグラフが、本発明の原
理(下に論じられる)に従って処理するためにブロック
を順序付けるために、使用される。
【0038】データフロープログラムツール コンピュータアーキテクチュア 図5は、本発明による実施方法及び実施システムに好適
な具体的なデータ処理システム500を示す。データ処
理システム500は、ローカルエリアネットワーク、ワ
イドエリアネットワーク又はインターネットのようなネ
ットワーク570に接続されたコンピュータシステム5
10を含む。
な具体的なデータ処理システム500を示す。データ処
理システム500は、ローカルエリアネットワーク、ワ
イドエリアネットワーク又はインターネットのようなネ
ットワーク570に接続されたコンピュータシステム5
10を含む。
【0039】コンピュータシステム510は、主メモリ
520、副記憶装置530、中央処理装置(CPU)5
40、入力装置550及び画像表示装置560を含む。
主メモリ520は、データフロープログラム開発ツール
522及びプログラム524を含む。データフロープロ
グラム開発ツール522は、制御フロープログラムコー
ドを使用するプログラムを含むデータフロープログラム
の設計及び開発のためのインターフェイスを提供する。
表示装置560を用いて、前記ツールを使用すると、開
発者は、図2の領域100のようなメモリ領域を設計す
ること及びその領域を対応するステートを有するブロッ
クに分けることが可能になる。前記ツールによって、更
に、開発者はマルチプロセッサコンピュータシステムを
用いてブロックの夫々を処理するためにプログラムコー
ドを書くことが可能になる(図7参照)。
520、副記憶装置530、中央処理装置(CPU)5
40、入力装置550及び画像表示装置560を含む。
主メモリ520は、データフロープログラム開発ツール
522及びプログラム524を含む。データフロープロ
グラム開発ツール522は、制御フロープログラムコー
ドを使用するプログラムを含むデータフロープログラム
の設計及び開発のためのインターフェイスを提供する。
表示装置560を用いて、前記ツールを使用すると、開
発者は、図2の領域100のようなメモリ領域を設計す
ること及びその領域を対応するステートを有するブロッ
クに分けることが可能になる。前記ツールによって、更
に、開発者はマルチプロセッサコンピュータシステムを
用いてブロックの夫々を処理するためにプログラムコー
ドを書くことが可能になる(図7参照)。
【0040】プログラム524は、例えばツール522
を用いて、本発明に従って設計されたデータフロープロ
グラムを示す。プログラム524は、メモリ領域、その
領域のブロック、各ブロックに関連付けられたプログラ
ムコード及びブロック間の依存関係を特定する情報から
なる。
を用いて、本発明に従って設計されたデータフロープロ
グラムを示す。プログラム524は、メモリ領域、その
領域のブロック、各ブロックに関連付けられたプログラ
ムコード及びブロック間の依存関係を特定する情報から
なる。
【0041】実施の形態の1例として、メモリ520に
格納されるように示されているが、当業者は、本発明に
従うシステム及び方法の全て或いは一部が、副記憶装置
のような他のコンピュータ可読媒体に格納されそこから
読み出されてもよいことを認識するであろう。例えば、
ハードディスク、フロッピー(登録商標)ディスク、そ
してCD−ROM、或いはインターネットのようなネッ
トワークから受信される搬送波或いは、他の形式のRO
M又はRAMが前記副記憶装置に該当する。また、デー
タ処理システム500の特定の構成要素が示されるが、
当業者は本発明に従う方法及びシステムに適合するデー
タ処理システムは、付加的な又は異なる構成要素を含ん
でもよいことを認識するであろう。
格納されるように示されているが、当業者は、本発明に
従うシステム及び方法の全て或いは一部が、副記憶装置
のような他のコンピュータ可読媒体に格納されそこから
読み出されてもよいことを認識するであろう。例えば、
ハードディスク、フロッピー(登録商標)ディスク、そ
してCD−ROM、或いはインターネットのようなネッ
トワークから受信される搬送波或いは、他の形式のRO
M又はRAMが前記副記憶装置に該当する。また、デー
タ処理システム500の特定の構成要素が示されるが、
当業者は本発明に従う方法及びシステムに適合するデー
タ処理システムは、付加的な又は異なる構成要素を含ん
でもよいことを認識するであろう。
【0042】工程 図6は、データフローモデルを用いるプログラムを書く
ために開発者によって実行される工程600のフローチ
ャートである。この工程は、本発明の原理に従う手法で
ツール522によって実行されてもよい。説明されるよ
うに、ツール522は、ユーザインターフェイス及び関
係する機能性を含んでおり、ソフトウェア開発者がデー
タフローモデルを用いるプログラムを書くための環境を
提供する。
ために開発者によって実行される工程600のフローチ
ャートである。この工程は、本発明の原理に従う手法で
ツール522によって実行されてもよい。説明されるよ
うに、ツール522は、ユーザインターフェイス及び関
係する機能性を含んでおり、ソフトウェア開発者がデー
タフローモデルを用いるプログラムを書くための環境を
提供する。
【0043】開発者が、ツール522の実行を開始する
と、それは、開発者がデータフロープログラムを書くた
めに必要な種々の図表を表示する。ツールは、先ず、開
発者がメモリ領域を定義するために用いる図表を表示す
る(ステップ610)。ツール522を用いて、開発者
は領域をブロックに分割する(ステップ620)。
と、それは、開発者がデータフロープログラムを書くた
めに必要な種々の図表を表示する。ツールは、先ず、開
発者がメモリ領域を定義するために用いる図表を表示す
る(ステップ610)。ツール522を用いて、開発者
は領域をブロックに分割する(ステップ620)。
【0044】処理される領域にブロックが有る限り(ス
テップ630)、開発者はブロックを選択し(ステップ
640)、選択されたブロックの最終のステートに影響
する他のブロック(言い換えれば、選択されたブロック
が依存するブロック)を識別し(ステップ650)、そ
して、各ブロックのプログラムコード、例えば既存の制
御フロープログラムの部分、を指定する(ステップ66
0)。この記載は既存の制御フロープログラムをデータ
フロー構成を用いてマルチプロセッサコンピュータシス
テムで動作させるために変換することを含んでいるが、
当業者は、マルチプロセッサコンピュータシステム上で
実行するための新しいデータフロープログラムを開発す
るために、前記ツール522が用いられてもよいことを
認識するであろう。
テップ630)、開発者はブロックを選択し(ステップ
640)、選択されたブロックの最終のステートに影響
する他のブロック(言い換えれば、選択されたブロック
が依存するブロック)を識別し(ステップ650)、そ
して、各ブロックのプログラムコード、例えば既存の制
御フロープログラムの部分、を指定する(ステップ66
0)。この記載は既存の制御フロープログラムをデータ
フロー構成を用いてマルチプロセッサコンピュータシス
テムで動作させるために変換することを含んでいるが、
当業者は、マルチプロセッサコンピュータシステム上で
実行するための新しいデータフロープログラムを開発す
るために、前記ツール522が用いられてもよいことを
認識するであろう。
【0045】すべてのブロックが処理された(ステップ
640乃至660)後で、開発者はブロック間を画像上
で相互に結びつけることによりブロック間の依存関係を
確立し(ステップ670)、ツール522は、リンクに
対応するデータを生成及び格納するために前記視覚的情
報を使用する。前記ブロックは、マルチプロセッサコン
ピュータシステムで処理するために論理的にキューに入
れられる(ステップ680)。ツール522は、処理に
適する順番でブロックをキューに入れるために前記依存
性/リンク情報を利用する。例えば、特定のブロックが
依存するどのブロックも、そのキューにおいてその特定
のブロックよりも前に設置される。図2乃至図4の例に
関しては、ブロックは図7に示すようにキューに入れら
れる。具体的には、第1のステートを共有するブロッ
ク、即ち、(1,1)、(2,1)、(3,1)及び
(4,1)は、第2のステートを有するブロック、即
ち、(1,2)、(1,3)、及び(1,4)よりも前
に入れられ、第3のステートを共有するブロック、即
ち、(2,2)、(2,3)、(2,4)、(3,
2)、(3,3)、(3,4)、(4,2)、(4,
3)及び(4,4)が、その後に続く。
640乃至660)後で、開発者はブロック間を画像上
で相互に結びつけることによりブロック間の依存関係を
確立し(ステップ670)、ツール522は、リンクに
対応するデータを生成及び格納するために前記視覚的情
報を使用する。前記ブロックは、マルチプロセッサコン
ピュータシステムで処理するために論理的にキューに入
れられる(ステップ680)。ツール522は、処理に
適する順番でブロックをキューに入れるために前記依存
性/リンク情報を利用する。例えば、特定のブロックが
依存するどのブロックも、そのキューにおいてその特定
のブロックよりも前に設置される。図2乃至図4の例に
関しては、ブロックは図7に示すようにキューに入れら
れる。具体的には、第1のステートを共有するブロッ
ク、即ち、(1,1)、(2,1)、(3,1)及び
(4,1)は、第2のステートを有するブロック、即
ち、(1,2)、(1,3)、及び(1,4)よりも前
に入れられ、第3のステートを共有するブロック、即
ち、(2,2)、(2,3)、(2,4)、(3,
2)、(3,3)、(3,4)、(4,2)、(4,
3)及び(4,4)が、その後に続く。
【0046】マルチプロセッサプログラムの実行 説明されるように、本発明によれば、データフロープロ
グラムがマルチプロセッサコンピュータシステムで実行
される。このようなマルチプロセッサコンピュータシス
テムの構成は多く有るが、図8にその一例を示す。例え
ば、きつく結合される構成では、複数のプロセッサが全
て同一の物理的な箱に設置される。他のゆるく結合され
る構成では、システムはネットワーク上の複数のコンピ
ュータにより構成され、各コンピュータは個別のプロセ
ッサを有する。
グラムがマルチプロセッサコンピュータシステムで実行
される。このようなマルチプロセッサコンピュータシス
テムの構成は多く有るが、図8にその一例を示す。例え
ば、きつく結合される構成では、複数のプロセッサが全
て同一の物理的な箱に設置される。他のゆるく結合され
る構成では、システムはネットワーク上の複数のコンピ
ュータにより構成され、各コンピュータは個別のプロセ
ッサを有する。
【0047】マルチプロセッサコンピュータシステム 図8に示されるように、マルチプロセッサコンピュータ
システム810は、ネットワークインターフェイス82
0に接続される。そのインターフェイスは、開発者が、
マルチプロセッサコンピュータシステム810で実行す
るために、開発ツール環境(図5参照)から、データフ
ロープログラムを移動することを可能にする。代わり
に、本発明の原理に従うデータフロープログラム開発工
程は、プログラムの実行にも使用されるシステム810
上で実行されてもよい。この代替手法によれば、プログ
ラムを開発用システムから別に設けたプログラム実行用
システムへ移動する必要がない。
システム810は、ネットワークインターフェイス82
0に接続される。そのインターフェイスは、開発者が、
マルチプロセッサコンピュータシステム810で実行す
るために、開発ツール環境(図5参照)から、データフ
ロープログラムを移動することを可能にする。代わり
に、本発明の原理に従うデータフロープログラム開発工
程は、プログラムの実行にも使用されるシステム810
上で実行されてもよい。この代替手法によれば、プログ
ラムを開発用システムから別に設けたプログラム実行用
システムへ移動する必要がない。
【0048】マルチプロセッサコンピュータ810は1
つの共有メモリ830と複数のプロセッサ840a、8
40b、・・・840nからなる。本発明に従って開発
されたデータフロープログラムの実行に関しては、プロ
セッサの個数及び型が特に限定されるわけではない。例
えば、複数のプロセッサを有する構成のHPCサーバが
使用されてもよい。HPCサーバは、サンマイクロシス
テムズ(株)の製品である。工程は、プロセッサの夫々
で独立して作動し、メモリ830を共有する。これに関
連して、工程は、ツール522を用いて開発されたデー
タフロープログラムのブロックに関連付けられたプログ
ラムコードの実行を制御するスレッドであってもよい。
つの共有メモリ830と複数のプロセッサ840a、8
40b、・・・840nからなる。本発明に従って開発
されたデータフロープログラムの実行に関しては、プロ
セッサの個数及び型が特に限定されるわけではない。例
えば、複数のプロセッサを有する構成のHPCサーバが
使用されてもよい。HPCサーバは、サンマイクロシス
テムズ(株)の製品である。工程は、プロセッサの夫々
で独立して作動し、メモリ830を共有する。これに関
連して、工程は、ツール522を用いて開発されたデー
タフロープログラムのブロックに関連付けられたプログ
ラムコードの実行を制御するスレッドであってもよい。
【0049】工程 本発明に従うデータフロープログラムの動作が、図9の
工程900を参照して記述される。複数のスレッドが、
データフロープログラムの種々の構成要素を処理するた
めに使用される。当業者は、スレッドの個数は重要では
ないこと、開発者がスレッドの個数を決定してもよいこ
と、例えば、プロセッサ1個当たり1つのスレッドとし
てもよいこと、及び、システムが利用可能なプロセッサ
の個数及びデータフロープログラムの解析に基づいてス
レッドの個数を決定してもよいことを認識するであろ
う。
工程900を参照して記述される。複数のスレッドが、
データフロープログラムの種々の構成要素を処理するた
めに使用される。当業者は、スレッドの個数は重要では
ないこと、開発者がスレッドの個数を決定してもよいこ
と、例えば、プロセッサ1個当たり1つのスレッドとし
てもよいこと、及び、システムが利用可能なプロセッサ
の個数及びデータフロープログラムの解析に基づいてス
レッドの個数を決定してもよいことを認識するであろ
う。
【0050】特定のプログラムコードに従ってブロック
を処理するためにスレッドが利用可能であれば(ステッ
プ910)、スレッドはキューにブロックが有るか否か
を決定する(ステップ920)。ブロックがある場合に
は、利用可能なスレッドは処理のためのキューからブロ
ックを選択する(ステップ930)。具体的には、ブロ
ックは、キューにおける配置順序に基づいてキューから
選択される。一方、選択されたブロックが未だ実行され
ていない他のブロックに関するプログラムコードの実行
に依存するとスレッドが決定したときには(ステップ9
40)、スレッドは、その選択されたブロックを飛ばす
(ステップ950)。一方、全てのブロック依存性が満
足されると(ステップ940)、スレッドは、割り当て
られたプロセッサを、そのブロックに関連付けられたプ
ログラムコードを実行するために使用する(ステップ9
60)。データフロープログラムを処理するスレッド
が、処理待ちキューにおける全てのブロックをキューか
ら出すと、この工程は終了する(ステップ920)。
を処理するためにスレッドが利用可能であれば(ステッ
プ910)、スレッドはキューにブロックが有るか否か
を決定する(ステップ920)。ブロックがある場合に
は、利用可能なスレッドは処理のためのキューからブロ
ックを選択する(ステップ930)。具体的には、ブロ
ックは、キューにおける配置順序に基づいてキューから
選択される。一方、選択されたブロックが未だ実行され
ていない他のブロックに関するプログラムコードの実行
に依存するとスレッドが決定したときには(ステップ9
40)、スレッドは、その選択されたブロックを飛ばす
(ステップ950)。一方、全てのブロック依存性が満
足されると(ステップ940)、スレッドは、割り当て
られたプロセッサを、そのブロックに関連付けられたプ
ログラムコードを実行するために使用する(ステップ9
60)。データフロープログラムを処理するスレッド
が、処理待ちキューにおける全てのブロックをキューか
ら出すと、この工程は終了する(ステップ920)。
【0051】処理900に従いデータフロープログラム
の実行を図示する目的で、図10A乃至Cは図7のキュ
ーの一部を図示する。該一部は、処理のためにキューに
入れられた領域100の始めの5つのブロックを含む。
図10Aに示すように、各スレッドは、プロセッサの一
つを用いて、選択されたブロックを処理する。この例で
は、4つのスレッドと4つのプロセッサが有る。スレッ
ドが処理を完了すると、該スレッドはキューにおいて次
に利用可能なブロックを実行する。例えば、図10Bに
示すように1つのスレッドがラベル(1,1)のブロッ
クのプログラム実行を完了すると、ラベル(1、2)の
ブロックを実行する。しかしながら、ラベル(1,2)
のブロックは、未だ実行される予定の他のブロック即ち
ブロック(2,1)、(3,1)及び(4,1)の最終
ステートに依存する。図10Cに示すように、これらの
プログラムコードの全てに関してプログラムコードの実
行が完了されれば、スレッドはブロック(1,2)の処
理を継続することができる。計算資源を休止させること
及び効率的に使用しないことを回避するために、スレッ
ドは、キューの処理ブロックを飛ばして、キューの各ブ
ロックに関連付けられた依存関係によってキューの他の
ブロックの処理を継続することを、当業者は認識するで
あろう。また、図10は4つのスレッドと4つのプロセ
ッサを示しているが、特定のシステム構成に応じてスレ
ッド又はプロセッサの個数は、それよりも少なくても多
くてもよい。
の実行を図示する目的で、図10A乃至Cは図7のキュ
ーの一部を図示する。該一部は、処理のためにキューに
入れられた領域100の始めの5つのブロックを含む。
図10Aに示すように、各スレッドは、プロセッサの一
つを用いて、選択されたブロックを処理する。この例で
は、4つのスレッドと4つのプロセッサが有る。スレッ
ドが処理を完了すると、該スレッドはキューにおいて次
に利用可能なブロックを実行する。例えば、図10Bに
示すように1つのスレッドがラベル(1,1)のブロッ
クのプログラム実行を完了すると、ラベル(1、2)の
ブロックを実行する。しかしながら、ラベル(1,2)
のブロックは、未だ実行される予定の他のブロック即ち
ブロック(2,1)、(3,1)及び(4,1)の最終
ステートに依存する。図10Cに示すように、これらの
プログラムコードの全てに関してプログラムコードの実
行が完了されれば、スレッドはブロック(1,2)の処
理を継続することができる。計算資源を休止させること
及び効率的に使用しないことを回避するために、スレッ
ドは、キューの処理ブロックを飛ばして、キューの各ブ
ロックに関連付けられた依存関係によってキューの他の
ブロックの処理を継続することを、当業者は認識するで
あろう。また、図10は4つのスレッドと4つのプロセ
ッサを示しているが、特定のシステム構成に応じてスレ
ッド又はプロセッサの個数は、それよりも少なくても多
くてもよい。
【0052】データフロープログラム実行の最適化 DAGが、所与のデータフロープログラムに関してデー
タの依存性を表すように生成されると、プログラムは、
実行のためのキューにおいてノード(即ち、ブロック及
び対応するプログラムコード)を順序付けるために、前
記DAGを走査することにより、マルチプロセッサコン
ピュータにおいて実行される。所与のDAGに関して、
各ノードについてノードが実行される前に全てのデータ
依存性を満足させる走査順が複数有る。異なる走査順
は、異なる動作を導き、特に、DAGが複数の実行スレ
ッドによって並列に走査されるときに顕著である。
タの依存性を表すように生成されると、プログラムは、
実行のためのキューにおいてノード(即ち、ブロック及
び対応するプログラムコード)を順序付けるために、前
記DAGを走査することにより、マルチプロセッサコン
ピュータにおいて実行される。所与のDAGに関して、
各ノードについてノードが実行される前に全てのデータ
依存性を満足させる走査順が複数有る。異なる走査順
は、異なる動作を導き、特に、DAGが複数の実行スレ
ッドによって並列に走査されるときに顕著である。
【0053】動作の本質的要素は、スレッドが待機に費
やす時間の長さである。これは依存性が満足されるノー
ドがグラフ上にないときに発生する。従って、スレッド
は処理を開始することができるようになる前に、依存す
るブロックの処理が完了するまで待たなければならな
い。動作を改善するために、2つの戦略が有る。それ
は、(1)待ち時間を最小化する走査順を用いること、
(2)スレッドが待機する間に、ノードを処理するため
に必要とされる資源を集めることである。
やす時間の長さである。これは依存性が満足されるノー
ドがグラフ上にないときに発生する。従って、スレッド
は処理を開始することができるようになる前に、依存す
るブロックの処理が完了するまで待たなければならな
い。動作を改善するために、2つの戦略が有る。それ
は、(1)待ち時間を最小化する走査順を用いること、
(2)スレッドが待機する間に、ノードを処理するため
に必要とされる資源を集めることである。
【0054】待ち時間の最小化 走査順を生成するためには2つの主な技術が用いられ
る。その第1は、グラフに直接基づいて、ノードを処理
される順序でキューに整理するものである。その第2
は、優先度順のキューにノードを配置することを含んで
いる。
る。その第1は、グラフに直接基づいて、ノードを処理
される順序でキューに整理するものである。その第2
は、優先度順のキューにノードを配置することを含んで
いる。
【0055】図11は、本発明によるデータフロープロ
グラムの動作を最適化するためにキューのブロックを組
織化するために実行される工程1100のフローチャー
トである。工程1100は、工程600のステップ68
0が、ツール522を用いて開発されるデータフロープ
ログラムの動作を最適化するために、使用される。また
全てのデータフロープログラムの動作は、工程1100
を使用して最適化される。工程1100は、ブロック情
報及びデータフロープログラムに関連する全ての依存性
情報を受け取るステップから開始する(ステップ111
0及び1120)。DAGはそれからブロック及び依存
性情報を反映して生成される(ステップ1130)。関
数によってブロックをキューに組織化することによって
プログラムの実行を最適化するためにDAGを走査する
ときに、選択された関数が適用される(ステップ114
0)。
グラムの動作を最適化するためにキューのブロックを組
織化するために実行される工程1100のフローチャー
トである。工程1100は、工程600のステップ68
0が、ツール522を用いて開発されるデータフロープ
ログラムの動作を最適化するために、使用される。また
全てのデータフロープログラムの動作は、工程1100
を使用して最適化される。工程1100は、ブロック情
報及びデータフロープログラムに関連する全ての依存性
情報を受け取るステップから開始する(ステップ111
0及び1120)。DAGはそれからブロック及び依存
性情報を反映して生成される(ステップ1130)。関
数によってブロックをキューに組織化することによって
プログラムの実行を最適化するためにDAGを走査する
ときに、選択された関数が適用される(ステップ114
0)。
【0056】1つの関数は、ノードの重みを計算するこ
と及び重みに基づいてノードを並べることを含む。前記
重みは、自身より軽い重みを有するノードに依存するデ
ータ依存性を持つノードがないように、割り当てられ
る。このルールに違反すると、処理中にデッドロックを
引き起こす。
と及び重みに基づいてノードを並べることを含む。前記
重みは、自身より軽い重みを有するノードに依存するデ
ータ依存性を持つノードがないように、割り当てられ
る。このルールに違反すると、処理中にデッドロックを
引き起こす。
【0057】1つの重み付け関数は、DAGの各ノード
から他のノードへ走査され得るノード数の最大値に基づ
いて各ノードに重みを割り当てることを含む。図12に
例示されるDAGに関して、幅優先の走査が次の順を生
成する。 ABCDEFGH これは、ノードが処理のためにキューに入れられる順番
である。各ノードが正確に処理の1ステップ時間を費や
すとすると、2つのスレッドは次の表に示されるように
6のステップ時間で該DAGを走査することができる。
から他のノードへ走査され得るノード数の最大値に基づ
いて各ノードに重みを割り当てることを含む。図12に
例示されるDAGに関して、幅優先の走査が次の順を生
成する。 ABCDEFGH これは、ノードが処理のためにキューに入れられる順番
である。各ノードが正確に処理の1ステップ時間を費や
すとすると、2つのスレッドは次の表に示されるように
6のステップ時間で該DAGを走査することができる。
【0058】
【表1】
【0059】各ノードから他のノードへ走査され得るノ
ードの最大数を各ノードの重みとして割り当てる重み付
け関数を使用して、次の重みが各ノードに割り当てられ
る。 A−4 B−0 C−2 D−3 E−1 F−2 G−1 H−0
ードの最大数を各ノードの重みとして割り当てる重み付
け関数を使用して、次の重みが各ノードに割り当てられ
る。 A−4 B−0 C−2 D−3 E−1 F−2 G−1 H−0
【0060】続いて、重みによってノードをソートする
と、結果として次に示す走査順、即ち、図12について
対応するブロックがキューに入れられる順序を生成す
る。 ADCFEGBH 2つのスレッドは、次のように、重み付け関数に従って
キューに入れられたブロックのコードを、5ステップ時
間で実行することができる。
と、結果として次に示す走査順、即ち、図12について
対応するブロックがキューに入れられる順序を生成す
る。 ADCFEGBH 2つのスレッドは、次のように、重み付け関数に従って
キューに入れられたブロックのコードを、5ステップ時
間で実行することができる。
【0061】
【表2】
【0062】他の重み付け関数は、ノードを処理するた
めに費やす時間の見積もりである時間を各ノードに割り
当てることを含む。該関数は、DAGにおいて走査順に
沿って他のノードへ移るまでの各ノードの時間を合計す
ることによって計算される合計の最大値となることがで
きる。他の変形例は、各処理(即ち、各ノードに関連付
けられたプログラムコードによって実行される処理)に
優先度を割り当てることである。重み付け関数がタイ結
び付けを生成する場合には、各ノードに関連付けられた
処理の優先度は、どのノードが第1に処理されるかを決
定する。
めに費やす時間の見積もりである時間を各ノードに割り
当てることを含む。該関数は、DAGにおいて走査順に
沿って他のノードへ移るまでの各ノードの時間を合計す
ることによって計算される合計の最大値となることがで
きる。他の変形例は、各処理(即ち、各ノードに関連付
けられたプログラムコードによって実行される処理)に
優先度を割り当てることである。重み付け関数がタイ結
び付けを生成する場合には、各ノードに関連付けられた
処理の優先度は、どのノードが第1に処理されるかを決
定する。
【0063】ソート関数もまた、プログラム動作を最適
化するために用いられてもよい。数値nが与えられる
と、前記ソートがnの幅でDAGを生成しようとするこ
とができる。始めに、満足されない依存性を有しない全
てのノードが、識別される。そして、最大の重みを有す
るノードが、リストに置かれる。リスト上のノードに関
する全てのデータ依存性は、満足されると思われる。そ
して、DAG全体が走査されるまで、アルゴリズムは繰
り返される。例えば、図13に示すDAGを用いて、単
純なソートが次の走査順を生成する。ACFGBDEH
この走査順は、完了するために2つのスレッドで6ステ
ップ時間を費やす。
化するために用いられてもよい。数値nが与えられる
と、前記ソートがnの幅でDAGを生成しようとするこ
とができる。始めに、満足されない依存性を有しない全
てのノードが、識別される。そして、最大の重みを有す
るノードが、リストに置かれる。リスト上のノードに関
する全てのデータ依存性は、満足されると思われる。そ
して、DAG全体が走査されるまで、アルゴリズムは繰
り返される。例えば、図13に示すDAGを用いて、単
純なソートが次の走査順を生成する。ACFGBDEH
この走査順は、完了するために2つのスレッドで6ステ
ップ時間を費やす。
【0064】
【表3】
【0065】しかしながら、nが2である広さに基づく
ソートは、次の走査順を生成する。 ACBFDGEH この走査順は、次に示すように、2つのスレッドが5ス
テップ時間で実行を完了することができる順序を生成す
ることができる。
ソートは、次の走査順を生成する。 ACBFDGEH この走査順は、次に示すように、2つのスレッドが5ス
テップ時間で実行を完了することができる順序を生成す
ることができる。
【0066】
【表4】
【0067】従って、実行される第1のノードに対して
依存するノードよりも大きい重みを割り当てる順序付け
関数は、有効な走査順,即ち、プログラム全体の動作を
最適化する実行用キュー順序を生成する。
依存するノードよりも大きい重みを割り当てる順序付け
関数は、有効な走査順,即ち、プログラム全体の動作を
最適化する実行用キュー順序を生成する。
【0068】他の最適化関数は、夫々が種々の優先度を
有する複数のキューを使用する。スレッドは、前記キュ
ーの優先度に従ってキューからブロックを選択する。代
わりに、1つのキューがこの目的で用いられ、異なる部
分に分けられ、各部分が異なる優先度を有するようにし
てもよい。この最適化の手法を用いるために、優先度が
グラフの各ノードに割当てられなければならない。1つ
の方法は、「ボトルネック」、即ち、実行に時間がかか
るノードのプログラムコードに関連付けられたノードに
高い優先度を割り当てること含む。例えば、かなりの量
の入力及び/又は出力処理を必要とすることに起因して
実行が遅くなる。
有する複数のキューを使用する。スレッドは、前記キュ
ーの優先度に従ってキューからブロックを選択する。代
わりに、1つのキューがこの目的で用いられ、異なる部
分に分けられ、各部分が異なる優先度を有するようにし
てもよい。この最適化の手法を用いるために、優先度が
グラフの各ノードに割当てられなければならない。1つ
の方法は、「ボトルネック」、即ち、実行に時間がかか
るノードのプログラムコードに関連付けられたノードに
高い優先度を割り当てること含む。例えば、かなりの量
の入力及び/又は出力処理を必要とすることに起因して
実行が遅くなる。
【0069】例えば、図14に示されるDAGは、3つ
の工程A、B及びCに関連するノードを有する。この例
では、工程Aのノードには、高い優先度を与えるべきで
ある。工程Aが「2」のレベルの優先度を付与され、工
程B及びCが「1」の優先度レベルを付与されたとする
と、次のようにノードは次の2つのキューに配置され
る。 キュー1:A1 A2 A3 キュー2:B1 C1 B2 C2 B3 C3 実行時には、各スレッドがキュー2の第1ノードをチェ
ックする。もし、ノードの依存性が満足されると、それ
がキューから取り除かれ、処理される。さもなければ、
前記スレッドは、キュー1においてノードについてチェ
ックする。もし、ノードが見つからなければ、ノードが
利用可能になるまでその処理を繰り返す。
の工程A、B及びCに関連するノードを有する。この例
では、工程Aのノードには、高い優先度を与えるべきで
ある。工程Aが「2」のレベルの優先度を付与され、工
程B及びCが「1」の優先度レベルを付与されたとする
と、次のようにノードは次の2つのキューに配置され
る。 キュー1:A1 A2 A3 キュー2:B1 C1 B2 C2 B3 C3 実行時には、各スレッドがキュー2の第1ノードをチェ
ックする。もし、ノードの依存性が満足されると、それ
がキューから取り除かれ、処理される。さもなければ、
前記スレッドは、キュー1においてノードについてチェ
ックする。もし、ノードが見つからなければ、ノードが
利用可能になるまでその処理を繰り返す。
【0070】各工程が1つのステップ時間を費やすとす
ると、2つのスレッドが次に示すようにノードを実行す
る。
ると、2つのスレッドが次に示すようにノードを実行す
る。
【0071】
【表5】
【0072】3つのスレッドを用いると、動作は次に示
すように1つのステップ時間分改良される。
すように1つのステップ時間分改良される。
【0073】
【表6】
【0074】このように、同じDAGが、プログラム実
行のために利用可能なスレッドの数を含む要素の個数次
第で、種々の走査順を生成することができる。2つのス
レッドは次の走査順を生成する。 A1 A2 B1 A3 C1 B2 C2 B3 C
3 3つのスレッドは次の走査順を生成する。 A1 A2 B1 C1 A3 B2 C2 B3 C
3
行のために利用可能なスレッドの数を含む要素の個数次
第で、種々の走査順を生成することができる。2つのス
レッドは次の走査順を生成する。 A1 A2 B1 A3 C1 B2 C2 B3 C
3 3つのスレッドは次の走査順を生成する。 A1 A2 B1 C1 A3 B2 C2 B3 C
3
【0075】待機中の資源の配分 プログラム実行に関連する待ち時間の全てが、排除され
るわけではないが、この費やされる待ち時間は、実行中
にスレッドが必要とするデータを予め読み出すことに利
用することができる。先ず、それは、簡単に依存性が満
足されそうなノードを識別し、そのノードが利用可能に
なる(即ち、その依存性が完全に満足される)のを待つ
間、そのノードを処理するために必要なデータを予め読
み出す。該データの幾つかがキャッシュに有るので、そ
の依存性が満足されると、処理がより高速に進行する。
るわけではないが、この費やされる待ち時間は、実行中
にスレッドが必要とするデータを予め読み出すことに利
用することができる。先ず、それは、簡単に依存性が満
足されそうなノードを識別し、そのノードが利用可能に
なる(即ち、その依存性が完全に満足される)のを待つ
間、そのノードを処理するために必要なデータを予め読
み出す。該データの幾つかがキャッシュに有るので、そ
の依存性が満足されると、処理がより高速に進行する。
【0076】結び このように、本発明に従う方法、システム及び製品は、
開発者が容易にデータフロープログラムを開発するこ
と、及び、データフローモデルに従って既存の制御フロ
ープログラムを変換することを可能にする。開発者がメ
モリ領域を定義すること及びそれらを対応するステート
(夫々が制御フロープログラムの特定の命令に関連付け
られる)を有するブロックに分割することを許容するこ
とにより、インターフェイスは、マルチプロセッサ環境
で実行するためのデータフロープログラムの開発を容易
にする。プログラムの構成要素は、制御フロープログラ
ミング方法を利用しているが、そのプログラムは全体と
してデータフロー型の手法を用いて設計される。その
上、各ブロックは、データの集合を含んでおり、各ブロ
ックに関連付けられたプログラムコードが必ずしもスカ
ラー又は単一のデータ項目を処理するわけではないこと
を意味する。これにより、本手法は、大量のデータ処理
を必要とするデータ集約型プログラミングシステムであ
って、構成要素がマルチプロセッサコンピュータシステ
ムで容易に並列処理されることが可能であるシステムに
対してより有用なものになる。
開発者が容易にデータフロープログラムを開発するこ
と、及び、データフローモデルに従って既存の制御フロ
ープログラムを変換することを可能にする。開発者がメ
モリ領域を定義すること及びそれらを対応するステート
(夫々が制御フロープログラムの特定の命令に関連付け
られる)を有するブロックに分割することを許容するこ
とにより、インターフェイスは、マルチプロセッサ環境
で実行するためのデータフロープログラムの開発を容易
にする。プログラムの構成要素は、制御フロープログラ
ミング方法を利用しているが、そのプログラムは全体と
してデータフロー型の手法を用いて設計される。その
上、各ブロックは、データの集合を含んでおり、各ブロ
ックに関連付けられたプログラムコードが必ずしもスカ
ラー又は単一のデータ項目を処理するわけではないこと
を意味する。これにより、本手法は、大量のデータ処理
を必要とするデータ集約型プログラミングシステムであ
って、構成要素がマルチプロセッサコンピュータシステ
ムで容易に並列処理されることが可能であるシステムに
対してより有用なものになる。
【0077】また、本発明に係る方法は、コンピュータ
プログラム言語にかかわらずマルチプロセッサシステム
で実行される全てのプログラムに適用することができ
る。例えば、フォートラン77はマルチプロセッサコン
ピュータシステムで実行されるプログラムを開発するた
めに一般的に使用されるプログラム言語である。
プログラム言語にかかわらずマルチプロセッサシステム
で実行される全てのプログラムに適用することができ
る。例えば、フォートラン77はマルチプロセッサコン
ピュータシステムで実行されるプログラムを開発するた
めに一般的に使用されるプログラム言語である。
【0078】上記の本発明の実施形態の説明は、図解及
び解説の目的で示されている。それは、本発明の全ての
態様を網羅しているわけではなく、本発明を開示された
詳細な形態だけに限定するものでもない。上記の教示に
照らして修正及び変更が可能であり、本発明を実施する
ことにより修正及び変更がもたらされてもよい。例え
ば、上記の実施形態は、ソフトウェアを含んでいるが、
本発明はハードウェアとソフトウェアとの組み合わせと
して実施されてもよく、ハードウェア単独で実施されて
もよい。本発明はオブジェクト指向と非オブジェクト指
向の両方のプログラミングシステムを用いて実施されて
もよい。本発明の範囲は、クレームとそれらに均等なも
のによって定義される。
び解説の目的で示されている。それは、本発明の全ての
態様を網羅しているわけではなく、本発明を開示された
詳細な形態だけに限定するものでもない。上記の教示に
照らして修正及び変更が可能であり、本発明を実施する
ことにより修正及び変更がもたらされてもよい。例え
ば、上記の実施形態は、ソフトウェアを含んでいるが、
本発明はハードウェアとソフトウェアとの組み合わせと
して実施されてもよく、ハードウェア単独で実施されて
もよい。本発明はオブジェクト指向と非オブジェクト指
向の両方のプログラミングシステムを用いて実施されて
もよい。本発明の範囲は、クレームとそれらに均等なも
のによって定義される。
【0079】
【発明の効果】本発明によれば、開発者が従来よりも容
易にデータフロープログラムを開発することができるよ
うになり、そして、既存の制御フロープログラムを、マ
ルチプロセッサコンピュータシステムで実行するための
データフロープログラムに容易に変換することができる
ようになる。また、マルチプロセッサコンピュータシス
テムでのデータフロープログラムの動作を最適化するこ
とができるようになる。
易にデータフロープログラムを開発することができるよ
うになり、そして、既存の制御フロープログラムを、マ
ルチプロセッサコンピュータシステムで実行するための
データフロープログラムに容易に変換することができる
ようになる。また、マルチプロセッサコンピュータシス
テムでのデータフロープログラムの動作を最適化するこ
とができるようになる。
【図1】特定の式の計算についてのデータフローグラフ
の例を示す。
の例を示す。
【図2】本発明にかかる様式で定義されたメモリ領域の
例を表すブロック図である。
例を表すブロック図である。
【図3A】図2に表されたメモリ領域のブロック間の依
存関係の例を示すブロック図である。
存関係の例を示すブロック図である。
【図3B】図3Aの続きである。
【図4】図3A及び3Bに対応する依存関係を示す有向
非循環グラフの例を示す。
非循環グラフの例を示す。
【図5】本発明が実行される具体的なデータ処理システ
ムのブロック図を示す。
ムのブロック図を示す。
【図6】本発明にかかるデータフロープログラム開発に
よって実行される操作のフローチャートを表す。
よって実行される操作のフローチャートを表す。
【図7】本発明によるデータフロープログラムの実行の
ための順序を表わすキューの例を示す。
ための順序を表わすキューの例を示す。
【図8】本発明にかかる方法及びシステムの利用に好適
な具体的なマルチプロセッサコンピュータシステムのブ
ロック図を示す。
な具体的なマルチプロセッサコンピュータシステムのブ
ロック図を示す。
【図9】本発明によるデータフロープログラムの実行時
に遂行される処理のフローチャートを示す。
に遂行される処理のフローチャートを示す。
【図10A】本発明によるデータフロープログラムの実
行サイクルを説明するためのブロック図である。
行サイクルを説明するためのブロック図である。
【図10B】図10Aの続きである。
【図10C】図10Cの続きである。
【図11】本発明によるデータフロープログラムの動作
を最適化するためにブロックをキューに組織化する処理
のフローチャートを示す。
を最適化するためにブロックをキューに組織化する処理
のフローチャートを示す。
【図12】本発明によるプログラム動作の最適化の方法
の一つを説明するための有向非循環グラフの例を示す。
の一つを説明するための有向非循環グラフの例を示す。
【図13】本発明によるプログラム動作の最適化の方法
の一つを説明するための有向非循環グラフの例を示す。
の一つを説明するための有向非循環グラフの例を示す。
【図14】本発明によるプログラム動作の最適化の方法
の一つを説明するための有向非循環グラフの例を示す。
の一つを説明するための有向非循環グラフの例を示す。
【符号の説明】 100 領域 500 データ処理システム 510 コンピュータシステム 520 メモリ 522 データフロープログラム開発ツール 524 プログラム 530 副記憶装置 540 CPU 550 入力装置 560 画像表示装置 570 ネットワーク 810 マルチプロセッサコンピュータシステム 820 ネットワークインターフェイス 830 共有メモリ 840a、840b、・・・840n プロセッサ
───────────────────────────────────────────────────── フロントページの続き (54)【発明の名称】 データフロープログラムの開発のための方法、データ処理システム及びユーザインターフェイ ス、データフロープログラムの実行のためのデータ処理システム、データフロープログラムの開 発のための方法を実行するための命令を格納したコンピュータ可読媒体、データフロープログラ ムの実行最適化のための方法及びシステム、並びに、データフロープログラムの実行最適化方法 を実行するための命令を格納したコンピュータ可読媒体
Claims (41)
- 【請求項1】 コンピュータを用いたデータフロープロ
グラム開発方法であって、 少なくとも一つのスクリーン表示装置に表示することを
含み、 ユーザが領域を指定し該領域を複数のブロックに分割す
ることができるようにすることを含み、夫々のブロック
は関数に関連付けられた数値の集合を定義し、 ユーザがブロックの集合を定義することができるように
することを含み、集合に含まれる各ブロックはブロック
を構成する数値を前記関数に基づいて変換する指定され
たプログラムの部分に対応するステートを有し、 ユーザがブロック間の依存性を割り当てることができる
ようにすることを含み、夫々の依存性は各ブロックのス
テートに基づいて2つのブロック間の関係を示すことを
特徴とする。 - 【請求項2】 データフロープログラム開発のためのユ
ーザインターフェイスを表示する開発ツールを含むデー
タ処理システムであって、 前記ユーザインターフェイスは、領域を定義し該領域を
複数のブロックに分割する命令を受け取るために構成さ
れる第1の図表を含み、各ブロックは、関数に関連付け
られた数値の集合を定義し、 前記ユーザインターフェイスは、ブロックの集合を定義
する命令を受け取るために構成される第2の図表を含
み、集合に含まれる各ブロックは、該ブロックを構成す
る数値を前記関数に基づいて変換する指定されたプログ
ラムの部分に対応するステートを有し、 前記ユーザインターフェイスは、ブロック間の依存性を
表わす情報を受け取るために構成される第3の図表を含
み、各依存性は2つのブロックの間の関係を示すととも
に各ブロックのステートに基づいていることを特徴とす
る。 - 【請求項3】 データ処理システムに含まれる開発ツー
ルによって表示されるデータフロープログラム開発のた
めのグラフィカルユーザインターフェイスであって、 前記ユーザインターフェイスは、領域を定義し該領域を
複数のブロックに分割する命令を受け取るために構成さ
れる第1の図表を含み、各ブロックは、関数に関連付け
られた数値の集合を定義し、 前記ユーザインターフェイスは、ブロックの集合を定義
する命令を受け取るために構成される第2の図表を含
み、集合に含まれる各ブロックは、該ブロックを構成す
る数値を前記関数に基づいて変換する指定されたプログ
ラムの部分に対応するステートを有し、 前記ユーザインターフェイスは、ブロック間の依存性を
表わす情報を受け取るために構成される第3の図表を含
み、各依存性は2つのブロックの間の関係を示すととも
に各ブロックのステートに基づいており、2つのブロッ
ク間の依存関係は、2つのブロックの一方に関連付けら
れたプログラムの部分が他方のブロックに関連付けられ
たプログラムの部分よりも前に実行されることが必要で
あることを意味することを特徴とする。 - 【請求項4】第1プログラムと第2プログラムを開発す
る開発ツールとを格納したメモリと、前記開発ツールを
実行する少なくとも1つのプロセッサとを具備してお
り、 前記第2プログラムは、(i)複数のブロックに分割さ
れている領域を含み、各ブロックは、関数に関連付けら
れた数値の集合から構成されるとともに、ブロックを構
成する数値を前記関数に基づいて変換する第1プログラ
ムの指定された部分に対応するステートを有し、更に前
記第2プログラムは、(ii)ブロック間の依存性を含
み、各依存性は、2つのブロック間の関係を示すととも
に、関係に係る第2のブロックに関連付けられる第1プ
ログラムの部分よりも前に該関係に係る第1のブロック
に関連付けられた第1プログラムの部分が実行されるこ
とが必要であることを意味することを特徴とするデータ
処理システム。 - 【請求項5】 記憶されている依存性に従って第2プロ
グラムを実行するための複数の並列プロセッサを具備す
ることを特徴とする請求項4に記載のデータ処理システ
ム。 - 【請求項6】 データフロープログラム開発のためのデ
ータ処理システムであって、命令を格納したメモリと、
前記命令に応答するとともにユーザが次に示すことをす
ることができるように構成されたプロセッサとを具備す
ることを特徴とする。 (i)領域を指定するとともに、該領域を複数のブロッ
クに分割すること。ここで、各ブロックは関数に関連付
けられた数値の集合を定義する。 (ii)ブロックの集合を定義すること。ここで、集合
に含まれる各ブロックは、該ブロックを構成する数値を
前記関数に基づいて変換する指定されたプログラムの部
分に対応するステートを有する。 (iii)ブロック間の依存性を割り当てること。ここ
で、各依存性は各ブロックのステートに基づいて2つの
ブロック間の関係を示す。 - 【請求項7】 データフロープログラムを開発するため
の方法を実行するためのデータ処理システムを制御する
ための命令を格納したコンピュータ可読媒体であって、
前記方法が次に示すステップを含むことを特徴とする。 (i)ユーザが、領域を指定し、該領域を複数のブロッ
クに分割することができるようにするステップ。ここ
で、各ブロックは関数に関連付けられた数値の集合を定
義する。 (ii)ユーザが、ブロックの集合を定義することがで
きるようにするステップ。ここで、集合に含まれる各ブ
ロックは、該ブロックを構成する数値を前記関数に基づ
いて変換する指定されたプログラムの部分に対応するス
テートを有する。 (iii)ユーザが、ブロック間の依存性を割り当てる
ことができるようにするステップ。ここで、各依存性は
各ブロックのステートに基づいて2つのブロック間の関
係を示す。 - 【請求項8】 データフロープログラムを開発するため
の方法を実行するためのデータ処理システムを制御する
ための命令を格納したコンピュータ可読媒体であって、
前記方法が次に示すステップを含むことを特徴とする。 (i)領域を定義し該領域を複数のブロックに分割する
命令を受け取るために構成される第1の図表を表示する
ステップ。各ブロックは、関数に関連付けられた数値の
集合を定義する。 (ii)ブロックの集合を定義するための命令を受け取
るために構成される第2の図表を表示するステップ。集
合に含まれる各ブロックは、該ブロックを構成する数値
を前記関数に基づいて変換する指定されたプログラムの
部分に対応するステートを有する。 (iii)ブロック間の依存性を表わす情報を受け取る
ために構成される第3の図表を表示するステップ。各依
存性は2つのブロックの間の関係を示すとともに各ブロ
ックのステートに基づいている。 - 【請求項9】 2つのブロック間の依存関係は、該2つ
のブロックの一方に関連付けられたプログラムの部分が
他方のブロックに関連付けられたプログラムの部分より
も前に実行されることが必要であることを意味すること
を特徴とする請求項8に記載のコンピュータ可読媒体。 - 【請求項10】 マルチプロセッサコンピュータシステ
ムにおけるデータフロープログラムの実行最適化方法で
あって、 前記実行最適化方法は、メモリ領域情報を受け取ること
を含み、 前記メモリ領域情報は、メモリ領域を定義する複数のブ
ロックを表わすブロック情報を含み、 各ブロックは、関数に関連付けられた数値の集合から構
成され、該ブロックを構成する数値を前記関数に基づい
て変換するプログラムの指定された部分に対応するステ
ートを有し、 前記メモリ領域情報は、更に、ブロック間の依存性を表
わす依存性情報を含み、 各依存性は、2つのブロック間の関係を示し、関係に係
る第1のブロックに関連付けられたプログラムの部分が
該関係に係る第2のブロックに関連付けられたプログラ
ムの部分よりも前に実行されることが必要であることを
意味し、 前記実行最適化方法は、更に、前記メモリ領域情報を組
織化するキューを生成することを含むことを特徴とす
る。 - 【請求項11】 更に、前記キューにおける前記メモリ
領域情報の組織に従って、各ブロックに関連付けられた
プログラムの指定された部分を実行することを含むこと
を特徴とする請求項10に記載の方法。 - 【請求項12】 前記メモリ領域情報を組織化する前記
キューを生成することには、 各ブロックに対応するノードをグラフ上に設けて、メモ
リ情報に基づく有向非環状グラフを生成することと、 予め定めた関数に従って有向非環状グラフを走査するこ
とと、 前記有向非環状グラフの走査に基づいて前記キューに各
ブロックを識別する情報を配置することとを含むことを
特徴とする請求項10に記載の方法。 - 【請求項13】 予め定めた関数に従って前記有向非環
状グラフを走査することには、 ブロックが自身よりも小さい重みを有するブロックに対
してデータ依存性を有することが無いように各ブロック
に重み付けをすることを含むことを特徴とする請求項1
2に記載の方法。 - 【請求項14】 前記キューは少なくとも2つの部分を
有し、各部分は優先度を有し、 前記キューにおける前記メモリ領域情報の組織に従って
各ブロックに関連付けられたプログラムの指定された部
分を実行することには、 各ブロックに割り当てられた優先度を用いて前記キュー
の2つの部分にブロックを配置することを含むことを特
徴とする請求項11に記載の方法。 - 【請求項15】 前記キューにおける前記メモリ領域情
報の組織に従って各ブロックに関連付けられたプログラ
ムの指定された部分を実行することには、更に、 キューの高い優先度の部分のブロックをキューの低い優
先度の部分のブロックよりも優先するようにして、キュ
ーの各部分の優先度に基づいて前記キューの2つの部分
からブロックを選択することを含むことを特徴とする請
求項14に記載の方法。 - 【請求項16】 キューの高い優先度の部分のブロック
をキューの低い優先度の部分のブロックよりも優先する
ようにして、キューの各部分の優先度に基づいてキュー
の2つの部分からブロックを選択することには、 キューの高い優先度の部分からブロックを選択すること
と、 キューの高い優先度の部分から選択された前記ブロック
に関連付けられた依存関係が有る場合には、該依存関係
が全て満足されたか否かを判定して、該ブロックに関連
する全ての依存関係が満足されたと判定されるときに、
該ブロックに関連付けられたプログラムコードの実行を
開始することとを含むことを特徴とする請求項15に記
載の方法。 - 【請求項17】 キューの高い優先度の部分のブロック
をキューの低い優先度の部分のブロックよりも優先する
ようにして、キューの各部分の優先度に基づいてキュー
の2つの部分からブロックを選択することには、 キューの高い優先度の部分から選択された前記ブロック
に関連付けられた依存関係が有り、該依存関係が全て満
足されるに至っていないと判定されるときに、キューの
低い優先度の部分からブロックを選択することと、キュ
ーの低い優先度の部分から選択されたブロックに関連付
けられた依存関係が有り、該依存関係が全て満足された
と判定されるときに、キューの低い優先度の部分から選
択された前記ブロックに関連付けられたプログラムコー
ドの実行を開始することとを含むことを特徴とする請求
項16に記載の方法。 - 【請求項18】 前記キューにおける前記メモリ領域情
報の組織に従って、各ブロックに関連付けられたプログ
ラムの指定された部分を実行することには、各ブロック
に割り当てられた優先度を用いて各キューが異なる優先
度を有する少なくとも2つのキューにブロックを配置す
ることを含むことを特徴とする請求項11に記載の方
法。 - 【請求項19】 前記キューにおける組織に従って、各
ブロックに関連付けられたプログラムの指定された部分
を実行することには、更に、高い優先度を有するキュー
のブロックを低い優先度を有するキューのブロックより
も優先するようにして各キューの優先度に基づいてキュ
ーからブロックを選択することを含むことを特徴とする
請求項18に記載の方法。 - 【請求項20】 前記キューにおける前記メモリ領域情
報の組織に従って、各ブロックに関連付けられたプログ
ラムの指定された部分を実行することには、ブロックを
実行するための資源が利用可能であるが該ブロックの全
ての依存関係が満足されるに至っていない場合に、該ブ
ロックの実行に必要であり利用可能なデータを予め読み
出すことを含むことを特徴とする請求項11に記載の方
法。 - 【請求項21】 マルチプロセッサコンピュータシステ
ムによって実行するためにデータフロープログラムを最
適化するシステムであって、 前記システムは、メモリ領域情報によって特徴付けられ
るプログラムを格納したメモリを具備し、 前記メモリ領域情報は、メモリ領域を定義する複数のブ
ロックを表わすブロック情報を含み、 各ブロックは、関数に関連付けられた数値の集合から構
成され、該ブロックを構成する数値を前記関数に基づい
て変換するプログラムの指定された部分に対応するステ
ートを有し、 前記メモリ領域情報は、更に、ブロック間の依存性を表
わす依存性情報を含み、 各依存性は、2つのブロック間の関係を示し、関係に係
る第1のブロックに関連付けられたプログラムの部分が
該関係に係る第2のブロックに関連付けられたプログラ
ムの部分よりも前に実行されることが必要であることを
意味し、 前記システムは、更に、前記メモリ領域情報を組織化す
るキューを生成するように構成される少なくとも1つの
プロセッサを具備することを特徴とする。 - 【請求項22】 前記マルチプロセッサコンピュータシ
ステムは、前記キューにおける前記メモリ領域情報の組
織に従って、各ブロックに関連付けられたプログラムの
指定された部分を実行することを特徴とする請求項21
に記載のシステム。 - 【請求項23】 前記プロセッサが前記メモリ領域情報
を組織化する前記キューを生成するときには、 前記プロセッサが、 (i)各ブロックに対応するノードをグラフ上に設ける
ことによって、メモリ情報に基づく有向非環状グラフを
生成し、 (ii)予め定めた関数に従って有向非環状グラフを走
査し、そして、 (iii)前記有向非環状グラフの走査に基づいて前記
キューに各ブロックを識別する情報を配置することを特
徴とする請求項21に記載のシステム。 - 【請求項24】 前記プロセッサが予め定めた関数に従
って前記有向非環状グラフを走査するときには、 前記プロセッサは、ブロックが自身よりも小さい重みを
有するブロックに対してデータ依存性を有することが無
いように各ブロックに重み付けをすることを特徴とする
請求項23に記載のシステム。 - 【請求項25】 前記キューは少なくとも2つの部分を
有し、各部分は優先度を有し、 前記プロセッサが前記キューにおける前記メモリ領域情
報の組織に従って各ブロックに関連付けられたプログラ
ムの指定された部分を実行するときには、 前記プロセッサは各ブロックに割り当てられた優先度を
用いて前記キューの2つの部分にブロックを配置するこ
とを特徴とする請求項22に記載のシステム。 - 【請求項26】 前記プロセッサが前記キューにおける
前記メモリ領域情報の組織に従って各ブロックに関連付
けられたプログラムの指定された部分を実行するときに
は、 前記プロセッサは、キューの高い優先度の部分のブロッ
クをキューの低い優先度の部分のブロックよりも優先す
るようにして、キューの各部分の優先度に基づいて前記
キューの2つの部分からブロックを選択することを特徴
とする請求項25に記載のシステム。 - 【請求項27】 前記プロセッサがキューの高い優先度
の部分のブロックをキューの低い優先度の部分のブロッ
クよりも優先するようにして、キューの各部分の優先度
に基づいてキューの2つの部分からブロックを選択する
ときには、 前記プロセッサは、キューの高い優先度の部分からブロ
ックを選択して、キューの高い優先度の部分から選択さ
れた前記ブロックに関連付けられた依存関係が有る場合
には、該依存関係が全て満足されたか否かを判定して、
該ブロックに関連する全ての依存関係が満足されたと判
定されるときに、該ブロックに関連付けられたプログラ
ムコードの実行を開始することを特徴とする請求項26
に記載のシステム。 - 【請求項28】 前記プロセッサがキューの高い優先度
の部分のブロックをキューの低い優先度の部分のブロッ
クよりも優先するようにして、キューの各部分の優先度
に基づいてキューの2つの部分からブロックを選択する
ときには、 前記プロセッサは、キューの高い優先度の部分から選択
された前記ブロックに関連付けられた依存関係が有り、
該依存関係が全て満足されるに至っていないと判定され
るときに、キューの低い優先度の部分からブロックを選
択して、キューの低い優先度の部分から選択されたブロ
ックに関連付けられた依存関係が有り、該依存関係が全
て満足されたと判定されるときに、キューの低い優先度
の部分から選択された前記ブロックに関連付けられたプ
ログラムコードの実行を開始することを特徴とする請求
項27に記載のシステム。 - 【請求項29】 前記プロセッサが、前記キューにおけ
る前記メモリ領域情報の組織に従って、各ブロックに関
連付けられたプログラムの指定された部分を実行すると
きには、前記プロセッサは、各ブロックに割り当てられ
た優先度を用いて各キューが異なる優先度を有する少な
くとも2つのキューにブロックを配置することを特徴と
する請求項22に記載のシステム。 - 【請求項30】 前記プロセッサが、前記キューにおけ
るメモリー領域情報の組織に従って、各ブロックに関連
付けられたプログラムの指定された部分を実行するとき
には、前記プロセッサは、高い優先度を有するキューの
ブロックを低い優先度を有するキューのブロックよりも
優先するようにして各キューの優先度に基づいてキュー
からブロックを選択することを特徴とする請求項29に
記載のシステム。 - 【請求項31】 前記プロセッサが前記キューにおける
前記メモリ領域情報の組織に従って、各ブロックに関連
付けられたプログラムの指定された部分を実行するとき
には、 前記プロセッサは、ブロックを実行するための資源が利
用可能であるが該ブロックの全ての依存関係が満足され
るに至っていない場合に、該ブロックの実行に必要であ
り利用可能なデータを予め読み出すことを特徴とする請
求項22に記載のシステム。 - 【請求項32】 マルチプロセッサコンピュータシステ
ムにおけるデータフロープログラムの実行最適化方法を
実行するための命令を格納したコンピュータ可読媒体で
あって、 前記実行最適化方法は、メモリ領域情報を受け取ること
を含み、 前記メモリ領域情報は、メモリ領域を定義する複数のブ
ロックを表わすブロック情報を含み、 各ブロックは、関数に関連付けられた数値の集合から構
成され、該ブロックを構成する数値を前記関数に基づい
て変換するプログラムの指定された部分に対応するステ
ートを有し、 前記メモリ領域情報は、更に、ブロック間の依存性を表
わす依存性情報を含み、 各依存性は、2つのブロック間の関係を示し、関係に係
る第1のブロックに関連付けられたプログラムの部分が
該関係に係る第2のブロックに関連付けられたプログラ
ムの部分よりも前に実行されることが必要であることを
意味し、 前記実行最適化方法は更に、前記メモリ領域情報を組織
化するキューを生成することを含むことを特徴とする。 - 【請求項33】 前記実行最適化方法は、更に、前記キ
ューにおける前記メモリ領域情報の組織に従って、各ブ
ロックに関連付けられたプログラムの指定された部分を
実行することを含むことを特徴とする請求項32に記載
のコンピュータ可読媒体。 【請求項33】 前記メモリ領域情報を組織化する前記
キューを生成することには、 各ブロックに対応するノードをグラフ上に設けて、メモ
リ情報に基づく有向非環状グラフを生成することと、 予め定めた関数に従って有向非環状グラフを走査するこ
とと、 前記有向非環状グラフの走査に基づいて前記キューに各
ブロックを識別する情報を配置することとを含むことを
特徴とする請求項32に記載のコンピュータ可読媒体。 - 【請求項34】 予め定めた関数に従って前記有向非環
状グラフを走査することには、 ブロックが自身よりも小さい重みを有するブロックに対
してデータ依存性を有することが無いように各ブロック
に重み付けをすることを含むことを特徴とする請求項3
3に記載のコンピュータ可読媒体。 - 【請求項35】 前記キューは少なくとも2つの部分を
有し、各部分は優先度を有し、 前記キューにおける前記メモリ領域情報の組織に従って
各ブロックに関連付けられたプログラムの指定された部
分を実行することには、 各ブロックに割り当てられた優先度を用いて前記キュー
の2つの部分にブロックを配置することを含むことを特
徴とする請求項33に記載のコンピュータ可読媒体。 - 【請求項36】 前記キューにおける前記メモリ領域情
報の組織に従って各ブロックに関連付けられたプログラ
ムの指定された部分を実行することには、更に、 キューの高い優先度の部分のブロックをキューの低い優
先度の部分のブロックよりも優先するようにして、キュ
ーの各部分の優先度に基づいて前記キューの2つの部分
からブロックを選択することを含むことを特徴とする請
求項35に記載のコンピュータ可読媒体。 - 【請求項37】 キューの高い優先度の部分のブロック
をキューの低い優先度の部分のブロックよりも優先する
ようにして、キューの各部分の優先度に基づいてキュー
の2つの部分からブロックを選択することには、 キューの高い優先度の部分からブロックを選択すること
と、 キューの高い優先度の部分から選択された前記ブロック
に関連付けられた依存関係が有る場合には、該依存関係
が全て満足されたか否かを判定して、該ブロックに関連
する全ての依存関係が満足されたと判定されるときに、
該ブロックに関連付けられたプログラムコードの実行を
開始することとを含むことを特徴とする請求項36に記
載のコンピュータ可読媒体。 - 【請求項38】 キューの高い優先度の部分のブロック
をキューの低い優先度の部分のブロックよりも優先する
ようにして、キューの各部分の優先度に基づいてキュー
の2つの部分からブロックを選択することには、 キューの高い優先度の部分から選択された前記ブロック
に関連付けられた依存関係が有り、該依存関係が全て満
足されるに至っていないと判定されるときに、キューの
低い優先度の部分からブロックを選択することと、キュ
ーの低い優先度の部分から選択されたブロックに関連付
けられた依存関係が有り、該依存関係が全て満足された
と判定されるときに、キューの低い優先度の部分から選
択された前記ブロックに関連付けられたプログラムコー
ドの実行を開始することとを含むことを特徴とする請求
項36に記載のコンピュータ可読媒体。 - 【請求項39】 前記キューにおける前記メモリ領域情
報の組織に従って、各ブロックに関連付けられたプログ
ラムの指定された部分を実行することには、 各ブロックに割り当てられた優先度を用いて各キューが
異なる優先度を有する少なくとも2つのキューにブロッ
クを配置することを含むことを特徴とする請求項33に
記載のコンピュータ可読媒体。 - 【請求項40】 前記キューにおけるメモリー領域情報
の組織に従って、各ブロックに関連付けられたプログラ
ムの指定された部分を実行することには、 更に、高い優先度を有するキューのブロックを低い優先
度を有するキューのブロックよりも優先するようにして
各キューの優先度に基づいてキューからブロックを選択
することを含むことを特徴とする請求項39に記載のコ
ンピュータ可読媒体。 - 【請求項41】 前記キューにおける前記メモリ領域情
報の組織に従って、各ブロックに関連付けられたプログ
ラムの指定された部分を実行することには、 ブロックを実行するための資源が利用可能であるが該ブ
ロックの全ての依存関係が満足されるに至っていない場
合に、該ブロックの実行に必要であり利用可能なデータ
を予め読み出すことを含むことを特徴とする請求項33
に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/244,136 US6389587B1 (en) | 1999-02-04 | 1999-02-04 | User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs |
US09/244136 | 1999-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000284950A true JP2000284950A (ja) | 2000-10-13 |
JP2000284950A5 JP2000284950A5 (ja) | 2007-03-22 |
Family
ID=22921502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000024087A Pending JP2000284950A (ja) | 1999-02-04 | 2000-02-01 | データフロープログラムの開発のための方法、データ処理システム及びユーザインターフェイス、データフロープログラムの実行のためのデータ処理システム、データフロープログラムの開発のための方法を実行するための命令を格納したコンピュータ可読媒体、データフロープログラムの実行最適化のための方法及びシステム、並びに、データフロープログラムの実行最適化方法を実行するための命令を格納したコンピュータ可読媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6389587B1 (ja) |
EP (1) | EP1026583A3 (ja) |
JP (1) | JP2000284950A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015184843A (ja) * | 2014-03-24 | 2015-10-22 | 三菱電機株式会社 | プラント制御装置エンジニアリングツール |
JP5810918B2 (ja) * | 2009-12-24 | 2015-11-11 | 日本電気株式会社 | スケジューリング装置、スケジューリング方法及びプログラム |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
EP1132863A1 (en) * | 2000-03-08 | 2001-09-12 | MVTec Software GmbH | Method and system for developing image processing applications |
US6820256B2 (en) * | 2000-12-13 | 2004-11-16 | Microsoft Corporation | System and method for whole-system program analysis |
US20080320054A1 (en) * | 2003-04-09 | 2008-12-25 | Cindy Howard | Database and Software Conversion System and Method |
EP1562111B1 (en) * | 2004-02-03 | 2017-04-26 | Sap Se | A context modeller for modelling a context representation and a method of modelling a context representation |
US20070044072A1 (en) * | 2005-08-16 | 2007-02-22 | Hayles Timothy J | Automatically Generating a Graphical Data Flow Program Based on a Circuit Diagram |
US7660884B2 (en) * | 2006-11-10 | 2010-02-09 | International Business Machines Corporation | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system |
US7860905B2 (en) * | 2007-04-24 | 2010-12-28 | Microsoft Corporation | Systems and methods for modularizing data flows |
US7860904B2 (en) * | 2007-04-24 | 2010-12-28 | Microsoft Corporation | Standalone execution of incomplete data flows |
US8621468B2 (en) | 2007-04-26 | 2013-12-31 | Microsoft Corporation | Multi core optimizations on a binary using static and run time analysis |
US8281012B2 (en) * | 2008-01-30 | 2012-10-02 | International Business Machines Corporation | Managing parallel data processing jobs in grid environments |
US8935702B2 (en) | 2009-09-04 | 2015-01-13 | International Business Machines Corporation | Resource optimization for parallel data integration |
US9015339B2 (en) * | 2012-04-25 | 2015-04-21 | International Business Machines Corporation | Monitoring streams buffering to optimize operator procressing |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
WO2015139048A1 (en) * | 2014-03-14 | 2015-09-17 | Concurrent, Inc. | Cluster (sub) graph isomorphism logical data flow mapping rules |
US9824214B2 (en) | 2014-08-15 | 2017-11-21 | Securisea, Inc. | High performance software vulnerabilities detection system and methods |
US9454659B1 (en) | 2014-08-15 | 2016-09-27 | Securisea, Inc. | Software vulnerabilities detection system and methods |
US10599852B2 (en) | 2014-08-15 | 2020-03-24 | Securisea, Inc. | High performance software vulnerabilities detection system and methods |
US20170090890A1 (en) * | 2015-09-30 | 2017-03-30 | Semmle Limited | Virtual compositions |
US10891326B2 (en) | 2017-01-05 | 2021-01-12 | International Business Machines Corporation | Representation of a data analysis using a flow graph |
US10388039B2 (en) | 2017-05-31 | 2019-08-20 | International Business Machines Corporation | Accelerating data-driven scientific discovery |
CN107391136B (zh) * | 2017-07-21 | 2020-11-06 | 众安信息技术服务有限公司 | 一种基于流式的编程系统和方法 |
US10824468B2 (en) * | 2019-02-12 | 2020-11-03 | Arm Limited | Control of instruction execution in a data processor |
US11461297B1 (en) | 2021-06-09 | 2022-10-04 | T-Mobile Usa, Inc. | Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider |
US11922026B2 (en) | 2022-02-16 | 2024-03-05 | T-Mobile Usa, Inc. | Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0231594A3 (en) * | 1986-01-22 | 1988-04-27 | Mts Systems Corporation | Interactive multilevel hierarchical data flow programming system |
US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
US5291587A (en) * | 1986-04-14 | 1994-03-01 | National Instruments, Inc. | Graphical system for executing a process and for programming a computer to execute a process, including graphical variable inputs and variable outputs |
US4914568A (en) * | 1986-10-24 | 1990-04-03 | National Instruments, Inc. | Graphical system for modelling a process and associated method |
US5481741A (en) * | 1986-04-14 | 1996-01-02 | National Instruments Corporation | Method and apparatus for providing attribute nodes in a graphical data flow environment |
US4860204A (en) * | 1987-02-05 | 1989-08-22 | Softron, Inc. | Computer based workstation for development of graphic representation of computer programs |
US5005119A (en) * | 1987-03-02 | 1991-04-02 | General Electric Company | User interactive control of computer programs and corresponding versions of input/output data flow |
EP0347162A3 (en) * | 1988-06-14 | 1990-09-12 | Tektronix, Inc. | Apparatus and methods for controlling data flow processes by generated instruction sequences |
DE69024298T2 (de) * | 1989-09-29 | 1996-06-13 | Mazda Motor | System zum automatischen Erstellen eines sequentiellen Steuerprogramms |
US5666296A (en) | 1991-12-31 | 1997-09-09 | Texas Instruments Incorporated | Method and means for translating a data-dependent program to a data flow graph with conditional expression |
AU4783796A (en) * | 1995-02-22 | 1996-09-11 | Plougmann, Ole | Graphical environment for managing and developing applications |
US5768475A (en) * | 1995-05-25 | 1998-06-16 | Pavilion Technologies, Inc. | Method and apparatus for automatically constructing a data flow architecture |
DE69635066T2 (de) * | 1995-06-06 | 2006-07-20 | Hewlett-Packard Development Co., L.P., Houston | Unterbrechungsschema zum Aktualisieren eines Lokalspeichers |
US5801708A (en) * | 1995-06-06 | 1998-09-01 | Hewlett-Packard Company | MIP map texture storage by dividing and allocating among multiple blocks |
US6226789B1 (en) * | 1996-01-29 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for data flow analysis |
US5974254A (en) * | 1997-06-06 | 1999-10-26 | National Instruments Corporation | Method for detecting differences between graphical programs |
US6243858B1 (en) * | 1997-07-24 | 2001-06-05 | Casio Computer Co., Ltd. | Program construction assisting system |
US6219628B1 (en) * | 1997-08-18 | 2001-04-17 | National Instruments Corporation | System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
-
1999
- 1999-02-04 US US09/244,136 patent/US6389587B1/en not_active Expired - Lifetime
-
2000
- 2000-02-01 JP JP2000024087A patent/JP2000284950A/ja active Pending
- 2000-02-03 EP EP00400303A patent/EP1026583A3/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5810918B2 (ja) * | 2009-12-24 | 2015-11-11 | 日本電気株式会社 | スケジューリング装置、スケジューリング方法及びプログラム |
JP2015184843A (ja) * | 2014-03-24 | 2015-10-22 | 三菱電機株式会社 | プラント制御装置エンジニアリングツール |
Also Published As
Publication number | Publication date |
---|---|
EP1026583A2 (en) | 2000-08-09 |
US6389587B1 (en) | 2002-05-14 |
EP1026583A3 (en) | 2005-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000284950A (ja) | データフロープログラムの開発のための方法、データ処理システム及びユーザインターフェイス、データフロープログラムの実行のためのデータ処理システム、データフロープログラムの開発のための方法を実行するための命令を格納したコンピュータ可読媒体、データフロープログラムの実行最適化のための方法及びシステム、並びに、データフロープログラムの実行最適化方法を実行するための命令を格納したコンピュータ可読媒体 | |
US6378066B1 (en) | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications | |
US6449711B1 (en) | Method, apparatus, and article of manufacture for developing and executing data flow programs | |
Baer | A survey of some theoretical aspects of multiprocessing | |
JP5934094B2 (ja) | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング | |
Drozdowski | Selected problems of scheduling tasks in multiprocessor computer systems | |
Polo et al. | Performance management of accelerated mapreduce workloads in heterogeneous clusters | |
EP0753812A2 (en) | Method and means for scheduling parallel processors | |
Lin et al. | Type-aware federated scheduling for typed dag tasks on heterogeneous multicore platforms | |
Cunha et al. | Parallel Program development for cluster computing: methodology, tools and integrated environments | |
Khalid et al. | FusionCL: A machine-learning based approach for OpenCL kernel fusion to increase system performance | |
Shirazi et al. | PARSA: A parallel program scheduling and assessment environment | |
KR20050057834A (ko) | 멀티프로세서 시스템에서 스케줄러를 이용한 대규모데이터 처리 방법 | |
Kim et al. | Fast modulo scheduler utilizing patternized routes for coarse-grained reconfigurable architectures | |
Krishnan et al. | Automating parallel runtime optimizations using post-mortem analysis | |
Yanagawa et al. | Software system of the Earth Simulator | |
US11449254B1 (en) | Managed bulk memory | |
JP2765861B2 (ja) | 並列化コンパイル方法 | |
Šilc et al. | Synchronous dataflow-based architecture | |
Briggs et al. | A Shared-Resource Multiple Microprocessor System for Pattern Recognition and Image Processing | |
Baliś et al. | Scientific workflow management on hybrid clouds with cloud bursting and transparent data access | |
Kumar et al. | Automatic parallelization for multicore architectures: Role, importance, and opportunities | |
Kerbyson et al. | Use of performance technology for the management of distributed systems | |
JP3394353B2 (ja) | 機械語命令スケジューリング装置 | |
WO2022013253A1 (en) | Sharing data structures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070201 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100406 |