JP6908682B2 - グラフに基づくプログラムの仕様の実行 - Google Patents
グラフに基づくプログラムの仕様の実行 Download PDFInfo
- Publication number
- JP6908682B2 JP6908682B2 JP2019223414A JP2019223414A JP6908682B2 JP 6908682 B2 JP6908682 B2 JP 6908682B2 JP 2019223414 A JP2019223414 A JP 2019223414A JP 2019223414 A JP2019223414 A JP 2019223414A JP 6908682 B2 JP6908682 B2 JP 6908682B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- link
- type
- components
- graph
- 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
Images
Classifications
-
- 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
- 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/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号明細書の優先権を主張するものである。
の出力は、区分され、再び分散型ファイルシステム内の中間部分に記憶される。それから、Reduce関数が、中間部分を処理し、計算全体の結果を与えるために分散された方法で実行される。MapReduceフレームワークにおいて表現可能であり、入力及び出力がmap−reduceフレームワークのファイルシステム内に記憶するために修正可能である計算は効率的に実行され得るが、多くの計算は、このフレームワークに合わない及び/又はすべてのそれらの計算の入力及び出力を分散型ファイルシステム内に持つように容易に適応されない。
される上述の手法と比べて、基礎を成す仕様がグラフによる計算の計算効率を高める(例えば、所与の計算リソースの単位毎に処理されるレコードの数を増やす)ニーズが存在する。さらに、変化する計算リソース及び要件に適応することができることが望ましい。1若しくは2以上のグラフに基づく計算の実行中に利用可能である計算リソースの変化、及び/又は例えば処理されているデータの特徴が原因であるそのような計算の異なる構成要素の計算負荷の変化若しくは負荷の時間変化に適応することを可能にする計算手法を提供するニーズも存在する。例えば、サーバ毎に異なる数のプロセッサ、プロセッサ毎に異なる数のプロセッサコアなどを有するサーバを使用して、異なる特徴を有する計算リソースを効率的に利用することができ、同種の環境と異種の環境との両方を効率的にサポートすることができる計算手法を提供するニーズも存在する。グラフに基づく計算の開始を迅速にする望みも存在する。そのような効率及び適応性を提供する1つの態様は、(設計時に)グラフを作成するときに作成者によって行われる選択と、(コンパイル時に)コンパイラによって行われるアクションと、(ランタイムで)ランタイムシステムによって行われるアクションとの間の適切な分離及び抽象の壁(abstraction barrier)を提供することである。
。
行わせるための命令を含む。
一部の実施形態において、高レベルのプログラムの仕様110は、データに対して実行されるデータ処理の計算の全体の一部をそれぞれが規定する「構成要素」のセットを含む「データ処理グラフ」と呼ばれるある種のグラフに基づくプログラムの仕様である。構成要素は、例えば、プログラミングユーザインターフェース及び/又は計算のデータ表現においてグラフ内のノードとして表される。上の背景技術において説明されたデータフローグラフなどの一部のグラフに基づくプログラムの仕様とは異なり、データ処理グラフは、データの転送、又は制御の転送、又はこれら両方のいずれかを表すノード間のリンクを含み得る。リンクの特徴を示す1つの方法は、構成要素に異なる種類のポートを設けることによる。リンクは、上流の構成要素の出力ポートから下流の構成要素の入力ポートに接続される有向リンクである。ポートは、データ要素がどのようにして書き込まれ、リンクから読まれるのか及び/又は構成要素がデータを処理するためにどのようにして制御されるのかの特徴を表すインジケータを有する。
・構成要素のインスタンスがポートに接続されたリンクを通り越すコレクションのすべてのデータ要素をそれぞれ読むか又は書くことを意味するコレクション入力ポート又はコレクション出力ポート。構成要素のコレクションポート間の単一のリンクを有する構成要素の対に関して、下流の構成要素は、概して、データ要素が上流の構成要素によって書かれるときにそれらのデータ要素を読むことを可能にされ、上流の構成要素と下流の構成要素との間のパイプライン並列処理を可能にする。下でより詳細に説明されるように、データ要素は、並べ替えられる可能性もあり、それが、並列処理の効率的な働きを可能にする
。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなコレクションポートは、概して、構成要素の四角いコネクタ記号によって示される。
・構成要素のインスタンスが、それぞれ、ポートに接続されたリンクから最大で1つのデータ要素を読むか又はポートに接続されたリンクに最大で1つのデータ要素を書くことを意味するスカラ入力ポート又はスカラ出力ポート。構成要素のスカラポート間の単一のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が、単一のデータ要素の転送を制御の転送として使用することによって強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなスカラポートは、概して、構成要素の三角のコネクタ記号によって示される。
・スカラ入力又はスカラ出力と同様であるが、いかなるデータ要素も送信される必要がない制御入力ポート又は制御出力ポートであって、構成要素間の制御の転送を伝達するために使用される、制御入力ポート又は制御出力ポート。構成要素の制御ポート間のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が(たとえそれらの構成要素がコレクションポート間のリンクも有するとしても)強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのような制御ポートは、概して、構成要素の丸いコネクタ記号によって示される。
信するものと見なされ得る。この信号が送信される方法は、実装形態に応じて変わる可能性があり、一部の実装形態においては、構成要素間の制御メッセージの送信を含む可能性がある。その他の実装形態は、実際の制御メッセージを送信することを含まない可能性があるが、その代わりに、受信側の構成要素によって表されるタスクに関連するプロセスを直接呼び出すか若しくは関数を呼び出すプロセス(又は抑制する場合にはそのような呼び出し又は関数呼び出しの省略)を含む可能性がある。
3の構成要素233の入力制御ポートにデータ要素を送信する。このデータ要素は、第2の構成要素232が第1の構成要素231によって提供されたデータを処理し終えたことと、第3の構成要素233がその第3の構成要素233の受け取られた日付情報データを今や処理し始め得ることとを第3の構成要素233に示す肯定の制御信号として解釈される。
リガするのか又は第6の構成要素236が実行を開始するようにその第5の構成要素235をトリガするのかということである。第3の構成要素233又は第6の構成要素236のどちらかから制御信号を受け取ると、第5の構成要素235は、日次報告を生成する。
越すことを可能にする。上述のように、スカラポートは、最大で1つのデータ要素(すなわち、0個か又は1つのデータ要素)の(スカラ出力ポートのための)生成又は(スカラ入力ポートのための)消費を表す。一方、コレクションポートは、潜在的に複数のデータ要素のセットの(コレクション出力ポートのための)生成又は(コレクション入力ポートのための)消費を表す。単一のデータ処理グラフにおいて両方の種類のデータポートをサポートすることによって、計算リソースが、より効率的に割り振られる可能性があり、より複雑な制御フロー及びデータフローが、タスクの間で生じさせられる可能性があり、作成者が望まれる振る舞いを簡単に示すことを可能にする。
図1に関連して上で説明されているように、コンパイラ/インタープリタ120は、実行するためにデータ処理グラフを準備するためにデータ処理グラフに実行セット発見前処理手順を実行する。通常の意味で、本明細書において使用されるとき、用語「実行セット」は、一体として呼び出され、出力コレクションポートのデータ要素の一部などのデータの一部に適用され得る1又は2以上の構成要素のセットを指す。したがって、それぞれの入力データ要素(又は実行セットの1若しくは2以上の入力ポートに与えられる複数の入力データ要素のタプル)のために、実行セット内の各構成要素の最大で1つのインスタンスが実行される。実行セット内で、スカラポート及び制御ポートへのリンクによって、順番に並べる制約が課され、実行セット内の構成要素の並列実行は、順番に並べる制約が破られない限りにおいて容認される。コンパイラ/インタープリタ120によって実行セットのために準備されるコードは、コードが実行されるときに構成要素に対応するタスクがどのようにして実行されるべきか(例えば、並列処理の度合い)を示す埋め込まれた情報(例えば、アノテーション又は修飾子(modifier))を含み得る。受け取られたコレクション内の複数のデータ要素のタプルのために実行セットの1つのインスタンスが実行される例において、タプルは、例えば、決まった数のデータ要素、又は何らかの特徴(例えば、共通のキー値)を共有するいくつかのデータ要素からなる可能性がある。並列に実行されることを可能にされる少なくともいくつかの構成要素が存在する例において、実行セットは、複数のタスク、例えば、実行セットまるごとのためのタスクと、構成要素のうちの1又は2以上のインスタンスの同時実行のための1又は2以上のサブタスクとを使用して実施される可能性がある。したがって、実行セットの異なるインスタンスを表すタスクは、それら自体、例えば、同時に実行され得るサブタスクによってさらに細分化されたタスクに分解される可能性がある。異なる実行セットのためのタスクは、概して、独立して並列に実行され得る。したがって、例えば、大きなデータセットが百万個のレコードを有する場合、百万個の独立したタスクが存在する可能性がある。タスクの一部は、コンピューティングプラットフォーム150の異なるノード152上で実行される可能性がある。タスクは、単一のノード152上でさえも同時に効率的に実行され得る軽量スレッドを使用して実行される可能性がある。
ットの駆動入力スカラデータポートにおいて受け取られた各データ要素に関して、実行セット内の構成要素の各々は、1回実行される(作動される場合)か又はまったく実行されない(抑制される場合)。上流のコレクションポートから実行セットに利用され得る複数のデータ要素を処理するために、実行セットの複数のインスタンスがインスタンス化され、並列に実行され得る。実行セットに関する並列処理の度合いは、ランタイムで決定される可能性があり(実行セットを並列化しないあり得る判断を含み)、ランタイムで利用可能な計算リソースによってのみ制限される。実行セットの独立したインスタンスの個々の出力は、順序に関係なく実行セットの(1又は2以上の)出力ポートにおいて集められ、下流の構成要素に利用され得るようにされる。代替的に、その他の実施形態においては、駆動入力スカラデータポートを必要としないルート実行セット以外の実行セットが(場合によってはユーザ入力に基づいて)認識される可能性がある。駆動入力スカラデータポートのないそのような実行セットは、本明細書において説明される手順を使用して、適切な場合(例えば、下で説明されるラッチされた実行セットのために)単一のインスタンスにおいて、又は複数のインスタンスにおいて並列に実行される可能性がある。例えば、実行セットが実行される回数及び/又は実行される実行セットの並列なインスタンスの数を決定するパラメータが設定される可能性がある。
でない限り)それらの構成要素が同じ種類のポートの間のリンクによって接続される場合、デフォルトで同じ実行セット内にある。図4Aにおいて、構成要素A 402は、スカラ型の出力ポート406を有し、構成要素B 404は、スカラ型の入力ポート408を有する。構成要素A 402と構成要素B 404との間のリンク410が2つのスカラ型ポートを接続するので、構成要素A及びB 402、404は、この例において同じ実行セット内にある。図4Aにおいては、構成要素A 402と構成要素B 404との間のリンクがスカラ−スカラリンクであるので、0データ要素か又は1データ要素かのどちらかがリンク410を介して上流の構成要素A 402と下流の構成要素B 404との間で渡される。上流の構成要素A 402の処理が完了すると、(上で説明されているように)上流の構成要素A 402が抑制されない限り、データ要素がリンク410を介して渡され、上流の構成要素A 402が抑制される場合、データ要素はリンク410を介して渡されない。
例示を目的として、第1の例において、データ処理グラフは、単純な1次元のグラフ構造を有し、比較的簡単な割り当てアルゴリズムが、スタックに基づくアルゴリズムを使用して示される。スタックに基づく割り当てアルゴリズムにおいて、データ処理グラフ内の各構成要素は、分割文字「/」によって分けられた整数からなる1又は2以上の「ID文字列」によってラベル付けされる。所与の構成要素のID文字列内に分割文字「/」が現れる回数は、実行セットの階層内の構成要素のレベルを決定する。一部の例において、構成要素は、複数の入力リンクを有する可能性があり、したがって、複数のID文字列を有する可能性がある。そのような場合、アルゴリズムは、どのID文字列を使用すべきかを決定するための下でより詳細に説明される規則を有する。
既存のID文字列の整数の中の最大>である。上流の構成要素のスカラ型出力ポートと下流
の構成要素のコレクション型入力ポートとの間のリンクが遭遇される場合、下流の構成要素は、ラベルの一番右のID文字列の整数(及びその整数の分割文字「/」)が削除されるようにして上流の構成要素のラベルを含むラベルを割り当てられる。
点インジケータ559を使用して表される。
ット551にグループ分けされる。ID文字列「0/1」を有するそれらの構成要素は、ルートの実行セット651内に入れ子にされる「レベル1」実行セット670にグループ分けされる(「0/1」は実行セット0内に入れ子にされた実行セット1と読まれ得る)。ID文字列「0/1/2」を有するそれらの構成要素は、ルートの「レベル0」実行セット551と「レベル1」実行セット570との両方の中に入れ子にされる「レベル2」実行セット572にグループ分けされる。
一部の例において、より普通のデータ処理グラフに関して、スタックに基づく割り当てアルゴリズムは、実行セットの階層を正しく決定するのに十分でない可能性がある。例えば、普通のデータ処理グラフにおいては、任意の所与の構成要素が、複数の入力ポート及び/又は複数の出力ポートを有し、スタックに基づく手法に適合しない普通のデータ処理グラフを実行することができる。そのような例においては、実行セットの階層を決定するためにグローバルなマッピングに基づく割り当てアルゴリズムが使用される。
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を含む。
行セットから移動先実行セットに構成要素をドラッグすることによって「同じセット」関係を規定することができる。一部の例においては、ドラッグされた構成要素が移動先実行セット内に規則を守って置かれ得ることを検証するためのエラー検査が実行される。例えば、互いに「同じセット」関係を有することになるすべての2つの構成要素に強制され得る1つのあり得る要件は、それらの構成要素の両方を含むデータ処理グラフを通り抜ける少なくとも1つの経路が存在しなければならないことである。
一部の例においては、実行セット内の複数の構成要素が、それぞれ、実行セットの入口点を介して上流の構成要素の単一のコレクション出力ポートに接続されたスカラ入力ポートを有する可能性がある。同様に、実行セット内の複数の構成要素が、それぞれ、実行セ
ットの下流の構成要素の単一のコレクション入力ポートに接続されたスカラ出力ポートを有する可能性がある。
一部の例において、所与の実行セット内の構成要素は、並列のインスタンスにおいて複
数回実行される可能性がある。一部の例において、並列のインスタンスを実行する構成要素は、共有リソースにアクセスする必要がある可能性がある。競合状態、及び複数のプロセスが共有リソースにアクセスすることに関連するその他の問題を防止するために、ラッチメカニズムが使用され得る。概して、ラッチメカニズムは、実行セット内の構成要素の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は適合性がない
一部の実施形態においては、部分的な順序付けによる逐次処理が、データ要素の一部のサブセットに課される可能性がある。
、各アカウント(account)内でのデータの処理に特定の制限を強制したい可能性がある
。例えば、ユーザは、直列実行を強制したい可能性がある。そのような場合、アカウントにまたがって任意の度合いの並列処理が可能にされ得るが、同じアカウントに関する2つのデータ要素が同じ時に(つまり、同時に)処理されてはならない。さらなる制限は、同じアカウントに関する2つのデータ要素が、例えば、キーによって又は受け取られた順序によって定義される順序に従う順序から外れて処理されてはならないような順序通りの処理であってもよい可能性がある。
ある。場合によっては、実行セットは、予め定義された値をシリアル化キーとして与えることによって完全に逐次的に実行されるように強制される可能性がある。
関連する順序付けを復元するためにソートされる可能性がある。代替的に、並列に生成された出力データ要素が、明示的なソート動作が実行されることを必ずしも必要とせずに、それらのデータ要素が実行セットに入ったのと同じ順序で合併される可能性がある。
・同時性(例えば、上述の並列、直列、キーによる直列)
・異なる実行セットの間の優先度(例えば、ある実行セットのすべてのタスクが別の実行セットのすべてのタスクの後に行われる)
・トランザクショナリティ(transactionality)(例えば、実行セットのタスクがデータベーストランザクションとして処理される)
・リソースのラッチ(例えば、実行セットのタスクが、共有変数などの特定のリソースがロックされるようにして実行され、タスクがアトミックな単位としてリソースにアクセスすることを可能にする)
・順序付け(例えば、データ要素の間の順序付けが維持される)
・タプルのサイズ(例えば、実行セットの各インスタンスによって操作されるデータ要素の数)
一部の例においては、ユーザインターフェースが、構成要素をキャンバスにドラッグし、構成要素のポートをリンクを使用して一緒に接続することによってユーザがデータ処理グラフを作成することを可能にする。一部の例において、ユーザインターフェースは、ユーザがデータ処理グラフを作成するときに上述の(1又は2以上の)割り当てアルゴリズムをデータ処理グラフに繰り返し適用する。例えば、ユーザが作成されているデータ処理グラフに構成要素を追加するとき、(1又は2以上の)割り当てアルゴリズムが、追加された構成要素を有するグラフに適用され得る。そして、(1又は2以上の)割り当てアルゴリズムによって発見された結果として得られる実行セットが、例えば、ユーザインターフェース内で構成要素の周りに描かれたボックスとして、又は同じ実行セット内の構成要素を含む領域をレンダリングするために使用される一意の色、濃淡、テクスチャ、又はラベルによって区別され得る構成要素を取り囲む任意の形状の領域として表示される可能性がある。一部の例において、それから、ユーザは、実行セットに構成要素を追加するか又は実行セットから構成要素を削除することによって、(1又は2以上の)割り当てアルゴリズムによって発見された実行セットを修正することができる。一部の例において、(1又は2以上の)割り当てアルゴリズムは、修正された実行セットが規則に則していることを検証する。例えば、さまざまな規則に則した方法のいずれかで潜在的に実行セットに分割される可能性がある構成要素及びさまざまなポートの間のリンクのいくつかの構成が存在し得る。そのような曖昧な場合、割り当てアルゴリズムは、デフォルトで実行セットのうちの1つの割り当てを選択する可能性があるが、ユーザは、実行セットの異なる割り当てを意図していた可能性があり、その場合、ユーザは、(例えば、終了点を挿入して前は構成要素の連鎖の中にあった実行セットを閉じることによって)割り当てを修正することができる。代替的に、割り当てアルゴリズムは、複数の規則に則した割り当てが可能である曖昧な構成を認識し、1つを選択するための入力を与えるようにユーザに促すように構成される可能性がある。
を持つことが容認される。しかし、これは、外部構成要素が実行セットの前と後との両方で実行されることを必要とされる場合、不可能である。
実行するためにデータ処理グラフを準備するプロセスにおいて、コンパイラ/インタープリタ120は、制御グラフ生成手順において制御グラフをさらに生じさせる。一部の実装形態において、制御グラフを生じさせることは、個々の構成要素に対応するタスクを実行するための実行可能コードと、それらのタスクの間のデータ及び制御のフローを決定する構成要素の間のさまざまなリンクに対応するコードとを生じさせることを含む。これは、コンパイラ/インタープリタ120によって発見された実行セットの階層の間のデータ及び制御の転送を含む。
開始構成要素及び終了構成要素は、いかなるコンピューティングタスクも実行しないが、特定の構成要素の実行を開始し、実行セット内のすべての構成要素が実行を終えたときを決定するために使用される制御信号を管理するためにコンパイラ/インタープリタ120によって使用される。
れる代替的な制御グラフ1206’においてはもはや第3の構成要素1216を開始構成要素1224に接続する必要がない。
、ある状態から別の状態に遷移し、その構成要素の出力シリアルポートを遷移させ、それが、下流の構成要素のリンクされたシリアル入力ポートを遷移させ、それが、それらの下流の構成要素を遷移させ、以下同様である。この振る舞いを実現するための特定の種類の状態機械の一例が、構成要素及びそれらの構成要素のシリアルポートに関する状態遷移図を参照して下でより詳細に説明される。
ートのために使用される可能性がある例示的な状態機械に関する状態遷移図(図13Bの状態遷移図1310)を示す。状態遷移図は、アクティブ状態1304が継続中の実行に関連付けられ、ポートではなく構成要素だけが実行を行うので、構成要素だけがアクティブ状態1304であり得るということを除いて同様である。
状態になるべきかを決定するまで保留のままである。
再び図1を参照すると、データ処理グラフの構成要素のインスタンスが、データ処理グラフを実行する文脈でタスクとして生成され(spawned)、概して、コンピューティング
プラットフォーム150の複数のコンピューティングノード152において実行される。以下でより詳細に検討されるように、コントローラ140は、例えば、計算負荷の割り振り、通信又は入力/出力のオーバーヘッドの削減、及びメモリリソースの使用に関連するシステムの性能目標を達成するために、それらのタスクの実行のスケジューリング及び位置(locus)の監視制御の態様を提供する。
され得る環境を提供するJava仮想マシン(JVM,Java Virtual Machine)である。しかし、仮想マシンアーキテクチャを使用する可能性があるか又は使用しない可能性があるその他の形態の処理エンジンが、使用され得る。
プリミティブを含む。概して、少なくともデフォルトで、1つの子タスク又は複数の子タスクを生成することは、それらのタスクを同じランナ内で最初に親として形成させる。例えば、spawn Work_Read_External_Dataタスクが、同じランナ上で生成される。タスクが
外部データにアクセスしている限り、タスクは、その外部データへのI/Oインターフェース1464を利用する可能性がある。例えば、そのインターフェースは、外部データベースへのオープン接続、ネットワークデータ接続のエンドポイントなどからなる可能性がある。そのようなI/Oインターフェースは、特定のランナに拘束される可能性があり、したがって、そのインターフェースを使用するタスクは、ランナ間のタスクの潜在的なマイグレーションの文脈で下でさらに検討されるように、そのランナからのみインターフェースにアクセスするように求められる可能性がある。この例において、我々は、無理なく計測され、例えば、バッファ1を処理エンジンの能力を超えて大きくなるようにすることによってシステムを「手に負えない状態に追い込む」ことのない方法でタスクがバッファ1を満たすと仮定する。例えば、リソースの混雑又は消耗を避けるための制御の態様の手法も、下で検討される。
への関連する変数のマッピングとを可能にする。キーが指定されるとき、生成されるタスクは、そのタスクの実行の継続時間の間、キーに排他的にアクセスする。実行が始まる前に、値が、ストレージからタスクの局所的なコンテキストに渡され、実行が完了した後、局所的なコンテキストの値が、大域的なストレージに戻される。spawnプリミティブが別
の実行されているタスクによって使用中であるキーを指定する場合、これは、新しく生成されるタスクは、そのタスクがキーに排他的にアクセスすることができるまでブロックされる。一部の実装形態においては、各コンピューティングノードが、特定のキーのホームノードであると決定される可能性があり、タスクが生成されることを要求されるとき、その要求は、(キー,値)ペアがあるコンピューティングノードによって処理され、タスクの実行は、最初、そのノードにおいて始まる。代替的な実施形態において、そのような大域的な共有された(キー,値)ペアへの同様の排他的アクセスを行うその他の手法は、例えば、排他的アクセスの要求を伝達し、その後にキーに関する更新された値によって排他的アクセスの解放を伝達することによって、ストレージと同じ場所においてタスクを開始することを必ずしも含まない。タスクは、デフォルトで、新しい(キー,値)ペアが生成されるときにタスクが実行されているノード上に記憶される新しい(キー,値)ペアを生成する可能性がある。
ングモデルにおいて、値は、キーに関連して保持される履歴に追加される可能性があり、前に追加された値の関数が、提供される可能性がある。値の窓は、時間窓によって値の数(つまり、最後の100個のアイテム)に従って定義され得る(つまり、例えば、値が追加された時間によって、又は各値が追加されるときにその値と一緒に提供される明示的なタイムスタンプによって定義される最後の10分間に追加されたアイテム)。プログラミングモデルは窓から外れる古い値の明示的な削除を必要とせず、窓の定義は実装形態がそのような削除を自動的に実行することを可能にすることに留意されたい。プログラミングモデルは、そのような窓に基づくキー指定される大域変数を作成し(例えば、窓の性質及び範囲を定義し)、キーに値を追加し、値の窓の関数(例えば、最大、平均、異なる値の数など)を計算するためのいくつかのプリミティブを含む。一部のプリミティブは、キーに関する新しい値を追加することと、窓の関数の戻り値を返すこととを組み合わせる(例えば、キーに新しい値を追加し、追加された最後の100個の値の平均を返す)。
上述の手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェ
アで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データ処理グラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データ処理グラフの構成要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
Claims (61)
- 1又は2以上のグラフに基づくプログラムの仕様を記憶するストレージシステムであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、ストレージシステムと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせるように構成されたコンパイラであって、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素の関数の1又は2以上のインスタンスを実行するための目標のプリミティブの1又は2回以上の発生を引き起こす、コンパイラと、
それぞれが少なくとも1つのプロセッサを含む1又は2以上のコンピューティングノードであって、前記コンピューティングノードのうちの少なくとも第1のコンピューティングノードが、
前記目標のプログラムの仕様の実行を開始すること、
前記目標のプリミティブの前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つをランタイムで決定すること、及び
前記第1のグラフに基づくプログラムの仕様内の構成要素に対応するタスクの少なくとも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の種類のリンクの構成を有するリンクに対応するデータ要素のコレクションを特定する、請求項3に記載のコンピューティングシステム。
- 複数のインスタンスの少なくとも一部が、目標のプリミティブによって特定されるコレクション内の異なるそれぞれのデータ要素に適用される、請求項4に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、目標のプリミティブによって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用される、請求項5に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定される、請求項5に記載のコンピューティングシステム。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様によって参照されるデータが記憶されるコンピューティングノードの数以上である、請求項7に記載のコンピューティングシステム。
- 目標のプリミティブによって特定された関数をデータ要素に適用することが、1又は2以上のタスクのためのデータソースとして前記データ要素を使用して前記関数に対応する前記1又は2以上のタスクのセットを実行することを含む、請求項5に記載のコンピューティングシステム。
- 異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることが、前記複数のインスタンスが実行されるべきコンピューティングノードの数をランタイムで決定することを含む、請求項3に記載のコンピューティングシステム。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることをコンパイラに示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素がリンクされた構成要素の間で渡されるべきであることを前記コンパイラに示す、請求項1に記載のコンピューティングシステム。
- 第1のグラフに基づくプログラムの仕様が、リンクされた構成要素の直列実行が存在すべきであることをコンパイラに示し、単一のデータ要素が前記リンクされた構成要素のタスクの間で渡されるべきであることを前記コンパイラに示す、前記リンクされた構成要素のそれぞれの入力ポート及び出力ポートによって定義されるリンクの第3の種類のリンクの構成を含む、請求項1に記載のコンピューティングシステム。
- コンパイラが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定するように構成される、請求項1に記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する、請求項13に記載のコンピューティングシステム。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項13に記載のコンピューティングシステム。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する、請求項15に記載のコンピューティングシステム。
- 各コンピューティングノードが、対応するキュー内のタスクを実行するためのプロセスを生成するために少なくとも1つのスケジューラを実行するように構成される、請求項1に記載のコンピューティングシステム。
- 第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又は2回以上の発生を引き起こすための手段と、
それぞれが少なくとも1つのプロセッサを含む1又は2以上のコンピューティングノードであって、前記コンピューティングノードのうちの少なくとも第1のコンピューティングノードが、
前記目標のプログラムの仕様の実行を開始し、
前記目標のプリミティブの前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、又は(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つをランタイムで決定するように構成される、前記1又は2以上のコンピューティングノードとを含むコンピューティングシステム。 - 1又は2以上のグラフに基づくプログラムの仕様を記憶するステップであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、ステップと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせ、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素の量に基づく関数の1又は2以上のインスタンスを実行するための目標のプリミティブの1又は2回以上の発生を引き起こすステップと、
少なくとも1つのコンピューティングノードを使用し、
前記目標のプログラムの仕様の実行を開始すること、
前記目標のプリミティブの前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つをランタイムで決定すること、及び
前記第1のグラフに基づくプログラムの仕様内の構成要素に対応するタスクの少なくとも1つのインスタンスによって、記憶されたデータの修正をランタイムで実行することであって、前記修正が前記タスクによってコミットされるまで前記修正が前記タスクの外に見えない、前記実行することを行うステップとを含む方法。 - 非一時的媒体に記憶されたソフトウェアであって、コンピューティングシステムに、
1又は2以上のグラフに基づくプログラムの仕様を記憶することであって、少なくとも第1のグラフに基づくプログラムの仕様が、タスクに対応する複数の構成要素及び前記構成要素のポートの間の有向リンクを含み、前記第1のグラフに基づくプログラムの仕様が、
(1)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第1の種類のリンクの構成、並びに
(2)リンクされた構成要素の間のリンクの種類によって又はリンクされた構成要素のそれぞれの出力ポート及び入力ポートの種類によって定義される第2の種類のリンクの構成であって、前記第1の種類のリンクの構成とは異なる、第2の種類のリンクの構成を含む、記憶することと、
前記第1のグラフに基づくプログラムの仕様から目標のプログラムの仕様を生じさせ、異なる種類のリンクの構成を認識し、前記目標のプログラムの仕様において、前記第2の種類のリンクの構成を有するリンク上を流れるデータ要素の量に基づく関数の1又は2以上のインスタンスを実行するための目標のプリミティブの1又は2回以上の発生を引き起こすことと、
少なくとも1つのコンピューティングノードを使用し、
前記目標のプログラムの仕様の実行を開始すること、
前記目標のプリミティブの前記1又は2回以上の発生に関連する1又は2以上の構成要素に関して、(1)前記構成要素に対応するタスクのインスタンスが呼び出されるべき順序、及び(2)前記構成要素に対応するタスクのインスタンスが実行されるべきコンピューティングノードのうちの少なくとも1つをランタイムで決定すること、及び
前記第1のグラフに基づくプログラムの仕様内の構成要素に対応するタスクの少なくとも1つのインスタンスによって、記憶されたデータの修正をランタイムで実行することであって、前記修正が前記タスクによってコミットされるまで前記修正が前記タスクの外に見えない、前記実行することとを行わせるための命令を含む、前記ソフトウェア。 - コンパイラが、第2の種類のリンクの構成を有するそれぞれのリンクのために目標のプリミティブの発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブの発生を引き起こさない、請求項1に記載のコンピューティングシステム。
- 第1のコンピューティングノードが、
第1のグラフに基づくプログラムの仕様内の第1の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第2の構成要素のポートへの、第1の種類のリンクの構成を有する第1のリンクに関して、前記第1の構成要素及び前記第2の構成要素に対応するタスクを逐次的に呼び出し、
前記第1のグラフに基づくプログラムの仕様内の第3の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第4の構成要素のポートへの、第2の種類のリンクの構成を有する第2のリンクに関して、前記第3の構成要素によって提供されるデータ要素の異なるそれぞれのサブセットを処理するために前記第4の構成要素に対応するタスクの複数のインスタンスを呼び出すようにさらに構成される、請求項21に記載の方法。 - 第1のコンピューティングノードが、複数のコンピューティングノードのうちの異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てるようにさらに構成される、請求項24に記載の方法。
- 目標のプリミティブが、1又は2以上のタスクのセットに対応する関数を特定し、第2の種類のリンクの構成を有するリンクに対応するデータ要素のコレクションを特定する、請求項25に記載の方法。
- 複数のインスタンスの少なくとも一部が、目標のプリミティブによって特定されるコレクション内の異なるそれぞれのデータ要素に適用される請求項26に記載の方法。
- 呼び出されるインスタンスの数が、目標のプリミティブによって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用される、請求項27に記載の方法。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定される、請求項27に記載の方法。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様によって参照されるデータが記憶されるコンピューティングノードの数以上である請求項29に記載の方法。
- 目標のプリミティブによって特定された関数をデータ要素に適用することが、1又は2以上のタスクのためのデータソースとして前記データ要素を使用して前記関数に対応する前記1又は2以上のタスクのセットを実行することを含む、請求項27に記載の方法。
- 異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることが、前記複数のインスタンスが実行されるべきコンピューティングノードの数をランタイムで決定することを含む、請求項25に記載の方法。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることをコンパイラに示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素が前記リンクされた構成要素の間で渡されるべきであることを前記コンパイラに示す、請求項21に記載の方法。
- 第1のグラフに基づくプログラムの仕様が、リンクされた構成要素の直列実行が存在すべきであることをコンパイラに示し、単一のデータ要素が前記リンクされた構成要素のタスクの間で渡されるべきであることを前記コンパイラに示す、前記リンクされた構成要素のそれぞれの入力ポート及び出力ポートによって定義されるリンクの第3の種類のリンクの構成を含む、請求項21に記載の方法。
- コンパイラが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定するように構成される、請求項21に記載の方法。
- 1又は2以上のタスクの各セットが、1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する、請求項35に記載の方法。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項35に記載の方法。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する、請求項37に記載の方法。
- 各コンピューティングノードが、対応するキュー内のタスクを実行するためのプロセスをスポーンするために少なくとも1つのスケジューラを実行するように構成される、請求項21に記載の方法。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行される第2のスケジューラのキューから前記第1のコンピューティングノードによって実行される第1のスケジューラのキューに1又は2以上のタスクを移動させるように構成される、請求項39に記載の方法。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行されるスケジューラのキューから第2のコンピューティングノードによって実行されるスケジューラのキューに1又は2以上のタスクを移動させるように構成される、請求項39に記載の方法。
- コンパイラが、第2の種類のリンクの構成を有するそれぞれのリンクのために目標のプリミティブの発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブの発生を引き起こさない、請求項21に記載の方法。
- 第1のコンピューティングノードが、
第1のグラフに基づくプログラムの仕様内の第1の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第2の構成要素のポートへの、第1の種類のリンクの構成を有する第1のリンクに関して、前記第1の構成要素及び前記第2の構成要素に対応するタスクを逐次的に呼び出し、
前記第1のグラフに基づくプログラムの仕様内の第3の構成要素のポートから前記第1のグラフに基づくプログラムの仕様内の第4の構成要素のポートへの、第2の種類のリンクの構成を有する第2のリンクに関して、前記第3の構成要素によって提供されるデータ要素の異なるそれぞれのサブセットを処理するために前記第4の構成要素に対応するタスクの複数のインスタンスを呼び出すようにさらに構成される、請求項22に記載のソフトウェア。 - 第1のコンピューティングノードが、複数のコンピューティングノードのうちの異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てるようにさらに構成される、請求項43に記載のソフトウェア。
- 目標のプリミティブが、1又は2以上のタスクのセットに対応する関数を特定し、第2の種類のリンクの構成を有するリンクに対応するデータ要素のコレクションを特定する、請求項44に記載のソフトウェア。
- 複数のインスタンスの少なくとも一部が、目標のプリミティブによって特定されるコレクション内の異なるそれぞれのデータ要素に適用される、請求項45に記載のソフトウェア。
- 呼び出されるインスタンスの数が、目標のプリミティブによって特定されるコレクション内のデータ要素の数に等しく、各インスタンスが、異なるそれぞれのデータ要素に適用される、請求項46に記載のソフトウェア。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様のいかなる情報からも独立して決定される、請求項46に記載のソフトウェア。
- 呼び出されるインスタンスの数が、第1のグラフに基づくプログラムの仕様によって参照されるデータが記憶されるコンピューティングノードの数以上である、請求項48に記載のソフトウェア。
- 目標のプリミティブによって特定された関数をデータ要素に適用することが、1又は2以上のタスクのためのデータソースとして前記データ要素を使用して前記関数に対応する前記1又は2以上のタスクのセットを実行することを含む、請求項46に記載のソフトウェア。
- 異なるコンピューティングノード上で実行されるように複数のインスタンスの少なくとも一部を割り当てることが、前記複数のインスタンスが実行されるべきコンピューティングノードの数をランタイムで決定することを含む、請求項44に記載のソフトウェア。
- 第1の種類のリンクの構成を有するリンクが、単一のデータ要素がリンクされた構成要素の間で渡されるべきであることをコンパイラに示し、第2の種類のリンクの構成を有するリンクが、複数のデータ要素が前記リンクされた構成要素の間で渡されるべきであることを前記コンパイラに示す、請求項22に記載のソフトウェア。
- 第1のグラフに基づくプログラムの仕様が、リンクされた構成要素の直列実行が存在すべきであることをコンパイラに示し、単一のデータ要素が前記リンクされた構成要素のタスクの間で渡されるべきであることを前記コンパイラに示す、前記リンクされた構成要素のそれぞれの入力ポート及び出力ポートによって定義されるリンクの第3の種類のリンクの構成を含む、請求項22に記載のソフトウェア。
- コンパイラが、それぞれの構成要素に対応する1又は2以上のタスクの1又は2以上のセットを特定するように構成される、請求項22に記載のソフトウェア。
- 1又は2以上のタスクの各セットが、1又は2以上のタスクの前記セットの異なるインスタンスに異なるデータ要素を提供するデータソースとしてデータ要素の単一のコレクションを有する、請求項54に記載のソフトウェア。
- 1又は2以上のタスクの各セットが、1又は2以上のノードの少なくとも1つの有向非巡回グラフに対応し、前記グラフの各ノードが、タスク又は特定されたセットに対応し、前記グラフの各有向辺が、第1の種類のリンクの構成を有するリンクに対応する、請求項54に記載のソフトウェア。
- 1又は2以上のノードの有向非巡回グラフが、単一のルートノードを有する、請求項56に記載のソフトウェア。
- 各コンピューティングノードが、対応するキュー内のタスクを実行するためのプロセスをスポーンするために少なくとも1つのスケジューラを実行するように構成される、請求項22に記載のソフトウェア。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行される第2のスケジューラのキューから前記第1のコンピューティングノードによって実行される第1のスケジューラのキューに1又は2以上のタスクを移動させるように構成される、請求項58に記載のソフトウェア。
- 第1のコンピューティングノードが、前記第1のコンピューティングノードによって実行されるスケジューラのキューから第2のコンピューティングノードによって実行されるスケジューラのキューに1又は2以上のタスクを移動させるように構成される、請求項58に記載のソフトウェア。
- コンパイラが、第2の種類のリンクの構成を有するそれぞれのリンクのために目標のプリミティブの発生を引き起こすが、第1の種類のリンクの構成を有するいずれのリンクのためにも前記目標のプリミティブの発生を引き起こさない、請求項22に記載のソフトウェア。
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 | ||
JP2017510840A JP6633053B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017510840A Division JP6633053B2 (ja) | 2014-09-02 | 2015-09-02 | グラフに基づくプログラムの仕様の実行 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020057413A JP2020057413A (ja) | 2020-04-09 |
JP6908682B2 true JP6908682B2 (ja) | 2021-07-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 (2)
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 | グラフに基づくプログラムの仕様の実行 |
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 | |
JP6698656B2 (ja) | グラフに基づくプログラムの仕様のコンパイル | |
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: 20191225 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210201 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210427 |
|
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: 20210607 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210701 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6908682 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |