JP6633053B2 - グラフに基づくプログラムの仕様の実行 - Google Patents
グラフに基づくプログラムの仕様の実行 Download PDFInfo
- Publication number
- JP6633053B2 JP6633053B2 JP2017510840A JP2017510840A JP6633053B2 JP 6633053 B2 JP6633053 B2 JP 6633053B2 JP 2017510840 A JP2017510840 A JP 2017510840A JP 2017510840 A JP2017510840 A JP 2017510840A JP 6633053 B2 JP6633053 B2 JP 6633053B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- link
- graph
- data
- port
- 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
- 238000000034 method Methods 0.000 claims description 115
- 230000008569 process Effects 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 27
- 230000001419 dependent effect Effects 0.000 claims 3
- 238000012545 processing Methods 0.000 description 198
- 238000004422 calculation algorithm Methods 0.000 description 75
- 238000011144 upstream manufacturing Methods 0.000 description 73
- 230000007704 transition Effects 0.000 description 49
- 239000000872 buffer Substances 0.000 description 30
- 238000013507 mapping Methods 0.000 description 28
- 238000013459 approach Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 15
- 239000013641 positive control Substances 0.000 description 12
- 230000006399 behavior Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000001629 suppression Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000003442 weekly effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000000644 propagated effect Effects 0.000 description 5
- 230000026676 system process Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000013642 negative control Substances 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation 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
- 230000005381 magnetic domain Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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
- 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
- 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 (40)
- 1又は2以上のグラフに基づくプログラムの仕様を記憶するストレージシステムであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、ストレージシステムと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせるように構成されたコンパイラであって、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素のそれぞれの発生に関して関数を実行するための目標のプリミティブ関数の1又は2回以上の発生を引き起こす、コンパイラと、
それぞれが少なくとも1つのプロセッサを含む1又は2以上のコンピューティングノードであって、前記コンピューティングノードのうちの少なくとも第1のコンピューティングノードが、
前記目標のプログラムの仕様の実行を開始し、
前記目標のプリミティブ関数の前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つを前記目標のプログラムの仕様の実行時に決定するように構成される、1又は2以上のコンピューティングノードとを含むコンピューティングシステム。 - 第1のコンピューティングノードが、
第1のグラフに基づくプログラムの仕様内の第1の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第2の構成要素のポートへの、第1の種類のリンクの構成を有する第1のリンクに関して、前記第1の構成要素及び前記第2の構成要素に対応するタスクを逐次的に呼び出し、
前記第1のグラフに基づくプログラムの仕様内の第3の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第4の構成要素のポートへの、第2の種類のリンクの構成を有する第2のリンクに関して、前記第3の構成要素によって提供されるデータ要素の異なるそれぞれのサブセットを処理するために前記第4の構成要素に対応するタスクの複数のインスタンスを呼び出すようにさらに構成される請求項1に記載のコンピューティングシステム。 - 第1のコンピューティングノードが、複数のコンピューティングノードのうちの異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てるようにさらに構成される請求項2に記載のコンピューティングシステム。
- 目標のプリミティブ関数が、1又は2以上のタスクのセットに対応する関数を特定し、第2の種類のリンクの構成を有するリンクに対応するデータ要素のコレクションを特定する請求項1〜3のいずれかに記載のコンピューティングシステム。
- 請求項2又は3に従属するときに、複数のインスタンスの少なくとも一部が、目標のプリミティブ関数によって特定されるコレクション内の異なるそれぞれのデータ要素に適用される請求項4に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、目標のプリミティブ関数によって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用される請求項5に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定される請求項5に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様によって参照されるデータが記憶されるコンピューティングノードの数以上である請求項7に記載のコンピューティングシステム。
- 目標のプリミティブ関数によって特定された関数をデータ要素に適用することが、1又は2以上のタスクのためのデータソースとして前記データ要素を使用して前記関数に対応する前記1又は2以上のタスクのセットを実行することを含む請求項5〜8のいずれかに記載のコンピューティングシステム。
- 異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることが、前記複数のインスタンスが実行されるべきコンピューティングノードの数を目標のプログラムの仕様の実行時に決定することを含む請求項3又は請求項3に従属するときの請求項4〜9のいずれかに記載のコンピューティングシステム。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることをコンパイラに示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素がリンクされた構成要素の間で渡されるべきであることを前記コンパイラに示す請求項1〜10のいずれかに記載のコンピューティングシステム。
- 第1のグラフに基づくプログラムの仕様が、リンクされた構成要素の直列実行が存在すべきであることをコンパイラに示し、単一のデータ要素が前記リンクされた構成要素のタスクの間で渡されるべきであることを前記コンパイラに示す、前記リンクされた構成要素のそれぞれの入力ポート及び出力ポートによって定義されるリンクの第3の種類のリンクの構成を含む請求項1〜11のいずれかに記載のコンピューティングシステム。
- コンパイラが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定するように構成される請求項1〜12のいずれかに記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する請求項13に記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する請求項13に記載のコンピューティングシステム。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する請求項15に記載のコンピューティングシステム。
- 各コンピューティングノードが、対応するキュー内のタスクを実行するためのプロセスを生成するために少なくとも1つのスケジューラを実行するように構成される請求項1〜16のいずれかに記載のコンピューティングシステム。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行される第2のスケジューラのキューから前記第1のコンピューティングノードによって実行される第1のスケジューラのキューに1又は2以上のタスクを移動させるように構成される請求項17に記載のコンピューティングシステム。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行されるスケジューラのキューから第2のコンピューティングノードによって実行されるスケジューラのキューに1又は2以上のタスクを移動させるように構成される請求項17に記載のコンピューティングシステム。
- 1又は2以上のグラフに基づくプログラムの仕様を記憶するステップであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、ステップと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせ、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素のそれぞれの発生に関して関数を実行するための目標のプリミティブ関数の1又は2回以上の発生を引き起こすステップと、
少なくとも1つのコンピューティングノードを使用するステップであって、
前記目標のプログラムの仕様の実行を開始し、
前記目標のプリミティブ関数の前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つを前記目標のプログラムの仕様の実行時に決定することを含む、前記ステップとを含む方法。 - コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
1又は2以上のグラフに基づくプログラムの仕様を記憶することであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素のそれぞれの出力ポート及び入力ポートによって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、記憶することと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせ、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素のそれぞれの発生に関して関数を実行するための目標のプリミティブ関数の1又は2回以上の発生を引き起こすことと、
少なくとも1つのコンピューティングノードを使用することであって、
前記目標のプログラムの仕様の実行を開始し、
前記目標のプリミティブ関数の前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つを前記目標のプログラムの仕様の実行時に決定することを含む、前記使用することを行わせるための命令を含む、前記ソフトウェア。 - コンパイラが、第2の種類のリンクの構成を有するそれぞれのリンクのために目標のプリミティブ関数の発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブ関数の発生を引き起こさない請求項1に記載のコンピューティングシステム。
- 少なくとも1つのコンピューティングノードを使用するステップが、
第1のグラフに基づくプログラムの仕様内の第1の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第2の構成要素のポートへの、第1の種類のリンクの構成を有する第1のリンクに関して、前記第1の構成要素及び前記第2の構成要素に対応するタスクを逐次的に呼び出し、かつ
前記第1のグラフに基づくプログラムの仕様内の第3の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第4の構成要素のポートへの、第2の種類のリンクの構成を有する第2のリンクに関して、前記第3の構成要素によって提供されるデータ要素の異なるそれぞれのサブセットを処理するために前記第4の構成要素に対応するタスクの複数のインスタンスを呼び出すことをさらに含む、
請求項20に記載の方法。 - 複数のコンピューティングノードのうちの異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることをさらに含む、請求項23に記載の方法。
- 複数のインスタンスの少なくとも一部が、目標のプリミティブ関数によって特定されるコレクション内の異なるそれぞれのデータ要素に適用される、請求項24に記載の方法。
- 呼び出されるインスタンスの数が、目標のプリミティブ関数によって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用されるか、或いは第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定されるかのいずれかである、請求項25に記載の方法。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることを示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素がリンクされた構成要素の間で渡されるべきであることを示す、請求項20に記載の方法。
- 目標のプログラムの仕様を生じさせることが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定することを含む、請求項20に記載の方法。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項28に記載の方法。
- 少なくとも1つのコンピューティングノードを使用するステップが、前記少なくとも1つのコンピューティングノードによって実行される第2のスケジューラのキューから前記少なくとも1つのコンピューティングノードによって実行される第1のスケジューラのキューに1又は2以上のタスクを移動することをさらに含む、請求項20に記載の方法。
- 目標のプリミティブ関数の1又は2回以上の発生を引き起こすステップが、第2の種類のリンクの構成を有するそれぞれのリンクのために前記目標のプリミティブ関数の発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブ関数の発生を引き起こさないことを含む、請求項20に記載の方法。
- コンピューティングシステムに、少なくとも1つのコンピューティングノードを使用させるための命令が、前記少なくとも1つのコンピューティングノードに、
第1のグラフに基づくプログラムの仕様内の第1の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第2の構成要素のポートへの、第1の種類のリンクの構成を有する第1のリンクに関して、前記第1の構成要素及び前記第2の構成要素に対応するタスクを逐次的に呼び出し、かつ
前記第1のグラフに基づくプログラムの仕様内の第3の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第4の構成要素のポートへの、第2の種類のリンクの構成を有する第2のリンクに関して、前記第3の構成要素によって提供されるデータ要素の異なるそれぞれのサブセットを処理するために前記第4の構成要素に対応するタスクの複数のインスタンスを呼び出すことをさらにさせる、請求項21に記載のソフトウェア。 - 命令が、コンピューティングシステムに、複数のコンピューティングノードのうちの異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることをさらにさせる追加の命令を含む、請求項32に記載のソフトウェア。
- 複数のインスタンスの少なくとも一部が、目標のプリミティブ関数によって特定されるコレクション内の異なるそれぞれのデータ要素に適用される、請求項33に記載のソフトウェア。
- 呼び出されるインスタンスの数が、目標のプリミティブ関数によって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用されるか、或いは第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定されるかのいずれかである、請求項34に記載のソフトウェア。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることを示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素がリンクされた構成要素の間で渡されるべきであることを示す、請求項21に記載のソフトウェア。
- コンピューティングシステムに、目標のプログラムの仕様を発生させる命令が、前記コンピューティングシステムに、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定させる1又は2以上の命令を含む、請求項21に記載のソフトウェア。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項37に記載のソフトウェア。
- コンピューティングシステムに、少なくとも1つのコンピューティングノードを使用させる命令が、前記少なくとも1つのコンピューティングノードの使用が、前記少なくとも1つのコンピューティングノードによって実行される第2のスケジューラのキューから前記少なくとも1つのコンピューティングノードによって実行される第1のスケジューラのキューに1又は2以上のタスクをさらに移動させる追加の命令をさらに含む、請求項21に記載のソフトウェア。
- コンピューティングシステムに、目標のプリミティブ関数の1又は2回以上の発生を引き起こさせる命令が、前記コンピューティングシステムに、第2の種類のリンクの構成を有するそれぞれのリンクのために目標のプリミティブ関数の発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブ関数の発生を引き起こさない、1又は2以上の命令を含む、請求項21に記載のソフトウェア。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019223414A JP6908682B2 (ja) | 2014-09-02 | 2019-12-11 | グラフに基づくプログラムの仕様の実行 |
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/048085 WO2016036817A1 (en) | 2014-09-02 | 2015-09-02 | Executing graph-based program specifications |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019223414A Division JP6908682B2 (ja) | 2014-09-02 | 2019-12-11 | グラフに基づくプログラムの仕様の実行 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017531851A JP2017531851A (ja) | 2017-10-26 |
JP6633053B2 true JP6633053B2 (ja) | 2020-01-22 |
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 After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017512310A Active JP6688285B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
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) | グラフに基づくプログラムの仕様の実行 | |
US10896025B2 (en) | Specifying components in graph-based programs | |
US10885003B2 (en) | Compiling graph-based program specifications | |
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: 20180720 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190612 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190829 |
|
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: 20191111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20191211 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6633053 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 |