特許第5940503号(P5940503)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アビニシオ テクノロジー エルエルシーの特許一覧

特許5940503グラフ型計算における計算リソースの管理法
<>
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000002
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000003
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000004
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000005
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000006
  • 特許5940503-グラフ型計算における計算リソースの管理法 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5940503
(24)【登録日】2016年5月27日
(45)【発行日】2016年6月29日
(54)【発明の名称】グラフ型計算における計算リソースの管理法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20160616BHJP
【FI】
   G06F9/46 462Z
   G06F9/46 465Z
【請求項の数】102
【外国語出願】
【全頁数】31
(21)【出願番号】特願2013-201721(P2013-201721)
(22)【出願日】2013年9月27日
(62)【分割の表示】特願2009-511202(P2009-511202)の分割
【原出願日】2007年5月15日
(65)【公開番号】特開2014-29718(P2014-29718A)
(43)【公開日】2014年2月13日
【審査請求日】2013年10月28日
(31)【優先権主張番号】11/434,623
(32)【優先日】2006年5月16日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(72)【発明者】
【氏名】ホーリー ジョセフ スケフィントン サード
(72)【発明者】
【氏名】シャーブ イゴール
(72)【発明者】
【氏名】ヴィシュニアク エフライム メリウェザー
【審査官】 大塚 俊範
(56)【参考文献】
【文献】 特表2003−516581(JP,A)
【文献】 青柳 洋一 Yoichi Aoyagi,異粒度系における静的評価に基づくタスク割付方式 Task Allocation Method Based on Static Evaluation for Heterogeneous Grained System,情報処理学会研究報告 Vol.97 No.78 IPSJ SIG Notes,日本,社団法人情報処理学会 Information Processing Society of Japan,1997年 8月22日,第97巻,第7〜12頁
【文献】 朝倉 宏一 Koichi Asakura,並列化コンパイラ・ツールキットにおけるタスク生成処理 Task Generation Method in Parallelizing Compiler Toolkit,電子情報通信学会技術研究報告 Vol.101 No.3 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2001年 4月 6日,第101巻,第33〜40頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
グラフ型計算を実行するための方法であって、
コンピュータが、データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ;
前記コンピュータが、前記データ処理要素を複数のセットに分割するステップであって、少なくとも第1のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含むステップ;
前記コンピュータが、それぞれのセットに異なる計算リソースを割り当てるステップであって、1つのセットに割当てられる少なくとも1つの計算リソースが1つのプロセスを含むステップ;
前記コンピュータが、前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含むステップであって、前記データ処理要素の前記第1のセットに割り当てられた前記計算リソースの1つは、上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流データ処理要素と関係付けられる関数を呼び出すことにより、該下流データ処理要素の入力へと通過させ、前記上流データ処理要素及び前記下流データ処理要素は、前記データ処理要素の前記第1のセット内にあるステップ;及び
前記第1のセット内に上流データ処理要素を持たない前記第1のセット内のデータ処理要素に対する制御メッセージの受信に応答して、前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播するステップ;
を含む方法。
【請求項2】
請求項1に記載の方法において、
前記リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられる、
方法。
【請求項3】
請求項1に記載の方法において、
前記データを処理するステップは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するステップを含む、
方法。
【請求項4】
請求項1に記載の方法において、
前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
方法。
【請求項5】
請求項4に記載の方法において、
前記上流データ処理要素と関係付けられる前記関数及び前記下流データ処理要素と関係付けられる前記関数が、前記データ処理要素の第1のセットに割り当てられた前記計算リソースの同一のプロセスにより呼び出される、
方法。
【請求項6】
請求項1に記載の方法において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
方法。
【請求項7】
請求項1に記載の方法において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
方法。
【請求項8】
請求項1に記載の方法において、
前記サブグラフはツリーを含む、
方法。
【請求項9】
請求項1に記載の方法において、
セット内のデータ処理要素における、複数の入力を有する各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流データ処理要素の全てもまた前記セット内にある、
方法。
【請求項10】
請求項1に記載の方法において、
前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播することは、前記第1のセット内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、前記第1のセット内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記第1のセット内の外部に前記制御メッセージを伝播するステップを更に含む、
方法。
【請求項11】
請求項10に記載の方法において、
前記第1のセット内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
方法。
【請求項12】
請求項1に記載の方法において、
前記データ処理要素は、特定の並列処理段数を有する、
方法。
【請求項13】
請求項12に記載の方法において、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
方法。
【請求項14】
請求項1に記載の方法において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
方法。
【請求項15】
請求項14に記載の方法において、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
方法。
【請求項16】
グラフ型計算を実行するためのコンピュータプログラムを格納するコンピュータ読み取り可能記憶媒体であって、前記コンピュータプログラムは、
複数のデータ処理要素が複数のリンク要素により結合される計算グラフの仕様を受け取るステップ;
前記複数のデータ処理要素を複数のセットに分割するステップであって、少なくとも第1のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含むステップ;
それぞれのセットに異なる計算リソースを割り当てるステップであって、1つのセットに割当てられる少なくとも1つの計算リソースが1つのプロセスを含むステップ;
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含むステップであって、前記データ処理要素の前記第1のセットに割り当てられた前記計算リソースの1つは、上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流データ処理要素と関係付けられる関数を呼び出すことにより、該下流データ処理要素の入力へと通過させ、前記上流データ処理要素及び前記下流データ処理要素は、前記データ処理要素の前記第1のセット内にあるステップ;及び
前記第1のセット内に上流データ処理要素を持たない前記第1のセット内のデータ処理要素に対する制御メッセージの受信に応答して、前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播するステップ;
をコンピュータシステムに実行させる命令を含む、コンピュータ読み取り可能記憶媒体。
【請求項17】
グラフ型計算を実行するためのシステムであって、
予備実行モジュールであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取り、
前記データ処理要素を複数のセットに分割し、第1のセットは、前記計算グラフの連結有向サブグラフを形成する複数のデータ処理要素を含む、
ための電子回路を含む予備実行モジュールと、
実行モジュールであって、
それぞれのセットに異なる計算リソースを割り当て、1つのセットに割当てられる少なくとも1つの計算リソースが1つのプロセスを含み、
前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含む前記計算グラフに従ってデータを処理し、前記データ処理要素の前記第1のセットに割り当てられた前記計算リソースの1つは、上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流データ処理要素と関係付けられる関数を呼び出すことにより、該下流データ処理要素の入力へと通過させ、前記上流データ処理要素及び前記下流データ処理要素は、前記データ処理要素の前記第1のセット内にあり、
前記第1のセット内に上流データ処理要素を持たない前記第1のセット内のデータ処理要素に対する制御メッセージの受信に応答して、前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播する、
ための電子回路を含む実行モジュールと、
を含むシステム。
【請求項18】
グラフ型計算を実行するためのシステムであって、
データ処理要素がリンク要素により結合される計算グラフの仕様を受け取るための手段;
複数の前記データ処理要素を複数のセットに分割するための手段であって、第1のセットは、連結有向サブグラフを形成する複数の前記データ処理要素を含む手段;
それぞれのセットに異なる計算リソースを割り当てるための手段であって、1つのセットに割当てられる少なくとも1つの計算リソースが1つのプロセスを含む手段;
前記計算グラフに従ってデータを処理するための手段であって、前記割り当てられた計算リソースを用いて、前記データ処理要素と対応する計算を実行することを含む手段であって、前記データ処理要素の前記第1のセットに割り当てられた前記計算リソースの1つは、上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、下流データ処理要素と関係付けられる関数を呼び出すことにより、該下流データ処理要素の入力へと通過させ、前記上流データ処理要素及び前記下流データ処理要素は、前記データ処理要素の前記第1のセット内にある手段;及び
前記第1のセット内に上流データ処理要素を持たない前記第1のセット内のデータ処理要素に対する制御メッセージの受信に応答して、前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播する手段;
を含むシステム。
【請求項19】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられる、
コンピュータ読み取り可能記憶媒体。
【請求項20】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するステップを含む、
コンピュータ読み取り可能記憶媒体。
【請求項21】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
コンピュータ読み取り可能記憶媒体。
【請求項22】
請求項21に記載のコンピュータ読み取り可能記憶媒体において、
前記上流データ処理要素と関係付けられる前記関数及び前記下流データ処理要素と関係付けられる前記関数が、前記データ処理要素の第1のセットに割り当てられた前記計算リソースの同一のプロセスにより呼び出される、
コンピュータ読み取り可能記憶媒体。
【請求項23】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
コンピュータ読み取り可能記憶媒体。
【請求項24】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するステップを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
コンピュータ読み取り可能記憶媒体。
【請求項25】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記サブグラフはツリーを含む、
コンピュータ読み取り可能記憶媒体。
【請求項26】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
セット内のデータ処理要素における、複数の入力を有する各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流データ処理要素の全てもまた前記セット内にある、
コンピュータ読み取り可能記憶媒体。
【請求項27】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播することは、前記第1のセット内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、前記第1のセット内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記第1のセット内の外部に前記制御メッセージを伝播するステップを更に含む、
コンピュータ読み取り可能記憶媒体。
【請求項28】
請求項27に記載のコンピュータ読み取り可能記憶媒体において、
前記第1のセット内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
コンピュータ読み取り可能記憶媒体。
【請求項29】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素は、特定の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項30】
請求項29に記載のコンピュータ読み取り可能記憶媒体において、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項31】
請求項16に記載のコンピュータ読み取り可能記憶媒体において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
コンピュータ読み取り可能記憶媒体。
【請求項32】
請求項31に記載のコンピュータ読み取り可能記憶媒体において、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
コンピュータ読み取り可能記憶媒体。
【請求項33】
請求項17に記載のシステムにおいて、
前記リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられる、
システム。
【請求項34】
請求項17に記載のシステムにおいて、
前記データを処理することは、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行することを含む、
システム。
【請求項35】
請求項17に記載のシステムにおいて、
前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項36】
請求項35に記載のシステムにおいて、
前記上流データ処理要素と関係付けられる前記関数及び前記下流データ処理要素と関係付けられる前記関数が、前記データ処理要素の第1のセットに割り当てられた前記計算リソースの同一のプロセスにより呼び出される、
システム。
【請求項37】
請求項17に記載のシステムにおいて、
前記データを処理することは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納することを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
システム。
【請求項38】
請求項17に記載のシステムにおいて、
前記データを処理することは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納することを更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
システム。
【請求項39】
請求項17に記載のシステムにおいて、
前記サブグラフはツリーを含む、
システム。
【請求項40】
請求項17に記載のシステムにおいて、
セット内のデータ処理要素における、複数の入力を有する各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流データ処理要素の全てもまた前記セット内にある、
システム。
【請求項41】
請求項17に記載のシステムにおいて、
前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播することは、前記第1のセット内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、前記第1のセット内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記第1のセット内の外部に前記制御メッセージを伝播するための電子回路を更に含む、
システム。
【請求項42】
請求項41に記載のシステムにおいて、
前記第1のセット内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
システム。
【請求項43】
請求項17に記載のシステムにおいて、
前記データ処理要素は、特定の並列処理段数を有する、
システム。
【請求項44】
請求項43に記載のシステムにおいて、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
システム。
【請求項45】
請求項17に記載のシステムにおいて、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
システム。
【請求項46】
請求項45に記載のシステムにおいて、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
システム。
【請求項47】
請求項18に記載のシステムにおいて、
前記リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられる、
システム。
【請求項48】
請求項18に記載のシステムにおいて、
前記データを処理するための手段は、前記複数のセットの内の少なくとも一つのセットに対し、そのセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内の前記データ処理要素と対応する計算を実行するための手段を含む、
システム。
【請求項49】
請求項18に記載のシステムにおいて、
前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項50】
請求項49に記載のシステムにおいて、
前記上流データ処理要素と関係付けられる前記関数及び前記下流データ処理要素と関係付けられる前記関数が、前記データ処理要素の第1のセットに割り当てられた前記計算リソースの同一のプロセスにより呼び出される、
システム。
【請求項51】
請求項18に記載のシステムにおいて、
前記データを処理するための手段は、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するための手段を更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素に従って処理されるデータ量を含む、
システム。
【請求項52】
請求項18に記載のシステムにおいて、
前記データを処理するための手段は、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するための手段を更に含み、
前記個々のアクティビティ量は、前記個々のデータ処理要素と対応する計算を実行するセットに割り当てられた計算リソースが費やす時間量を含む、
システム。
【請求項53】
請求項18に記載のシステムにおいて、
前記サブグラフはツリーを含む、
システム。
【請求項54】
請求項18に記載のシステムにおいて、
セット内のデータ処理要素における、複数の入力を有する各データ処理要素に対して、そのデータ処理要素の入力にリンクされる前記上流データ処理要素の全てもまた前記セット内にある、
システム。
【請求項55】
請求項18に記載のシステムにおいて、
前記第1のセット内の他のデータ処理要素のそれぞれに前記制御メッセージを伝播することは、前記第1のセット内の他のデータ処理要素それぞれと関係付けられる関数を呼び出し、前記第1のセット内の前記各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、前記第1のセット内の外部に前記制御メッセージを伝播するための手段を更に含む、
システム。
【請求項56】
請求項55に記載のシステムにおいて、
前記第1のセット内の前記データ処理要素毎の前記状態情報は、単一のファイルに保存される、
システム。
【請求項57】
請求項18に記載のシステムにおいて、
前記データ処理要素は、特定の並列処理段数を有する、
システム。
【請求項58】
請求項57に記載のシステムにおいて、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の並列処理段数を有する、
システム。
【請求項59】
請求項18に記載のシステムにおいて、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
システム。
【請求項60】
請求項59に記載のシステムにおいて、
1つのセット内の複数の前記データ処理要素のそれぞれは、同一の実行段階と関係付けられる、
システム。
【請求項61】
グラフ型計算を実行するための方法であって、
コンピュータが、データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ;
各データ処理要素が折畳み可能であるか折畳み不可能であるかを決定するステップであって、全ての折畳み可能データ処理要素は、前記折畳み可能データ処理要素の対応する計算を呼び出すために使用され得る特徴を含み、全ての折畳み不可能データ処理要素は、前記特徴と互換性がなく、前記折畳み不可能データ処理要素の対応する計算を呼び出すために前記特徴を使用することができないステップ;
前記折畳み可能データ処理要素をデータ処理要素の1つ以上のセットに分割するステップであって、前記データ処理要素のセットの少なくとも1つは、複数の前記折畳み可能データ処理要素を含むステップ;
前記データ処理要素の各セットに前記コンピュータの異なる計算リソースを割り当てるステップ;
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含み、前記データ処理要素のセットの1つに割り当てられた前記計算リソースの1つは、第1の折畳み可能上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、折畳み可能下流データ処理要素と関係付けられる関数を呼び出すことにより、該折畳み可能下流データ処理要素の入力へと通過させ、前記第1の折畳み可能上流データ処理要素及び前記折畳み可能下流データ処理要素は、前記データ処理要素の同一のセット内にあるステップ;
を含む方法。
【請求項62】
請求項61に記載の方法において、
少なくとも1つのデータ処理要素が折畳み可能であり、少なくとも1つデータ処理要素が折畳み不可能であることを決定するステップを更に含む、
方法。
【請求項63】
請求項61に記載の方法において、
前記データ処理要素のセットに割り当てられる計算リソースの少なくとも1つが1つのプロセスを含む、
方法。
【請求項64】
請求項61に記載の方法において、
前記データ処理要素の各セット内の各データ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するステップを更に含む、
方法。
【請求項65】
請求項61に記載の方法において、
前記データを処理するステップは、前記データ処理要素のセットの少なくとも1つに対し、前記データ処理要素のセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、前記データ処理要素のセット内の前記データ処理要素と対応する計算を実行するステップを含む、
方法。
【請求項66】
請求項61に記載の方法において、
前記下流データ処理要素と関係付けられた前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
方法。
【請求項67】
請求項66に記載の方法において、
前記上流データ処理要素と関係付けられた前記関数を呼び出すプロセスは、前記下流データ処理要素と関係付けられた前記関数を呼び出すプロセスである、
方法。
【請求項68】
請求項61に記載の方法において、
複数の入力を有する各データ処理要素のセット内のどのデータ処理要素についても、当該データ処理要素の入力にリンクされる前記上流データ処理要素の全てが、前記データ処理要素のセット内にもある、
方法。
【請求項69】
請求項61に記載の方法において、
前記データ処理要素のそれぞれは、特定の並列処理段数を有する、
方法。
【請求項70】
請求項69に記載の方法において、
前記データ処理要素のセット内の全てのデータ処理要素は、同一の並列処理段数を有する、
方法。
【請求項71】
請求項61に記載の方法において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
方法。
【請求項72】
請求項71に記載の方法において、
前記データ処理要素のセット内のデータ処理要素のそれぞれは、同一の実行段階と関係付けられる、
方法。
【請求項73】
請求項61に記載の方法において、
前記計算グラフを分析して、前記データ処理要素の特徴に基づく制約を用いて、どのデータ処理要素がデータ処理要素の同一のセットに分割されるべきかを決定するステップを更に含む、
方法。
【請求項74】
請求項73に記載の方法において、
前記制約は、どのデータ処理要素が折畳み可能であり、どのデータ処理要素が折畳み不可能であるかの制約を含む、
方法。
【請求項75】
請求項73に記載の方法において、
予備実行モジュールが、前記計算グラフを解析して、前記グラフ型計算が実行される前に、どのデータ処理要素がデータ処理要素の同一のセットに分割されるべきかを決定する、
方法。
【請求項76】
請求項73に記載の方法において、
前記データ処理要素の各セットを決定するステップは、折畳み可能ルートデータ処理要素を決定するステップ、及び前記セット内に既にある折畳み可能データ処理要素から直接下流にあるどの折畳み可能データ処理要素も前記セット内にあるように、追加のデータ処理要素を決定するステップを含む、
方法。
【請求項77】
グラフ型計算を実行するためのコンピュータプログラムを格納するコンピュータ読み取り可能記憶媒体であって、前記コンピュータプログラムは、
データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップであって、リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられるステップ;
各データ処理要素が折畳み可能であるか折畳み不可能であるかを決定するステップであって、全ての折畳み可能データ処理要素は、前記折畳み可能データ処理要素の対応する計算を呼び出すために使用され得る特徴を含み、全ての折畳み不可能データ処理要素は、前記特徴と互換性がなく、前記折畳み不可能データ処理要素の対応する計算を呼び出すために前記特徴を使用することができないステップ;
前記折畳み可能データ処理要素をデータ処理要素の1つ以上のセットに分割するステップであって、前記データ処理要素のセットの少なくとも1つは、複数の前記折畳み可能データ処理要素を含むステップ;
前記データ処理要素の各セットコンピュータシステムの異なる計算リソースを割り当てるステップ;
前記計算グラフに従ってデータを処理するステップであって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含み、前記データ処理要素のセットの1つに割り当てられた前記計算リソースの1つは、第1の折畳み可能上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、折畳み可能下流データ処理要素と関係付けられる関数を呼び出すことにより、該折畳み可能下流データ処理要素の入力へと通過させ、前記第1の折畳み可能上流データ処理要素及び前記折畳み可能下流データ処理要素は、前記データ処理要素の同一のセット内にあるステップ;
前記コンピュータシステムに実行させる命令を含む、コンピュータ読み取り可能記憶媒体。
【請求項78】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記コンピュータプログラムは、少なくとも1つのデータ処理要素が折畳み可能であり、少なくとも1つデータ処理要素が折畳み不可能であることを決定するための命令を更に含む、
コンピュータ読み取り可能記憶媒体。
【請求項79】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素のセットに割り当てられる計算リソースの少なくとも1つが1つのプロセスを含む、
コンピュータ読み取り可能記憶媒体。
【請求項80】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記コンピュータプログラムは、前記データ処理要素の各セット内の各データ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を格納するための命令を更に含む、
コンピュータ読み取り可能記憶媒体。
【請求項81】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記データを処理するステップは、前記データ処理要素のセットの少なくとも1つに対し、前記データ処理要素のセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、前記データ処理要素のセット内の前記データ処理要素と対応する計算を実行するステップを含む、
コンピュータ読み取り可能記憶媒体。
【請求項82】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記下流データ処理要素と関係付けられた前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
コンピュータ読み取り可能記憶媒体。
【請求項83】
請求項82に記載のコンピュータ読み取り可能記憶媒体において、
前記上流データ処理要素と関係付けられた前記関数を呼び出すプロセスは、前記下流データ処理要素と関係付けられた前記関数を呼び出すプロセスである、
コンピュータ読み取り可能記憶媒体。
【請求項84】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
複数の入力を有する各データ処理要素のセット内のどのデータ処理要素についても、当該データ処理要素の入力にリンクされる前記上流データ処理要素の全てが、前記データ処理要素のセット内にもある、
コンピュータ読み取り可能記憶媒体。
【請求項85】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素のそれぞれは、特定の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項86】
請求項85に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素のセット内の全てのデータ処理要素は、同一の並列処理段数を有する、
コンピュータ読み取り可能記憶媒体。
【請求項87】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記計算グラフの仕様は、複数の前記データ処理要素のそれぞれと関係付けられる実行段階を示す、
コンピュータ読み取り可能記憶媒体。
【請求項88】
請求項87に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素のセット内のデータ処理要素のそれぞれは、同一の実行段階と関係付けられる、
コンピュータ読み取り可能記憶媒体。
【請求項89】
請求項77に記載のコンピュータ読み取り可能記憶媒体において、
前記計算グラフを分析して、前記データ処理要素の特徴に基づく制約を用いて、どのデータ処理要素がデータ処理要素の同一のセットに分割されるべきかを決定するステップを更に含む、
コンピュータ読み取り可能記憶媒体。
【請求項90】
請求項89に記載のコンピュータ読み取り可能記憶媒体において、
前記制約は、どのデータ処理要素が折畳み可能であり、どのデータ処理要素が折畳み不可能であるかの制約を含む、
コンピュータ読み取り可能記憶媒体。
【請求項91】
請求項89に記載のコンピュータ読み取り可能記憶媒体において、
予備実行モジュールが、前記計算グラフを解析して、前記グラフ型計算が実行される前に、どのデータ処理要素がデータ処理要素の同一のセットに分割されるべきかを決定する、
コンピュータ読み取り可能記憶媒体。
【請求項92】
請求項89に記載のコンピュータ読み取り可能記憶媒体において、
前記データ処理要素の各セットを決定するステップは、折畳み可能ルートデータ処理要素を決定するステップ、及び前記セット内に既にある折畳み可能データ処理要素から直接下流にあるどの折畳み可能データ処理要素も前記セット内にあるように、追加のデータ処理要素を決定するステップを含む、
コンピュータ読み取り可能記憶媒体。
【請求項93】
グラフ型計算を実行するためのシステムであって、
予備実行モジュールであって、
データ処理要素がリンク要素により連結される計算グラフの仕様を受け取り、リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられ、
各データ処理要素が折畳み可能であるか折畳み不可能であるかを決定し、全ての折畳み可能データ処理要素は、前記折畳み可能データ処理要素の対応する計算を呼び出すために使用され得る特徴を含み、全ての折畳み不可能データ処理要素は、前記特徴と互換性がなく、前記折畳み不可能データ処理要素の対応する計算を呼び出すために前記特徴を使用することができず
前記折畳み可能データ処理要素をデータ処理要素の1つ以上のセットに分割し、前記データ処理要素のセットの少なくとも1つは、複数の前記折畳み可能データ処理要素を含む、
ための電子回路を含む予備実行モジュールと、
実行モジュールであって、
前記データ処理要素の各セットに前記システムの異なる計算リソースを割り当て、
前記計算グラフに従ってデータを処理し、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含み、前記データ処理要素のセットの1つに割り当てられた前記計算リソースの1つは、第1の折畳み可能上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、折畳み可能下流データ処理要素と関係付けられる関数を呼び出すことにより、該折畳み可能下流データ処理要素の入力へと通過させ、前記第1の折畳み可能上流データ処理要素及び前記折畳み可能下流データ処理要素は、前記データ処理要素の同一のセット内にある、
ための電子回路を含む実行モジュールと、
を含むシステム。
【請求項94】
請求項93に記載のシステムにおいて、
前記データ処理要素のセットに割り当てられる計算リソースの少なくとも1つが1つのプロセスを含む、
システム。
【請求項95】
請求項93に記載のシステムにおいて、
前記データを処理することは、前記データ処理要素のセットの少なくとも1つに対し、前記データ処理要素のセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、前記データ処理要素のセット内の前記データ処理要素と対応する計算を実行することを含む、
システム。
【請求項96】
請求項93に記載のシステムにおいて、
前記下流データ処理要素と関係付けられた前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項97】
請求項93に記載のシステムにおいて、
複数の入力を有する各データ処理要素のセット内のどのデータ処理要素についても、当該データ処理要素の入力にリンクされる前記上流データ処理要素の全てが、前記データ処理要素のセット内にもある、
システム。
【請求項98】
グラフ型計算を実行するためのシステムであって、
データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るための手段であって、リンク要素のそれぞれは、上流データ処理要素の出力から下流データ処理要素の入力へのデータの流れと関係付けられる手段;
各データ処理要素が折畳み可能であるか折畳み不可能であるかを決定する手段であって、全ての折畳み可能データ処理要素は、前記折畳み可能データ処理要素の対応する計算を呼び出すために使用され得る特徴を含み、全ての折畳み不可能データ処理要素は、前記特徴と互換性がなく、前記折畳み不可能データ処理要素の対応する計算を呼び出すために前記特徴を使用することができない手段;
前記折畳み可能データ処理要素をデータ処理要素の1つ以上のセットに分割する手段であって、前記データ処理要素のセットの少なくとも1つは、複数の前記折畳み可能データ処理要素を含む手段;
前記データ処理要素の各セットに前記システムの異なる計算リソースを割り当てる手段;及び
前記計算グラフに従ってデータを処理する手段であって、前記割り当てられた計算リソースを用いて、前記データ処理要素に対応する計算を実行することを含む手段であって、前記データ処理要素のセットの1つに割り当てられた前記計算リソースの1つは、第1の折畳み可能上流データ処理要素の出力からのデータの流れと関係付けられるワーク要素を、折畳み可能下流データ処理要素と関係付けられる関数を呼び出すことにより、該折畳み可能下流データ処理要素の入力へと通過させ、前記第1の折畳み可能上流データ処理要素及び前記折畳み可能下流データ処理要素は、前記データ処理要素の同一のセット内にある手段;
を含むシステム。
【請求項99】
請求項98に記載のシステムにおいて、
前記データ処理要素のセットに割り当てられる計算リソースの少なくとも1つが1つのプロセスを含む、
システム。
【請求項100】
請求項98に記載のシステムにおいて、
前記データを処理することは、前記データ処理要素のセットの少なくとも1つに対し、前記データ処理要素のセット内の前記データ処理要素を結合するリンク要素により定義されるシーケンスに従って、前記データ処理要素のセット内の前記データ処理要素と対応する計算を実行することを含む、
システム。
【請求項101】
請求項98に記載のシステムにおいて、
前記下流データ処理要素と関係付けられた前記関数は、前記上流データ処理要素と関係付けられる関数により前記ワーク要素が書き込まれた格納場所から、前記ワーク要素を読み出す、
システム。
【請求項102】
請求項98に記載のシステムにおいて、
複数の入力を有する各データ処理要素のセット内のどのデータ処理要素についても、当該データ処理要素の入力にリンクされる前記上流データ処理要素の全てが、前記データ処理要素のセット内にもある、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフ型計算(graph-based computations)における計算リソースの管理
に関する。
【背景技術】
【0002】
複雑な計算は有向グラフによるデータの流れとして表わせることがあり、有効グラフは、そのグラフの頂点と関係付けられる計算要素と、そのグラフのリンク(弧、辺)と対応する要素間のデータの流れと、を有する。そのようなグラフ型計算を実行するシステムが、米国特許第5,966,072号、「グラフとして表される計算の実行法」に記載されている。グラフ型計算を実行する一手法は、そのグラフの異なる頂点とそれぞれ関係付けられる幾つかのプロセスを実行し、そのグラフのリンクに従ってプロセス間の通信経路(コミュニケーションパス)を確立することである。例えば、通信経路は、指定されたパイプ、TCP/IP又はUNIX(登録商標)のドメインソケット、又は共有メモリを用いてプロセス間でデータを渡す。
【発明の概要】
【0003】
本発明の一側面は、概して、グラフ型計算を実行するための方法を特徴付ける。本方法は:データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ;データ処理要素を複数のセットに分割するステップであって、そのセットの内の少なくとも一つは複数のデータ処理要素を含む、ステップ;それぞれのセットに異なる計算リソースを割り当てるステップ;及び、その計算グラフに従ってデータを処理するステップであって前記割り当てられた計算リソースを用いて前記データ処理要素に対応する計算を実行するステップを含むステップ、を含む。
【0004】
本発明の別の側面は、概ね、グラフ型計算を実行するためのコンピュータが読み取り可能な媒体上に格納されるコンピュータープログラムを特徴付ける。本コンピュータープログラムは:データ処理要素がリンク要素により連結される計算グラフの仕様を受け取るステップ;データ処理要素を複数のセットに分割するステップであって、そのセットの内の少なくとも一つは複数のデータ処理要素を含むステップ;それぞれのセットに異なる計算リソースを割り当てるステップ;及び、その計算グラフに従ってデータを処理するステップであって前記割り当てられた計算リソースを用いて前記データ処理要素に対応する計算を実行するステップを含むステップ、をコンピューターシステムに実行させるための命令を含む。
【0005】
本発明の別の側面は、概ね、グラフ型計算を実行するためのシステムを特徴付ける。本システムは、複数のデータ処理要素がリンク要素により連結される計算グラフの仕様を受け取るとともに、その複数のデータ処理要素を複数のセットに分割し、その分割されたセットのうちの少なくとも一つのセットは複数のデータ処理要素を含むようにする、電子回路を含む予備実行モジュールを含む。本システムは、それぞれのセットに異なる計算リソースを割り当てるとともに、その割り当てられた計算リソースを用いてデータ処理要素に対応する計算を実行することを含む「計算グラフに基づくデータ処理を行う」、ための電子回路を含む実行モジュールを含む。
【0006】
本発明の態様には、以下の特徴の内の一つ以上を含めることができる。
【0007】
ひとつのセットに割り当てられた少なくとも一つの計算リソースは、処理(プロセス)を含む。
【0008】
それぞれのリンク要素は、上流のデータ処理要素の出力から下流のデータ処理要素の入力へのデータの流れと関係付けられる。
【0009】
データ処理ステップは、その複数のセットの内の少なくとも一つのセットに対して、そのセット内のデータ処理要素を結合するリンク要素により定義されるシーケンスに従って、そのセット内のデータ処理要素と対応する計算を実行するステップを含む。
【0010】
1つのセットに割り当てられた1つの計算リソースは、上流のデータ処理要素の出力からのデータの流れと関係付けられるワーク要素を、同上流のデータ処理要素と同じセット内の下流のデータ処理要素と関係付けられる機能を呼び出すことにより、同下流のデータ処理要素の入力へと通過させる。
【0011】
その関数は、その上流のデータ処理要素と関係付けられた関数によりワーク要素が書き込まれた格納場所から、ワーク要素を読み出す。
【0012】
その上流のデータ処理要素と関係付けられた関数及びその下流のデータ処理要素と関係付けられた関数は、同一プロセスにより呼び出される。
【0013】
データ処理ステップは、それぞれのセット内の個々のデータ処理要素と関係付けられる個々のアクティビティ量を特徴付ける情報を維持するステップを更に含む。
【0014】
その各アクティビティ量は、各データ処理要素に従って処理されるデータ量を含む。
【0015】
その各アクティビティ量は、各データ処理要素と対応する計算を実行する1つのセットに割り当てられた計算リソースが費やす時間量を含む。
【0016】
1つのセット内の複数のデータ処理要素は、前記計算グラフの連結有向サブグラフを(1つ)形成する。
【0017】
サブグラフはツリーを含む。
【0018】
複数の入力を有する1つのセット内の各データ処理要素に対して、そのデータ処理要素の入力にリンクされる全ての上流のデータ処理要素もそのセット内にある。
【0019】
サブグラフ内に上流要素を持たないそのサブグラフ内のデータ処理要素に対する制御メッセージの受信に応答して、そのサブグラフ内の他のデータ処理要素のそれぞれと関係付けられる関数が呼び出され、それにより、そのサブグラフ内の各データ処理要素についての状態情報を不揮発性ストレージ内に保存してから、そのサブグラフ外部にその制御メッセージを伝播する。
【0020】
そのサブグラフ内のデータ処理要素毎の状態情報は、単一ファイルに保存される。
【0021】
そのデータ処理要素は、特定の並列処理段数を有する。
【0022】
1つのセット内のデータ処理要素のそれぞれは、同一の並列処理段数を有する。
【0023】
計算グラフの仕様は、各データ処理要素と関係付けられる実行段階を示す。
【0024】
1つのセット内の各データ処理要素は、同じ実行段階と関係付けられる。
【0025】
本発明の態様には、以下の利点の内の一つ以上を含めることができる。
【0026】
データ処理アプリケーションをデータの流れ(データフロー)計算グラフとして表すことは、アプリケーションを構築し、関連する計算を理解し且つ分析する過程にある開発者を援助する。その計算は、処理毎に、ホストのオペレーティングシステム内で実行される。各処理は、処理する時間及びメモリ等の計算リソースと関係付けられる。各プロセスと関連するオーバーヘッドに起因して、計算システムが使用する計算リソースの全体は、同時に実行している処理の数とともに増大するのが普通である(場合によっては、処理の数とともに全てのリソースが直線的に増加する訳ではないが)。処理の回数を低減させるために、計算を「手で」組み合せて処理の数を減らすことができるが、それでは、計算グラフのプログラミングの利点(例えば、使用法の簡便さ、理解の容易さ等)が幾つかが犠牲になる。
【0027】
通信する処理(通信プロセス)として実装されるデータの流れ計算グラフにおいては、バッファリングにより、端から端までの待ち時間は増加するけれども処理のオーバーヘッドを低下させることができる。バッファリングをしなければ待ち時間を低下させることができるが、オーバーヘッドは増加する。何故なら、より大きなオペレーティングシステムのリソースを用いてより小さなデータ量を移動させることになるからである。
【0028】
この過剰なオーバーヘッドと過剰な待ち時間との間のトレードオフを軽減するために、多数のグラフ成分を、一度に一つの成分のワーク(作業)を実行する単一の処理として(つまり「折り畳んで」)実行し、コピーせずに、つまり処理間でのデータを移動しなくても、メモリにデータを渡すことができる。この手法では、データは、単一の処理内の成分のネットワークを通じてプッシュされる。
【0029】
例えば、折畳みのない実行(非折り畳み実行)においては、一つのデータの流れにより連結される二つの成分は、それぞれ別々の処理において実行され、1つのバッファを通じて通信する。第1成分は、その生成された出力(例えば、多数の出力ワーク要素の蓄積)をバッファに格納する。第1成分は、そのバッファを、例えばオペレーティングシステムコールを用いて、第2成分に渡す。次いで、第2成分は、そのバッファ内のデータを処理する。二つの処理が、同一の処理内にて「折畳み実行」で一緒に折り畳まれている場合には、折り畳まれたプロセスは、それがワーク要素を生成し且つ受け取る関連手順を制御するので、ワーク要素をバッファリングする必要がない。折り畳まれたプロセスは、第1成分と関係付けられる処理が生成した各ワーク要素を、それが生成されたとき、第2成分と関係付けられる手順に入力引数として渡す。即ち、データの流れは制御の流れとして実現される。
【0030】
折畳み実行または非折畳み実行のいずれにおいても、成分は、関連する段数の並列処理を有することができる。非折畳み実行では、成分の並列処理段数に等しい幾つかのプロセスを創出することができる。折畳み実行では、同一の並列処理段数をもつ連結された成分は、同一処理において例示化されるので、共通の並列処理段数と等しい幾つかのプロセスが創出される。
【0031】
多数の成分を単一の処理内に折り畳むと、処理間のデータ移動が減少し且つ計算グラフの起動時間及びシステム規模が減少することにより(何故なら、実行している合計プロセスがより少ないので)、性能が向上する。データのバファリングを持つことなく且つ待ち時間を増加することなしに、過度の文脈切換え(context-switching)が回避される。これら全てが、データ流れ計算グラフモデルの表現性、使用法の簡便さ、及び、明解さを犠牲にすることなく行われる。
【0032】
本発明の他の特徴および利点は、以下の説明から、およびクレームから明らかとなろう。
【図面の簡単な説明】
【0033】
図1】グラフ型計算を実行するためのシステムのブロック図である。
図2A】計算グラフである。
図2B】計算グラフである。
図3A】並列計算グラフである。
図3B】並列計算グラフである。
図4】折り畳まれたセットに成分を割り当てる手順を示すフローチャートである。
【発明を実施するための形態】
【0034】
1 システム概観
図1を参照すると、グラフ型計算を実行するためのシステム100は、データ記憶装置102に連結される開発環境104、及び、データ記憶装置102に連結されるランタイム環境106を含む。開発者101は、開発環境102を用いてアプリケーションを構築する。アプリケーションは、開発者が開発環境を使用した結果としてデータ記憶装置に書き込むことができる「そのデータ記憶装置102内のデータ構造」により規定された一つ以上の計算グラフと関係付けられる。データ構造は、例えば、計算グラフの頂点(成分またはデータセット)及び頂点間のリンク(データの流れ)を規定する。そのデータ構造は、グラフの「成分、データセット、及び、データの流れ」の様々な特性を含むこともできる。データ処理アプリケーションは、例えば、一つ以上の入力データセットから処理成分のグラフを通して一つ以上の出力データセットまで流れるデータ上において実行される計算を実施する計算グラフと関係付けられ得る。
【0035】
ランタイム環境106は、UNIXオペレーティングシステム(UNIXは登録商標)等の、適切なオペレーティングシステムの管理下にある一台以上の汎用コンピュータ上で主催(host)される。例えば、ランタイム環境106には、ローカルな(例えば、SMPコンピュータのようなマルチプロセッサシステム)、ローカルに分散された(例えば、クラスタまたはMPPのように連結された複数のプロセッサシステム)、リモートで、リモートで分散された(例えば、LAN又はWANネットワークを経由して連結される複数のプロセッサ)、又は、これらの任意の組み合せの、マルチ中央処理ユニット(CPU)を用いるコンピューターシステムの構成を含む「複数ノード並列計算環境(multiple-node parallel computing environment)」を含めることができる。ランタイム環境106によってアクセスされる入力、出力又は中間のデータセットは、並列ファイルシステム(例えば、データ記憶装置102、又は、通信リンクを通してローカル的に或いはリモート的にシステム100に連結される外部データ記憶装置)内に格納される並列の「マルチファイル」とすることができる。
【0036】
グラフ内の多数の成分(multiple components)を同時に実行することは、並列処理の一形式を提供する。追加的な並列処理は、グラフの様々な成分を様々な計算ノードに分配することにより達成することができる。グラフの要素(例えば、データセット、成分、及び、流れ)は明示的に又は暗示的に複製されることができ、それにより、ランタイム環境106内に追加的な並列処理を導入することができる。
【0037】
ランタイム環境106は、計算の実行及び(装置の)コンフィギュレーションのために、格納されたスクリプトからの制御入力、又は、ユーザ103からの入力に基く制御入力を受け取るよう構成される。その制御入力には、対応する計算グラフを用いて特定のデータセットを処理するコマンドを含めることができ、そのコマンドは、格納されたグラフデータ構造において規定される。ユーザ103は、例えば、コマンドライン又はグラフィカルインターフェースを用いて、ランタイム環境106と対話(相互に作用)することができる。
【0038】
ランタイム環境106は、「与えられた計算グラフを規定する格納されたグラフデータ構造を読み出し、且つ、成分の計算を実行するためのプロセス(例えば、ホストオペレーティングシステム内での実行プロセス、つまりスレッド)等の計算リソースを割り振り且つ配置構成(コンフィギュレーション)する」ための予備実行モジュール110を含む。以下に更に詳細に説明するように、計算グラフを実行するときに、成分をプロセスに割り当てる様々な手法がある。
【0039】
予備実行モジュール110は、また、成分間のデータの流れを実行するための成分間通信リソース(例えば、指定されたパイプ又は共有メモリ)を割り当て、そのプロセスが新しいワーク要素を受け取る準備が未だ整っていない成分の入力ポートに到着するワーク要素に対する記憶場所(storage space)を割り当てる。ワーク要素を成分間のデータの流れの上で通過させるためのリソースは、システム100の処理及び格納のオーバーヘッドの一因となる。より詳細に後述するように、幾つかの手法においては、成分間通信が関数呼出しにより実行され、このオーバーヘッドを減少させる。
【0040】
ランタイム環境106には、予備実行モジュール110が計算グラフに割り当てたプロセスの実行をスケジュール化し且つ管理するための実行モジュール112が含まれる。実行モジュール112は、データベースエンジン、データ記憶装置、又は、そのグラフ成分と関係付けられる処理の最中にアクセスされる他のモジュールのような、システム100に連結される外部計算リソースと相互に作用することができる。
【0041】
計算グラフを実行した後に、又は、実行中に所定の間隔にて、報告モジュール114は、その計算グラフの個々の成分と関係付けられる統計値等の「与えられた計算を特徴付ける情報」を提供する。報告モジュール114により報告される幾つかの情報は、その計算グラフが生成する出力から得られる。その報告される情報の幾つかは、その計算グラフの実行を監視することにより得られる。
【0042】
ランタイム監視モジュール(RMM)116は、計算グラフに割り当てられた一つ以上の処理の実行を監視し、報告モジュール114に情報を提供する。この情報には、例えば、それぞれの成分を実行するために費やした中央処理ユニット(CPU)の時間、又は、それぞれの成分によって処理されたデータの量が含まれる。
【0043】
2 グラフ実行
図2Aを参照すると、計算グラフ200の一例は、計算グラフ200の成分204A〜204Jによって処理される予定の一連のワーク要素を提供する入力データセット202を含む。例えば、データセット202は、「データベースシステム、又は、トランザクション処理システムのトランザクション」と関連する「データのレコード(記録)」を含むことができる。各成分は、計算グラフ200全体により定義される計算の一部と関係付けられる。ワーク要素(例えば、個々のデータのレコード)は、成分の一つ以上の入力ポートに入り、出力ワーク要素(場合によっては、入力ワーク要素であるか、又は、入力ワーク要素の処理されたバージョンである)は、一般的には成分の一つ以上の出力ポートから出る。グラフ200においては、成分204E、204G及び204Jからの出力ワーク要素が出力データセット206A〜206C内に格納される。
【0044】
グラフ200においては、第1フィルタ成分204Aが、その入力ポートで受け取ったワーク要素のサブセットを選択して第2フィルタ成分204Bに送り、選択されなかったワーク要素を成分204Cに送り、成分204Cは成分204Dに提供する。第2フィルタ成分204Bは、その入力で受け取ったワーク要素のサブセットを選択して成分204Eに送り、成分204Eは出力データセット206Aに提供する。第2フィルタ成分204Bにて選択されなかったワーク要素は複製成分204Fに送られ、複製成分204Fは各ワーク要素のコピー(複製物)を成分204Gに送る。成分204Gは出力データセット206Bに供給する。複製成分204Fは前記各ワーク要素のコピー(複製物)をインターフェース成分204Hにも送る。インターフェース成分204Hは、ランタイム環境106に対して完全にはネイティブでない「外部プログラム」の実行をトリガーするインターフェースを提供する。例えば、この外部プログラムは、ランタイム環境106に完全には組み込まれていない言語で書かれた旧仕様のプログラムでもよい。インターフェース成分204Hは、その開発環境のネイティブ言語を用いて外部プログラムを再コード化することなしに、その外部プログラムを計算グラフ200の一部として実行するメカニズムを提供する。集約成分204Iは、インターフェース成分204H及び成分204Dからのデータの流れを結合し、そのワーク要素の結合したデータの流れを成分204Jに送り、成分204Jは出力データセット206Cに提供する。
【0045】
2.1 別々のプロセス
計算グラフを実行する手法の第1の形式においては、予備実行モジュール110は、各成分に対して別々の処理を割り当てる。例えば、「一成分につき一処理」の方法においては、1つの処理が各成分に対して割り当てられる。成分と対応する処理は、その成分により定義されるデータアクセス、計算、及び、データ変換タスクを取り扱う。実行モジュール112は、ホストのオペレーティングシステム内で処理を起動し、その成分の処理により実行されない計算グラフと関係付けられるタスクを取り扱う。
【0046】
グラフ成分が、関連する段数の並列処理を有する場合、予備実行モジュール110は、そのグラフ成分の異なるインスタンスに対して、成分の並列処理段数と同じ数の別々のプロセスを割り当てる。例えば、ある成分は、随意的に、N列の(N通りの)並列成分として(例えば開発者101により)指定される。N列の並列成分に対して、その成分のN個のインスタンスのそれぞれが、N個のノードの内の一つにおける処理として(又はスレッドとして、又はマルチスレッドプロセッサ内の軽量処理の他の形式として)実行される。これらの場合、並列成分のインスタンス毎に一つの処理またはスレッドがあることになる。
【0047】
図3Aを参照すると、並列グラフ300は、出力マルチファイル306に連結される直列の三つのN列並列成分304A、304Bおよび304Cに連結される入力マルチファイル302を含む。この例においては、入力(出力)マルチファイルは、N個の処理による並列アクセスが、N個に分割されたデータの流れの情報源となる(N個に分割されたデータの流れを押し込む)ことを可能にするように「N列に並列」である。代替として、入力及び出力のデータセットは、シリアルにアクセスされるデータファイルであってもよく、又は、入力302と第1成分304Aとの間のデータの流れ上の成分、及び/又は、最後の成分304Cと出力306との間のデータの流れ上の成分、を再分割することを利用して、N個に分割されたものを越えるか又はそれ未満のマルチファイルとしてもよい。グラフ300が、一成分インスタンスあたり一つの処理を用いて実行される場合、同時に実行されている処理が3N個だけ存在する。
【0048】
上記の一成分あたり一つの処理、一インスタンスあたり一処理の手法は、システム100がパイプライン並列処理を上手く活用できるようにするので、複数の成分にデータを同時に処理させることによって計算グラフの処理量(スループット)を増加させることができる。しかしながら、各処理に関連するオーバーヘッドがシステム性能を制限することがある。例えば、起動時間は、場合により、成分処理を開始するのに必要な時間によって支配される。従って、成分の多いグラフの方が開始時間が長くなる場合がある。そのようなグラフは、同時に実行できる計算グラフの数を制限する「より大きな規模のメモリ(a larger memory footprint)」を有する場合もある。開発者101は、場合によっては、複数の成分内に実装されているロジックを一つ以上の複雑な成分に集約することにより、グラフ内の成分の数を減少させることができる。しかしながら、そのような手動によるグラフ操作は、常に可能とは限らないし、或いは、好ましいとは限らない(例えば、使用法の簡便さ、理解の容易さ、又は、成分の再利用性を維持するために)。
【0049】
2.2 成分折畳み
計算グラフを実行する手法の第2の形式においては、予備実行モジュール110は、随意的に、マルチ成分を実行するための幾つかのプロセスを割り当てる。例えば、「成分折畳み」法においては、予備実行モジュール110は、グラフの成分を、一つ以上の成分をそれぞれが含む一つ以上のセットに分割する。それぞれのセットには異なるプロセスが割り当てられる。従って、同一のセットに「一緒に折り畳まれた」成分に対しては、これらの成分により表される計算は同一の処理によって実行される。多数の成分を有するセットに対しては、実行モジュール112はホストのオペレーティングシステム内で「折り畳まれた処理」を起動する。
【0050】
折り畳まれたプロセスは、そのセット内の成分それぞれにより定義されるデータアクセス、計算、及び、データ変換タスクを取り扱い、関数の呼出しとして、そのセット内の成分間のリンクに越しに通信を実施する。折り畳まれたプロセスは、与えられた入力を伴う最初の「ルート(root,根源)」成分の計算を呼び起こす「計算」関数を呼び出す。そのルート成分の計算が出力ポートと関係付けられる結果を生成した後、その折り畳まれたプロセスは、その結果を下流成分に対する入力として用いるリンクされた下流成分の「計算」関数を呼び出す。こうして、データは、ルート成分からサブセット内の下流の「内部」成分にプッシュされる。場合によっては、1つのサブセットは、ワーク要素をそのサブセットの内部成分に供給する二つ以上のルート成分を有することができる。この成分折畳み手法は、起動の待ち時間を減少させることに加えて、処理及び格納のオーバーヘッド並びにサブセット内の成分間通信に関連する待ち時間を減少させる。
【0051】
幾つかの成分、例えば再フォーマットまたはフィルタリングを実行する成分であって、例えば単一のワーク要素上で一度に実行する成分は、この「プッシュ型モデル」の実行法に既に対応している。すなわち、プッシュ型成分が第1ワーク要素の処理を完了すると、そのプッシュ型成分は、入力ポートで利用可能になり次第、新しいワーク要素を処理する準備が整う。このプッシュ型モデルにおいては、上流成分は下流成分にてワーク要素をプッシュし、その下流成分はその計算を実行し、次いで、その下流成分は結果を更にそれの下流成分にてプッシュする、と次々に続く。
【0052】
他の成分は、初期段階においてこのプッシュ型モデルに従って動作するように構成されていないこともあり、代わりに、「プル型モデル」の実行に従って動作するかもしれない。プル型成分の1つの例は、ワーク要素が到着した入力ポートに依る計算を実行する多数の入力ポートを有する成分である。その成分は、第2入力ポートでのワーク要素を待っているので、第1入力ポートにおけるワーク要素を処理する準備が出来ていないことがある(例えば、ソート操作又は結合操作を実行する成分)。他の種類のプル型成分には、単一入力ポートを有するものがある。従って、折り畳まれるプロセスは、必ずしも、プル型成分の入力ワーク要素に対して作動する「計算」関数を呼び出すことができるとは限らない。
【0053】
プル型成分は、処理シーケンスにおける何らかのロジック中断(例えば、ファイルの終了点、又は、関連のないワークのユニット間の境界をマークする何らかの他のイベント)まで、全ての入力をバッファリングさせることにより、プッシュ型成分に作り直され得る。この場合、プル型成分に対する「計算」関数は、入ってくる各レコードをバッファ内に挿入し、且つ、ロジック中断時にそれが決定する順序がどうであろうともその順序にてバッファから読み出してその入力の全てを処理するように進む。
【0054】
折り畳まれたプロセスは、関連する折り畳まれた成分の計算をスケジュール化する他の手法を利用することができる。例えば、折り畳まれたプロセスは、状態情報を検査してどの成分が実行される準備が整っている成分であるかを決定することができる。
【0055】
2.2.1 折畳みの制約
予備実行モジュール110は、グラフを解析して、同一のセット内にどの成分を一緒に折り畳むべきかを決定する。このとき、モジュール110は、随意的に、開発者101又はユーザ103による「折り畳まれるセットへの成分の手動による割当て」、もしくは、どの成分を同一又は別の折り畳まれるセットに入れるかに関する他の制約を考慮しながらグラフを解析する。予備実行モジュール110は、どの成分が一緒に折り畳まれるべきかを決定するために以下の制約を考慮することができる。幾つかの手順は、折り畳まれる処理が追加的な関連処理を取り扱うためのメカニズムを提供することにより、これら制約の一部又は全てを随意的に省略することができる。
【0056】
第1の制約は、成分が「折畳み可能」及び「折畳み不可能」の何れに指定されるか(例えば、開発者101により)に依存する。折畳み可能として指定された成分には、その成分の対応する計算を呼び出すために折り畳まれた処理により使用され得る特徴が含まれる。例えば、折畳み可能成分は、ランタイム環境106で実行されている折り畳まれた処理により呼び出され得る「計算」関数であって、その成分と関係する計算を起動することができる「計算」関数を有する。旧仕様のプログラムを実行しているインターフェース成分は、このような関数呼出しと互換性がないことがあり、従って、折畳み不可能として指定されることがある。他の成分が、実行されている計算の性質(例えば、計算が外部環境との複雑な相互作用に関わっている場合)に起因して、折畳み不可能として指定されることがある。
【0057】
他の制約は、様々なグラフ部分が実行される予定である段階(フェーズ)の指定に依存する。例えば、上流成分の第1グループが第1段階で実行するよう選択され、これら成分がワーク要素の一つのバッチ分を完了した後、下流成分の第2グループが第2段階においてそのバッチに対して実行するよう選択される。ある場合においては、所与の段階にある成分に対する処理だけが所与の時点にて実行される。他の場合には、複数の段階を用いて、所与の時点にて所与のワーク要素のバッチ処理を行う予定の成分のグループを指定するが、異なる段階での処理がパイプライン並列処理を達成するために異なるバッチ上にて同時に実行されていることもある。どちらの場合でも、この制約は、所与の段階にある成分が同一の段階にある成分とともに折り畳められるべきことを維持する。
【0058】
別の制約は、成分に対して指定される並列処理段数に関連する。成分は、直列に、又は、N列並列として指定される。上述したように、N列並列成分については、N個の成分のインスタンスのそれぞれが別の処理において実行される。成分の折畳み手法においては、並列に実行できるN個の成分のインスタンスが残っているが、その成分インスタンスは他の成分インスタンスと一緒に折り畳められ得る。この制約においては、同一の並列処理段数を有する成分だけが一緒に折り畳められる。直列成分は他の直列成分と一緒に折り畳まれ、N列の並列成分は、他のN列並列成分と一緒に折り畳まれる。例えば、図3Bは、図3Aに示された並列成分がどのように一緒に折り畳められるかについて図解する。グラフ300’が成分折畳みを用いて実行される場合、同時に実行されるN個の折り畳まれた処理が存在する。成分のセット312のN個のインスタンス毎に一つの折り畳まれた処理が存在する。
【0059】
関連する別の制約は、一緒に折り畳められる成分が、そのデータの流れによって表わされるワーク要素を分割することを変更しない「直線状」のデータの流れにより連結されるということである。例えば、あるデータの流れは、N列並列成分から流れるワーク要素のN個の分割されたもの(パーティション)を、M個の分割されたもの(パーティション)に再分割することができる(ここで、M≠N、又はM=Nであり且つワーク要素がN個の分割されたもの(パーティション)の内で再シャッフルされたものである)。この制約においては、一緒に折り畳まれる成分は同一の並列処理段数を有し、折り畳まれる成分の内のワーク要素の明示的又は暗示的な再分割化(パーティション化)はない。
【0060】
グラフの成分を折り畳んだセットに割り当てるための準備においては、予備実行モジュール110は、グラフ内のどの折畳み可能な成分がルート成分となり得るものの内部成分とはなり得ないか、及び、どの折畳み可能な成分がルート成分又は内部成分となり得るか、を決定する。例えば、幾つかの成分は、折り畳まれる処理により起動させることができる関連する「計算」関数を有するように構成されることができない。
【0061】
潜在的なルート成分及び/又は潜在的な内部成分として成分を分類することは、例えば、これらの成分が開発されている間に、オフラインにて発生し得る。グラフを構築するために利用可能な成分と関係付けられるデータ記憶装置102内に格納されるデータ構造には、その成分が折畳み可能成分か又は折畳み不可能成分かどうか、及び、その成分が潜在的なルート成分及び/又は内部成分であるかどうか、を示すメタデータを含めることができる。
【0062】
2.2.2 折り畳まれるセットの決定
図4は、グラフ成分を折り畳まれるセットに割り当てるために予備実行モジュール110により使用される例示の手順400のフローチャートを示す。手順400は、折り畳まれる各セットを可能な限り大きくするように試みる「欲張り(greedy)アルゴリズム」に基づく。この手順400により生成される折り畳まれるセットは、データの流れを、グラフの連結されたサブグラフの一つ以上の内部成分に提供する単一のルート成分を有する。折り畳まれるセットはオーバーラップもしていない。予備実行モジュール110は、例えば実行時間よりも十分前に、手順400を実行し、データ記憶装置102内にその結果を格納することができる。或いは、予備実行モジュール110は、グラフが実行モジュール112によって実行される直前において手順400を実行することができる。例えば、予備実行モジュール110は、グラフが実行される前のランタイムに手順400を実行することができるが、但し、より詳細に後述するように、条件付き成分がそのグラフから削除された後に手順400を実行することができる。
【0063】
手順400は、上述した折畳み制約の幾つかを使用する。成分が以下の条件を満たす場合、成分は折り畳まれたセットに対する制約を満たす:成分が折畳み可能である、成分がセット内の成分と同一の並列処理段数を有する、成分がセット内の成分と同一の段階にある、そして、成分が直線的流れによりセット内の成分に連結されている。
【0064】
手順400は、グラフ内の各成分を「割当てされていない(未割当て)」としてマーキング(402)することにより開始される。手順400は、上流成分から下流成分までのトポロジカル(位相)順(例えば、深さ優先探索順)に基づいてグラフ内の成分を検査する。手順400は、入力データセットに連結される成分又は入力ポートのない成分にて開始され、この成分をルートとして第1セットに割り当てる(404)。手順はそのルート(ルート成分)が折畳み可能かどうかを判定する(406)。そのルート成分が折畳み可能であれば、手順400は、制約を満たす現セット内の成分の下流に直接的に連結される「割り当てされていない(未割当て)折畳み可能成分」があるかどうかを判定する(408)。このような成分が見付かった場合、その成分は現セットに追加され(410)、「割当て済」としてマークされる(412)。手順は、割当てされていない折畳み可能成分が追加できるかどうかを継続して判定する(408)。場合によっては、1つのセットに割り当てられる折畳み可能なルート成分は、他のどの成分とも一緒に折り畳まれず、その成分に専用の処理により実行されるように単集合(singleton:与えられた一個の元を唯一の要素とする集合)セット内に残される。
【0065】
現セットがもはやそれ以上に大きく成長できない場合(例えば、そのセットに連結される残りの成分が既に割り当てられているか、又は、全ての制約を満たさない場合)、手順400は、割当てされていない成分がグラフ内に残っているか否かを判定し(414)、割当てされていない成分が残っていれば、入力データセットに連結される割当てされていない成分から、又は、入力ポートなしの割当てされていない成分から、又は、割り当てられる成分に連結される割当てされていない成分から、新規のルート成分を割り当てる(404)。
【0066】
ルート成分が折畳み不可能であれば、手順400は、このルート成分を、その成分に専用の処理によって実行されるようにそれ自身のセット内に単独で残し、割当てされていない成分が残っている場合、新たしいルート成分を選択する。手順400は、割当てされていない成分が残っていないとき終了する(416)。
【0067】
図2Bは、手順400に従ってグラフ200内で識別される3つの折り畳まれたセットを示す。手順400は、セット210のルートとして成分204Aを選択する。手順400は、トポロジカル順にグラフを廻って、成分204B、204E、204F及び204Gを折り畳まれたセット210に追加する。成分204Hは、折畳み可能という制約を満たさないので、セット210に追加されない。手順400は、続けて、成分204C及び204Dを折り畳まれたセット210に追加する。他の折り畳まれたセットはセット210に追加できないので、手順400は、折畳み不可能成分204Hを有する第2セット211を選択し、残りの成分204I及び204Jを有する第3セット212を選択する。
【0068】
計算グラフによっては、成分自体が、計算グラフとして実行される。手順400は、グラフ内のそのような成分をそのグラフ内のサブグラフに拡張する。従って、折り畳まれる成分のセットは、そのような挿入されるサブグラフの境界を拡張して、そのような成分の何れかの「サブ成分」を含む。
【0069】
計算グラフによっては、条件付き成分のメカニズムにより、パラメータ値及び計算されたメタデータに基づいてグラフ構造に対する変更が可能になる。グラフの条件付き成分は、その成分がランタイムにてグラフに現れるかどうかを制御する条件を有する。その条件は、ランタイムパラメータにより直接的又は間接的に計算され得る。条件付き成分を用いてグラフを最適化し、又は、グラフを特殊化することができる。条件付き成分は、2000年7月28日出願の米国特許出願第09/627,252号に詳細に記載され、引用して本明細書に組み込む。
【0070】
折り畳まれたセットが識別された後、予備実行モジュール110には、随意的に、グラフを修正し、それにより、折り畳まれたセット間のバッファ又はアダプタ等の要素を含めることができる。
【0071】
折り畳まれたセット内のサブグラフの成分のトポロジーについての制約を有する手順を含む他の手順を用いて、折り畳まれたセットを決定することができる。例えば、実施の形態によっては、折り畳まれたセット内の連結された成分のサブグラフは、ルート成分から下流の単一の入力内部成分を持つツリートポロジーを有する。実施の形態によっては、折り畳まれた処理は、折り畳まれたセット内のマルチ入力成分を支給するアクションを実行することができる。例えば、マルチ入力成分がルート成分の下流にある場合、折り畳まれた処理は複数の入力に対するデータをバッファリングし、全てのバッファが利用可能なデータを有する場合、マルチ入力関数の「計算」関数を呼び出すことのみを行う。折り畳まれるセットは、セット内のマルチ入力成分それぞれに対して、その成分の入力に連結される全ての上流成分もそのセット内にあるようなトポロジーを有することができる。
【0072】
2.2.3 折り畳まれた処理の実行
実行モジュール112は、予備実行モジュール110により識別された折り畳まれたセットと対応する折り畳まれた処理を開始する。予備実行モジュール110は、実行モジュール112に、それぞれの折り畳まれたセット内の成分及びこれらの成分を連結するデータの流れを識別する情報を提供する。実行モジュール112は、データ記憶装置102内の成分オブジェクトを指すポインタを含むランタイムデータ構造を生成し、折り畳まれたセット内の成分間で通信するためのワーク要素を格納する記憶空間を割り当てる。割り当てられる記憶空間の量及び成分間でワーク要素データを移動するために費やされる時間は、小さい値に維持され得る。異なる成分に対する計算が実行されている間に、折り畳まれたプロセスが同じ記憶空間にアクセスできるからである。
【0073】
例えば、折り畳まれたプロセスは、データの流れと対応するワーク要素を格納するために割り当てられた記憶空間を用いて、上流成分から下流成分にデータを通信する。成分に対する「計算」関数は、その記憶空間内の適切な場所を指すデータポインタ変数を読み出すことにより、そのワーク要素にアクセスすることができる。
【0074】
上流成分の「計算」関数は、下流成分に対するデータポインタ変数と対応する記憶空間が、処理されるべきデータを確実に含むようにする。場合によって、これは、下流成分がアクセスする記憶空間内にデータを単に書き込むだけの上流成分に関係する。しかしながら、入力データを変更しない成分(例えば、フィルタ成分)については、データはアクセス可能な場所に既に格納されている場合があり、そのデータを移動する必要はなく、反対に、適切なデータポインタ変数を提供することにより準備され得る。
【0075】
それぞれの折り畳まれた処理は、折り畳まれたセット内の成分を連結するデータの流れによって定義されるシーケンスに従って計算関数を繰り返し呼び出すことによって、成分と対応する計算を起動する。上流成分は、下流成分の「計算」関数を呼び出す。「計算」関数は、成分と関係付けられる計算を実行する。例えば、その計算は、成分と関係付けられる状態変数の更新、格納したワーク要素の変換、新規ワーク要素の生成、又は、出力データを適切な記憶空間内に格納することを確実にすることによるデータの下流への通信、を伴うことができる。「計算」関数が、折り畳まれた処理に制御を戻すと、関連する成分は、そのデータポインタ変数と関係付けられるデータを既に処理したと見なされる。
【0076】
ルート成分は、折り畳まれたセットにデータが供給されるポイントである。多くの場合、これは入力ストリーム又はファイルからデータを読み出すことにより、若しくはデータベースや待ち行列等の外部システムからデータを抽出することにより行われる。場合によっては、データはルート成分によって生成される。ルート成分の「計算」関数は、折り畳まれた処理へと制御を戻すことなしに折り畳まれたセットを通じて任意の大量のデータをプッシュすることはない。例えば、ルート成分の「計算」関数は、以下のコードの内の一つにより、所定の間隔で折り畳まれた処理に制御を戻す:
KEEP_GOING:このコードは供給されるべきデータが更にあることを示す。折り畳まれたプロセスは、「計算」関数を再度読み出すことにより応答する。
【0077】
ERROR:このコードは、エラーが発生したことを示す。折り畳まれたプロセスにアクセス可能なグローバルな「エラーステータス」変数は、詳細なエラーメッセージを含む。例えば、折り畳まれた処理は、エラーメッセージを表示すし且つ異常終了することにより応答する。
【0078】
REACHED_EOF:このコードは、供給されるべきデータがそれ以上ないことを示す。折り畳まれた処理は、詳細に後述するように、折り畳まれたセットを停止する(シャットダウンする)ことにより応答する。
【0079】
GOT_BLIP:このコードは、制御メッセージ(ブリップ、blip)を受け取ったことを示す(例えば、ワーク要素の連続的な流れの中のチェックポイントメッセージ)。折り畳まれたプロセスにアクセス可能なグローバルな「ブリップ」変数は、制御メッセージを含む。折り畳まれたプロセスは、制御メッセージを処理し、処理が終ると、「計算」関数を再度呼び出すことにより応答する。
【0080】
ルート成分がREACHED_EOFを返すと、折り畳まれたプロセスは、折り畳まれたセットを停止(シャットダウン)する。これは、その折り畳まれたセット内の成分それぞれと関係付けられる「シャットダウン」関数を、上流成分から下流成分に向けてトポロジカル的にソートされた順に呼び出すことにより行われる。
【0081】
「シャットダウン」関数は、下流にプッシュされるデータを生成することができる。例えば、ハッシュロールアップ成分に対する「計算」関数は、各種の積算器内のデータを構築し、「シャットダウン」関数が呼び出されるまで出力データを生成しない。
【0082】
ルート成分がGOT_BLIPを返すと、折り畳まれた処理は、ブリップを下流に伝播する。これは、折り畳まれたセット内の成分それぞれと関係付けられる「プロセスブリップ」関数を呼び出すことにより行われる。「シャットダウン」関数と同様に、その「プロセスブリップ」関数は、更なる計算をトリガーする。例えば、連続的なフローロールアップ成分は、その「プロセスブリップ」関数が呼び出されるまで、データを下流にプッシュしない。
【0083】
例えば、引用して本明細書に組み込む米国特許第6,584,581号、発明の名称「データ処理をチェックポイントで調べる連続フロー」に記載されているように、ブリップはグラフ内の成分の状態をチェックポイントで調べるように、グラフ内の成分に指示できる。その場合、「プロセスブリップ」関数は、現在の状態情報を不揮発性記憶装置内のチェックポイントファイルに格納する責任を負う。折り畳まれたセット内の成分は、(例えば、効率化のために)チェックポイントファイルを共有することができる。共有されたチェックポイントファイルが採用される場合、チェックポイントブリップが折り畳まれたセットの外部にある何れかの成分に伝播される前に、折り畳まれたセット内の全ての成分はそれらのチェックポイント(それらをチェックポイントでチェックすること)を完了する。これは、例えば、チェックポイントでのチェックが完了した後、上流成分から下流成分に向けて、トポロジカルソート順で、成分の「プロセスブリップ」関数を読み出すことによるか、又は、ブリップを別の経路内の折り畳まれたセットの外部にある成分に伝播させることにより、達成することができる。
【0084】
例えば、「計算」関数がデータベース又はウェブサーバを含む外部装置との相互作用に関与する成分を組み込むために、実行モデルは拡張されることができる。
【0085】
外部装置との相互作用は、一般に、比較的規模が大きな及び/又は無限の時間量を取り得るので、アプリケーションのスループットを事実上制限する。一つの成分毎に一つの処理を実行にあたりスループットを向上させるための一方策は、ひとつの装置に対して複数の接続からなるセット(又はプール)を開放する(オープンする)ことであり、入力レコードが成分によって受け取られる際に、利用可能な接続に関するリクエスト(要求)を発生する。成分は、応答が返される時に、その応答を装置から非同期で取得し、適宜、出力レコードを生成する。しかしながら、この手法は、折り畳まれた実行の幾つかの実装と互換性がないことがある。何故なら、そのような成分に対する「計算」関数が、1回に一つの入力レコードを受け取り、その成分が戻される前に、その受け取った入力レコードについて対応する出力レコードを生成するからである。
【0086】
プールされた接続及び折り畳まれた実行における非同期の結果の取得を上手く利用するために、そのようなリクエストを行う成分は、二つの成分、即ち:入力レコードを受け取ってリクエストを発行する第1成分、及び、応答を受け取って出力レコードを構築する第2成分、に効率的に分解される。次いで、第2成分は、単一の処理により実行されている折り畳まれた成分のセットへの追加された「ルート」として扱われ、対応する外部装置からの応答は第2成分への入力として扱われる。次いで、折り畳まれたセットを実行する処理は、何れかのソースからの入力−元のルート成分への入力又は外部装置からの応答−を待ち、適切なルート成分についての「計算」関数を呼び出す。
【0087】
非折畳み又は折畳みの何れの実行においても、離間している装置に連結している成分からの結果の順番が入力の順番と一致している必要がある場合、結果は下流成分に渡される前に蓄積され且つ整理し直され得る。
【0088】
3 モニタ(監視)
RMM116は、グラフの実行に関する情報を開発者101及び/又はユーザ103に提供する。RMM116は、グラフの個々の成分が実行中に一緒に折り畳まれた場合でも、それらの個々の成分のランタイム特性に関する情報を提供する。従って、グラフの成分と関係付けられる計算の特性は、その計算を実行する処理の数がそのグラフ内の成分の数と一致することを要求することなく、グラフの論理的構造に従って解析されることができる。例えば、RMM116は、成分折畳み手法又は一つの成分毎に一つのプロセス手法を用いて実行されるグラフに対する特性と概ね同じランタイム特性を表すことができる。
【0089】
たった一つの成分を有する折り畳まれたセットに対し、及び、1つの成分毎に1つのプロセス手法において、RMM116は、成分と対応する処理に基づいてCPU時間等の特性を追跡し、RMM116は、その成分に出入りするデータの流れをサポートするデータ通信チャンネルに基づいてデータ処理量を追跡する。
【0090】
二つ以上の成分を有する折り畳まれたセットに関し、RMM116は、折り畳まれる処理についてのCPU時間、及び、折り畳まれるセットのデータ処理量を、追跡し、これらの合計値を成分毎に分割する。簡単な手法は、その合計量を、折り畳まれたセット内の成分の数で除することであろう。しかしながら、多くの場合、監視した量をより正確に分割することが望まれる。
【0091】
折り畳まれた処理は、対応する折り畳まれたセット内で表される成分及びデータフローと対応するように、格納される変数内に追跡情報を書き込む。例えば、成分に入ってくる(又は、成分から出て行く)データの流れと対応するデータポインタ変数が読み出される(又は、書き込まれる)たびに、対応するレコードカウントおよびバイトカウントの追跡値がインクリメントされる。
【0092】
RMM116は、割り込み手法を用いてCPU時間のより正確な分解を獲得することができる。折り畳まれた処理が「折り畳まれたセット内の各種成分と関係付けられる関数」を呼び出すのに費やした時間の割合をサンプリングするために、タイマーが割り込みをトリガーする。それぞれの関数が呼び出されるときに、例えば、その関数は、対応する成分が「アクティブ」であることをグローバル変数内に書き込む。タイマーの時間がくると、割り込みがトリガーされ、折り畳まれた処理がアクティブな状態にある成分と関係付けられるカウンタをインクリメントする。折り畳まれたセット内の各成分についてのCPU時間を報告するために、折り畳まれたセットの合計時間が、これらのカウントに従って比例分割される。
【0093】
CPU時間の正確な分解を獲得するための別の手法は、それぞれの折り畳まれた成分の「計算」関数及び「プロセスブリップ」関数の呼出し時間を計測することである。全ての呼出しの時間を計測することは許容できないオーバーヘッドを招くので、システムは、呼出しの何分かの一の時間を計測してもよい(例えば、最初は100の内のそれぞれを、次いで1000番目毎に)。次いで、収集した時間を用いて、合計のCPU時間を、折り畳まれた成分の内のそのプロセスに対して比例配分する。
【0094】
上述した成分折畳み手法は、コンピュータ上で実行するためのソフトウエアを用いて実装することができる。例えば、本ソフトウエアは、プログラムされるか又はプログラム可能な一台以上のコンピューターシステム(分散、クライアント/サーバ、又は、グリッド等の様々なアーキテクチャを有することができる)上で実行する一つ以上のコンピュータープログラム内の手順を形成する。そのそれぞれのコンピューターシステムは、少なくとも一つのプロセッサ、少なくとも一つのデータ記憶装置システム(揮発性、及び、不揮発性メモリ、及び/又は記憶要素を含む)、少なくとも一つの入力装置または入力ポート、並びに、少なくとも一つの出力装置または出力ポートを備える。本ソフトウエアは、例えば、計算グラフの設計及び配置構成と関連する他のサービスを提供する規模がさらに大きなプログラムの内の一つ以上のモジュールを形成してもよい。グラフのノード及び要素は、コンピュータが読み取り可能な媒体に格納されるデータ構造、又は、データ収納庫内に格納されるデータモデルに準拠する他の体系化されたデータ、として実装することができる。
【0095】
本ソフトウエアは、汎用又は専用のプログラム可能なコンピュータにより読み出すことが可能なCD−ROM等の媒体上で提供するか、若しくは、本ソフトウエアを実行するコンピュータにネットワークを経由して(伝播信号にエンコードして)配布することができる。全ての機能は専用コンピュータ上で、或いは、コプロセッサ等の専用ハードウエアを用いて、実行することができる。本ソフトウエアは、ソフトウエアにより規定される計算の様々な部分が異なるコンピュータにより実行されるように分散された様式にて実装することができる。そのようなコンピュータープログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータにより読み取り可能な記憶媒体又は装置(例えば、ソリッドステートメモリ又は媒体、若しくは磁気式もしくは光学式媒体)上に、格納されるか又はダウンロードされることが好ましく、記憶媒体又は装置がコンピューターシステムにより読み出されて本明細書で説明した手順を実行するとき、コンピュータを構成し且つ動作させる。本発明のシステムは、コンピュータープログラムとともに構成されたコンピュータが読み取り可能な記憶媒体として実装されると考えることもでき、その場合は、そのように構成されたストレージ媒体は、コンピューターシステムを特有でかつ所定の方法で動作させて本明細書で説明した機能を実行できるように構成される。
【0096】
本発明の幾つかの実施の形態を説明してきた。しかし、言うまでもなく、本発明の精神および範囲から逸脱することなく、様々な改変を行うことができる。例えば、上記のステップの幾つかは、独立した順序とすることができ、従って、説明と異なる順序で実行することができる。言うまでもないが、上記説明は、説明を意図し、本発明の範囲を限定する意図はなく、本発明の範囲は、付帯の特許請求の範囲により定義される。他の実施の形態は特許請求の範囲の範囲内にある。
図1
図2A
図2B
図3A
図3B
図4