JP6688285B2 - グラフに基づくプログラムの仕様の実行 - Google Patents
グラフに基づくプログラムの仕様の実行 Download PDFInfo
- Publication number
- JP6688285B2 JP6688285B2 JP2017512310A JP2017512310A JP6688285B2 JP 6688285 B2 JP6688285 B2 JP 6688285B2 JP 2017512310 A JP2017512310 A JP 2017512310A JP 2017512310 A JP2017512310 A JP 2017512310A JP 6688285 B2 JP6688285 B2 JP 6688285B2
- Authority
- JP
- Japan
- Prior art keywords
- graph
- component
- nodes
- link
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 claims description 210
- 238000000034 method Methods 0.000 claims description 122
- 238000011144 upstream manufacturing Methods 0.000 claims description 77
- 239000000872 buffer Substances 0.000 claims description 70
- 238000012546 transfer Methods 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 27
- 238000013461 design Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 239000000203 mixture Substances 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 6
- 239000000470 constituent Substances 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 description 75
- 230000008569 process Effects 0.000 description 49
- 230000007704 transition Effects 0.000 description 47
- 238000004364 calculation method Methods 0.000 description 31
- 238000013507 mapping Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 22
- 238000013459 approach Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 239000013641 positive control Substances 0.000 description 12
- 230000006399 behavior Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000003442 weekly effect Effects 0.000 description 6
- 230000000644 propagated effect Effects 0.000 description 5
- 230000026676 system process Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001629 suppression Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 239000013642 negative control Substances 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 125000002015 acyclic group Chemical group 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000005381 magnetic domain Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
本出願は、2014年9月2日に出願した米国特許出願第62/044,628号明細書及び2015年5月20日に出願した米国特許出願第62/164,175号明細書の優先権を主張するものである。
一部の実施形態において、高レベルのプログラムの仕様110は、データに対して実行されるデータ処理の計算の全体の一部をそれぞれが規定する「構成要素」のセットを含む「データ処理グラフ」と呼ばれるある種のグラフに基づくプログラムの仕様である。構成要素は、例えば、プログラミングユーザインターフェース及び/又は計算のデータ表現においてグラフ内のノードとして表される。上の背景技術において説明されたデータフローグラフなどの一部のグラフに基づくプログラムの仕様とは異なり、データ処理グラフは、データの転送、又は制御の転送、又はこれら両方のいずれかを表すノード間のリンクを含み得る。リンクの特徴を示す1つの方法は、構成要素に異なる種類のポートを設けることによる。リンクは、上流の構成要素の出力ポートから下流の構成要素の入力ポートに接続される有向リンクである。ポートは、データ要素がどのようにして書き込まれ、リンクから読まれるのか及び/又は構成要素がデータを処理するためにどのようにして制御されるのかの特徴を表すインジケータを有する。
・構成要素のインスタンスがポートに接続されたリンクを通り越すコレクションのすべてのデータ要素をそれぞれ読むか又は書くことを意味するコレクション入力ポート又はコレクション出力ポート。構成要素のコレクションポート間の単一のリンクを有する構成要素の対に関して、下流の構成要素は、概して、データ要素が上流の構成要素によって書かれるときにそれらのデータ要素を読むことを可能にされ、上流の構成要素と下流の構成要素との間のパイプライン並列処理を可能にする。下でより詳細に説明されるように、データ要素は、並べ替えられる可能性もあり、それが、並列処理の効率的な働きを可能にする。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなコレクションポートは、概して、構成要素の四角いコネクタ記号によって示される。
・構成要素のインスタンスが、それぞれ、ポートに接続されたリンクから最大で1つのデータ要素を読むか又はポートに接続されたリンクに最大で1つのデータ要素を書くことを意味するスカラ入力ポート又はスカラ出力ポート。構成要素のスカラポート間の単一のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が、単一のデータ要素の転送を制御の転送として使用することによって強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなスカラポートは、概して、構成要素の三角のコネクタ記号によって示される。
・スカラ入力又はスカラ出力と同様であるが、いかなるデータ要素も送信される必要がない制御入力ポート又は制御出力ポートであって、構成要素間の制御の転送を伝達するために使用される、制御入力ポート又は制御出力ポート。構成要素の制御ポート間のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が(たとえそれらの構成要素がコレクションポート間のリンクも有するとしても)強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのような制御ポートは、概して、構成要素の丸いコネクタ記号によって示される。
図1に関連して上で説明されているように、コンパイラ/インタープリタ120は、実行するためにデータ処理グラフを準備するためにデータ処理グラフに実行セット発見前処理手順を実行する。通常の意味で、本明細書において使用されるとき、用語「実行セット」は、一体として呼び出され、出力コレクションポートのデータ要素の一部などのデータの一部に適用され得る1又は2以上の構成要素のセットを指す。したがって、それぞれの入力データ要素(又は実行セットの1若しくは2以上の入力ポートに与えられる複数の入力データ要素のタプル)のために、実行セット内の各構成要素の最大で1つのインスタンスが実行される。実行セット内で、スカラポート及び制御ポートへのリンクによって、順番に並べる制約が課され、実行セット内の構成要素の並列実行は、順番に並べる制約が破られない限りにおいて容認される。コンパイラ/インタープリタ120によって実行セットのために準備されるコードは、コードが実行されるときに構成要素に対応するタスクがどのようにして実行されるべきか(例えば、並列処理の度合い)を示す埋め込まれた情報(例えば、アノテーション又は修飾子(modifier))を含み得る。受け取られたコレクション内の複数のデータ要素のタプルのために実行セットの1つのインスタンスが実行される例において、タプルは、例えば、決まった数のデータ要素、又は何らかの特徴(例えば、共通のキー値)を共有するいくつかのデータ要素からなる可能性がある。並列に実行されることを可能にされる少なくともいくつかの構成要素が存在する例において、実行セットは、複数のタスク、例えば、実行セットまるごとのためのタスクと、構成要素のうちの1又は2以上のインスタンスの同時実行のための1又は2以上のサブタスクとを使用して実施される可能性がある。したがって、実行セットの異なるインスタンスを表すタスクは、それら自体、例えば、同時に実行され得るサブタスクによってさらに細分化されたタスクに分解される可能性がある。異なる実行セットのためのタスクは、概して、独立して並列に実行され得る。したがって、例えば、大きなデータセットが百万個のレコードを有する場合、百万個の独立したタスクが存在する可能性がある。タスクの一部は、コンピューティングプラットフォーム150の異なるノード152上で実行される可能性がある。タスクは、単一のノード152上でさえも同時に効率的に実行され得る軽量スレッドを使用して実行される可能性がある。
例示を目的として、第1の例において、データ処理グラフは、単純な1次元のグラフ構造を有し、比較的簡単な割り当てアルゴリズムが、スタックに基づくアルゴリズムを使用して示される。スタックに基づく割り当てアルゴリズムにおいて、データ処理グラフ内の各構成要素は、分割文字「/」によって分けられた整数からなる1又は2以上の「ID文字列」によってラベル付けされる。所与の構成要素のID文字列内に分割文字「/」が現れる回数は、実行セットの階層内の構成要素のレベルを決定する。一部の例において、構成要素は、複数の入力リンクを有する可能性があり、したがって、複数のID文字列を有する可能性がある。そのような場合、アルゴリズムは、どのID文字列を使用すべきかを決定するための下でより詳細に説明される規則を有する。
一部の例において、より普通のデータ処理グラフに関して、スタックに基づく割り当てアルゴリズムは、実行セットの階層を正しく決定するのに十分でない可能性がある。例えば、普通のデータ処理グラフにおいては、任意の所与の構成要素が、複数の入力ポート及び/又は複数の出力ポートを有し、スタックに基づく手法に適合しない普通のデータ処理グラフを実行することができる。そのような例においては、実行セットの階層を決定するためにグローバルなマッピングに基づく割り当てアルゴリズムが使用される。
L ←ソートされた要素を含むことになる空のリスト
S ←入ってくる辺を持たないすべてのノードのセット
while Sが空ではない do
Sからノードnを削除する
nをLの末尾に加える
for each nからmへの辺eを有するノードm do
グラフから辺eを削除する
if mがいかなるその他の入ってくる辺も持たない then
mをSに挿入する
if グラフが辺を有する then
エラーを返す(グラフが少なくとも1つの閉路を有する)
else
L(トポロジカルソートされた順序)を返す
上述の例においては、(1又は2以上の)割り当てアルゴリズムが、いかなるユーザの介入もなしにデータ処理グラフ内に存在する実行セットを自動的に発見するために使用される。しかし、一部の例においては、ユーザが、(1又は2以上の)割り当てアルゴリズムによって提供される機能以外の機能を必要とする可能性がある。そのような場合、ユーザは、どこで実行セットが始まる及び/又は終わるのかを明示的に定義するために実行セットの入口点及び実行セットの出口点を明示的に追加することができる。図7を参照すると、データ処理グラフ776は、第1のデータセット774、第1の構成要素778、第2の構成要素780、及び第2のデータセット790を含む。上述の(1又は2以上の)割り当てアルゴリズムをデータ処理グラフ776に適用することは、第1の構成要素778及び第2の構成要素780を含む単一の実行セットを発見する結果となる。しかし、この場合、ユーザは、データ処理グラフ776に関して2つの実行セット(すなわち、第1の実行セット782及び第2の実行セット786)を明示的に定義した。特に、ユーザは、第1の構成要素778の出力ポートから出るリンクに実行セットの出口点構成要素784を挿入し、第2の構成要素780の入力ポートに入るリンクに実行セットの入口点788を挿入した。実行セットの出口点784及び実行セットの入口点788を第1の構成要素778と第2の構成要素780との間のリンクに追加することによって、ユーザは、単一の実行セットであったものを2つの別々の実行セット782、786に本質的に分割した。
一部の例において、ユーザは、所与の構成要素がどの実行セットに属するのかを明示的に指定したい可能性がある。例えば、図8Aを参照すると、データ処理グラフ892は、データ生成構成要素896及びテーブル読み取り構成要素898からデータ要素を受け取る第1の実行セット894を含む。これらの構成要素は、これらの構成要素が提供するデータ要素のコレクションの異なるソースを有することを除いて入力ファイル構成要素と同様である。データ生成構成要素896に関しては、ファイルの場所を規定するスカラ入力ポートの代わりに、生成されるレコードデータ要素の数を規定する(任意の)スカラ入力ポートが存在し、各データ要素がどのようにして生じさせられるべきであるかを規定するパラメータも存在する。テーブル読み取り構成要素898に関しては、ファイルの場所を規定するスカラ入力ポートの代わりに、データベース内のテーブルを規定する(任意の)スカラ入力ポートが存在する。第1の実行セット894は、データ生成構成要素896及びテーブル読み取り構成要素898からのデータ要素を一緒になって処理して、第1のデータセット899に提供される出力を生じさせる第1の構成要素891及び第2の構成要素893を含む。
一部の例においては、実行セット内の複数の構成要素が、それぞれ、実行セットの入口点を介して上流の構成要素の単一のコレクション出力ポートに接続されたスカラ入力ポートを有する可能性がある。同様に、実行セット内の複数の構成要素が、それぞれ、実行セットの下流の構成要素の単一のコレクション入力ポートに接続されたスカラ出力ポートを有する可能性がある。
一部の例において、所与の実行セット内の構成要素は、並列のインスタンスにおいて複数回実行される可能性がある。一部の例において、並列のインスタンスを実行する構成要素は、共有リソースにアクセスする必要がある可能性がある。競合状態、及び複数のプロセスが共有リソースにアクセスすることに関連するその他の問題を防止するために、ラッチメカニズムが使用され得る。概して、ラッチメカニズムは、実行セット内の構成要素の1つのインスタンスが実行を終えるのにかかる時間の間、そのインスタンスが共有リソースに対するランタイムロックを取得することを可能にする。インスタンスがラッチされた共有リソースを有する間、インスタンスの構成要素のみが共有リソースにアクセスすることができ、その他のインスタンスの構成要素はラッチが解放されるのを待たなければならない。インスタンスは、完了した後、ランタイムロックを解放し、その他のインスタンスが共有リソースにアクセスすることを可能にする。ラッチメカニズムは、(例えば、上流の端の明示的なラッチ構成要素及び下流の端の明示的なラッチ解除構成要素を使用して)単一の実行セット内で共有リソースに対してラッチとラッチ解除との両方を行わなければならない。一部の実施形態において、そのような「ラッチされた実行セット」は、入れ子にされ得ず、互いに重なることもできない。
グローバルなマッピングに基づく割り当てアルゴリズムが2次元データ処理グラフに関連して説明されているが、グローバルなマッピングに基づく割り当てアルゴリズムは1次元データ処理グラフに関する実行セットを発見するために使用される可能性もあることが留意される。
・/1/2/3及び/1/2/3は適合性がある
・/1/2/3及び/1/2は適合性がある
・/1/2及び/1/2/3は適合性がある
・/1/2/3及び/1は適合性がある
・/1/2/3及び/1/4は適合性がない
・/1/2/3及び/1/4/5は適合性がない
・同時性(例えば、上述の並列、直列、キーによる直列)
・異なる実行セットの間の優先度(例えば、ある実行セットのすべてのタスクが別の実行セットのすべてのタスクの後に行われる)
・トランザクショナリティ(transactionality)(例えば、実行セットのタスクがデータベーストランザクションとして処理される)
・リソースのラッチ(例えば、実行セットのタスクが、共有変数などの特定のリソースがロックされるようにして実行され、タスクがアトミックな単位としてリソースにアクセスすることを可能にする)
・順序付け(例えば、データ要素の間の順序付けが維持される)
・タプルのサイズ(例えば、実行セットの各インスタンスによって操作されるデータ要素の数)
一部の例においては、ユーザインターフェースが、構成要素をキャンバスにドラッグし、構成要素のポートをリンクを使用して一緒に接続することによってユーザがデータ処理グラフを作成することを可能にする。一部の例において、ユーザインターフェースは、ユーザがデータ処理グラフを作成するときに上述の(1又は2以上の)割り当てアルゴリズムをデータ処理グラフに繰り返し適用する。例えば、ユーザが作成されているデータ処理グラフに構成要素を追加するとき、(1又は2以上の)割り当てアルゴリズムが、追加された構成要素を有するグラフに適用され得る。そして、(1又は2以上の)割り当てアルゴリズムによって発見された結果として得られる実行セットが、例えば、ユーザインターフェース内で構成要素の周りに描かれたボックスとして、又は同じ実行セット内の構成要素を含む領域をレンダリングするために使用される一意の色、濃淡、テクスチャ、又はラベルによって区別され得る構成要素を取り囲む任意の形状の領域として表示される可能性がある。一部の例において、それから、ユーザは、実行セットに構成要素を追加するか又は実行セットから構成要素を削除することによって、(1又は2以上の)割り当てアルゴリズムによって発見された実行セットを修正することができる。一部の例において、(1又は2以上の)割り当てアルゴリズムは、修正された実行セットが規則に則していることを検証する。例えば、さまざまな規則に則した方法のいずれかで潜在的に実行セットに分割される可能性がある構成要素及びさまざまなポートの間のリンクのいくつかの構成が存在し得る。そのような曖昧な場合、割り当てアルゴリズムは、デフォルトで実行セットのうちの1つの割り当てを選択する可能性があるが、ユーザは、実行セットの異なる割り当てを意図していた可能性があり、その場合、ユーザは、(例えば、終了点を挿入して前は構成要素の連鎖の中にあった実行セットを閉じることによって)割り当てを修正することができる。代替的に、割り当てアルゴリズムは、複数の規則に則した割り当てが可能である曖昧な構成を認識し、1つを選択するための入力を与えるようにユーザに促すように構成される可能性がある。
実行するためにデータ処理グラフを準備するプロセスにおいて、コンパイラ/インタープリタ120は、制御グラフ生成手順において制御グラフをさらに生じさせる。一部の実装形態において、制御グラフを生じさせることは、個々の構成要素に対応するタスクを実行するための実行可能コードと、それらのタスクの間のデータ及び制御のフローを決定する構成要素の間のさまざまなリンクに対応するコードとを生じさせることを含む。これは、コンパイラ/インタープリタ120によって発見された実行セットの階層の間のデータ及び制御の転送を含む。
再び図1を参照すると、データ処理グラフの構成要素のインスタンスが、データ処理グラフを実行する文脈でタスクとして生成され(spawned)、概して、コンピューティングプラットフォーム150の複数のコンピューティングノード152において実行される。以下でより詳細に検討されるように、コントローラ140は、例えば、計算負荷の割り振り、通信又は入力/出力のオーバーヘッドの削減、及びメモリリソースの使用に関連するシステムの性能目標を達成するために、それらのタスクの実行のスケジューリング及び位置(locus)の監視制御の態様を提供する。
上述の手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データ処理グラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データ処理グラフの構成要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
Claims (53)
- コンピューティングシステムであって、
1又は2以上のグラフに基づくプログラムの仕様を記憶するストレージシステムであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)制御の転送又は単一のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第1の種類のリンクの構成、及び
(2)複数のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第2の種類のリンクの構成を含む、ストレージシステムと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせるように構成されたコンパイラであって、前記目標のプログラムの仕様が、前記第1のグラフに基づくプログラムの仕様にも含まれる前記構成要素の少なくともいくつかを表す1又は2以上のグラフのノードを含む、結果として得られる少なくとも1つの目標制御グラフを表す目標制御コードを含み、前記グラフのノードのうちの2又は3以上が、前記第1の種類のリンクの構成を有するリンクに基づいて前記第1のグラフに基づくプログラムの仕様で接続され、前記1又は2以上のグラフのノードが、前記1又は2以上のグラフのノードも含む前記第1のグラフに基づくプログラムの仕様の第1の接続トポロジーと異なる目標接続トポロジーにしたがって、結果として得られる前記少なくとも1つの目標制御グラフ内で接続される、コンパイラと、
それぞれが少なくとも1つのプロセッサを含む1又は2以上のコンピューティングノードであって、前記コンピューティングノードのうちの少なくとも第1のコンピューティングノードが、
前記目標のプログラムの仕様の実行を開始すること、及び
前記第2の種類のリンクの構成を有するリンクのための計算リソースを管理することであって、前記計算リソースが、(1)出力ポートによって提供されるデータ要素を記憶するためのバッファ、及び(2)入力ポートに提供されるデータ要素を記憶するためのバッファのうちの少なくとも1つを含む、管理することを行うように構成される、1又は2以上のコンピューティングノードとを含む、前記コンピューティングシステム。 - 計算リソースが、入力ポートに提供されるデータ要素を記憶するための少なくとも第1のバッファを含む請求項1に記載のコンピューティングシステム。
- 第1のバッファが、順序付けられていないデータ要素を記憶し、第1のデータ要素が、構成要素のうちの第1の構成要素の第1のインスタンスが前記第1のデータ要素の処理を完了する後まで前記第1の構成要素の第2のインスタンスによる処理のための前記第1のバッファからのいかなる第2のデータ要素の取り出しもブロックせずに、前記第1のインスタンスによる処理のために前記第1のバッファから取り出される請求項2に記載のコンピューティングシステム。
- 計算リソースを管理することが、第1のバッファがコンピューティングノードのうちの第1のコンピューティングノードの容量を超えて大きくならないようにして前記第1のバッファを満たすことを含む請求項2に記載のコンピューティングシステム。
- 制御グラフが、接続されたグラフのノードの第1のセットと、接続されたグラフのノードの第2のセットとを含み、グラフのノードの前記第1のセット内のグラフのノードが、グラフのノードの前記第2のセット内のいかなるグラフのノードにも直接接続されない請求項1〜4のいずれかに記載のコンピューティングシステム。
- 制御コードが、グラフのノードの第2のセットによって表される構成要素に対応するタスクと同時にグラフのノードの第1のセットによって表される構成要素に対応するタスクの実行を可能にする請求項5に記載のコンピューティングシステム。
- コンパイラが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定するように構成される請求項1に記載のコンピューティングシステム。
- 目標のプログラムの仕様が、特定されたセットの各々に関する制御グラフを表す制御コードを含む請求項7に記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する請求項7に記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する請求項7に記載のコンピューティングシステム。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する請求項10に記載のコンピューティングシステム。
- 1又は2以上のノードの少なくとも第1のグラフが、前記第1のグラフ内に入れ子にされた1又は2以上のノードの第2のグラフに対応する少なくとも1つのノードを含む請求項10に記載のコンピューティングシステム。
- 制御コードが、目標のプログラムの仕様の実行を制御する状態機械を実装する請求項1〜12のいずれかに記載のコンピューティングシステム。
- 制御グラフが、前記制御グラフ内のノードによって表される1又は2以上の構成要素の実行を開始するために使用される制御信号を管理するために状態機械によって使用される第1のノードを含む請求項13に記載のコンピューティングシステム。
- コンパイラが、第1の種類のリンクの構成を有するリンクによって上流の構成要素にリンクされない任意の構成要素を決定するために構成要素のリンクの構成を検査し、そのような構成要素を表す任意のノードを第1のノードに接続するように構成される請求項14に記載のコンピューティングシステム。
- 制御グラフが、前記制御グラフ内のノードによって表されるすべての構成要素が実行を終えたときを決定するために状態機械によって使用される第2のノードを含む請求項14に記載のコンピューティングシステム。
- コンピューティングシステムの1以上のプロセッサによって実行される方法であって、
1又は2以上のグラフに基づくプログラムの仕様を記憶するステップであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)制御の転送又は単一のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第1の種類のリンクの構成、及び
(2)複数のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第2の種類のリンクの構成を含む、前記ステップと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせるステップであって、前記目標のプログラムの仕様が、前記第1のグラフに基づくプログラムの仕様にも含まれる前記構成要素の少なくともいくつかを表す1又は2以上のグラフのノードを含む、結果として得られる少なくとも1つの目標制御グラフを表す目標制御コードを含み、前記グラフのノードのうちの2又は3以上が、前記第1の種類のリンクの構成を有するリンクに基づいて前記第1のグラフに基づくプログラムの仕様で接続され、前記1又は2以上のグラフのノードが、前記1又は2以上のグラフのノードも含む前記第1のグラフに基づくプログラムの仕様の第1の接続トポロジーと異なる目標接続トポロジーにしたがって、結果として得られる前記少なくとも1つの目標制御グラフ内で接続される、前記ステップと、
少なくとも1つのコンピューティングノードを使用するステップであって、
前記目標のプログラムの仕様の実行を開始し、
前記第2の種類のリンクの構成を有するリンクのための計算リソースを管理し、前記計算リソースが、(1)出力ポートによって提供されるデータ要素を記憶するためのバッファ、及び(2)入力ポートに提供されるデータ要素を記憶するためのバッファのうちの少なくとも1つを含む、前記ステップとを含む、前記方法。 - コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
1又は2以上のグラフに基づくプログラムの仕様を記憶することであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)制御の転送又は単一のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第1の種類のリンクの構成、及び
(2)複数のデータ要素の転送に対応する、リンクされた構成要素のポートの間の第2の種類のリンクの構成を含む、記憶することと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせることであって、前記目標のプログラムの仕様が、前記第1のグラフに基づくプログラムの仕様にも含まれる前記構成要素の少なくともいくつかを表す1又は2以上のグラフのノードを含む、結果として得られる少なくとも1つの目標制御グラフを表す目標制御コードを含み、前記グラフのノードのうちの2又は3以上が、前記第1の種類のリンクの構成を有するリンクに基づいて前記第1のグラフに基づくプログラムの仕様で接続され、前記1又は2以上のグラフのノードが、前記1又は2以上のグラフのノードも含む前記第1のグラフに基づくプログラムの仕様の第1の接続トポロジーと異なる目標接続トポロジーにしたがって、結果として得られる前記少なくとも1つの目標制御グラフ内で接続される、生じさせることと、
少なくとも1つのコンピューティングノードを使用することであって、
前記目標のプログラムの仕様の実行を開始し、
前記第2の種類のリンクの構成を有するリンクのための計算リソースを管理し、前記計算リソースが、(1)出力ポートによって提供されるデータ要素を記憶するためのバッファ、及び(2)入力ポートに提供されるデータ要素を記憶するためのバッファのうちの少なくとも1つを含む、使用することとを行わせるための命令を含む、前記ソフトウェア。 - 制御グラフ内のグラフのノードが、第1の種類のリンクの構成を有するリンクに基づくが、第2の種類のリンクの構成を有するリンクには基づかずに接続される請求項1に記載のコンピューティングシステム。
- 計算リソースが、第1の種類のリンクの構成を有するリンクのためではなく、第2の種類のリンクの構成を有するリンクのために割り振られたバッファを含む請求項1に記載のコンピューティングシステム。
- 計算リソースが、入力ポートに提供されるデータ要素を記憶するための第1のバッファを少なくとも含む、請求項17に記載の方法。
- 第1のバッファが、順序付けられていないデータ要素を記憶し、第1のデータ要素が、構成要素のうちの第1の構成要素の第1のインスタンスが第1のデータ要素の処理を完了する後まで前記第1の構成要素の第2のインスタンスによる処理のための前記第1のバッファからのいかなる第2のデータ要素の取り出しもブロックせずに、前記第1のインスタンスによる処理のために前記第1のバッファから取り出される、請求項21に記載の方法。
- 計算リソースを管理することが、第1のバッファがコンピューティングノードのうちの第1のコンピューティングノードの容量を超えて大きくならないようにして前記第1のバッファを満たすことを含む、請求項21に記載の方法。
- 制御グラフが、接続されたグラフのノードの第1のセットと、接続されたグラフのノードの第2のセットとを含み、グラフのノードの前記第1のセット内のグラフのノードは、グラフのノードの前記第2のセット内のいかなるグラフのノードにも直接接続されない、請求項17に記載の方法。
- 制御コードが、グラフのノードの第2のセットによって表される構成要素に対応するタスクと同時にグラフのノードの第1のセットによって表される構成要素に対応するタスクの実行を可能にする、請求項24に記載の方法。
- それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定することをさらに含む、請求項17に記載の方法。
- 目標のプログラムの仕様が、特定されたセットの各々に関する制御グラフを表す制御コードを含む、請求項26に記載の方法。
- 1又は2以上のタスクの各セットが、前記1又は2以上のタスクのセットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する、請求項26に記載の方法。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードは、タスク又は特定されたセットに対応し、前記グラフの各有向辺は、第1の種類のリンクの構成を有するリンクに対応する、請求項26に記載の方法。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する、請求項29に記載の方法。
- 1又は2以上のノードの少なくとも第1のグラフが、前記第1のグラフ内に入れ子にされた1又は2以上のノードの第2のグラフに対応する少なくとも1つのノードを含む、請求項29に記載の方法。
- 制御コードが、目標のプログラムの仕様の実行を制御する状態機械を実装する、請求項17に記載の方法。
- 制御グラフが、前記制御グラフ内のノードによって表される1又は2以上の構成要素の実行を開始するために使用される制御信号を管理するために状態機械によって使用される第1のノードを含む、請求項32に記載の方法。
- 第1の種類のリンクの構成を有するリンクによって上流の構成要素にリンクされない任意の構成要素を決定するために構成要素のリンクの構成を検査し、そのような構成要素を表す任意のノードを第1のノードに接続することをさらに含む、請求項33に記載の方法。
- 制御グラフ内のグラフのノードが、第1の種類のリンクの構成を有するリンクに基づくが、第2の種類のリンクの構成を有するリンクには基づかずに接続される、請求項17に記載の方法。
- 計算リソースが、第1の種類のリンクの構成を有するリンクのためではなく、第2の種類のリンクの構成を有するリンクのために割り振られたバッファを含む、請求項17に記載の方法。
- 計算リソースが、入力ポートに提供されるデータ要素を記憶するための少なくとも第1のバッファを含む、請求項18に記載のソフトウェア。
- 第1のバッファが、順序付けられていないデータ要素を記憶し、第1のデータ要素は、構成要素のうちの第1の構成要素の第1のインスタンスが第1のデータ要素の処理を完了する後まで前記第1の構成要素の第2のインスタンスによる処理のための前記第1のバッファからのいかなる第2のデータ要素の取り出しもブロックせずに、前記第1のインスタンスによる処理のために前記第1のバッファから取り出される、請求項37に記載のソフトウェア。
- コンピューティングシステムに計算リソースを管理させる命令が、前記コンピューティングシステムに、第1のバッファがコンピューティングノードのうちの第1のコンピューティングノードの容量を超えて大きくならないようにして第1のバッファを満たすようにさせる1又は2以上の命令を含む、請求項37に記載のソフトウェア。
- 制御グラフが、接続されたグラフのノードの第1のセットと、接続されたグラフのノードの第2のセットとを含み、グラフのノードの前記第1のセット内のグラフのノードが、前記グラフのノードの第2のセット内のいかなるグラフのノードにも直接接続されない、請求項18に記載のソフトウェア。
- 制御コードが、グラフのノードの第2のセットによって表される構成要素に対応するタスクと同時に前記グラフのノードの第1のセットによって表される構成要素に対応するタスクの実行を可能にする、請求項40に記載のソフトウェア。
- 命令が、計算システムにさらに、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定させる1又は2以上のさらなる命令を含む、請求項18に記載のソフトウェア。
- 目標のプログラムの仕様が、特定されたセットの各々に関する制御グラフを表す制御コードを含む、請求項42に記載のソフトウェア。
- 1又は2以上のタスクの各セットが、前記1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する、請求項42に記載のソフトウェア。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項42に記載のソフトウェア。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する、請求項45に記載のソフトウェア。
- 1又は2以上のノードの少なくとも第1のグラフが、前記第1のグラフ内に入れ子にされた1又は2以上のノードの第2のグラフに対応する少なくとも1つのノードを含む、請求項45に記載のソフトウェア。
- 制御コードが、目標のプログラムの仕様の実行を制御する状態機械を実装する、請求項18に記載のソフトウェア。
- 制御グラフが、前記制御グラフ内のノードによって表される1又は2以上の構成要素の実行を開始するために使用される制御信号を管理するために状態機械によって使用される第1のノードを含む、請求項48に記載のソフトウェア。
- 命令が、コンピューティングシステムにさらに、第1の種類のリンクの構成を有するリンクによって上流の構成要素にリンクされない任意の構成要素を決定するために構成要素のリンクの構成を検査し、そのような構成要素を表す任意のノードを第1のノードに接続させる1又は2以上のさらなる命令を含む、請求項48に記載のソフトウェア。
- 制御グラフが、前記制御グラフ内のノードによって表されるすべての構成要素が実行を終えたときを判定するために状態機械によって使用される第2のノードを含む、請求項48に記載のソフトウェア。
- 制御グラフ内のグラフのノードが、第1の種類のリンクの構成を有するリンクに基づくが、第2の種類のリンクの構成を有するリンクには基づかずに接続される、請求項18に記載のソフトウェア。
- 計算リソースが、第1の種類のリンクの構成を有するリンクのためではなく、第2の種類のリンクの構成を有するリンクのために割り振られたバッファを含む、請求項18に記載のソフトウェア。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462044628P | 2014-09-02 | 2014-09-02 | |
US62/044,628 | 2014-09-02 | ||
US201562164175P | 2015-05-20 | 2015-05-20 | |
US62/164,175 | 2015-05-20 | ||
PCT/US2015/048100 WO2016036830A1 (en) | 2014-09-02 | 2015-09-02 | Executing graph-based program specifications |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017530456A JP2017530456A (ja) | 2017-10-12 |
JP6688285B2 true JP6688285B2 (ja) | 2020-04-28 |
Family
ID=54140695
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510840A Active JP6633053B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
JP2017512310A Active JP6688285B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
JP2019223414A Active JP6908682B2 (ja) | 2014-09-02 | 2019-12-11 | グラフに基づくプログラムの仕様の実行 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510840A Active JP6633053B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019223414A Active JP6908682B2 (ja) | 2014-09-02 | 2019-12-11 | グラフに基づくプログラムの仕様の実行 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10089087B2 (ja) |
EP (2) | EP3189422A1 (ja) |
JP (3) | JP6633053B2 (ja) |
KR (2) | KR102364552B1 (ja) |
CN (2) | CN106663010B (ja) |
AU (3) | AU2015312016B2 (ja) |
CA (2) | CA2959169C (ja) |
SG (2) | SG11201701588QA (ja) |
WO (2) | WO2016036817A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11061539B2 (en) * | 2013-03-15 | 2021-07-13 | The Mathworks, Inc. | Reference nodes in a computational graph |
SG11201701667WA (en) * | 2014-09-02 | 2017-04-27 | Ab Initio Technology Llc | Visually specifying subsets of components in graph-based programs through user interactions |
US10496619B2 (en) | 2014-09-02 | 2019-12-03 | Ab Initio Technology Llc | Compiling graph-based program specifications |
CN106687920B (zh) | 2014-09-02 | 2020-07-03 | 起元科技有限公司 | 管理任务的调用 |
US10133827B2 (en) | 2015-05-12 | 2018-11-20 | Oracle International Corporation | Automatic generation of multi-source breadth-first search from high-level graph language |
US10614126B2 (en) | 2015-05-21 | 2020-04-07 | Oracle International Corporation | Textual query editor for graph databases that performs semantic analysis using extracted information |
US10127025B2 (en) | 2015-07-22 | 2018-11-13 | Oracle International Corporation | Optimization techniques for high-level graph language compilers |
US9575736B2 (en) * | 2015-07-22 | 2017-02-21 | Oracle International Corporation | Advanced interactive command-line front-end for graph analysis systems |
US10810257B2 (en) | 2015-08-27 | 2020-10-20 | Oracle International Corporation | Fast processing of path-finding queries in large graph databases |
US10585845B2 (en) * | 2015-11-02 | 2020-03-10 | Futurewei Technologies, Inc. | Systems and methods for creating and using a data structure for parallel programming |
US9971570B2 (en) | 2015-12-15 | 2018-05-15 | Oracle International Corporation | Automated generation of memory consumption aware code |
KR102181640B1 (ko) * | 2016-05-17 | 2020-11-23 | 아브 이니티오 테크놀로지 엘엘시 | 재구성가능한 분산 처리 |
US10579753B2 (en) | 2016-05-24 | 2020-03-03 | Ab Initio Technology Llc | Executable logic for processing keyed data in networks |
US10025566B1 (en) * | 2016-10-07 | 2018-07-17 | The Mathworks, Inc. | Scheduling technique to transform dataflow graph into efficient schedule |
KR102239428B1 (ko) | 2016-12-15 | 2021-04-12 | 아브 이니티오 테크놀로지 엘엘시 | 이종 이벤트 큐 |
US10540398B2 (en) | 2017-04-24 | 2020-01-21 | Oracle International Corporation | Multi-source breadth-first search (MS-BFS) technique and graph processing system that applies it |
JP6677677B2 (ja) * | 2017-06-21 | 2020-04-08 | 株式会社東芝 | 情報処理装置、情報処理システム、情報処理方法およびプログラム |
CN107621934B (zh) * | 2017-07-28 | 2020-11-03 | 中国人民解放军国防信息学院 | 基于组件化、图形化算子的评估指标计算方法及装置 |
US10585945B2 (en) | 2017-08-01 | 2020-03-10 | Oracle International Corporation | Methods of graph-type specialization and optimization in graph algorithm DSL compilation |
AU2018359378B2 (en) | 2017-10-31 | 2021-09-09 | Ab Initio Technology Llc | Managing a computing cluster using durability level indicators |
WO2019095873A1 (zh) * | 2017-11-20 | 2019-05-23 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、装置、系统、存储介质及计算机设备 |
CN110297699B (zh) * | 2018-03-23 | 2021-09-14 | 华为技术有限公司 | 调度方法、调度器、存储介质及系统 |
US11657297B2 (en) * | 2018-04-30 | 2023-05-23 | Bank Of America Corporation | Computer architecture for communications in a cloud-based correlithm object processing system |
US10990364B2 (en) * | 2018-06-06 | 2021-04-27 | Ab Initio Technology Llc | Updating executable graphs |
WO2020006571A1 (en) | 2018-06-29 | 2020-01-02 | pulseData Inc. | Machine learning systems and methods for predicting risk of renal function decline |
US10853079B2 (en) | 2018-09-26 | 2020-12-01 | Side Effects Software Inc. | Dependency-based streamlined processing |
CN110968320A (zh) * | 2018-09-30 | 2020-04-07 | 上海登临科技有限公司 | 针对异构硬件架构的联合编译方法和编译系统 |
US10795672B2 (en) | 2018-10-31 | 2020-10-06 | Oracle International Corporation | Automatic generation of multi-source breadth-first search from high-level graph language for distributed graph processing systems |
KR102255365B1 (ko) * | 2019-01-14 | 2021-05-25 | 한국전자통신연구원 | 이기종 온디바이스 시스템에서의 그래프 기반 영상 처리 모델 실행 최적화 장치 및 그 방법 |
US11593281B2 (en) * | 2019-05-08 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Device supporting ordered and unordered transaction classes |
US11113030B1 (en) * | 2019-05-23 | 2021-09-07 | Xilinx, Inc. | Constraints for applications in a heterogeneous programming environment |
CN110780946B (zh) * | 2019-10-30 | 2021-05-25 | 京东数字科技控股有限公司 | 用于处理信息的方法和装置 |
CN111049900B (zh) * | 2019-12-11 | 2022-07-01 | 中移物联网有限公司 | 一种物联网流计算调度方法、装置和电子设备 |
CN113126958B (zh) * | 2019-12-31 | 2022-07-08 | 思必驰科技股份有限公司 | 基于信息流的决策调度定制方法和系统 |
JP7438812B2 (ja) | 2020-03-27 | 2024-02-27 | 三菱重工業株式会社 | 耐酸化合金及び耐酸化合金の製造方法 |
CN111862699B (zh) * | 2020-07-08 | 2022-05-27 | 天津洪恩完美未来教育科技有限公司 | 可视化编辑教学课程的方法和装置、存储介质和电子装置 |
US11675688B2 (en) * | 2021-05-20 | 2023-06-13 | Nextmv.Io Inc. | Runners for optimization solvers and simulators |
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 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0347162A3 (en) * | 1988-06-14 | 1990-09-12 | Tektronix, Inc. | Apparatus and methods for controlling data flow processes by generated instruction sequences |
WO1994025917A1 (en) * | 1993-04-26 | 1994-11-10 | Comdisco Systems, Inc. | Method for scheduling synchronous data flow graphs |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US6584581B1 (en) | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
JP2001243341A (ja) * | 2000-03-01 | 2001-09-07 | Yamatake Corp | ファンクションブロックモデル作成方法及び装置 |
US7051189B2 (en) | 2000-03-15 | 2006-05-23 | Arc International | Method and apparatus for processor code optimization using code compression |
US7343413B2 (en) * | 2000-03-21 | 2008-03-11 | F5 Networks, Inc. | Method and system for optimizing a network by independently scaling control segments and data flow |
SG121719A1 (en) | 2001-07-19 | 2006-05-26 | Oce Tech Bv | Method for creating a workflow |
CA2360712A1 (en) * | 2001-10-31 | 2003-04-30 | Sicon Video Corporation | Method and apparatus for the data-driven synchronous parallel processing of digital data |
US7167850B2 (en) | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
CA2529925C (en) * | 2003-06-25 | 2016-08-23 | Ab Initio Software Corporation | Computer-aided parallelizing of computation graphs |
US7506304B2 (en) * | 2004-05-14 | 2009-03-17 | National Instruments Corporation | Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation |
US7523023B1 (en) * | 2004-09-20 | 2009-04-21 | The Mathworks, Inc. | Automatic generation of component interfaces for computational hardware implementations generated from a block diagram model |
US8756044B2 (en) * | 2005-05-31 | 2014-06-17 | The Mathworks, Inc. | Graphical partitioning for parallel execution of executable block diagram models |
WO2006136764A1 (en) * | 2005-06-22 | 2006-12-28 | Arm Limited | A data processing apparatus and method for accelerating execution of subgraphs |
US7870556B2 (en) * | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
US8745557B1 (en) * | 2006-09-11 | 2014-06-03 | The Mathworks, Inc. | Hardware definition language generation for data serialization from executable graphical models |
US7774189B2 (en) * | 2006-12-01 | 2010-08-10 | International Business Machines Corporation | System and method for simulating data flow using dataflow computing system |
US8046751B1 (en) * | 2007-01-11 | 2011-10-25 | The Mathworks, Inc. | Structuring unstructured regions in a control flow graph |
US20080244594A1 (en) | 2007-03-29 | 2008-10-02 | International Business Machines Corporation | Visual scripting of web services for task automation |
US8069129B2 (en) * | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
US8601457B1 (en) * | 2008-01-31 | 2013-12-03 | The Mathworks, Inc. | Checking for access problems with data stores |
US8667381B1 (en) * | 2008-03-21 | 2014-03-04 | The Mathworks, Inc. | Block diagram change history |
US8869103B2 (en) * | 2008-10-06 | 2014-10-21 | The Mathworks, Inc. | Using intermediate representations to verify computer-executable code generated from a model |
US8856726B2 (en) * | 2009-09-14 | 2014-10-07 | The Mathworks, Inc. | Verification of computer-executable code generated from a slice of a model |
US8756562B2 (en) * | 2008-12-11 | 2014-06-17 | The Mathworks, Inc. | Subgraph execution control in a graphical modeling environment |
CN102317911B (zh) | 2009-02-13 | 2016-04-06 | 起元技术有限责任公司 | 管理任务执行 |
US8205113B2 (en) | 2009-07-14 | 2012-06-19 | Ab Initio Technology Llc | Fault tolerant batch processing |
US9003360B1 (en) * | 2009-12-10 | 2015-04-07 | The Mathworks, Inc. | Configuring attributes using configuration subgraphs |
CA2782414C (en) * | 2009-12-14 | 2021-08-03 | Ab Initio Technology Llc | Specifying user interface elements |
US20110161917A1 (en) | 2009-12-29 | 2011-06-30 | Microgen Plc | Processing collections of data items |
US8438571B2 (en) * | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Thread speculative execution and asynchronous conflict |
KR20150042297A (ko) * | 2010-06-15 | 2015-04-20 | 아브 이니티오 테크놀로지 엘엘시 | 동적으로 로딩하는 그래프 기반 계산 |
WO2012061109A1 (en) * | 2010-10-25 | 2012-05-10 | Ab Initio Technology Llc | Managing data set objects in a dataflow graph that represents a computer program |
WO2012089248A1 (en) * | 2010-12-29 | 2012-07-05 | Telecom Italia S.P.A. | Magnetic-like user interface for combining objects |
US9189217B2 (en) * | 2011-10-03 | 2015-11-17 | Telefonaktiebolaget L M Ericsson (Publ) | Method for exploiting massive parallelism |
US9626273B2 (en) * | 2011-11-09 | 2017-04-18 | Nec Corporation | Analysis system including analysis engines executing predetermined analysis and analysis executing part controlling operation of analysis engines and causing analysis engines to execute analysis |
US8732359B2 (en) * | 2011-12-07 | 2014-05-20 | The Mathworks, Inc. | Data sharing in high-fidelity simulation and real-time multi-core execution |
US20130339977A1 (en) | 2012-06-19 | 2013-12-19 | Jack B. Dennis | Managing task load in a multiprocessing environment |
US8893080B2 (en) * | 2012-08-15 | 2014-11-18 | Telefonaktiebolaget L M Ericsson (Publ) | Parallelization of dataflow actors with local state |
US9058324B2 (en) * | 2012-09-28 | 2015-06-16 | Intel Corporation | Predictive precaching of data based on context |
CN106687920B (zh) | 2014-09-02 | 2020-07-03 | 起元科技有限公司 | 管理任务的调用 |
US9619601B1 (en) * | 2015-01-22 | 2017-04-11 | Xilinx, Inc. | Control and data flow graph generation for hardware description languages |
US10042528B2 (en) * | 2015-08-31 | 2018-08-07 | Getgo, Inc. | Systems and methods of dynamically rendering a set of diagram views based on a diagram model stored in memory |
-
2015
- 2015-09-02 EP EP15771760.4A patent/EP3189422A1/en active Pending
- 2015-09-02 KR KR1020177008730A patent/KR102364552B1/ko active IP Right Grant
- 2015-09-02 KR KR1020177008852A patent/KR102375346B1/ko active IP Right Grant
- 2015-09-02 AU AU2015312016A patent/AU2015312016B2/en active Active
- 2015-09-02 JP JP2017510840A patent/JP6633053B2/ja active Active
- 2015-09-02 SG SG11201701588QA patent/SG11201701588QA/en unknown
- 2015-09-02 JP JP2017512310A patent/JP6688285B2/ja active Active
- 2015-09-02 WO PCT/US2015/048085 patent/WO2016036817A1/en active Application Filing
- 2015-09-02 AU AU2015312003A patent/AU2015312003B2/en active Active
- 2015-09-02 US US14/843,162 patent/US10089087B2/en active Active
- 2015-09-02 CA CA2959169A patent/CA2959169C/en active Active
- 2015-09-02 EP EP15763745.5A patent/EP3189417B1/en active Active
- 2015-09-02 SG SG11201701631QA patent/SG11201701631QA/en unknown
- 2015-09-02 CA CA2959627A patent/CA2959627C/en active Active
- 2015-09-02 CN CN201580047180.1A patent/CN106663010B/zh active Active
- 2015-09-02 WO PCT/US2015/048100 patent/WO2016036830A1/en active Application Filing
- 2015-09-02 CN CN201580047071.XA patent/CN106663075B/zh active Active
- 2015-09-02 US US14/842,956 patent/US9785419B2/en active Active
-
2019
- 2019-11-01 AU AU2019257543A patent/AU2019257543B2/en active Active
- 2019-12-11 JP JP2019223414A patent/JP6908682B2/ja active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6908682B2 (ja) | グラフに基づくプログラムの仕様の実行 | |
JP6698656B2 (ja) | グラフに基づくプログラムの仕様のコンパイル | |
US10896025B2 (en) | Specifying components in graph-based programs | |
JP6626497B2 (ja) | タスクの呼び出しの管理 | |
JP6467500B2 (ja) | グラフに基づくプログラムの仕様内の構成要素の関連するタスクを制御するための、それらの構成要素の実行状態の管理 | |
JP6778193B2 (ja) | データ処理タスクの制御 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170801 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171219 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181017 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181206 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20190301 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20190416 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190605 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191002 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20191223 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200228 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200312 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200403 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6688285 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |