(57)【要約】      （修正有）【課題】グラフ型計算を実行する。【解決手段】リンク要素によりデータ処理要素が結合される計算グラフの仕様を受け取るステップ、そのデータ処理要素を複数のセットに分割するステップであって、セットの内の少なくとも一つのセットは複数のデータ処理要素を含むステップ、異なる計算リソースをそれぞれのセットに割り当てるステップ、及び、その割り当てられた計算リソースを用いてデータ処理要素と対応する計算を実行するステップを含む計算グラフによりデータを処理するステップ、を含む。【選択図】図２Ｂ
2014029718.tif 000002
【特許請求の範囲】
【請求項１】
グラフ型計算を実行するための方法であって、
データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ；
前記データ処理要素を複数のセットに分割するステップであって、そのセットの内の少なくとも一つは複数のデータ処理要素を含む、ステップ；
それぞれのセットに異なる計算リソースを割り当てるステップ；及び
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含むステップ；
を含む方法。
【請求項２】
請求項１に記載の方法において、
１つのセットに割当てられる少なくとも一つの計算リソースが１つの処理を含む、
方法。
【請求項３】
請求項１に記載の方法において、
前記リンク要素のそれぞれは、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる、
方法。
【請求項４】
請求項３に記載の方法において、
前記データを処理するステップは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するステップを含む、
方法。
【請求項５】
請求項４に記載の方法において、
１つのセットに割り当てられた１つの計算リソースは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、同上流のデータ処理要素と同じセット内の下流のデータ処理要素と関係付けられる機能を呼び出すことにより、同下流のデータ処理要素の入力へと通過させる、
方法。
【請求項６】
請求項５に記載の方法において、
前記関数は、前記上流のデータ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
方法。
【請求項７】
請求項６に記載の方法において、
前記上流のデータ処理要素と関係付けられる前記関数及び前記下流のデータ処理要素と関係付けられる前記関数が、同一の処理により呼び出される、
方法。
【請求項８】
請求項１に記載の方法において、
データ処理ステップは、更に、それぞれのセット内の前記個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持することを含む、
方法。
【請求項９】
請求項８に記載の方法において、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
方法。
【請求項１０】
請求項８に記載の方法において、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
方法。
【請求項１１】
請求項１に記載の方法において、
セット内の前記データ処理要素は、前記計算グラフの連結有向サブグラフを形成する、
方法。
【請求項１２】
請求項１１に記載の方法において、
前記サブグラフはツリーを含む、
方法。
【請求項１３】
請求項１１に記載の方法において、
複数の入力を有するセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流のデータ処理要素の全てもまた前記セット内にある、
方法。
【請求項１４】
請求項１１に記載の方法において、
上流要素を持たない前記サブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、そのサブグラフ内の他のデータ処理要素それぞれと関係付けられる関数を呼び出すステップを含み、そのサブグラフ内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記サブグラフの外部に前記制御メッセージを伝播する、
方法。
【請求項１５】
請求項１４に記載の方法において、
前記サブグラフ内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
方法。
【請求項１６】
請求項１に記載の方法において、
前記データ処理要素は、特定の並列処理段数を有する、
方法。
【請求項１７】
請求項１６に記載の方法において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
方法。
【請求項１８】
請求項１に記載の方法において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
方法。
【請求項１９】
請求項１８に記載の方法において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
方法。
【請求項２０】
グラフ型計算を実行するためのコンピュータが読み取り可能な媒体上に格納されるコンピュータープログラムであって、前記コンピュータープログラムは、
複数のデータ処理要素が複数のリンク要素により結合される計算グラフの仕様を受け取るステップ；
前記複数のデータ処理要素を複数のセットに分割するステップであって、前記複数のセットの内の少なくとも一つのセットは複数のデータ処理要素を含むステップ；
それぞれのセットに異なる計算リソースを割り当てるステップ；及び
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含むステップ；
をコンピューターシステムに実行させる命令を含む、コンピュータープログラム。
【請求項２１】
請求項２０に記載のコンピュータープログラムにおいて、
１つのセットに割当てられる少なくとも１つの計算リソースは１つの処理を含む、
コンピュータープログラム。
【請求項２２】
請求項２０に記載のコンピュータープログラムにおいて、
データ処理ステップは、それぞれのセット内の前記個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップをさらに含む、
コンピュータープログラム。
【請求項２３】
グラフ型計算を実行するためのシステムであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取り、且つ、
複数のセットであってその内の少なくとも一つのセットが複数の前記データ処理要素を含む複数のセットに前記データ処理要素を分割する、
ための電子回路を含む予備実行モジュールと、
それぞれのセットに異なる計算リソースを割り当て、且つ、
前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含む前記計算グラフに従ってデータを処理する、
ための電子回路を含む実行モジュールと、
を含むシステム。
【請求項２４】
請求項２３に記載のシステムにおいて、
１つのセットに割り当てられた少なくとも１つの計算リソースは１つの処理を含む、
システム。
【請求項２５】
請求項２３に記載のシステムであって、更に、
それぞれのセット内の個々の前記データ処理要素と関係付けられるそれぞれのアクティビティ量を特徴付ける情報を維持するための電子回路を含むランタイム監視モジュールを含む、
システム。
【請求項２６】
グラフ型計算を実行するためのシステムであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取るための手段；
複数の前記データ処理要素を複数のセットに分割するための手段であって前記複数のセットの内の少なくとも一つのセットは複数の前記データ処理要素を含む手段；
それぞれのセットに異なる計算リソースを割り当てるための手段；及び
前記計算グラフに従ってデータを処理するための手段であって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含む手段；
を含むシステム。
【請求項２７】
請求項２６に記載のシステムにおいて、
１つのセットに割り当てられた少なくとも１つの計算リソースは１つの処理を含む、
システム。
【請求項２８】
請求項２６に記載のシステムであって、更に、
それぞれのセット内の前記個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するための手段を含む、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ型計算（graph-based  computations）における計算リソースの管理
に関する。
【背景技術】
【０００２】
複雑な計算は有向グラフによるデータの流れとして表わせることがあり、有効グラフは、そのグラフの頂点と関係付けられる計算要素と、そのグラフのリンク（弧、辺）と対応する要素間のデータの流れと、を有する。そのようなグラフ型計算を実行するシステムが、米国特許第５，９６６，０７２号、「グラフとして表される計算の実行法」に記載されている。グラフ型計算を実行する一手法は、そのグラフの異なる頂点とそれぞれ関係付けられる幾つかのプロセスを実行し、そのグラフのリンクに従ってプロセス間の通信経路（コミュニケーションパス）を確立することである。例えば、通信経路は、指定されたパイプ、ＴＣＰ／ＩＰ又はＵＮＩＸ（登録商標）のドメインソケット、又は共有メモリを用いてプロセス間でデータを渡す。
【発明の概要】
【０００３】
本発明の一側面は、概して、グラフ型計算を実行するための方法を特徴付ける。本方法は：データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ；データ処理要素を複数のセットに分割するステップであって、そのセットの内の少なくとも一つは複数のデータ処理要素を含む、ステップ；それぞれのセットに異なる計算リソースを割り当てるステップ；及び、その計算グラフに従ってデータを処理するステップであって前記割り当てられた計算リソースを用いて前記データ処理要素に対応する計算を実行するステップを含むステップ、を含む。
【０００４】
本発明の別の側面は、概ね、グラフ型計算を実行するためのコンピュータが読み取り可能な媒体上に格納されるコンピュータープログラムを特徴付ける。本コンピュータープログラムは：データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ；データ処理要素を複数のセットに分割するステップであって、そのセットの内の少なくとも一つは複数のデータ処理要素を含むステップ；それぞれのセットに異なる計算リソースを割り当てるステップ；及び、その計算グラフに従ってデータを処理するステップであって前記割り当てられた計算リソースを用いて前記データ処理要素に対応する計算を実行するステップを含むステップ、をコンピューターシステムに実行させるための命令を含む。
【０００５】
本発明の別の側面は、概ね、グラフ型計算を実行するためのシステムを特徴付ける。本システムは、複数のデータ処理要素がリンク要素により連結される計算グラフの仕様を受け取るとともに、その複数のデータ処理要素を複数のセットに分割し、その分割されたセットのうちの少なくとも一つのセットは複数のデータ処理要素を含むようにする、電子回路を含む予備実行モジュールを含む。本システムは、それぞれのセットに異なる計算リソースを割り当てるとともに、その割り当てられた計算リソースを用いてデータ処理要素に対応する計算を実行することを含む「計算グラフに基づくデータ処理を行う」、ための電子回路を含む実行モジュールを含む。
【０００６】
本発明の態様には、以下の特徴の内の一つ以上を含めることができる。
【０００７】
ひとつのセットに割り当てられた少なくとも一つの計算リソースは、処理（プロセス）を含む。
【０００８】
それぞれのリンク要素は、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる。
【０００９】
データ処理ステップは、その複数のセットの内の少なくとも一つのセットに対して、そのセット内のデータ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内のデータ処理要素と対応する計算を実行するステップを含む。
【００１０】
１つのセットに割り当てられた１つの計算リソースは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、同上流のデータ処理要素と同じセット内の下流のデータ処理要素と関係付けられる機能を呼び出すことにより、同下流のデータ処理要素の入力へと通過させる。
【００１１】
その関数は、その上流のデータ処理要素と関係付けられた関数によりワーク要素が書き込まれた格納場所から、ワーク要素を読み出す。
【００１２】
その上流のデータ処理要素と関係付けられた関数及びその下流のデータ処理要素と関係付けられた関数は、同一プロセスにより呼び出される。
【００１３】
データ処理ステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含む。
【００１４】
その各アクティビティ量は、各データ処理要素に従って処理されるデータ量を含む。
【００１５】
その各アクティビティ量は、各データ処理要素と対応する計算を実行する１つのセットに割り当てられた計算リソースが費やす時間量を含む。
【００１６】
１つのセット内の複数のデータ処理要素は、前記計算グラフの連結有向サブグラフを（１つ）形成する。
【００１７】
サブグラフはツリーを含む。
【００１８】
複数の入力を有する１つのセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる全ての上流のデータ処理要素もそのセット内にある。
【００１９】
サブグラフ内に上流要素を持たないそのサブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、そのサブグラフ内の他のデータ処理要素のそれぞれと関係付けられる関数が呼び出され、それにより、そのサブグラフ内の各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、そのサブグラフ外部にその制御メッセージを伝播する。
【００２０】
そのサブグラフ内のデータ処理要素毎の状態情報は、単一ファイルに保存される。
【００２１】
そのデータ処理要素は、特定の並列処理段数を有する。
【００２２】
１つのセット内のデータ処理要素のそれぞれは、同一の並列処理段数を有する。
【００２３】
計算グラフの仕様は、各データ処理要素と関係付けられる実行段階を示す。
【００２４】
１つのセット内の各データ処理要素は、同じ実行段階と関係付けられる。
【００２５】
本発明の態様には、以下の利点の内の一つ以上を含めることができる。
【００２６】
データ処理アプリケーションをデータの流れ（データフロー）計算グラフとして表すことは、アプリケーションを構築し、関連する計算を理解し且つ分析する過程にある開発者を援助する。その計算は、処理毎に、ホストのオペレーティングシステム内で実行される。各処理は、処理する時間及びメモリ等の計算リソースと関係付けられる。各プロセスと関連するオーバーヘッドに起因して、計算システムが使用する計算リソースの全体は、同時に実行している処理の数とともに増大するのが普通である（場合によっては、処理の数とともに全てのリソースが直線的に増加する訳ではないが）。処理の回数を低減させるために、計算を「手で」組み合せて処理の数を減らすことができるが、それでは、計算グラフのプログラミングの利点（例えば、使用法の簡便さ、理解の容易さ等）が幾つかが犠牲になる。
【００２７】
通信する処理（通信プロセス）として実装されるデータの流れ計算グラフにおいては、バッファリングにより、端から端までの待ち時間は増加するけれども処理のオーバーヘッドを低下させることができる。バッファリングをしなければ待ち時間を低下させることができるが、オーバーヘッドは増加する。何故なら、より大きなオペレーティングシステムのリソースを用いてより小さなデータ量を移動させることになるからである。
【００２８】
この過剰なオーバーヘッドと過剰な待ち時間との間のトレードオフを軽減するために、多数のグラフ成分を、一度に一つの成分のワーク（作業）を実行する単一の処理として（つまり「折り畳んで」）実行し、コピーせずに、つまり処理間でのデータを移動しなくても、メモリにデータを渡すことができる。この手法では、データは、単一の処理内の成分のネットワークを通じてプッシュされる。
【００２９】
例えば、折畳みのない実行（非折り畳み実行）においては、一つのデータの流れにより連結される二つの成分は、それぞれ別々の処理において実行され、１つのバッファを通じて通信する。第１成分は、その生成された出力（例えば、多数の出力ワーク要素の蓄積）をバッファに格納する。第１成分は、そのバッファを、例えばオペレーティングシステムコールを用いて、第２成分に渡す。次いで、第２成分は、そのバッファ内のデータを処理する。二つの処理が、同一の処理内にて「折畳み実行」で一緒に折り畳まれている場合には、折り畳まれたプロセスは、それがワーク要素を生成し且つ受け取る関連手順を制御するので、ワーク要素をバッファリングする必要がない。折り畳まれたプロセスは、第１成分と関係付けられる処理が生成した各ワーク要素を、それが生成されたとき、第２成分と関係付けられる手順に入力引数として渡す。即ち、データの流れは制御の流れとして実現される。
【００３０】
折畳み実行または非折畳み実行のいずれにおいても、成分は、関連する段数の並列処理を有することができる。非折畳み実行では、成分の並列処理段数に等しい幾つかのプロセスを創出することができる。折畳み実行では、同一の並列処理段数をもつ連結された成分は、同一処理において例示化されるので、共通の並列処理段数と等しい幾つかのプロセスが創出される。
【００３１】
多数の成分を単一の処理内に折り畳むと、処理間のデータ移動が減少し且つ計算グラフの起動時間及びシステム規模が減少することにより（何故なら、実行している合計プロセスがより少ないので）、性能が向上する。データのバファリングを持つことなく且つ待ち時間を増加することなしに、過度の文脈切換え（context-switching）が回避される。これら全てが、データ流れ計算グラフモデルの表現性、使用法の簡便さ、及び、明解さを犠牲にすることなく行われる。
【００３２】
本発明の他の特徴および利点は、以下の説明から、およびクレームから明らかとなろう。
【図面の簡単な説明】
【００３３】
【図１】グラフ型計算を実行するためのシステムのブロック図である。
【図２Ａ】計算グラフである。
【図２Ｂ】計算グラフである。
【図３Ａ】並列計算グラフである。
【図３Ｂ】並列計算グラフである。
【図４】折り畳まれたセットに成分を割り当てる手順を示すフローチャートである。
【発明を実施するための形態】
【００３４】
１  システム概観
図１を参照すると、グラフ型計算を実行するためのシステム１００は、データ記憶装置１０２に連結される開発環境１０４、及び、データ記憶装置１０２に連結されるランタイム環境１０６を含む。開発者１０１は、開発環境１０２を用いてアプリケーションを構築する。アプリケーションは、開発者が開発環境を使用した結果としてデータ記憶装置に書き込むことができる「そのデータ記憶装置１０２内のデータ構造」により規定された一つ以上の計算グラフと関係付けられる。データ構造は、例えば、計算グラフの頂点（成分またはデータセット）及び頂点間のリンク（データの流れ）を規定する。そのデータ構造は、グラフの「成分、データセット、及び、データの流れ」の様々な特性を含むこともできる。データ処理アプリケーションは、例えば、一つ以上の入力データセットから処理成分のグラフを通して一つ以上の出力データセットまで流れるデータ上において実行される計算を実施する計算グラフと関係付けられ得る。
【００３５】
ランタイム環境１０６は、ＵＮＩＸオペレーティングシステム（ＵＮＩＸは登録商標）等の、適切なオペレーティングシステムの管理下にある一台以上の汎用コンピュータ上で主催（host）される。例えば、ランタイム環境１０６には、ローカルな（例えば、ＳＭＰコンピュータのようなマルチプロセッサシステム）、ローカルに分散された（例えば、クラスタまたはＭＰＰのように連結された複数のプロセッサシステム）、リモートで、リモートで分散された（例えば、ＬＡＮ又はＷＡＮネットワークを経由して連結される複数のプロセッサ）、又は、これらの任意の組み合せの、マルチ中央処理ユニット（ＣＰＵ）を用いるコンピューターシステムの構成を含む「複数ノード並列計算環境（multiple-node parallel computing environment）」を含めることができる。ランタイム環境１０６によってアクセスされる入力、出力又は中間のデータセットは、並列ファイルシステム（例えば、データ記憶装置１０２、又は、通信リンクを通してローカル的に或いはリモート的にシステム１００に連結される外部データ記憶装置）内に格納される並列の「マルチファイル」とすることができる。
【００３６】
グラフ内の多数の成分（multiple components）を同時に実行することは、並列処理の一形式を提供する。追加的な並列処理は、グラフの様々な成分を様々な計算ノードに分配することにより達成することができる。グラフの要素（例えば、データセット、成分、及び、流れ）は明示的に又は暗示的に複製されることができ、それにより、ランタイム環境１０６内に追加的な並列処理を導入することができる。
【００３７】
ランタイム環境１０６は、計算の実行及び（装置の）コンフィギュレーションのために、格納されたスクリプトからの制御入力、又は、ユーザ１０３からの入力に基く制御入力を受け取るよう構成される。その制御入力には、対応する計算グラフを用いて特定のデータセットを処理するコマンドを含めることができ、そのコマンドは、格納されたグラフデータ構造において規定される。ユーザ１０３は、例えば、コマンドライン又はグラフィカルインターフェースを用いて、ランタイム環境１０６と対話（相互に作用）することができる。
【００３８】
ランタイム環境１０６は、「与えられた計算グラフを規定する格納されたグラフデータ構造を読み出し、且つ、成分の計算を実行するためのプロセス（例えば、ホストオペレーティングシステム内での実行プロセス、つまりスレッド）等の計算リソースを割り振り且つ配置構成（コンフィギュレーション）する」ための予備実行モジュール１１０を含む。以下に更に詳細に説明するように、計算グラフを実行するときに、成分をプロセスに割り当てる様々な手法がある。
【００３９】
予備実行モジュール１１０は、また、成分間のデータの流れを実行するための成分間通信リソース（例えば、指定されたパイプ又は共有メモリ）を割り当て、そのプロセスが新しいワーク要素を受け取る準備が未だ整っていない成分の入力ポートに到着するワーク要素に対する記憶場所（storage space)を割り当てる。ワーク要素を成分間のデータの流れの上で通過させるためのリソースは、システム１００の処理及び格納のオーバーヘッドの一因となる。より詳細に後述するように、幾つかの手法においては、成分間通信が関数呼出しにより実行され、このオーバーヘッドを減少させる。
【００４０】
ランタイム環境１０６には、予備実行モジュール１１０が計算グラフに割り当てたプロセスの実行をスケジュール化し且つ管理するための実行モジュール１１２が含まれる。実行モジュール１１２は、データベースエンジン、データ記憶装置、又は、そのグラフ成分と関係付けられる処理の最中にアクセスされる他のモジュールのような、システム１００に連結される外部計算リソースと相互に作用することができる。
【００４１】
計算グラフを実行した後に、又は、実行中に所定の間隔にて、報告モジュール１１４は、その計算グラフの個々の成分と関係付けられる統計値等の「与えられた計算を特徴付ける情報」を提供する。報告モジュール１１４により報告される幾つかの情報は、その計算グラフが生成する出力から得られる。その報告される情報の幾つかは、その計算グラフの実行を監視することにより得られる。
【００４２】
ランタイム監視モジュール（ＲＭＭ）１１６は、計算グラフに割り当てられた一つ以上の処理の実行を監視し、報告モジュール１１４に情報を提供する。この情報には、例えば、それぞれの成分を実行するために費やした中央処理ユニット（ＣＰＵ）の時間、又は、それぞれの成分によって処理されたデータの量が含まれる。
【００４３】
２  グラフ実行
図２Ａを参照すると、計算グラフ２００の一例は、計算グラフ２００の成分２０４Ａ〜２０４Ｊによって処理される予定の一連のワーク要素を提供する入力データセット２０２を含む。例えば、データセット２０２は、「データベースシステム、又は、トランザクション処理システムのトランザクション」と関連する「データのレコード（記録）」を含むことができる。各成分は、計算グラフ２００全体により定義される計算の一部と関係付けられる。ワーク要素（例えば、個々のデータのレコード）は、成分の一つ以上の入力ポートに入り、出力ワーク要素（場合によっては、入力ワーク要素であるか、又は、入力ワーク要素の処理されたバージョンである）は、一般的には成分の一つ以上の出力ポートから出る。グラフ２００においては、成分２０４Ｅ、２０４Ｇ及び２０４Ｊからの出力ワーク要素が出力データセット２０６Ａ〜２０６Ｃ内に格納される。
【００４４】
グラフ２００においては、第１フィルタ成分２０４Ａが、その入力ポートで受け取ったワーク要素のサブセットを選択して第２フィルタ成分２０４Ｂに送り、選択されなかったワーク要素を成分２０４Ｃに送り、成分２０４Ｃは成分２０４Ｄに提供する。第２フィルタ成分２０４Ｂは、その入力で受け取ったワーク要素のサブセットを選択して成分２０４Ｅに送り、成分２０４Ｅは出力データセット２０６Ａに提供する。第２フィルタ成分２０４Ｂにて選択されなかったワーク要素は複製成分２０４Ｆに送られ、複製成分２０４Ｆは各ワーク要素のコピー（複製物）を成分２０４Ｇに送る。成分２０４Ｇは出力データセット２０６Ｂに供給する。複製成分２０４Ｆは前記各ワーク要素のコピー（複製物）をインターフェース成分２０４Ｈにも送る。インターフェース成分２０４Ｈは、ランタイム環境１０６に対して完全にはネイティブでない「外部プログラム」の実行をトリガーするインターフェースを提供する。例えば、この外部プログラムは、ランタイム環境１０６に完全には組み込まれていない言語で書かれた旧仕様のプログラムでもよい。インターフェース成分２０４Ｈは、その開発環境のネイティブ言語を用いて外部プログラムを再コード化することなしに、その外部プログラムを計算グラフ２００の一部として実行するメカニズムを提供する。集約成分２０４Ｉは、インターフェース成分２０４Ｈ及び成分２０４Ｄからのデータの流れを結合し、そのワーク要素の結合したデータの流れを成分２０４Ｊに送り、成分２０４Ｊは出力データセット２０６Ｃに提供する。
【００４５】
２．１  別々のプロセス
計算グラフを実行する手法の第１の形式においては、予備実行モジュール１１０は、各成分に対して別々の処理を割り当てる。例えば、「一成分につき一処理」の方法においては、１つの処理が各成分に対して割り当てられる。成分と対応する処理は、その成分により定義されるデータアクセス、計算、及び、データ変換タスクを取り扱う。実行モジュール１１２は、ホストのオペレーティングシステム内で処理を起動し、その成分の処理により実行されない計算グラフと関係付けられるタスクを取り扱う。
【００４６】
グラフ成分が、関連する段数の並列処理を有する場合、予備実行モジュール１１０は、そのグラフ成分の異なるインスタンスに対して、成分の並列処理段数と同じ数の別々のプロセスを割り当てる。例えば、ある成分は、随意的に、Ｎ列の（Ｎ通りの）並列成分として（例えば開発者１０１により）指定される。Ｎ列の並列成分に対して、その成分のＮ個のインスタンスのそれぞれが、Ｎ個のノードの内の一つにおける処理として（又はスレッドとして、又はマルチスレッドプロセッサ内の軽量処理の他の形式として）実行される。これらの場合、並列成分のインスタンス毎に一つの処理またはスレッドがあることになる。
【００４７】
図３Ａを参照すると、並列グラフ３００は、出力マルチファイル３０６に連結される直列の三つのＮ列並列成分３０４Ａ、３０４Ｂおよび３０４Ｃに連結される入力マルチファイル３０２を含む。この例においては、入力（出力）マルチファイルは、Ｎ個の処理による並列アクセスが、Ｎ個に分割されたデータの流れの情報源となる（Ｎ個に分割されたデータの流れを押し込む）ことを可能にするように「Ｎ列に並列」である。代替として、入力及び出力のデータセットは、シリアルにアクセスされるデータファイルであってもよく、又は、入力３０２と第１成分３０４Ａとの間のデータの流れ上の成分、及び／又は、最後の成分３０４Ｃと出力３０６との間のデータの流れ上の成分、を再分割することを利用して、Ｎ個に分割されたものを越えるか又はそれ未満のマルチファイルとしてもよい。グラフ３００が、一成分インスタンスあたり一つの処理を用いて実行される場合、同時に実行されている処理が３Ｎ個だけ存在する。
【００４８】
上記の一成分あたり一つの処理、一インスタンスあたり一処理の手法は、システム１００がパイプライン並列処理を上手く活用できるようにするので、複数の成分にデータを同時に処理させることによって計算グラフの処理量（スループット）を増加させることができる。しかしながら、各処理に関連するオーバーヘッドがシステム性能を制限することがある。例えば、起動時間は、場合により、成分処理を開始するのに必要な時間によって支配される。従って、成分の多いグラフの方が開始時間が長くなる場合がある。そのようなグラフは、同時に実行できる計算グラフの数を制限する「より大きな規模のメモリ（a larger memory footprint）」を有する場合もある。開発者１０１は、場合によっては、複数の成分内に実装されているロジックを一つ以上の複雑な成分に集約することにより、グラフ内の成分の数を減少させることができる。しかしながら、そのような手動によるグラフ操作は、常に可能とは限らないし、或いは、好ましいとは限らない（例えば、使用法の簡便さ、理解の容易さ、又は、成分の再利用性を維持するために）。
【００４９】
２．２  成分折畳み
計算グラフを実行する手法の第２の形式においては、予備実行モジュール１１０は、随意的に、マルチ成分を実行するための幾つかのプロセスを割り当てる。例えば、「成分折畳み」法においては、予備実行モジュール１１０は、グラフの成分を、一つ以上の成分をそれぞれが含む一つ以上のセットに分割する。それぞれのセットには異なるプロセスが割り当てられる。従って、同一のセットに「一緒に折り畳まれた」成分に対しては、これらの成分により表される計算は同一の処理によって実行される。多数の成分を有するセットに対しては、実行モジュール１１２はホストのオペレーティングシステム内で「折り畳まれた処理」を起動する。
【００５０】
折り畳まれたプロセスは、そのセット内の成分それぞれにより定義されるデータアクセス、計算、及び、データ変換タスクを取り扱い、関数の呼出しとして、そのセット内の成分間のリンクに越しに通信を実施する。折り畳まれたプロセスは、与えられた入力を伴う最初の「ルート（root,根源）」成分の計算を呼び起こす「計算」関数を呼び出す。そのルート成分の計算が出力ポートと関係付けられる結果を生成した後、その折り畳まれたプロセスは、その結果を下流成分に対する入力として用いるリンクされた下流成分の「計算」関数を呼び出す。こうして、データは、ルート成分からサブセット内の下流の「内部」成分にプッシュされる。場合によっては、１つのサブセットは、ワーク要素をそのサブセットの内部成分に供給する二つ以上のルート成分を有することができる。この成分折畳み手法は、起動の待ち時間を減少させることに加えて、処理及び格納のオーバーヘッド並びにサブセット内の成分間通信に関連する待ち時間を減少させる。
【００５１】
幾つかの成分、例えば再フォーマットまたはフィルタリングを実行する成分であって、例えば単一のワーク要素上で一度に実行する成分は、この「プッシュ型モデル」の実行法に既に対応している。すなわち、プッシュ型成分が第１ワーク要素の処理を完了すると、そのプッシュ型成分は、入力ポートで利用可能になり次第、新しいワーク要素を処理する準備が整う。このプッシュ型モデルにおいては、上流成分は下流成分にてワーク要素をプッシュし、その下流成分はその計算を実行し、次いで、その下流成分は結果を更にそれの下流成分にてプッシュする、と次々に続く。
【００５２】
他の成分は、初期段階においてこのプッシュ型モデルに従って動作するように構成されていないこともあり、代わりに、「プル型モデル」の実行に従って動作するかもしれない。プル型成分の１つの例は、ワーク要素が到着した入力ポートに依る計算を実行する多数の入力ポートを有する成分である。その成分は、第２入力ポートでのワーク要素を待っているので、第１入力ポートにおけるワーク要素を処理する準備が出来ていないことがある（例えば、ソート操作又は結合操作を実行する成分）。他の種類のプル型成分には、単一入力ポートを有するものがある。従って、折り畳まれるプロセスは、必ずしも、プル型成分の入力ワーク要素に対して作動する「計算」関数を呼び出すことができるとは限らない。
【００５３】
プル型成分は、処理シーケンスにおける何らかのロジック中断（例えば、ファイルの終了点、又は、関連のないワークのユニット間の境界をマークする何らかの他のイベント）まで、全ての入力をバッファリングさせることにより、プッシュ型成分に作り直され得る。この場合、プル型成分に対する「計算」関数は、入ってくる各レコードをバッファ内に挿入し、且つ、ロジック中断時にそれが決定する順序がどうであろうともその順序にてバッファから読み出してその入力の全てを処理するように進む。
【００５４】
折り畳まれたプロセスは、関連する折り畳まれた成分の計算をスケジュール化する他の手法を利用することができる。例えば、折り畳まれたプロセスは、状態情報を検査してどの成分が実行される準備が整っている成分であるかを決定することができる。
【００５５】
２．２．１  折畳みの制約
予備実行モジュール１１０は、グラフを解析して、同一のセット内にどの成分を一緒に折り畳むべきかを決定する。このとき、モジュール１１０は、随意的に、開発者１０１又はユーザ１０３による「折り畳まれるセットへの成分の手動による割当て」、もしくは、どの成分を同一又は別の折り畳まれるセットに入れるかに関する他の制約を考慮しながらグラフを解析する。予備実行モジュール１１０は、どの成分が一緒に折り畳まれるべきかを決定するために以下の制約を考慮することができる。幾つかの手順は、折り畳まれる処理が追加的な関連処理を取り扱うためのメカニズムを提供することにより、これら制約の一部又は全てを随意的に省略することができる。
【００５６】
第１の制約は、成分が「折畳み可能」及び「折畳み不可能」の何れに指定されるか（例えば、開発者１０１により）に依存する。折畳み可能として指定された成分には、その成分の対応する計算を呼び出すために折り畳まれた処理により使用され得る特徴が含まれる。例えば、折畳み可能成分は、ランタイム環境１０６で実行されている折り畳まれた処理により呼び出され得る「計算」関数であって、その成分と関係する計算を起動することができる「計算」関数を有する。旧仕様のプログラムを実行しているインターフェース成分は、このような関数呼出しと互換性がないことがあり、従って、折畳み不可能として指定されることがある。他の成分が、実行されている計算の性質（例えば、計算が外部環境との複雑な相互作用に関わっている場合）に起因して、折畳み不可能として指定されることがある。
【００５７】
他の制約は、様々なグラフ部分が実行される予定である段階（フェーズ）の指定に依存する。例えば、上流成分の第１グループが第１段階で実行するよう選択され、これら成分がワーク要素の一つのバッチ分を完了した後、下流成分の第２グループが第２段階においてそのバッチに対して実行するよう選択される。ある場合においては、所与の段階にある成分に対する処理だけが所与の時点にて実行される。他の場合には、複数の段階を用いて、所与の時点にて所与のワーク要素のバッチ処理を行う予定の成分のグループを指定するが、異なる段階での処理がパイプライン並列処理を達成するために異なるバッチ上にて同時に実行されていることもある。どちらの場合でも、この制約は、所与の段階にある成分が同一の段階にある成分とともに折り畳められるべきことを維持する。
【００５８】
別の制約は、成分に対して指定される並列処理段数に関連する。成分は、直列に、又は、Ｎ列並列として指定される。上述したように、Ｎ列並列成分については、Ｎ個の成分のインスタンスのそれぞれが別の処理において実行される。成分の折畳み手法においては、並列に実行できるＮ個の成分のインスタンスが残っているが、その成分インスタンスは他の成分インスタンスと一緒に折り畳められ得る。この制約においては、同一の並列処理段数を有する成分だけが一緒に折り畳められる。直列成分は他の直列成分と一緒に折り畳まれ、Ｎ列の並列成分は、他のＮ列並列成分と一緒に折り畳まれる。例えば、図３Ｂは、図３Ａに示された並列成分がどのように一緒に折り畳められるかについて図解する。グラフ３００’が成分折畳みを用いて実行される場合、同時に実行されるＮ個の折り畳まれた処理が存在する。成分のセット３１２のＮ個のインスタンス毎に一つの折り畳まれた処理が存在する。
【００５９】
関連する別の制約は、一緒に折り畳められる成分が、そのデータの流れによって表わされるワーク要素を分割することを変更しない「直線状」のデータの流れにより連結されるということである。例えば、あるデータの流れは、Ｎ列並列成分から流れるワーク要素のＮ個の分割されたもの（パーティション）を、Ｍ個の分割されたもの（パーティション）に再分割することができる（ここで、Ｍ≠Ｎ、又はＭ＝Ｎであり且つワーク要素がＮ個の分割されたもの（パーティション）の内で再シャッフルされたものである）。この制約においては、一緒に折り畳まれる成分は同一の並列処理段数を有し、折り畳まれる成分の内のワーク要素の明示的又は暗示的な再分割化（パーティション化）はない。
【００６０】
グラフの成分を折り畳んだセットに割り当てるための準備においては、予備実行モジュール１１０は、グラフ内のどの折畳み可能な成分がルート成分となり得るものの内部成分とはなり得ないか、及び、どの折畳み可能な成分がルート成分又は内部成分となり得るか、を決定する。例えば、幾つかの成分は、折り畳まれる処理により起動させることができる関連する「計算」関数を有するように構成されることができない。
【００６１】
潜在的なルート成分及び／又は潜在的な内部成分として成分を分類することは、例えば、これらの成分が開発されている間に、オフラインにて発生し得る。グラフを構築するために利用可能な成分と関係付けられるデータ記憶装置１０２内に格納されるデータ構造には、その成分が折畳み可能成分か又は折畳み不可能成分かどうか、及び、その成分が潜在的なルート成分及び／又は内部成分であるかどうか、を示すメタデータを含めることができる。
【００６２】
２．２．２  折り畳まれるセットの決定
図４は、グラフ成分を折り畳まれるセットに割り当てるために予備実行モジュール１１０により使用される例示の手順４００のフローチャートを示す。手順４００は、折り畳まれる各セットを可能な限り大きくするように試みる「欲張り（greedy）アルゴリズム」に基づく。この手順４００により生成される折り畳まれるセットは、データの流れを、グラフの連結されたサブグラフの一つ以上の内部成分に提供する単一のルート成分を有する。折り畳まれるセットはオーバーラップもしていない。予備実行モジュール１１０は、例えば実行時間よりも十分前に、手順４００を実行し、データ記憶装置１０２内にその結果を格納することができる。或いは、予備実行モジュール１１０は、グラフが実行モジュール１１２によって実行される直前において手順４００を実行することができる。例えば、予備実行モジュール１１０は、グラフが実行される前のランタイムに手順４００を実行することができるが、但し、より詳細に後述するように、条件付き成分がそのグラフから削除された後に手順４００を実行することができる。
【００６３】
手順４００は、上述した折畳み制約の幾つかを使用する。成分が以下の条件を満たす場合、成分は折り畳まれたセットに対する制約を満たす：成分が折畳み可能である、成分がセット内の成分と同一の並列処理段数を有する、成分がセット内の成分と同一の段階にある、そして、成分が直線的流れによりセット内の成分に連結されている。
【００６４】
手順４００は、グラフ内の各成分を「割当てされていない（未割当て）」としてマーキング（４０２）することにより開始される。手順４００は、上流成分から下流成分までのトポロジカル（位相）順（例えば、深さ優先探索順）に基づいてグラフ内の成分を検査する。手順４００は、入力データセットに連結される成分又は入力ポートのない成分にて開始され、この成分をルートとして第１セットに割り当てる（４０４）。手順はそのルート（ルート成分）が折畳み可能かどうかを判定する（４０６）。そのルート成分が折畳み可能であれば、手順４００は、制約を満たす現セット内の成分の下流に直接的に連結される「割り当てされていない（未割当て）折畳み可能成分」があるかどうかを判定する（４０８）。このような成分が見付かった場合、その成分は現セットに追加され（４１０）、「割当て済」としてマークされる（４１２）。手順は、割当てされていない折畳み可能成分が追加できるかどうかを継続して判定する（４０８）。場合によっては、１つのセットに割り当てられる折畳み可能なルート成分は、他のどの成分とも一緒に折り畳まれず、その成分に専用の処理により実行されるように単集合（singleton:与えられた一個の元を唯一の要素とする集合）セット内に残される。
【００６５】
現セットがもはやそれ以上に大きく成長できない場合（例えば、そのセットに連結される残りの成分が既に割り当てられているか、又は、全ての制約を満たさない場合）、手順４００は、割当てされていない成分がグラフ内に残っているか否かを判定し（４１４）、割当てされていない成分が残っていれば、入力データセットに連結される割当てされていない成分から、又は、入力ポートなしの割当てされていない成分から、又は、割り当てられる成分に連結される割当てされていない成分から、新規のルート成分を割り当てる（４０４）。
【００６６】
ルート成分が折畳み不可能であれば、手順４００は、このルート成分を、その成分に専用の処理によって実行されるようにそれ自身のセット内に単独で残し、割当てされていない成分が残っている場合、新たしいルート成分を選択する。手順４００は、割当てされていない成分が残っていないとき終了する（４１６）。
【００６７】
図２Ｂは、手順４００に従ってグラフ２００内で識別される３つの折り畳まれたセットを示す。手順４００は、セット２１０のルートとして成分２０４Ａを選択する。手順４００は、トポロジカル順にグラフを廻って、成分２０４Ｂ、２０４Ｅ、２０４Ｆ及び２０４Ｇを折り畳まれたセット２１０に追加する。成分２０４Ｈは、折畳み可能という制約を満たさないので、セット２１０に追加されない。手順４００は、続けて、成分２０４Ｃ及び２０４Ｄを折り畳まれたセット２１０に追加する。他の折り畳まれたセットはセット２１０に追加できないので、手順４００は、折畳み不可能成分２０４Ｈを有する第２セット２１１を選択し、残りの成分２０４Ｉ及び２０４Ｊを有する第３セット２１２を選択する。
【００６８】
計算グラフによっては、成分自体が、計算グラフとして実行される。手順４００は、グラフ内のそのような成分をそのグラフ内のサブグラフに拡張する。従って、折り畳まれる成分のセットは、そのような挿入されるサブグラフの境界を拡張して、そのような成分の何れかの「サブ成分」を含む。
【００６９】
計算グラフによっては、条件付き成分のメカニズムにより、パラメータ値及び計算されたメタデータに基づいてグラフ構造に対する変更が可能になる。グラフの条件付き成分は、その成分がランタイムにてグラフに現れるかどうかを制御する条件を有する。その条件は、ランタイムパラメータにより直接的又は間接的に計算され得る。条件付き成分を用いてグラフを最適化し、又は、グラフを特殊化することができる。条件付き成分は、２０００年７月２８日出願の米国特許出願第０９／６２７，２５２号に詳細に記載され、引用して本明細書に組み込む。
【００７０】
折り畳まれたセットが識別された後、予備実行モジュール１１０には、随意的に、グラフを修正し、それにより、折り畳まれたセット間のバッファ又はアダプタ等の要素を含めることができる。
【００７１】
折り畳まれたセット内のサブグラフの成分のトポロジーについての制約を有する手順を含む他の手順を用いて、折り畳まれたセットを決定することができる。例えば、実施の形態によっては、折り畳まれたセット内の連結された成分のサブグラフは、ルート成分から下流の単一の入力内部成分を持つツリートポロジーを有する。実施の形態によっては、折り畳まれた処理は、折り畳まれたセット内のマルチ入力成分を支給するアクションを実行することができる。例えば、マルチ入力成分がルート成分の下流にある場合、折り畳まれた処理は複数の入力に対するデータをバッファリングし、全てのバッファが利用可能なデータを有する場合、マルチ入力関数の「計算」関数を呼び出すことのみを行う。折り畳まれるセットは、セット内のマルチ入力成分それぞれに対して、その成分の入力に連結される全ての上流成分もそのセット内にあるようなトポロジーを有することができる。
【００７２】
２．２．３  折り畳まれた処理の実行
実行モジュール１１２は、予備実行モジュール１１０により識別された折り畳まれたセットと対応する折り畳まれた処理を開始する。予備実行モジュール１１０は、実行モジュール１１２に、それぞれの折り畳まれたセット内の成分及びこれらの成分を連結するデータの流れを識別する情報を提供する。実行モジュール１１２は、データ記憶装置１０２内の成分オブジェクトを指すポインタを含むランタイムデータ構造を生成し、折り畳まれたセット内の成分間で通信するためのワーク要素を格納する記憶空間を割り当てる。割り当てられる記憶空間の量及び成分間でワーク要素データを移動するために費やされる時間は、小さい値に維持され得る。異なる成分に対する計算が実行されている間に、折り畳まれたプロセスが同じ記憶空間にアクセスできるからである。
【００７３】
例えば、折り畳まれたプロセスは、データの流れと対応するワーク要素を格納するために割り当てられた記憶空間を用いて、上流成分から下流成分にデータを通信する。成分に対する「計算」関数は、その記憶空間内の適切な場所を指すデータポインタ変数を読み出すことにより、そのワーク要素にアクセスすることができる。
【００７４】
上流成分の「計算」関数は、下流成分に対するデータポインタ変数と対応する記憶空間が、処理されるべきデータを確実に含むようにする。場合によって、これは、下流成分がアクセスする記憶空間内にデータを単に書き込むだけの上流成分に関係する。しかしながら、入力データを変更しない成分（例えば、フィルタ成分）については、データはアクセス可能な場所に既に格納されている場合があり、そのデータを移動する必要はなく、反対に、適切なデータポインタ変数を提供することにより準備され得る。
【００７５】
それぞれの折り畳まれた処理は、折り畳まれたセット内の成分を連結するデータの流れによって定義されるシーケンスに従って計算関数を繰り返し呼び出すことによって、成分と対応する計算を起動する。上流成分は、下流成分の「計算」関数を呼び出す。「計算」関数は、成分と関係付けられる計算を実行する。例えば、その計算は、成分と関係付けられる状態変数の更新、格納したワーク要素の変換、新規ワーク要素の生成、又は、出力データを適切な記憶空間内に格納することを確実にすることによるデータの下流への通信、を伴うことができる。「計算」関数が、折り畳まれた処理に制御を戻すと、関連する成分は、そのデータポインタ変数と関係付けられるデータを既に処理したと見なされる。
【００７６】
ルート成分は、折り畳まれたセットにデータが供給されるポイントである。多くの場合、これは入力ストリーム又はファイルからデータを読み出すことにより、若しくはデータベースや待ち行列等の外部システムからデータを抽出することにより行われる。場合によっては、データはルート成分によって生成される。ルート成分の「計算」関数は、折り畳まれた処理へと制御を戻すことなしに折り畳まれたセットを通じて任意の大量のデータをプッシュすることはない。例えば、ルート成分の「計算」関数は、以下のコードの内の一つにより、所定の間隔で折り畳まれた処理に制御を戻す：
KEEP_GOING：このコードは供給されるべきデータが更にあることを示す。折り畳まれたプロセスは、「計算」関数を再度読み出すことにより応答する。
【００７７】
ERROR：このコードは、エラーが発生したことを示す。折り畳まれたプロセスにアクセス可能なグローバルな「エラーステータス」変数は、詳細なエラーメッセージを含む。例えば、折り畳まれた処理は、エラーメッセージを表示すし且つ異常終了することにより応答する。
【００７８】
REACHED_EOF：このコードは、供給されるべきデータがそれ以上ないことを示す。折り畳まれた処理は、詳細に後述するように、折り畳まれたセットを停止する（シャットダウンする）ことにより応答する。
【００７９】
GOT_BLIP：このコードは、制御メッセージ（ブリップ、blip）を受け取ったことを示す（例えば、ワーク要素の連続的な流れの中のチェックポイントメッセージ）。折り畳まれたプロセスにアクセス可能なグローバルな「ブリップ」変数は、制御メッセージを含む。折り畳まれたプロセスは、制御メッセージを処理し、処理が終ると、「計算」関数を再度呼び出すことにより応答する。
【００８０】
ルート成分がREACHED_EOFを返すと、折り畳まれたプロセスは、折り畳まれたセットを停止（シャットダウン）する。これは、その折り畳まれたセット内の成分それぞれと関係付けられる「シャットダウン」関数を、上流成分から下流成分に向けてトポロジカル的にソートされた順に呼び出すことにより行われる。
【００８１】
「シャットダウン」関数は、下流にプッシュされるデータを生成することができる。例えば、ハッシュロールアップ成分に対する「計算」関数は、各種の積算器内のデータを構築し、「シャットダウン」関数が呼び出されるまで出力データを生成しない。
【００８２】
ルート成分がGOT_BLIPを返すと、折り畳まれた処理は、ブリップを下流に伝播する。これは、折り畳まれたセット内の成分それぞれと関係付けられる「プロセスブリップ」関数を呼び出すことにより行われる。「シャットダウン」関数と同様に、その「プロセスブリップ」関数は、更なる計算をトリガーする。例えば、連続的なフローロールアップ成分は、その「プロセスブリップ」関数が呼び出されるまで、データを下流にプッシュしない。
【００８３】
例えば、引用して本明細書に組み込む米国特許第６，５８４，５８１号、発明の名称「データ処理をチェックポイントで調べる連続フロー」に記載されているように、ブリップはグラフ内の成分の状態をチェックポイントで調べるように、グラフ内の成分に指示できる。その場合、「プロセスブリップ」関数は、現在の状態情報を不揮発性記憶装置内のチェックポイントファイルに格納する責任を負う。折り畳まれたセット内の成分は、（例えば、効率化のために）チェックポイントファイルを共有することができる。共有されたチェックポイントファイルが採用される場合、チェックポイントブリップが折り畳まれたセットの外部にある何れかの成分に伝播される前に、折り畳まれたセット内の全ての成分はそれらのチェックポイント（それらをチェックポイントでチェックすること）を完了する。これは、例えば、チェックポイントでのチェックが完了した後、上流成分から下流成分に向けて、トポロジカルソート順で、成分の「プロセスブリップ」関数を読み出すことによるか、又は、ブリップを別の経路内の折り畳まれたセットの外部にある成分に伝播させることにより、達成することができる。
【００８４】
例えば、「計算」関数がデータベース又はウェブサーバを含む外部装置との相互作用に関与する成分を組み込むために、実行モデルは拡張されることができる。
【００８５】
外部装置との相互作用は、一般に、比較的規模が大きな及び／又は無限の時間量を取り得るので、アプリケーションのスループットを事実上制限する。一つの成分毎に一つの処理を実行にあたりスループットを向上させるための一方策は、ひとつの装置に対して複数の接続からなるセット（又はプール）を開放する（オープンする）ことであり、入力レコードが成分によって受け取られる際に、利用可能な接続に関するリクエスト（要求）を発生する。成分は、応答が返される時に、その応答を装置から非同期で取得し、適宜、出力レコードを生成する。しかしながら、この手法は、折り畳まれた実行の幾つかの実装と互換性がないことがある。何故なら、そのような成分に対する「計算」関数が、１回に一つの入力レコードを受け取り、その成分が戻される前に、その受け取った入力レコードについて対応する出力レコードを生成するからである。
【００８６】
プールされた接続及び折り畳まれた実行における非同期の結果の取得を上手く利用するために、そのようなリクエストを行う成分は、二つの成分、即ち：入力レコードを受け取ってリクエストを発行する第１成分、及び、応答を受け取って出力レコードを構築する第２成分、に効率的に分解される。次いで、第２成分は、単一の処理により実行されている折り畳まれた成分のセットへの追加された「ルート」として扱われ、対応する外部装置からの応答は第２成分への入力として扱われる。次いで、折り畳まれたセットを実行する処理は、何れかのソースからの入力−元のルート成分への入力又は外部装置からの応答−を待ち、適切なルート成分についての「計算」関数を呼び出す。
【００８７】
非折畳み又は折畳みの何れの実行においても、離間している装置に連結している成分からの結果の順番が入力の順番と一致している必要がある場合、結果は下流成分に渡される前に蓄積され且つ整理し直され得る。
【００８８】
３  モニタ（監視）
ＲＭＭ１１６は、グラフの実行に関する情報を開発者１０１及び／又はユーザ１０３に提供する。ＲＭＭ１１６は、グラフの個々の成分が実行中に一緒に折り畳まれた場合でも、それらの個々の成分のランタイム特性に関する情報を提供する。従って、グラフの成分と関係付けられる計算の特性は、その計算を実行する処理の数がそのグラフ内の成分の数と一致することを要求することなく、グラフの論理的構造に従って解析されることができる。例えば、ＲＭＭ１１６は、成分折畳み手法又は一つの成分毎に一つのプロセス手法を用いて実行されるグラフに対する特性と概ね同じランタイム特性を表すことができる。
【００８９】
たった一つの成分を有する折り畳まれたセットに対し、及び、１つの成分毎に１つのプロセス手法において、ＲＭＭ１１６は、成分と対応する処理に基づいてＣＰＵ時間等の特性を追跡し、ＲＭＭ１１６は、その成分に出入りするデータの流れをサポートするデータ通信チャンネルに基づいてデータ処理量を追跡する。
【００９０】
二つ以上の成分を有する折り畳まれたセットに関し、ＲＭＭ１１６は、折り畳まれる処理についてのＣＰＵ時間、及び、折り畳まれるセットのデータ処理量を、追跡し、これらの合計値を成分毎に分割する。簡単な手法は、その合計量を、折り畳まれたセット内の成分の数で除することであろう。しかしながら、多くの場合、監視した量をより正確に分割することが望まれる。
【００９１】
折り畳まれた処理は、対応する折り畳まれたセット内で表される成分及びデータフローと対応するように、格納される変数内に追跡情報を書き込む。例えば、成分に入ってくる（又は、成分から出て行く）データの流れと対応するデータポインタ変数が読み出される（又は、書き込まれる）たびに、対応するレコードカウントおよびバイトカウントの追跡値がインクリメントされる。
【００９２】
ＲＭＭ１１６は、割り込み手法を用いてＣＰＵ時間のより正確な分解を獲得することができる。折り畳まれた処理が「折り畳まれたセット内の各種成分と関係付けられる関数」を呼び出すのに費やした時間の割合をサンプリングするために、タイマーが割り込みをトリガーする。それぞれの関数が呼び出されるときに、例えば、その関数は、対応する成分が「アクティブ」であることをグローバル変数内に書き込む。タイマーの時間がくると、割り込みがトリガーされ、折り畳まれた処理がアクティブな状態にある成分と関係付けられるカウンタをインクリメントする。折り畳まれたセット内の各成分についてのＣＰＵ時間を報告するために、折り畳まれたセットの合計時間が、これらのカウントに従って比例分割される。
【００９３】
ＣＰＵ時間の正確な分解を獲得するための別の手法は、それぞれの折り畳まれた成分の「計算」関数及び「プロセスブリップ」関数の呼出し時間を計測することである。全ての呼出しの時間を計測することは許容できないオーバーヘッドを招くので、システムは、呼出しの何分かの一の時間を計測してもよい（例えば、最初は１００の内のそれぞれを、次いで１０００番目毎に）。次いで、収集した時間を用いて、合計のＣＰＵ時間を、折り畳まれた成分の内のそのプロセスに対して比例配分する。
【００９４】
上述した成分折畳み手法は、コンピュータ上で実行するためのソフトウエアを用いて実装することができる。例えば、本ソフトウエアは、プログラムされるか又はプログラム可能な一台以上のコンピューターシステム（分散、クライアント／サーバ、又は、グリッド等の様々なアーキテクチャを有することができる）上で実行する一つ以上のコンピュータープログラム内の手順を形成する。そのそれぞれのコンピューターシステムは、少なくとも一つのプロセッサ、少なくとも一つのデータ記憶装置システム（揮発性、及び、不揮発性メモリ、及び／又は記憶要素を含む）、少なくとも一つの入力装置または入力ポート、並びに、少なくとも一つの出力装置または出力ポートを備える。本ソフトウエアは、例えば、計算グラフの設計及び配置構成と関連する他のサービスを提供する規模がさらに大きなプログラムの内の一つ以上のモジュールを形成してもよい。グラフのノード及び要素は、コンピュータが読み取り可能な媒体に格納されるデータ構造、又は、データ収納庫内に格納されるデータモデルに準拠する他の体系化されたデータ、として実装することができる。
【００９５】
本ソフトウエアは、汎用又は専用のプログラム可能なコンピュータにより読み出すことが可能なＣＤ−ＲＯＭ等の媒体上で提供するか、若しくは、本ソフトウエアを実行するコンピュータにネットワークを経由して（伝播信号にエンコードして）配布することができる。全ての機能は専用コンピュータ上で、或いは、コプロセッサ等の専用ハードウエアを用いて、実行することができる。本ソフトウエアは、ソフトウエアにより規定される計算の様々な部分が異なるコンピュータにより実行されるように分散された様式にて実装することができる。そのようなコンピュータープログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータにより読み取り可能な記憶媒体又は装置（例えば、ソリッドステートメモリ又は媒体、若しくは磁気式もしくは光学式媒体）上に、格納されるか又はダウンロードされることが好ましく、記憶媒体又は装置がコンピューターシステムにより読み出されて本明細書で説明した手順を実行するとき、コンピュータを構成し且つ動作させる。本発明のシステムは、コンピュータープログラムとともに構成されたコンピュータが読み取り可能な記憶媒体として実装されると考えることもでき、その場合は、そのように構成されたストレージ媒体は、コンピューターシステムを特有でかつ所定の方法で動作させて本明細書で説明した機能を実行できるように構成される。
【００９６】
本発明の幾つかの実施の形態を説明してきた。しかし、言うまでもなく、本発明の精神および範囲から逸脱することなく、様々な改変を行うことができる。例えば、上記のステップの幾つかは、独立した順序とすることができ、従って、説明と異なる順序で実行することができる。言うまでもないが、上記説明は、説明を意図し、本発明の範囲を限定する意図はなく、本発明の範囲は、付帯の特許請求の範囲により定義される。他の実施の形態は特許請求の範囲の範囲内にある。
【図１】
2014029718.tif 000003
【図２Ａ】
2014029718.tif 000004
【図２Ｂ】
2014029718.tif 000005
【図３Ａ】
2014029718.tif 000006
【図３Ｂ】
2014029718.tif 000007
【図４】
2014029718.tif 000008
【手続補正書】
【提出日】平成25年10月28日(2013.10.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフ型計算を実行するための方法であって、
コンピュータが、データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ；
前記コンピュータが、前記データ処理要素を複数のセットに分割するステップであって、少なくとも第１のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含むステップ；
前記コンピュータが、それぞれのセットに異なる計算リソースを割り当てるステップであって、１つのセットに割当てられる少なくとも１つの計算リソースが１つの処理を含むステップ；及び
前記コンピュータが、前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含むステップであって、前記データ処理要素の前記第１のセットに割り当てられた前記計算リソースの１つは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流のデータ処理要素と関係付けられる関数を呼び出すことにより、該下流のデータ処理要素の入力へと通過させ、前記上流のデータ処理要素及び前記下流のデータ処理要素は、前記データ処理要素の前記第１のセット内にあるステップ；
を含む方法。
【請求項２】
請求項１に記載の方法において、
前記リンク要素のそれぞれは、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる、
方法。
【請求項３】
請求項１に記載の方法において、
前記データを処理するステップは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するステップを含む、
方法。
【請求項４】
請求項１に記載の方法において、
前記関数は、前記上流のデータ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
方法。
【請求項５】
請求項４に記載の方法において、
前記上流のデータ処理要素と関係付けられる前記関数及び前記下流のデータ処理要素と関係付けられる前記関数が、同一の処理により呼び出される、
方法。
【請求項６】
請求項１に記載の方法において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
方法。
【請求項７】
請求項１に記載の方法において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
方法。
【請求項８】
請求項１に記載の方法において、
前記サブグラフはツリーを含む、
方法。
【請求項９】
請求項１に記載の方法において、
複数の入力を有するセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流のデータ処理要素の全てもまた前記セット内にある、
方法。
【請求項１０】
請求項１に記載の方法において、
上流要素を持たない前記サブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、前記コンピュータが、そのサブグラフ内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、そのサブグラフ内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記サブグラフ内の外部に前記制御メッセージを伝播するステップを更に含む、
方法。
【請求項１１】
請求項１０に記載の方法において、
前記サブグラフ内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
方法。
【請求項１２】
請求項１に記載の方法において、
前記データ処理要素は、特定の並列処理段数を有する、
方法。
【請求項１３】
請求項１２に記載の方法において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
方法。
【請求項１４】
請求項１に記載の方法において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
方法。
【請求項１５】
請求項１４に記載の方法において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
方法。
【請求項１６】
グラフ型計算を実行するためのコンピュータープログラムが符号化されたコンピュータ読み取り可能記憶媒体であって、前記コンピュータープログラムは、
複数のデータ処理要素が複数のリンク要素により結合される計算グラフの仕様を受け取るステップ；
前記複数のデータ処理要素を複数のセットに分割するステップであって、少なくとも第１のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含むステップ；
それぞれのセットに異なる計算リソースを割り当てるステップであって、１つのセットに割当てられる少なくとも１つの計算リソースが１つの処理を含むステップ；及び
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含むステップであって、前記データ処理要素の前記第１のセットに割り当てられた前記計算リソースの１つは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流のデータ処理要素と関係付けられる関数を呼び出すことにより、該下流のデータ処理要素の入力へと通過させ、前記上流のデータ処理要素及び前記下流のデータ処理要素は、前記データ処理要素の前記第１のセット内にあるステップ；
をコンピューターシステムに実行させる命令を含む、コンピュータ読み取り可能記憶媒体。
【請求項１７】
グラフ型計算を実行するためのシステムであって、
予備実行モジュールであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取り、
前記データ処理要素を複数のセットに分割し、第１のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含む、
ための電子回路を含む予備実行モジュールと、
実行モジュールであって、
それぞれのセットに異なる計算リソースを割り当て、１つのセットに割当てられる少なくとも１つの計算リソースが１つの処理を含み、
前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含む前記計算グラフに従ってデータを処理し、前記データ処理要素の前記第１のセットに割り当てられた前記計算リソースの１つは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流のデータ処理要素と関係付けられる関数を呼び出すことにより、該下流のデータ処理要素の入力へと通過させ、前記上流のデータ処理要素及び前記下流のデータ処理要素は、前記データ処理要素の前記第１のセット内にある、
ための電子回路を含む実行モジュールと、
を含むシステム。
【請求項１８】
グラフ型計算を実行するためのシステムであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取るための手段；
複数の前記データ処理要素を複数のセットに分割するための手段であって、第１のセットは、連結有向サブグラフを形成する複数の前記データ処理要素を含む手段；
それぞれのセットに異なる計算リソースを割り当てるための手段であって、１つのセットに割当てられる少なくとも１つの計算リソースが１つの処理を含む手段；及び
前記計算グラフに従ってデータを処理するための手段であって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含む手段であって、前記データ処理要素の前記第１のセットに割り当てられた前記計算リソースの１つは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流のデータ処理要素と関係付けられる関数を呼び出すことにより、該下流のデータ処理要素の入力へと通過させ、前記上流のデータ処理要素及び前記下流のデータ処理要素は、前記データ処理要素の前記第１のセット内にある手段； 
を含むシステム。
【請求項１９】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記リンク要素のそれぞれは、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる、
コンピュータ読み取り可能記憶媒体。
【請求項２０】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するステップを含む、
コンピュータ読み取り可能記憶媒体。
【請求項２１】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記関数は、前記上流のデータ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
コンピュータ読み取り可能記憶媒体。
【請求項２２】
請求項２１に記載のコンピュータ読み取り可能記憶媒体において、
前記上流のデータ処理要素と関係付けられる前記関数及び前記下流のデータ処理要素と関係付けられる前記関数が、同一の処理により呼び出される、
コンピュータ読み取り可能記憶媒体。
【請求項２３】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
コンピュータ読み取り可能記憶媒体。
【請求項２４】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
コンピュータ読み取り可能記憶媒体。
【請求項２５】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記サブグラフはツリーを含む、
コンピュータ読み取り可能記憶媒体。
【請求項２６】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
複数の入力を有するセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流のデータ処理要素の全てもまた前記セット内にある、
コンピュータ読み取り可能記憶媒体。
【請求項２７】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
上流要素を持たない前記サブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、前記コンピュータが、そのサブグラフ内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、そのサブグラフ内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記サブグラフ内の外部に前記制御メッセージを伝播するステップを更に含む、
コンピュータ読み取り可能記憶媒体。
【請求項２８】
請求項２７に記載のコンピュータ読み取り可能記憶媒体において、
前記サブグラフ内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
コンピュータ読み取り可能記憶媒体。
【請求項２９】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素は、特定の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項３０】
請求項２９に記載のコンピュータ読み取り可能記憶媒体において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項３１】
請求項１６に記載のコンピュータ読み取り可能記憶媒体において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
コンピュータ読み取り可能記憶媒体。
【請求項３２】
請求項３１に記載のコンピュータ読み取り可能記憶媒体において、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
コンピュータ読み取り可能記憶媒体。
【請求項３３】
請求項１７に記載のシステムにおいて、
前記リンク要素のそれぞれは、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる、
システム。
【請求項３４】
請求項１７に記載のシステムにおいて、
前記データを処理することは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行することを含む、
システム。
【請求項３５】
請求項１７に記載のシステムにおいて、
前記関数は、前記上流のデータ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項３６】
請求項３５に記載のシステムにおいて、
前記上流のデータ処理要素と関係付けられる前記関数及び前記下流のデータ処理要素と関係付けられる前記関数が、同一の処理により呼び出される、
システム。
【請求項３７】
請求項１７に記載のシステムにおいて、
前記データを処理することは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持することを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
システム。
【請求項３８】
請求項１７に記載のシステムにおいて、
前記データを処理することは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持することを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
システム。
【請求項３９】
請求項１７に記載のシステムにおいて、
前記サブグラフはツリーを含む、
システム。
【請求項４０】
請求項１７に記載のシステムにおいて、
複数の入力を有するセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流のデータ処理要素の全てもまた前記セット内にある、
システム。
【請求項４１】
請求項１７に記載のシステムにおいて、
前記実行モジュールは、上流要素を持たない前記サブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、そのサブグラフ内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、そのサブグラフ内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記サブグラフ内の外部に前記制御メッセージを伝播するための電子回路を更に含む、
システム。
【請求項４２】
請求項４１に記載のシステムにおいて、
前記サブグラフ内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
システム。
【請求項４３】
請求項１７に記載のシステムにおいて、
前記データ処理要素は、特定の並列処理段数を有する、
システム。
【請求項４４】
請求項４３に記載のシステムにおいて、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
システム。
【請求項４５】
請求項１７に記載のシステムにおいて、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
システム。
【請求項４６】
請求項４５に記載のシステムにおいて、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
システム。
【請求項４７】
請求項１８に記載のシステムにおいて、
前記リンク要素のそれぞれは、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる、
システム。
【請求項４８】
請求項１８に記載のシステムにおいて、
前記データを処理するための手段は、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するための手段を含む、
システム。
【請求項４９】
請求項１８に記載のシステムにおいて、
前記関数は、前記上流のデータ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項５０】
請求項４９に記載のシステムにおいて、
前記上流のデータ処理要素と関係付けられる前記関数及び前記下流のデータ処理要素と関係付けられる前記関数が、同一の処理により呼び出される、
システム。
【請求項５１】
請求項１８に記載のシステムにおいて、
前記データを処理するための手段は、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するための手段を更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
システム。
【請求項５２】
請求項１８に記載のシステムにおいて、
前記データを処理するための手段は、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するための手段を更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
システム。
【請求項５３】
請求項１８に記載のシステムにおいて、
前記サブグラフはツリーを含む、
システム。
【請求項５４】
請求項１８に記載のシステムにおいて、
複数の入力を有するセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流のデータ処理要素の全てもまた前記セット内にある、
システム。
【請求項５５】
請求項１８に記載のシステムにおいて、
上流要素を持たない前記サブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、そのサブグラフ内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、そのサブグラフ内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記サブグラフ内の外部に前記制御メッセージを伝播するための手段を更に含む、
システム。
【請求項５６】
請求項５５に記載のシステムにおいて、
前記サブグラフ内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
システム。
【請求項５７】
請求項１８に記載のシステムにおいて、
前記データ処理要素は、特定の並列処理段数を有する、
システム。
【請求項５８】
請求項５７に記載のシステムにおいて、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
システム。
【請求項５９】
請求項１８に記載のシステムにおいて、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
システム。
【請求項６０】
請求項５９に記載のシステムにおいて、
１つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
システム。
【外国語明細書】
2014029718000001.pdf