JP2006504160A - グラフに基づく計算の起動および制御 - Google Patents

グラフに基づく計算の起動および制御 Download PDF

Info

Publication number
JP2006504160A
JP2006504160A JP2004543637A JP2004543637A JP2006504160A JP 2006504160 A JP2006504160 A JP 2006504160A JP 2004543637 A JP2004543637 A JP 2004543637A JP 2004543637 A JP2004543637 A JP 2004543637A JP 2006504160 A JP2006504160 A JP 2006504160A
Authority
JP
Japan
Prior art keywords
graph
instance
computational
calculation
resources
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004543637A
Other languages
English (en)
Inventor
クレイグ ダブリュ スタンフィル
Original Assignee
エービー イニティオ ソフトウェア コーポレーション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by エービー イニティオ ソフトウェア コーポレーション filed Critical エービー イニティオ ソフトウェア コーポレーション
Publication of JP2006504160A publication Critical patent/JP2006504160A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Abstract

グラフに基づく計算を実行するための手法であって、効率的起動手法、およびプロセスプールを用いる効率的制御法の何れか一方、または両方を用いる。グラフに基づく計算の効率的起動は、要求グラフ形式に対する事前計算データを用いて、計算グラフのインスタンスに対するランタイムデータ構造を形成することにより、計算グラフのインスタンスを形成するような、計算グラフのランタイム構造を表す事前計算データを伴う。ランタイム時に、これらの頂点での処理のための入力が利用できる場合、これらのプロセスプールの要素を、計算グラフのインスタンスの特定頂点に動的に割り当てるような、計算グラフの一つ以上の頂点と関係付けられる計算を実行するためにそれぞれが適合しているプロセスプールを形成する。

Description

発明の詳細な説明
発明の背景
本発明は、グラフに基づく計算の実行に関する。
複雑な計算は、グラフの頂点(vertices, 交点)に関係付けられる計算成分と、グラフのリンク(弧、辺)に対応する成分間のデータフローと、を伴う有向グラフ(directed graph)を通過するデータフローとして表わせることが多い。このようなグラフに基づく計算を実装するシステムは、米国特許第5,966,072号の「グラフとして表される計算の実行」に記載されている。グラフに基づく計算を実行するための一手法は、それぞれがグラフの異なる頂点(vertex)と関係付けられる幾つかのプロセスを実行し、且つ、そのグラフのリンクに応じてプロセス間の伝達経路(communication path, 通信パス)を確立することである。例えば、伝達経路は、TCP/IPもしくはUNIX(登録商標)ドメインソケットを用いるか、またはプロセス間でデータを渡すための共有メモリ(shared memory)を用いることができる。
概 要
本発明の概略的な特徴において、グラフに基づく計算を効率的に起動するための方法は、計算グラフのランタイム構造を表すデータを事前に計算することを含む。即ち、要求されるタイプのグラフに対して事前に計算されたデータを用いて計算グラフのインスタンスを形成し、計算グラフのインスタンスに対するランタイムデータ構造を形成する。
本発明の別の概略的な特徴において、グラフに基づく計算を効率的に制御するための方法は、計算グラフの一つ以上の頂点と連携する計算を実行するためにそれぞれが適合しているプロセスのプールを形成することを含む。プログラム実行時(at runtime)、頂点での処理のために入力が利用できるとき、これらのプロセスのプールの構成要素(members)は計算グラフのインスタンスの特定の頂点へ動的に割り当てられる。
本発明の別の概略的な特徴は、効率的な起動とプロセスのプールとの組合せを含む。
概して、一態様において、本発明はグラフに基づく計算を処理するための方法を特徴とする。一つ以上のグラフテンプレートが提供される。各グラフテンプレートは異なるタイプの計算グラフと関係付けられる。各計算グラフは相当数のグラフ要素を含む。各グラフ要素は対応する計算と関係付けられる。計算リソースのプールが一つ以上形成される。計算グラフの各グラフ要素は計算リソースのプールの対応する一つと関係付けられる。一つ以上のデータストリームが処理される。それぞれのデータストリームは、計算グラフの対応するタイプと結び付けられている。データストリームのそれぞれに対し、データストリームの処理は、対応する計算グラフに対するグラフテンプレートからグラフインスタンスを形成することを含んでいる。グラフインスタンスの各グラフ要素に対し、対応するプールからのコンピュータのリソースは各グラフ要素に割り当てられる。各データストリームはグラフインスタンスにより処理される。その処理には、前記割り当てられた計算リソースを用いて、かかるグラフインスタンスのグラフ要素に対応する計算を実行することが含まれる。
本発明の態様は、以下の特徴を一つ以上含む:
グラフ要素には、計算グラフの頂点またはリンクを含めることができる。
計算リソースには、プロセス、プロセススレッド(process thread)またはデータベースとの連結を含めることができる。
一つ以上のグラフテンプレートを提供することには、揮発性メモリまたは不揮発性メモリにテンプレートを格納することを含めることができる。
グラフインスタンスは、揮発性メモリ内のグラフテンプレートから形成され得る。
グラフインスタンスを形成することには、メモリの一部をそのグラフインスタンスに割り当て、グラフテンプレートをそのメモリの一部にコピーすることを含めることができる。
計算リソースは、データストリームの計算の一部へ動的に割り当てることができる。
計算リソースは、計算に必要とされる総ての入力のうちの少なくともある部分の入力が利用できるとき、割り当てられ得る(can be assigned)。
計算リソースは、計算に必要とされる総ての入力が利用できるとき、割り当てられ得る。
各計算リソースの動的な割り当てには、グラフ要素からの計算リソース割り当て停止(deassign) を含めることができる。
グラフ要素の各計算リソースは、データストリームの総てを処理するために割り当てられ得る。
本方法は、グラフ要素に割り当てられた計算リソースを解放すること及びグラフのインスタンスを破棄することを更に含むことができる。
異なる計算グラフにそれぞれ関係付けられる少なくとも二つのデータストリームを、同時に処理することができる。
異なる計算グラフのそれぞれのインスタンスの内の少なくとも一つのグラフ要素を、同じ計算リソースの対応するプールと関係付けることができる。
計算リソースの同じ対応するプールの内の少なくとも一つの計算リソースを、異なる時に、異なる計算グラフのインスタンスのグラフ要素へ割り当てることができる。
別の態様では、本発明は、概して、コンピュータ可読媒体に格納されてグラフに基づく計算を処理するためのソフトウエアを特徴とする。
別の態様では、本発明は、概して、グラフに基づく計算を処理するためのシステムを特徴とする。
本発明の態様には、以下の利点の内の一つ以上を含めることができる:
計算グラフのインスタンスを生成することによる計算オーバーヘッドは、グラフをインスタンス化(instantiate)する際に頂点間で別々の伝達経路を確立する場合に比べて、低下させることができる。
一実施の形態では、共有メモリの使用が、計算グラフの頂点計算を行うプロセス間でデータを渡すための効率的な伝達チャンネルを提供する。
プロセスプールは、計算グラフの頂点と関連した計算を実行するためのプロセスの生成および初期化に伴うオーバーヘッドを低下させる。
動的に割り当てられたプロセスのプールの使用は、他の場合には入力を待っているプロセスにより使用されるかもしれないリソースを減少する。
本発明のその他の特徴および利点は、以下の説明および特許請求の範囲から明らかである。
説明
1.概説
以下に説明するシステムは、計算グラフで定義される計算を実行するための方法を実行する。図1を参照すると、計算グラフ100の実施例は、一方向リンク120で結合された幾つかの頂点110を含む。図1に示す実施例においては、頂点110は1から6の番号が付され、リンク120も1から6の番号が付されている。計算グラフ100は、例えば、取引処理システム(transaction processing system)と関係付けられた計算グラフに従い処理される個人取引(individual transaction)等の、一連のワーク要素(work element)130から成り立つワークフロー(work flow)を処理する。各頂点は、計算グラフ全体により定義される計算の一部と関係付けられる。本例では、頂点1は、一連の最初のワーク要素130に対する格納へのアクセスを提供し、その出力リンク1に一連のワーク要素を通過させる。各頂点に関係付けられる計算を実行するプロセスは、次に、ワーク要素130を処理し、典型的にはその頂点の一つ以上の出力リンク上にワーク要素を生じさせる。
図1に示すように、一つのワーク要素130はリンク1上を通過中であり、一つのワーク要素は頂点3での処理のための準備が整って待ち行列に入れられる(queued)二つのワーク要素は頂点4での処理のための準備が整って待ち行列に入れられる。従って、頂点3および頂点4のプロセスは、待ち行列に並ぶワーク要素を処理する実行準備ができている。図示のように、頂点5は、その一つの入力であるリンク4上に待ち行列に入れられるワーク要素を有するが、リンク5上にはワーク要素を有さない。従って、頂点5と関係付けられるプロセスは実行の準備が整っていない。
図2を参照すると、ワークフローを処理するためのシステム200は、格納されたグラフデータ構造210を含んでいる。これらデータ構造は、グラフの頂点およびリンクの特性を含む計算グラフの仕様を含んでいる。そのシステムのグラフ実行・制御(「GEC」)モジュール220は、格納されているグラフデータ構造210で規定された対応する計算グラフを用いて特定のワークフロー232を処理するコマンドを含む制御入力222を受信する。GECモジュール220は、計算グラフの仕様を用いて、一般的に多数のプロセスで成り立ったグラフ計算処理230を制御する。グラフ計算処理230を実行するプロセスは、計算グラフの頂点に関係付けられる処理中にアクセスされるデータベースエンジン、データ記憶装置、または他のモジュール、を含む外部データおよびプロセス240を利用することができる。
通例、タイプが異なるワークフローは、タイプが異なる計算グラフ100を用いて処理される。また、異なるワークフローは同時に処理されてもよく、それぞれのワークフローは一つのグラフの異なるインスタンスにより処理される。システム200は、GECモジュール220を介して、計算グラフのインスタンスに対するリソースの割り当てを行い、その実行を制御してワークフローを処理する。
2.グラフデータ構造
システム200が含む幾つかの特徴は、限定されたリソースを効率的に共有するのは無論のこと、グラフ計算の起動を速やかにすることである。
計算グラフのインスタンスによるワークフローの処理を行う前に、GECモジュール220は、機能的に共有されるメモリ内のグラフのインスタンスに対するランタイムデータ構造を生成する。一実施の形態では、グラフインスタンスの総てのランタイムデータ構造が内部で生成される単一の共有メモリセグメントが生成される。
プロセスは、ランタイム時にグラフの頂点と関係付けられ、これらプロセスのそれぞれは、共有メモリセグメントをアドレス空間にマッピングする。プロセスは、ワークフローの処理中、グラフインスタンスのランタイムデータ構造からワーク要素を読み込み、そしてワーク要素をランタイムデータ構造へ書き込む。すなわち、グラフを流れるワーク要素のデータは、共有メモリセグメント内のこのランタイムデータ構造を通してプロセスからプロセスへと通過する。
グラフ計算処理230は、UNIX(登録商標)オペレーティングシステム等の適切なオペレーティングシステムの管理下で汎用コンピュータ上でホスティングされ得る。そのグラフの一つのインスタンスに対する共有メモリは、ランタイムグラフデータ構造を保持する共有メモリセグメントを、計算グラフを実行するプロセスのアドレス空間にマッピングするメモリマッピング機能を提供する標準のシステムサービス(例えば、UNIX(登録商標)システムサービスのmmap( )関数)を用いてアクセス可能であるのが好ましい。
図3は、計算グラフのインスタンスに対するランタイムグラフデータ構造300の一実施の形態である。ヘッダーセクション320には、頂点の数322およびリンクの数324が含まれる。このランタイムグラフデータ構造300には、異なる頂点にそれぞれ関係付けられる一連の記録332にあるグラフ頂点を規定する頂点セクション330も含まれる。ランタイム構造には、グラフの異なるリンクをそれぞれ規定するリンク記録342を含むリンクセクション340も含まれる。ランタイムグラフデータ構造300には、ワーク要素が計算グラフの頂点間で渡され、頂点での処理の前に待ち行列に入れられるときにワーク要素データを保持するバッファセクション350も含まれる。
頂点セクション330において、各頂点記録332は、一般に、対応する頂点に対する入力リンク334およびその頂点に対する出力リンク335を特定するデータを含む。例えば、リンクおよび頂点は1から連続して番号が付され、ひとつの頂点に対する入力リンクおよび出力リンクのデータはこれらのリンクを含むインデックスのリストとして表されてもよい。
この実施例では、各頂点記録332には、待ち行列に入れられて処理を待っているワーク要素を有さない入力の数を示す入力カウント336に対する格納場所(storage)も含まれる。グラフ計算の実行中、この変数は、頂点に対する入力リンク数に初期化され、頂点に対する各入力に入力が利用できようになると数が一つ減らされ、入力待ち行列が空になると数が一つ増やされ、各入力に利用できる入力が存在しかつその頂点に対する処理の実行準備が整ったときにゼロになる。
この実施例では、各頂点記録332には、その頂点と関係付けられるプロセスのプール(プロセスプールの詳細な検討は本説明で後述する)を規定するプロセスプール識別337も含まれる。識別されたプール内のプロセスを用いて頂点の処理を実行する。一般に、頂点に対する処理は、識別されたプールのいずれかの要素(member)により実行され得る。プロセスはワーク要素毎に動的に割り付けられるので、ある計算グラフの一つのインスタンスにおける同一の頂点により処理される異なったワーク要素は、識別されたプールの異なる要素により処理されてもよい。頂点記録332は、その頂点に対する特別な処理を実行するために識別されたプールのいずれかのプロセス要素を仕立てるのに使用される構成データ338をオプション的に含む。
ランタイムグラフデータ構造300のリンクセクション340は、リンク記録342内においてグラフのリンクを規定する。各リンク記録342には、そのリンクに対するソース頂点346と、それらリンクに対する宛先頂点347と、を識別するデータが含まれていてもよい。各リンク記録には、ランタイムデータ構造を生み出すときに用いる構成データ345がオプション的に含まれる。
ランタイムグラフデータ構造300のバッファセクション350には、グラフのリンクと関係付けられた別々のバッファ領域352が相当数含まれる。各リンク記録342には、そのリンク記録に対応するバッファ領域352を識別するバッファ位置344が含まれるのが典型的である。各バッファ領域には、対応するリンクの宛先頂点によって未だ処理されていないワーク要素362を多数保持するFIFO方式待ち行列360が含まれるのが典型的である。
図4を参照すると、図1に示す計算グラフ100の例に対応するランタイムグラフデータ構造300は、ヘッダーに6個の頂点と6つのリンクがあることを示している。頂点セクション340は6つの頂点記録332を有する。例えば、頂点1に対する頂点記録332は、記載事項334において入力リンクがないことを示し、記載事項335においてリンク1が出力リンクであることを示す。頂点2に対する頂点記録332は、リンク1が入力リンクであり、リンク2および3が出力リンクであることを示す。図1に示すように、頂点2に対するワーク要素は、処理準備がまだ整わず待ち行列に入れられていないので、頂点記録の入力カウント336は、依然として一つの入力が満たされていないことを示す。
リンクセクション350には、計算グラフの各リンクにつき一つ、合計6つのリンク記録340が含まれる。例えば、リンク1のリンク記録342は、ソース頂点が頂点1であることを示す記載事項346、および、宛先頂点が頂点2であることを示す記載事項347を有する。リンク記録342の記載事項344は、バッファセクション350の対応するバッファ記録352にアクセスする方法を提供する(例えば、グラフデータ構造におけるバイトオフセットによる)。各バッファ記録352には、FIFO方式待ち行列360が含まれる。各FIFO方式待ち行列360は、多数のワーク要素362に対するデータを保持できる。図1に示す例に対応して、リンク2および4に対するFIFO方式待ち行列360は一つのワーク要素を保持し、リンク3に対するFIFO方式待ち行列360は2つのワーク要素を保持し、残りの待ち行列は空である。
図3を再度参照すると、ランタイムグラフデータ構造300のある部分は、同一タイプのグラフのインスタンスの総てに共通なテンプレート310である。各頂点記録332の入力カウント336を除いて、ランタイムデータ構造の前記テンプレートの部分は変化しない。頂点に対する入力カウント336は、同一タイプのグラフのインスタンスの総てに対し共通の値、すなわち、頂点に対するどの入力も最初は満たされないことを示す同頂点の入力数に初期化される。
各タイプの計算グラフに対するテンプレート310は、そのタイプのグラフのインスタンスに対するランタイムデータ構造が必要となる前に事前計算される。次に、ランタイムインスタンスの生成には、本質的に、ランタイムデータ構造300全体に対するメモリの割り付けとその割り付けられたメモリへの適切なテンプレート310のコピーとが含まれる(FIFO方式待ち行列360の構造に依存するが、バッファセクション350に何らかの最小限の初期化が要求されることもある)。
3.プロセスプール
上記で紹介したように、頂点に対する計算は、プロセスプールを用いて実行される。多数の異なるタイプの頂点の計算毎に、そのタイプの計算を要求する計算グラフを用いたワークフローの処理の開始に先立って、プロセスプールが生成される。グラフインスタンスによるワークフローの処理期間中、特別なタイプの計算がグラフ頂点に対する計算の実行に必要となる場合、プロセスプールの要素はその頂点と動的に関係付けられ、そのワークフローの処理中その頂点と関係付けられたままとなる。一般に、異なるプロセスプールが数多くあり、それぞれが、対応する処理のタイプと関係付けられている。あるプールのプロセスを、別のタイプのグラフ内の頂点、あるタイプのグラフの別のインスタンス内の頂点、および、あるタイプのグラフの複数の異なる頂点に用いてもよい。
プロセスプールの各プロセスは、プロセスプールを管理するGECモジュール220が呼び出す別々のプロセス(例えばUNIX(登録商標)プロセス)である。GECモジュール220は、プロセスプール毎に別々のワーク待ち行列を維持する。ワーク待ち行列の各エントリは、プロセスが計算を実行する対象であるグラフインスタンスの特定の頂点を識別する。
説明した実施の形態では、プールのプロセスが最初に生成されるとき、それはグラフインスタンスに対する共有メモリセグメントをプロセスのアドレス空間にマッピングすることを含む初期化手順を実行する。初期化手順の完了後、そのプールに対するワーク待ち行列内の要素と関係のある処理を実行するようにGECモジュール220が合図するまで、プロセスは待機する。代替メカニズムを幾つかを用いてプロセスに合図できる。システムの一つのバージョンでは、GECモジュール220が、そのモジュールとプールの各プロセスとの間で制御情報を渡すための別々の制御チャンネルを維持する。各プールプロセスは、プールプロセスが実行すべきことを指し示す制御プロセスからの入力を待つ間「ブロック」する。
プロセスプールの幾つかは、固定されたリソースを確保または消費するプロセスで成り立っている。このようなプロセスプールの例は、Oracle(登録商標)データベース等のデータベースへの接続を生成するプロセスの多数のインスタンスで成り立っている。各データベースへの接続を形成及び維持するためにリソースが消費されるので、アクティブの状態にあるそのようなプロセスの数を制限することが望ましい。頂点で処理されるべきワーク要素が、データベースにアクセスするためのプロセスを要求する場合、(データベースとの接続を既に確立した)プールのプロセスのうち一つがその頂点と関係付けられる。このようにして、そのデータベースに接続することが要求されたであろうプロセスの初期化ステップのような、プロセスを起動するオーバーヘッドが回避される。
システム200は、頂点がプールプロセスと関係付けられる場合と、頂点の計算を初期化すると、において異なる、頂点に対するプロセスを構成するための種々の手法、をサポートする。一構成形式では、プロセスは、その入力ワーク要素全てのデータが完全に利用可能となるまで、頂点と関係付けされない。ワーク要素が大きな場合、上流の頂点がワーク要素全体を計算して利用可能とするのに幾らかの時間がかかることもある。この形式の構成は、入力が利用可能となるのを待つプロセスをブロックすることを回避する。
別の形式の構成は、ストリームモードを用いる。プロセスは、少なくとも各入力の開始が利用可能であるとき、頂点と関係付けられ始動させられる。その入力それぞれの残りは、プロセスを実行中において利用可能となる。その入力が十分速やかに利用可能となる場合、プロセスは入力待ちをブロックしない。しかしながら入力が利用可能とならない場合、プロセスは入力待ちをブロックすることになろう。
別の形式の構成は、ディスクバッファモードを用い、このモードでは、ディスクまたは他の記憶装置にバッファリングされているデータフローが明示的に識別される。例えば、上流プロセスはその出力をディスクに書き込み、下流プロセスはその入力全体がディスクから読み出し可能となったとき通知されるにすぎない。このようなデータフローに対して、対応するFIFO方式待ち行列360の記載事項362は、データをFIFO方式待ち行列に直接保持するのではなく、ディスク上のデータの位置を識別する。この構成は、入出力に対するメモリ空間バッファを用いるのではなくディスクを用いるので、FIFO方式待ち行列を保持する共有メモリセグメントを温存する。
様々な度合いのプロセスプール特異性もある。一形式のプールは、特定のタイプのグラフの特定の頂点に非常に良く仕立てられたプロセスで成り立っている。別の形式のプールでは、プロセスはもっと一般的であり、多数の異なる頂点に適用可能である。このようなプロセスは、特定の頂点と関係付けられる時点でカスタマイズされる。例えば、プール内のプロセスは、幾つかの異なる種類のデータ変換にとって一般的なデータ変換器プロセスから成り立っている。特定の頂点と関係付けられる構成データ338は、その特定の頂点に対する変換器を構成するために用いられる情報を提供する。さらに一般的なプロセスプールでは、各プロセスは、Java(登録商標)仮想マシン(JVM)等の仮想マシンを実現してもよく、頂点に対する構成データ338は、仮想マシンを用いて実行するプログラムを識別する。
プロセスが通知を受けて、そのプールに対するワーク待ち行列のエントリを処理する場合、プロセスはワーク要素を処理する前に任意の構成データ338に作用する。そのプロセスは、その処理が関係付けられる頂点を最初に識別し、次いで、共有メモリセグメント内の対応する頂点記録にアクセスして構成データ338を探すことにより、構成データにアクセスする。次に、プロセスは、その頂点の入力リンクに対するFIFO方式待ち行列360内の処理するべきワーク要素362を見つける。そして、処理が完了すると、その頂点の出力リンクに対するFIFO方式待ち行列にデータを書き込む。
4.計算制御
図5から8を参照すると、システム200は、GECモジュール220によって調整されるイベント駆動型制御手法を用いる。
図5は、システム初期化のフローチャートである。GECモジュール220は最初に、プロセスプールと、それらに関係付けられるワーク待ち行列とを生成する(ステップ510)。このステップの一部として、GECモジュール220は、各プロセスプールに対して別々のワーク待ち行列を生成する。次いで、GECモジュール220は、ワークフローの処理に必要となる計算グラフの各タイプに対するアドレス空間にグラフテンプレート310を生成し、グラフインスタンスに対するランタイムデータ構造が生成されることになる共有メモリセグメントを生成する(ステップ520)。
図6は各ワークフローを処理するためのフローチャートである。GECモジュール220がワークフローを処理するリクエストを受けた場合、そのワークフローの処理に必要な計算グラフの形式のグラフインスタンスを最初に生成する(ステップ610)。このプロセスの一部として、GECモジュール220は、そのグラフインスタンスに対するランタイムデータ構造300のために共有メモリセグメントの一部を割り当て、そのタイプの計算グラフに対するグラフテンプレート310をランタイムデータ構造300にコピーし、それにより、ランタイムデータ構造を初期化する。次いで、GECモジュール220は、下記のようにグラフインスタンスを実行する(ステップ620)。ワークフロー全体が処理されたとき、GECモジュール220は、割り当てられたリソースを開放し、グラフインスタンスのランタイムデータ構造を削除することが好ましく、その結果、共有メモリセグメントのその部分を他のグラフのインスタンス用に再利用できる(ステップ630)。
図7は、計算グラフのインスタンスを実行するためのフローチャートである。グラフインスタンスの実行(図6、ステップ620を参照)は、どれかが入力カウントゼロを有する(これは、実行前に任意のフロー上の入力を必要としないことを示すのであるが)ように初期化されるか否かを決定するために、最初にグラフの頂点をスキャンする(ステップ710)。入力カウントゼロの頂点は、実行可能であり、且つ、関係付けられるそれらのプロセスプールに対するワーク待ち行列に加えられる(ステップ712)。本例の最初の頂点はいかなる入力リンクも備えていないので、グラフインスタンスの実行が始まり、それがワーク待ち行列に加えられると、実行準備が整う。これら頂点に対する計算を実行するのに利用できるプロセスプール内のプロセスがある場合(ステップ720)、GECモジュール220はその計算リソースをグラフインスタンスに割り当て、直ちに計算を実行処理するよう通知し、そしてワーク待ち行列からエントリを取り出す(ステップ730)。プールからプロセスが利用できない場合、後にプール内のプロセスが別のグラフインスタンス内の頂点に対する計算の実行を完了して、利用可能となる時まで、最初に実行可能な頂点がワーク待ち行列に留まる。
頂点に対する計算を実行するプロセスプール内のプロセスは、入力ワーク要素を入力リンクに対するFIFO方式待ち行列360から取り出し、出力ワーク要素をその頂点の出力リンクに対するFIFO方式待ち行列360に入れる。好ましくは、FIFO方式待ち行列からワーク要素を取り出したり入れたりすることは、実行可能な頂点に関係付けられる入力カウント336が値ゼロになるように、頂点の入力カウント336を維持する。ときとして入力が処理に利用できない場合、プロセスは、上流の頂点が入力を作成し、FIFO方式待ち行列に入れるまで、ブロックする。プロセスが頂点でワークフローに対する計算を完了すると、プロセスはGECモジュール220にプロセスが完了したことを通知する。GECモジュール220は次いで、プロセスを、そのプロセスプールに対するワーク待ち行列に入れられた別の頂点に割り当てることができる。
図8は、頂点に対する処理を完了させるフローチャートである。プロセスが処理を完了し、従って、プロセスを別の頂点に割り当てることが可能であることをプロセスがGECモジュール220に通知すると、GECモジュール220は、まず、何れかのグラフインスタンスにおいて実行可能な頂点があるかどうかチェックする(ステップ810)。上記のように、実行可能な頂点は、それの入力リンクそれぞれが読み出し準備が整っているワーク要素を持つ頂点であり、それは、その頂点に対する頂点記録332の入力カウント336がゼロであることにより示される。実行可能な頂点は、対応するプロセスプールの適切なワーク待ち行列に追加される(ステップ820)。ワーク待ち行列にある頂点に対する計算の実行に利用できる何らかのプロセスがある場合(ステップ830)、総てのこのようなプロセスは、実行可能な頂点に対する計算を実行するよう通知される(ステップ840)。
最後に、もはや実行可能な頂点が無くなったグラフインスタンスは、そのワークフローの処理を完了し、GECモジュール220はそのグラフインスタンスの実行を完了し(ステップ850)、その結果、そのグラフインスタンスは削除される(図6、ステップ630を参照)。
上記計算制御は、多くの別のワークフロー手法をサポートする。例えば、一つのワークフローは単一の取引と関係付けられてもよく、頂点は、入力リンクそれぞれについて多くても一つのワーク要素を処理し、その出力にゼロまたは一個のワーク要素を生成してもよい。ワークフローは、例えば、取引のバッチ全体を処理するための、ワーク要素のストリームと関係付けることもできる。このような場合、各頂点は入力ストリームを処理し、それの入力の各セットについてゼロまたは一個の出力を生成する。
入力がまだ利用可能でないのとは対照的に、頂点がそれ以上の入力を受け取らないことを検出するために、各上流頂点はオプションとしてそれの下流リンクに明示的な終止符号(explicit terminator)を送る。これらの終止符号は、ワーク要素と同じ方法で待ち行列に入れられ、入力カウントに影響を与える。従って、頂点がその入力の各々に終止符号を有する場合、頂点は、その処理を終了させる前に、出力の各々に終了符号を出力する。この終了符号を用いれば、処理を行うプロセスは単一取引または取引のストリームを処理するように予め構成される必要がない。
5.代案
上記の計算制御手法においては、プロセスプールからのプロセスがグラフインスタンスの頂点に割り当てられた後、プロセスがワークフローのワーク要素の処理を完了するまでプロセスは自由に実行できる。代替案は、例えば、作成した未処理の出力の量や、作成した入力の量に従って、または処理時間に従って、頂点での処理量を制限することである。
別の代替案は、頂点が実行可能となった時点から同頂点がワークフローの処理を完了するまで、プロセスを頂点に割り当てるという要件を緩めることである。ワークフローに対するワーク要素のストリームにおける連続するワーク要素を処理する間の状態を頂点が維持しなくてよければ、プロセスは幾つかのワーク要素を処理した後、例えば単一のワーク要素を処理した後、プールへ戻され得る。従って、同一のグラフインスタンスにあっても、同一のプロセスは多数の異なる頂点の処理を実行するために使用され得る。ひとつのストリーム内のワーク要素を処理する間の状態をプロセスが維持しなければならないならば、このような状態は、頂点に対して別々に維持されることができ、プロセスが頂点に割り当てられるときにプロセスに再ロード(reload)され得る。
計算制御の多くの最適化が使用され得る。最初の最適化では、グラフインスタンスを介するワークフロー終止符号の伝搬は、入力の総てが終止符号である場合、プロセスを頂点と関係付けることを回避する。入力上の終止符号は待ち行列から取り出され、一つの終止符号が各出力上において待ち行列に入れられる。別の最適化では、頂点に対する処理を完了するプロセスは、下流の頂点を処理するために、そのプロセスが適切かどうかチェックし、次いで、そのプロセス自体をその下流の頂点に関係付けることができ、それによりプロセスプールにそのプロセスを戻して頂点に再割り当てする必要性を回避することができる。
別の代替案として、プロセスプールのプロセス数は、随意的に増減可能である。例えば、あるオプションでは、プールのメンバの最小数が存在する。そのプールに対する要求次第で、プールの追加要素が生成され、続いて、プールプロセスが活動していなくなるにつれて、これらの要素を次第に除去する。別のオプションは、プールにおける要素の数を決定するためのスケジュールを使用することである。例えば、一日の内の様々な時間において、もっと多くの要素に対するより大きな必要性があり得る。例えば、システムが活発な取引を処理している場合、特定のタイプの取引は、一日の内のある時間より、別の時間の方が発生頻度が高くなるかもしれない。
代替または追加として、プロセスプールの要素として「重い」処理を用いると、別のタイプのプロセスからプールを作り上げることができる。例えば、代替のプールの一つのタイプは、全体として単一のUNIX(登録商標)プロセスをプールに用いることができるが、要素「プロセス」は、事前に生成されて実行準備が整っている軽いスレッドであってもよい。
別の代替案は、あるグラフプールを必要とすることになるであろうワークフローが存在することを予測して、既に例示された計算グラフのグラフプールを事前に生成しておくことである。ワークフローがグラフインスタンスを必要とするとき、グラフプールから利用できるものがあれば、生成される必要はなく、むしろ、そのプールからあてがわれる。このようにして、ワークフローの起動に要する時間はさらに減少せしめられる。そのワークフローのための計算が完了されたとき、変数がワークフローに割り当てられることに先立ち、変数が初期値に戻され(例えば、入力カウント336をリセットし)、動的に割り当てられるいずれのメモリも開放することにより、グラフはリセットされる。グラフはリセットされた後にプールへ戻る。
プロセスプールと同様に、グラフプールにおけるグラフインスタンスの数は、必要に応じて増加させることができる。例えば、グラフ毎に最低数のインスタンスしかないこともあり、必要に応じてより多くのインスタンスが生成されてもよい。
システムの代替バージョンにおいては、各プロセスプールに対するワーク待ち行列は必要ない。例えば、プールプロセスの要素が新しいタスクに取りかかる準備が整ったときには、いつでも、GECモジュール220はグラフインスタンスの各々における総ての頂点の総てのインスタンスをスキャンして、そのワークを引き受ける適切なプロセスがあるかどうか調べることができる。他の代替法には、実行可能な頂点を識別するのに、ワーク待ち行列以外のデータ構造を用いることが含まれる。例えば、ハッシュテーブルを用いて実行可能な頂点を識別できる。
上記の説明では、オン・デマンド方式でグラフの頂点にプールプロセスを割り当ててもよく、その場合、その頂点への入力の総てが利用可能となるまでは、プールプロセスはその頂点と関係付けられない。別の手法は、ワークフローがグラフインスタンスと関係付けられるときにプロセスを頂点に関係付け、ワークフロー全体が処理されるまでその関係を維持することである。
上記説明のように、ランタイムデータ構造は、計算グラフの全体を定義する。システムの代替バージョンにおいて、上述した手法は、計算グラフの頂点間の伝達のためのより伝統的な手法と組み合わせることができる。例えば、別々のランタイムデータ構造をグラフの別のサブグラフと関係付けることができる。次いで、メモリを共有しないプロセッサ上で別のサブグラフを実行でき、異なるプロセッサ上の頂点間の伝達には、ソケット等の伝達手法を用いることができる。
上述した手法を他のグラフ仕様に拡張できる。例えば、各種のネストされた計算グラフのためのテンプレートからグラフインスタンスを組み合わせて作ることにより、計算グラフの階層仕様を実現することができる。
上述したように、GECモジュール220は、作業メモリ内においてグラフテンプレートを計算して、これを格納する。代替案として、これらグラフテンプレートを磁気ディスク等の外部メモリに格納できる。別の代替案として、グラフテンプレートは、必ずしも、グラフインスタンスを形成するために再生されるメモリイメージである必要はない。例えば、グラフテンプレートには、対応するグラフインスタンスを形成するために用いられる圧縮表現またはシンボル表現を含めることができる。
一般に、例えば、使用するオペレーティングシステムに応じて、各種共有メモリの代替形式を用いることができる。
6.用途
上記タイプの計算グラフの一用途は、銀行業の用途における金融取引処理に対するものである。一般に、取引形式が異なると別のタイプの計算グラフが必要となる。典型的な計算グラフは、顧客取引のタイプと、取引の処理に必要な「バックエンド」サービスと、の組合せに関係付けられる。例えば、取引は、ATMの要求、銀行窓口入力およびコンピュータ間またはウェブサーバ間のビジネス間取引のこともある。特に、銀行が合併し、顧客が元の異なる銀行から成り立っている場合、異なる顧客は異なるバックエンドシステムを持つこともある。全員が承継銀行の顧客達であっても、その顧客達の口座は、大きく異なるバックエンドシステム上で維持されているかもしれない。従って、グラフの異なる頂点が異なる取引を処理するように使用され得る。異なるサービスがグラフの頂点と関係付けられてもよい。例えば、収支の更新、口座への預金または資金を口座に保有するよう口座保有を実行する等の機能と幾つかの頂点を関係付けてもよい。本発明によれば、頂点へのオン・ザ・フライのプロセス割り当てにより、未使用の活動していない頂点に対する処理に伴うオーバーヘッドが回避される。
7.実装
本発明は、ハードウエアまたはソフトウエア、もしくは両者の組合せ(例えば、プログラマブルロジックアレイ)で実装できる。特に明示しない限り、本発明の一部として含まれるアルゴリズムは、何らかの特定のコンピュータまたは他の装置と本質的には関連していない。特に、本明細書の教示に従って書かれたプログラムとともに各種の汎用マシンが使用され得る。或いは、より特化した装置(例えば、集積回路)を構築して特定の機能を実行すると更に便利である。従って、本発明は、プログラム化された又はプログラム可能な一以上のコンピュータシステム(分散型、クライアント/サーバ又はグリッド型等の各種のアーキテクチャでもよい)上で実行する一つ以上のコンピュータプログラムに実装してもよい。そのコンピュータシステムは、それぞれ、少なくとも一つのプロセッサ、少なくとも一つのデータ格納システム(揮発性および不揮発性メモリおよび/または記憶素子を含む)、少なくとも一つの入力装置またはポート、および少なくとも一つの出力装置またはポートを備える。プログラムコードを入力データに適用して、本明細書で説明した機能を実行し、出力情報を生成する。出力情報は、既知の方法で一台以上の出力装置に出力される。
このような各プログラムは、所望の任意のコンピュータ言語(機械語、アセンブリ言語、または高度プロシージャ、論理型、もしくはオブジェクト指向プログラム言語を含む)で実装され、コンピュータシステムと通信してもよい。いずれの場合も、言語は、コンパイル型またはインタプリタ型言語のどちらであってもよい。
このような各プログラムは、汎用または専用プログラマブルコンピュータで読取可能な記憶媒体または装置(例えば、固体メモリもしくは媒体、磁気もしくは光媒体)に格納またはダウンロードするのが好ましい。本明細書で説明した手順を実行するために記憶媒体または装置がコンピュータシステムにより読み取られるとき、コンピュータが構成され操作される。発明性のある本システムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体として実装されると考えてもよく、その場合、そのように構成された記憶媒体は、本明細書で説明した機能を実行するように、コンピュータシステムを特定かつ所定の方法で動作させる。
言うまでもなく、これまでの説明は、本発明の範囲を例示するものであって、本発明の範囲を限定する意図はなく、本発明の範囲は付帯する特許請求の範囲により定義される。その他の実施の形態は特許請求の範囲に含まれる。
図1は、グラフに基づく計算のインスタンスを説明する線図である。 図2は、ワークフローを処理するためのシステムの論理ブロック図である。 図3は、グラフインスタンスのデータ構造の一実施の形態である。 図4は、図1に示す計算グラフに対するデータ構造である。 図5は、システム初期化のフロー図である。 図6は、各ワークフローを行うためのフロー図である。 図7は、計算グラフのインスタンス実行のフロー図である。 図8は、頂点処理を終えるためのフロー図である。

Claims (21)

  1. グラフに基づく計算を処理するための方法であって、
    異なるタイプの計算グラフにそれぞれが関係付けられる一つ以上のグラフテンプレートを提供するステップであって、各計算グラフは、対応する計算とそれぞれが関係付けられる幾つかのグラフ要素を含み、
    計算リソースの一つ以上のプールを形成するステップであって、計算の各グラフ要素は、計算リソースの前記プールの対応する一つと関係付けられ、および、
    対応するタイプの計算グラフにそれぞれが関係付けられる一つ以上のデータストリームを処理するステップであって、前記データストリームそれぞれに対して、
    前記対応する計算グラフに対するグラフテンプレートからグラフインスタンスを形成するステップ、
    前記グラフインスタンスの前記各グラフ要素に対して、計算リソースの対応するプールから、計算リソースを割り当てるステップ、および、
    前記グラフインスタンスにより前記データストリームを処理するステップであって、前記割り当てた計算リソースを用いて、前記グラフインスタンスの前記グラフ要素と対応する前記計算を実行するステップを含む方法。
  2. 前記グラフ要素は前記計算グラフの頂点を含む、請求項1の方法。
  3. 前記グラフ要素は前記計算グラフのリンクを含む、請求項1の方法。
  4. 前記計算リソースはプロセスを含む、請求項1の方法。
  5. 前記計算リソースはプロセススレッドを含む、請求項1の方法。
  6. 前記計算リソースはデータベースへの連結を含む、請求項1の方法。
  7. 前記一つ以上のグラフテンプレートを提供するステップは、揮発性メモリ内に前記テンプレートを格納することを含む、請求項1の方法。
  8. 前記一つ以上のグラフテンプレートを提供するステップは、不揮発性メモリ内に前記テンプレートを格納することを含む、請求項1の方法。
  9. 前記グラフテンプレートから前記グラフインスタンスを形成するステップは、揮発性メモリ内に前記インスタンスを形成することを含む、請求項1の方法。
  10. 前記グラフインスタンスを形成するステップは、前記メモリの一部を前記グラフインスタンスに割り当てるステップと前記メモリのこの部分に前記グラフテンプレートをコピーするステップとを含む、請求項9の方法。
  11. 計算リソースを割り当てるステップは、前記リソースのそれぞれを、前記データストリーム上の計算の一部に対して動的に割り当てるステップを含む、請求項1の方法。
  12. 前記計算の一部を処理するために前記リソースのそれぞれを動的に割り当てるステップは、前記計算の一部に対する総ての入力のうちの少なくともある部分が利用可能であるときに生じる、請求項11の方法。
  13. 前記計算の一部を処理するために前記リソースのそれぞれを動的に割り当てるステップは、前記計算の一部に対する総ての入力が利用可能であるときに生じる、請求項12の方法。
  14. 前記リソースそれぞれを動的に割り当てるステップは、前記グラフ要素から前記計算リソースの割り当てを停止するステップを含む、請求項11の方法。
  15. 計算リソースを割り当てるステップは、総ての前記データストリームを処理するために前記グラフ要素に対して前記計算リソースのそれぞれを割り当てるステップを含む、請求項1の方法。
  16. グラフ要素に割り当てられた前記計算リソースを解放するステップと、前記グラフのインスタンスを破棄するステップとを更に含む、請求項1の方法。
  17. 前記一つ以上のデータストリームを処理するステップは、異なる計算グラフとそれぞれが関係付けられる少なくとも二つのデータストリームを同時に処理するステップを含む、請求項1の方法。
  18. 前記異なる計算グラフそれぞれのインスタンスの少なくとも一つのグラフ要素は、計算リソースの同一の対応するプールと関係付けられる、請求項17の方法。
  19. 計算リソースの前記同一の対応するプールの少なくとも一つの計算リソースは、前記異なる計算グラフの前記インスタンスの前記少なくとも一つのグラフ要素に、異なる時点において割り当てられる、請求項18の方法。
  20. コンピュータ可読媒体に格納され、グラフに基づく計算を処理するためのコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータシステムが、
    異なるタイプの計算グラフにそれぞれが関係付けられる一つ以上のグラフテンプレートを提供し、前記各計算グラフは、対応する計算とそれぞれが関係付けられる相当数のグラフ要素を含み、
    計算リソースの一つ以上のプールを形成し、計算の前記各グラフ要素が計算リソースの前記プールの対応する一つと関係付けられており、および、
    対応するタイプの計算グラフにそれぞれが関係付けられる一つ以上のデータストリームを処理し、前記データストリームそれぞれに対して、
    計算リソースの前記対応する計算グラフに対するグラフテンプレートからグラフインスタンスを形成し、
    前記グラフインスタンスの前記各グラフ要素に対して、対応するプールから計算リソースを割り当て、および、
    前記グラフインスタンスにより前記データストリームを処理し、前記割り当てた計算リソースを用いて、前記グラフインスタンスの前記グラフ要素と対応する前記計算を実行するようにさせる命令を含むコンピュータプログラム。
  21. グラフに基づく計算を処理するためシステムであって、
    異なるタイプのグラフに基づく計算とそれぞれが関係付けられ且つデータ記憶装置に格納された一つ以上のグラフテンプレートであって、前記各テンプレートは、対応する計算とそれぞれが関係付けられる相当数のグラフ要素を備え、
    計算リソースの一つ以上のプールを形成する手段であって、グラフテンプレートの前記各グラフ要素は、計算リソースの前記プールの対応する一つと関係付けられ、および、
    対応するタイプのグラフに基づく計算にそれぞれが関係付けられる一つ以上のデータストリームを処理する手段であって、それぞれの前記データストリームに対して、
    前記対応するタイプのグラフに基づく計算と関係付けられるグラフテンプレートからグラフインスタンスを形成し、前記グラフインスタンスは、前記グラフテンプレートの前記グラフ要素と対応するグラフ要素を有し、
    前記グラフインスタンスの前記各グラフ要素に対して、計算リソースの前記プールの対応する一つから、計算リソースを割り当て、および、
    前記グラフインスタンスにより前記データストリームを処理し、前記割り当てた計算リソースを用いて、前記グラフインスタンスの前記グラフ要素に対応する計算を実行する手段を含むシステム。
JP2004543637A 2002-10-10 2003-10-07 グラフに基づく計算の起動および制御 Pending JP2006504160A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/268,509 US7167850B2 (en) 2002-10-10 2002-10-10 Startup and control of graph-based computation
PCT/US2003/032099 WO2004034322A1 (en) 2002-10-10 2003-10-07 Startup and control of graph-based computation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010126720A Division JP5475553B2 (ja) 2002-10-10 2010-06-02 グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム

Publications (1)

Publication Number Publication Date
JP2006504160A true JP2006504160A (ja) 2006-02-02

Family

ID=32068581

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004543637A Pending JP2006504160A (ja) 2002-10-10 2003-10-07 グラフに基づく計算の起動および制御
JP2010126720A Expired - Lifetime JP5475553B2 (ja) 2002-10-10 2010-06-02 グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010126720A Expired - Lifetime JP5475553B2 (ja) 2002-10-10 2010-06-02 グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム

Country Status (7)

Country Link
US (3) US7167850B2 (ja)
EP (2) EP1559069B1 (ja)
JP (2) JP2006504160A (ja)
AU (1) AU2003279228C1 (ja)
CA (1) CA2501876C (ja)
HK (1) HK1081306A1 (ja)
WO (1) WO2004034322A1 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100046198A (ko) * 2007-07-26 2010-05-06 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
JP2013506199A (ja) * 2009-09-25 2013-02-21 アビニシオ テクノロジー エルエルシー グラフベース・アプリケーションにおけるトランザクションの処理
US8484159B2 (en) 2005-06-27 2013-07-09 Ab Initio Technology Llc Managing metadata for graph-based computations
US8572236B2 (en) 2006-08-10 2013-10-29 Ab Initio Technology Llc Distributing services in graph-based computations
US8875145B2 (en) 2010-06-15 2014-10-28 Ab Initio Technology Llc Dynamically loading graph-based computations
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9886319B2 (en) 2009-02-13 2018-02-06 Ab Initio Technology Llc Task managing application for performing tasks based on messages received from a data processing application initiated by the task managing application
US9886241B2 (en) 2013-12-05 2018-02-06 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167850B2 (en) * 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
CA2698265C (en) * 2007-09-20 2017-08-29 Craig W. Stanfill Managing data flows in graph-based computations
US8112742B2 (en) * 2008-05-12 2012-02-07 Expressor Software Method and system for debugging data integration applications with reusable synthetic data values
JP5525541B2 (ja) 2008-12-02 2014-06-18 アビニシオ テクノロジー エルエルシー データ管理システム内のデータセットのインスタンスのマッピング
WO2010093933A1 (en) * 2009-02-13 2010-08-19 Ab Initio Technology Llc Communicating with data storage systems
US8205113B2 (en) * 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
AU2010295547B2 (en) * 2009-09-16 2015-05-07 Ab Initio Technology Llc Mapping dataset elements
US10845962B2 (en) * 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
AU2016200107B2 (en) * 2010-06-15 2017-11-09 Ab Initio Technology Llc Dynamically loading graph-based computations
US8655805B2 (en) 2010-08-30 2014-02-18 International Business Machines Corporation Method for classification of objects in a graph data stream
CA2814835C (en) 2010-10-25 2019-01-08 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
KR101872748B1 (ko) 2011-01-14 2018-06-29 아브 이니티오 테크놀로지 엘엘시 데이터 콜렉션에 대한 변경 관리 방법
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US9116759B2 (en) 2011-02-18 2015-08-25 Ab Initio Technology Llc Restarting data processing systems
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8935705B2 (en) * 2011-05-13 2015-01-13 Benefitfocus.Com, Inc. Execution of highly concurrent processing tasks based on the updated dependency data structure at run-time
JP5826390B2 (ja) * 2012-07-06 2015-12-02 株式会社日立製作所 転送方法およびグラフ処理システム
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US10565005B2 (en) * 2013-04-23 2020-02-18 Ab Initio Technology Llc Controlling tasks performed by a computing system
US9734040B2 (en) 2013-05-21 2017-08-15 Microsoft Technology Licensing, Llc Animated highlights in a graph representing an application
US20140189650A1 (en) * 2013-05-21 2014-07-03 Concurix Corporation Setting Breakpoints Using an Interactive Graph Representing an Application
CN105229617A (zh) * 2013-05-21 2016-01-06 肯赛里克斯公司 用于导航应用代码的图表
US8990777B2 (en) 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US9280841B2 (en) 2013-07-24 2016-03-08 Microsoft Technology Licensing, Llc Event chain visualization of performance data
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
EP3069267A4 (en) 2013-11-13 2017-09-27 Microsoft Technology Licensing, LLC Software component recommendation based on multiple trace runs
WO2015085291A1 (en) 2013-12-06 2015-06-11 Ab Initio Technology Llc Source code translation
US20150178052A1 (en) * 2013-12-17 2015-06-25 Atigeo Llc Automated experimentation platform
EP3191962B1 (en) 2014-07-18 2019-12-11 AB Initio Technology LLC Managing parameter sets
CN107077364B (zh) 2014-09-02 2021-06-04 起元科技有限公司 基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译
US9760406B2 (en) 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
AU2015312006B2 (en) 2014-09-02 2020-03-19 Ab Initio Technology Llc Managing invocation of tasks
SG11201701631QA (en) 2014-09-02 2017-03-30 Ab Initio Technology Llc Executing graph-based program specifications
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
CN106687919B (zh) 2014-09-02 2020-10-09 起元科技有限公司 用于控制多个组件的执行的方法、系统和计算机可读介质
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
EP3234659A1 (en) * 2014-12-18 2017-10-25 Exxonmobil Upstream Research Company Scalable scheduling of parallel iterative seismic jobs
GB2535230B (en) 2015-02-13 2019-05-08 Raptor Oil Ltd Dynamically adjustable data flow graph for digital signal processing
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10698878B2 (en) * 2015-03-06 2020-06-30 Hewlett Packard Enterprise Development Lp Graph update flush to a shared memory
US10521155B2 (en) 2015-09-29 2019-12-31 Hewlett Packard Enterprise Development Lp Application management data
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10275287B2 (en) 2016-06-07 2019-04-30 Oracle International Corporation Concurrent distributed graph processing system with self-balance
DE102018100730A1 (de) * 2017-01-13 2018-07-19 Evghenii GABUROV Ausführung von Berechnungsgraphen
US10318355B2 (en) 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US10534657B2 (en) 2017-05-30 2020-01-14 Oracle International Corporation Distributed graph processing system that adopts a faster data loading technique that requires low degree of communication
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
KR102444421B1 (ko) 2017-10-31 2022-09-16 아브 이니티오 테크놀로지 엘엘시 중복 작업 결과를 사용하는 컴퓨팅 클러스터 관리
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US11126657B2 (en) * 2018-06-11 2021-09-21 Alibaba Group Holding Limited Efficient in-memory representation of computation graph for fast serialization and comparison
US10978176B2 (en) 2018-06-29 2021-04-13 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11461143B2 (en) * 2020-09-08 2022-10-04 Megh Computing, Inc. Computing resource allocation with subgraph isomorphism
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations
CN115982207B (zh) * 2023-03-20 2023-07-28 华侨大学 银行交易资金回流多线程并行检测方法及系统

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972314A (en) * 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US5161216A (en) * 1989-03-08 1992-11-03 Wisconsin Alumni Research Foundation Interprocedural slicing of computer programs using dependence graphs
US5323452A (en) * 1990-12-18 1994-06-21 Bell Communications Research, Inc. Visual programming of telephone network call processing logic
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US5692168A (en) 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
US5805462A (en) * 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
JP3154942B2 (ja) 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5630047A (en) 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JP3258228B2 (ja) 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6330008B1 (en) * 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) * 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US6088716A (en) * 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6437796B2 (en) * 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6480876B2 (en) * 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6675189B2 (en) * 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6314114B1 (en) * 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
US6259988B1 (en) * 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6608628B1 (en) * 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6449711B1 (en) * 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
US6581102B1 (en) * 1999-05-27 2003-06-17 International Business Machines Corporation System and method for integrating arbitrary isochronous processing algorithms in general media processing systems
US20020129340A1 (en) * 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US6879946B2 (en) * 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
US6584581B1 (en) * 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
US6848100B1 (en) * 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
US7062483B2 (en) * 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6813761B1 (en) * 2000-06-30 2004-11-02 Microsoft Corporation Methods for enhancing flow analysis
US6496961B2 (en) * 2000-10-27 2002-12-17 Nec Usa, Inc. Dynamic detection and removal of inactive clauses in SAT with application in image computation
US7082386B2 (en) * 2001-02-21 2006-07-25 International Business Machines Corporation Generalized software modeling tool
US6651234B2 (en) * 2001-04-06 2003-11-18 Nec Corporation Partition-based decision heuristics for SAT and image computation using SAT and BDDs
US7076804B2 (en) * 2001-05-11 2006-07-11 International Business Machines Corporation Automated program resource identification and association
GB2376094A (en) * 2001-05-30 2002-12-04 Ibm Flexible navigation of a workflow graph in a data processing system
US7165030B2 (en) * 2001-09-17 2007-01-16 Massachusetts Institute Of Technology Concatenative speech synthesis using a finite-state transducer
US7130484B2 (en) * 2001-10-15 2006-10-31 Jonas August Biased curve indicator random field filters for enhancement of contours in images
US7085426B2 (en) * 2001-10-15 2006-08-01 Jonas August Volterra filters for enhancement of contours in images
DE10152213B4 (de) * 2001-10-23 2006-04-27 Onespin Solutions Gmbh Verfahren zur Verifikation digitaler arithmetischer Schaltungen mittels eines Äquivalenzvergleiches
US20030174165A1 (en) * 2002-03-18 2003-09-18 Barney Rock D. System and method for rendering a directed graph
US7167850B2 (en) * 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
WO2005001721A1 (en) * 2003-06-24 2005-01-06 Bae Systems Plc A method, tool and system for increasing the efficiency of a design process

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158797B2 (en) 2005-06-27 2015-10-13 Ab Initio Technology Llc Managing metadata for graph-based computations
US8484159B2 (en) 2005-06-27 2013-07-09 Ab Initio Technology Llc Managing metadata for graph-based computations
US8572236B2 (en) 2006-08-10 2013-10-29 Ab Initio Technology Llc Distributing services in graph-based computations
JP2015008016A (ja) * 2006-08-10 2015-01-15 アビニシオ テクノロジー エルエルシー グラフ型計算の分散サービス
JP2016106329A (ja) * 2007-07-26 2016-06-16 アビニシオ テクノロジー エルエルシー エラーハンドリングをもつトランザクションのグラフ型計算
KR101758670B1 (ko) 2007-07-26 2017-07-18 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
US8706667B2 (en) 2007-07-26 2014-04-22 Ab Initio Technology Llc Transactional graph-based computation with error handling
JP2014130647A (ja) * 2007-07-26 2014-07-10 Ab Initio Technology Llc エラーハンドリングをもつトランザクションのグラフ型計算
KR101635945B1 (ko) * 2007-07-26 2016-07-04 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
KR20100046198A (ko) * 2007-07-26 2010-05-06 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
JP2010534891A (ja) * 2007-07-26 2010-11-11 アビニシオ テクノロジー エルエルシー エラーハンドリングをもつトランザクションのグラフ型計算
US9886319B2 (en) 2009-02-13 2018-02-06 Ab Initio Technology Llc Task managing application for performing tasks based on messages received from a data processing application initiated by the task managing application
US10528395B2 (en) 2009-02-13 2020-01-07 Ab Initio Technology Llc Task managing application for performing tasks based on messages received from a data processing application initiated by the task managing application
JP2013506199A (ja) * 2009-09-25 2013-02-21 アビニシオ テクノロジー エルエルシー グラフベース・アプリケーションにおけるトランザクションの処理
US8667329B2 (en) 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8875145B2 (en) 2010-06-15 2014-10-28 Ab Initio Technology Llc Dynamically loading graph-based computations
US9753751B2 (en) 2010-06-15 2017-09-05 Ab Initio Technology Llc Dynamically loading graph-based computations
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9886241B2 (en) 2013-12-05 2018-02-06 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10180821B2 (en) 2013-12-05 2019-01-15 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10318252B2 (en) 2013-12-05 2019-06-11 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation

Also Published As

Publication number Publication date
EP1559069A4 (en) 2007-12-12
CA2501876C (en) 2012-04-10
AU2003279228A1 (en) 2004-05-04
EP2284774A1 (en) 2011-02-16
EP1559069B1 (en) 2015-09-16
WO2004034322A1 (en) 2004-04-22
US20070022077A1 (en) 2007-01-25
EP1559069A1 (en) 2005-08-03
AU2003279228B2 (en) 2009-05-21
US7577628B2 (en) 2009-08-18
CA2501876A1 (en) 2004-04-22
US7167850B2 (en) 2007-01-23
JP5475553B2 (ja) 2014-04-16
JP2010244563A (ja) 2010-10-28
HK1081306A1 (zh) 2006-05-12
US20070179923A1 (en) 2007-08-02
US7636699B2 (en) 2009-12-22
AU2003279228C1 (en) 2009-10-29
US20040073529A1 (en) 2004-04-15

Similar Documents

Publication Publication Date Title
JP5475553B2 (ja) グラフに基づく計算の実行方法、当該方法を実行させる命令を格納するコンピュータ可読記憶媒体、並びに当該方法を実行するためのシステム
JP6177179B2 (ja) エラーハンドリングをもつトランザクションのグラフ型計算
JP5897816B2 (ja) 依存性グラフのパラメータのスコーピング
US7103625B1 (en) Virtual resource ID mapping
US8484175B2 (en) Memory transaction grouping
JPH05216692A (ja) プログラム実行を管理する方法およびシステム
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
US6985976B1 (en) System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
US10768979B2 (en) Peer-to-peer distributed computing system for heterogeneous device types
US6748503B1 (en) System and method facilitating unmanaged code participation in garbage collection
AU2007202782B2 (en) Startup and control of graph-based computation
JP3278457B2 (ja) プログラム実行制御装置及びプログラム実行制御方法
US20050081205A1 (en) Computer-implemented system and method for managing service agents
JPH0981383A (ja) オブジェクト指向計算機システム及びオブジェクト指向プログラムのコンパイラ
JPH0283730A (ja) 可変長動的コモンの実現方式
JPH05342007A (ja) オブジェクト指向コンピュータシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091002

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091022

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091105

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100602

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100624

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100625

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100914

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20101015

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20120316

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120419