(57)【要約】  並列計算グラフの仕様を自動的に規定または支援する手法であって、グラフのデータ処理要素を結合するリンク要素のデータ処理特性の決定を含む。リンク要素と関連付けられた上流および／または下流のデータ処理要素の特性に従ってリンク要素の特性を決定することにより、例えば、関連付けられた直列グラフの計算と等価な並列計算グラフによる計算が可能になる。
2007529041.tif 000002
【特許請求の範囲】
【請求項１】
並列計算グラフを自動的に規定するための方法であって、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れるステップと、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップと、
を含む方法。
【請求項２】
前記計算グラフの前記各データ処理要素が頂点として表され、前記各リンク要素が前記計算グラフの枝として表される、請求項１の方法。
【請求項３】
前記１つ以上のリンク要素のそれぞれに対して、そのリンク要素と関連付けられた前記上流、および前記下流データ処理要素を接続するデータパス上に、データ処理要素を用いて前記リンク要素を表すステップを更に含む、請求項１の方法。
【請求項４】
データ処理要素を用いて前記リンク要素を表すステップが、前記データ処理要素を前記リンク要素の前記データ処理特性に従って構成するステップを含む、請求項３の方法。
【請求項５】
前記データ処理要素が、分岐要素、合流要素、およびソート要素からなるグループからの要素を含む、請求項４の方法。
【請求項６】
更に、直列計算グラフを形成するステップを含み、当該直列計算グラフでは、前記計算グラフの少なくとも幾つかの前記データ処理要素が、直列データ処理要素の多数のインスタンスとしてそれぞれ表されるとともに、前記１つ以上のリンク要素のそれぞれが、前記直列データ処理要素の前記インスタンスにデータフローにより結合された、１つ以上の直列データ処理要素を用いてそれぞれ表される、請求項１の方法。
【請求項７】
前記上流、および／または下流データ処理要素の前記特性が、前記データ処理要素の少なくとも幾つかについての並列処理次数を含む、請求項１の方法。
【請求項８】
前記上流、および／または下流データ処理要素の前記特性が、上流データ処理要素により出力ポート上で提供されるデータについてのデータ特性、および／または下流データ処理要素により入力ポート上で受信されるデータについてのデータ特性を含む、請求項１の方法。
【請求項９】
前記データ特性がソート特性を含む、請求項８の方法。
【請求項１０】
前記データ特性が分岐特性を含む、請求項８の方法。
【請求項１１】
１つ以上の並列成分を持つ計算グラフを自動的に規定するための方法であって、
前記１つ以上の並列成分の下流並列成分のデータフローに対する入力要件の特性を示すメタデータにアクセスするステップと、
前記データフローを処理するための少なくとも１つの機能要素を規定して、前記下流並列成分の前記入力要件を満たすステップと、
を含む方法。
【請求項１２】
前記少なくとも１つの機能要素が分岐要素を含む、請求項１１の方法。
【請求項１３】
前記分岐要素がハッシュ分岐要素を含む、請求項１２の方法。
【請求項１４】
前記分岐要素がラウンドロビン分岐要素を含む、請求項１２の方法。
【請求項１５】
前記分岐要素が一斉伝達要素を含む、請求項１２の方法。
【請求項１６】
前記少なくとも１つの機能要素が合流要素を含む、請求項１１の方法。
【請求項１７】
前記合流要素がソート要素を含む、請求項１６の方法。
【請求項１８】
少なくとも１つの機能要素を規定するステップが、２つ以上の機能要素を結合する相互接続ネットワークを規定するステップを含む、請求項１１の方法。
【請求項１９】
成分の出力データフローの特性を、前記成分についてのメタデータに基づいて決定するステップを更に含む、請求項１１の方法。
【請求項２０】
前記出力データフローの前記特性を決定するステップが、前記成分に対する１つ以上の入力フローの特性にも基づく、請求項１９の方法。
【請求項２１】
前記出力データフローの前記特性を決定するステップが、１つ以上の規則を適用するステップを含む、請求項１９の方法。
【請求項２２】
前記出力データフローの前記特性を決定するステップが、１つ以上の手順命令を実行するステップを含む、請求項１９の方法。
【請求項２３】
コンピュータ可読媒体に格納された、グラフベース計算の仕様化を処理するためのコンピュータプログラムであって、コンピュータシステムに、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れるステップと、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項２４】
グラフベース計算の仕様化を処理するためのシステムであって、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れる手段と、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップを含む、リンク要素の特性を決定する手段と、
を含むシステム。
【請求項２５】
計算グラフを並列化するための方法であって、
リンクにより接続された第１成分および第２成分を含む、前記計算グラフの仕様を受け入れるステップと、
前記第１成分および／または前記第２成分の並列処理次数の仕様を受け入れるステップと、
前記直列リンクに対応するとともに、前記規定の並列処理次数に少なくとも基づく並列特性を有する成分間リンクを形成するステップと、
を含む方法。
【請求項２６】
前記計算グラフが直列計算グラフであり、前記第１成分および前記第２成分を結合する前記リンクが直列リンクである、請求項２５の方法。
【請求項２７】
前記直列計算グラフが、前記計算グラフの成分を結合する複数の直列リンクを含み、前記直列計算グラフから並列化した計算グラフを形成するステップを含む、請求項２６の方法。
【請求項２８】
前記並列化した計算グラフを形成するステップが、前記複数の直列リンクのそれぞれに対して、並列特性を有する成分間リンクで前記直列リンクを置換するステップを含む、請求項２７の方法。
【請求項２９】
前記リンクが、前記第１成分の出力フローを前記第２成分の入力フローに結合する、請求項２５の方法。
【請求項３０】
前記成分間リンクが、前記第１成分の前記出力フローの特性に少なくとも基づく並列特性を有する、請求項２９の方法。
【請求項３１】
前記成分間リンクが、前記第２成分の前記入力フローの特性に少なくとも基づく並列特性を有する、請求項２９の方法。
【請求項３２】
前記並列処理次数の前記仕様を受け入れるステップが、前記計算グラフの成分と関連付けられたメタデータにアクセスするステップを含む、請求項２５の方法。
【請求項３３】
コンピュータ可読媒体に格納された、グラフベース計算の仕様化を処理するためのコンピュータプログラムであって、コンピュータシステムに、
リンクにより接続された第１成分および第２成分を含む、前記計算グラフの仕様を受け入れるステップと、
前記第１成分および／または前記第２成分の並列処理次数の仕様を受け入れるステップと、
前記直列リンクに対応するとともに、前記規定の並列処理次数に少なくとも基づく並列特性を有する成分間リンクを形成するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項３４】
直列計算グラフを処理して並列化した計算グラフを形成するためのコンピュータ実装方法であって、
（ａ）前記並列化グラフの成分への入力フローの特性を、その成分の１つ以上の出力フローの特性にマッピングするステップと、
（ｂ）２つの成分間の成分間リンクを実装する機能要素についての特性を、そのリンクからデータを受け入れる成分の要求入力特性に基づいて決定するステップと、
（ｃ）成分の入力フローの前記特性を、別の成分からの出力フローの特性、および、かかる別の成分と前記成分とを接続するリンクに対する機能要素の決定された特性に基づいて決定するステップと、
を含む、コンピュータ実装方法。
【請求項３５】
（ｄ）前記並列化した計算グラフに、前記成分間リンクのネットワーク表現を挿入するステップを更に含む、請求項２５の方法。
【請求項３６】
前記直列計算グラフを並列化する際、（ａ）〜（ｃ）のそれぞれが繰り返し適用される、請求項２５の方法。
【請求項３７】
コンピュータ可読媒体に格納された、直列計算グラフを処理して並列化した計算グラフを形成するためのコンピュータプログラムであって、コンピュータシステムに、
（ａ）前記並列化したグラフの成分への入力フローの特性を、その成分の１つ以上の出力フローの特性にマッピングするステップと、
（ｂ）２つの成分間の成分間リンクを実装する機能要素についての特性を、そのリンクからデータを受け入れる成分の要求入力特性に基づいて決定するステップと、
（ｃ）成分の入力フローの前記特性を、別の成分からの出力フローの特性、および、かかる別の成分と前記成分とを接続するリンクに対する機能要素の決定された特性に基づいて決定するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項３８】
計算グラフ内のソート順序に従ってソートされたデータを処理するための方法であって、
前記計算グラフ内の１つ以上のフローにソートデータを通過させるステップと、
前記１つ以上のフローに、前記ソート順序に関する１つ以上のインジケータを通過させるステップとを含み、
対応するフローの前記インジケータの内の少なくとも幾つかが、前記データについての前記ソート順序における順位をそれぞれ識別し、それにより、前記対応するフロー上の後続データが、前記ソート順序における前記識別した順位より早く発生しないようにする方法。
【請求項３９】
コンピュータ可読媒体に格納された、計算グラフ内のソート順序に従ってソートされたデータを処理するためのコンピュータプログラムであって、コンピュータシステムに、
前記計算グラフ内の１つ以上のフローにソートデータを通過させるステップと、
前記１つ以上のフローに、前記ソート順序に関する１つ以上のインジケータを通過させるステップとを含み、
対応するフローの前記インジケータの内の少なくとも幾つかが、前記データについての前記ソート順序における順位をそれぞれ識別し、それにより、前記対応するフロー上の後続データが、前記ソート順序における前記識別した順位より早く発生しないようにする、コンピュータプログラム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
関連出願の相互参照
本出願は、２００３年６月２５日出願の米国特許仮出願第６０／４８２，３９１号の優先権を主張し、当該仮出願は引用により本明細書に組み込む。
【０００２】
発明の背景
本発明は、データの並列処理に関し、より詳細には、コンピュータ支援による並列計算グラフの仕様に関する。
【０００３】
複雑な計算は、多くの場合、計算の成分をグラフの頂点と関連付け、成分間のデータフローをグラフのリンク（枝、辺）に対応させ、有向グラフによってデータフローとして表すことが可能である。このようなグラフベースの計算を実施するシステムは、米国特許第５，９６６，０７２号「グラフとして表される計算の実行」に記載されている。
【０００４】
図１Ａを参照すると、計算グラフ１００の例には、入力ファイル１１０および出力ファイル１４０が含まれる。入力ファイル１１０は、トランザクション処理システムにおける別々のトランザクションとそれぞれ関連付けられたデータ記録等の、一連のワーク要素のソースである。各ワーク要素は、最初に成分Ａ１２０により処理され、直列リンク１２５を通過し、次いで成分Ｂ１３０により処理される。成分Ｂの出力は、出力ファイル１４０に格納される。
【０００５】
計算グラフは、個々の成分の多数のインスタンスを用いて実施するのが望ましい。例えば、成分の各インスタンスを異なるプロセッサでホストすることにより、粗い並列処理を達成して全体の計算能力を増大できる。図１Ｂを参照すると、並列化した計算グラフ１０１の仕様には、直列計算グラフ１００と同様の入力ファイル１１０および出力ファイル１４０が含まれる。並列成分Ａ１２１は、並列に編成された成分Ａ１２０のｍ個のインスタンスを表し、並列成分Ｂ１３１は、並列に表された成分Ｂ１３０のｍ個のインスタンスを表す。並列リンク１２６は、並列成分Ａ１２１と並列成分Ｂ１３１とを接続する。図１Ｂのような並列計算グラフの表現では、並列成分は太線で示され、成分に隣接する並列処理次数（例えば、図１Ｂの「ｍ」）のインジケータを任意で用いて示される。
【０００６】
図１Ｃを参照すると、並列化した計算グラフ１０１は、成分Ａ１２０のｍ個のインスタンス（Ａ１からＡｍまでラベルを付す）を並列に編成して、明示的に直列形で表される。入力ファイル１１０からワーク要素を分配するために、１：ｍ分岐要素１１５を、入力ファイル１１０と、成分Ａ１２０のｍ個のインスタンスを含む並列成分Ａ１２１を構成する成分Ａのｍ個のインスタンスとの間に挿入する。分岐要素１１５は、ワーク要素を１つの入力で受け、各入力をｍ出力の内の１つに、例えばラウンドロビン方式で送る。ｍ：１の合流要素１３５は、ｍ個の成分Ｂ１２０の出力をｍ本の入力ライン上で受け、その入力を、例えば到着時間に従ってマージして、出力ファイル１４０に出力する。並列リンク１２６は、本例では、成分Ａおよび成分Ｂの対応するインスタンスを接続する直列リンクの並列組合せとして表される。
【０００７】
概要
一態様では、本発明は、一般に、並列計算グラフを自動的に規定するための方法を特徴とする。第１計算グラフの仕様を受け入れる。グラフは、リンク要素により接続されるデータ処理要素を有し、各リンク要素は、上流データ処理要素および下流データ処理要素に関連付けられる。１つ以上のリンク要素のそれぞれに対して、リンク要素のデータ処理特性が、リンク要素と関連する上流および／または下流データ処理要素の特性に従って決定される。
【０００８】
各データ処理要素は、頂点として表され、各リンク要素は、計算グラフの枝として表すことができる。
【０００９】
別の態様では、本発明は、一般に、１つ以上の並列成分を持つ計算グラフを規定する自動化した手法を特徴とする。その手法には、下流並列成分のデータフローに対する入力要件を特徴付けるメタデータを用いるステップと、データフローを処理するための少なくとも１つの機能要素を規定して、下流並列成分の入力要件を満たすステップとが含まれる。
【００１０】
機能要素には、分岐要素を含めることができる。分岐要素には、例えば、ハッシュ分岐要素、ラウンドロビン分岐要素、または一斉伝達要素を含めることができる。
【００１１】
機能要素には、ソート要素も含み得る合流要素を含めることができる。
【００１２】
相互接続ネットワークは、機能要素をリンクできる。
【００１３】
本手法には、成分の出力データフローの特性を、成分についてのメタデータに基づいて決定するステップを含めることもできる。同様に、または追加して、これらの特性は、成分に対する１つ以上の入力フローの特性に基づくことができる。出力フローの特性を決定するステップには、１つ以上の規則を適用するステップを含めることができ、および／または１つ以上の手順命令を実行するステップを含めることができる。
【００１４】
別の態様では、本発明は、一般に、計算グラフを並列化するための方法を特徴とする。計算グラフの仕様を受け入れる。計算グラフには、リンクにより結合された第１成分および第２成分が含まれる。第１成分および／または第２成分の並列処理次数の仕様も受け入れる。直列リンクと対応する成分間リンクは、少なくとも規定した並列処理次数に基づく並列特性を有するように形成される。
【００１５】
別の態様では、本発明は、一般に、直列計算グラフを並列化するためのコンピュータ実装方法を特徴とする。本方法には、（ａ）前記並列化グラフの成分への入力フローの特性を、その成分の１つ以上の出力フローの特性にマッピングするステップと、（ｂ）２つの成分間のリンクを実装する機能要素についての特性を、そのリンクからデータを受け入れる成分の要求入力特性に基づいて決定するステップと、（ｃ）成分の入力フローの前記特性を、別の成分からの出力フローの特性、および、かかる別の成分と前記成分とを接続するリンクに対する機能要素の決定された特性に基づいて決定するステップとを含む各ステップの繰り返し適用を含む。
【００１６】
別の態様では、本発明は、一般に、ソート順序に従ってソートするデータフローを実施する手法を特徴とし、ソート順序に関する１つ以上のインジケータをソートデータに加えてフロー上を通過させる。インジケータの内の少なくとも幾つかが、データについてのソート順序における順位をそれぞれ識別し、それにより、フロー上の後続データが、ソート順序における識別した順位より早く発生しないようにする。
【００１７】
本発明の態様は、次の利点の内の１つ以上を有することができる：
【００１８】
直列計算グラフは、ユーザからの入力なしで、または限られたユーザからの入力で並列化でき、それにより、並列化した計算グラフを設計する処理を簡略化できる。
【００１９】
自動化した手順は、ユーザに頼って入力要件を満たすのではなく、自動化したシステムが、グラフ内の成分の入力要件が満たされていることを検証できるので、エラーが少なくなる傾向がある。
【００２０】
本発明の態様は、最初の直列（または並列）計算グラフと、並列計算グラフとの機能的等価性を保証することに関する技術的考察に関わる。技術的効果は、直列計算グラフにより規定される計算が、幾つかの別々のプロセッサ上で並列実行されるよう分配でき、それにより、直列実行と比較して並列実行のスループットが増大するということである。
【００２１】
本発明の他の特徴および利点は、以下の説明および請求項から明らかである。
【００２２】
説明
図１Ａ〜図１Ｃを参照すると、図１Ａに示す直列計算グラフ１００は、簡単な計算グラフの一例であり、状況によっては、図１Ｂ〜図１Ｃに示す並列計算グラフ１０１として実施できる。例えば、入力ファイル１１０からの各ワーク要素を他の全てのワーク要素と独立して処理できる場合、並列計算グラフ１０１は、直列計算グラフ１００と同一の計算を実行することになる。注意すべきは、同一の計算を実行するとはいえ、直列グラフ１００の場合に出力ファイル１４０が受け取るワーク要素の順序は、並列グラフ１０１の場合と同一であるとは限らない、ということである。この例では、出力ワーク要素の順序は、計算ネットワークの機能に対して重要ではない。
【００２３】
成分Ａ１２０の特性に依存して、入力要素を分割して成分Ａの各種インスタンスで処理するために、特定種類の分岐要素１１５が必要なこともある。例えば、計算グラフ１００が、特定アカウントにそれぞれ関連付けられたトランザクション記録を処理するためのものである場合、並列計算グラフが直列グラフと機能的に等価であるために、いずれの特定アカウントについての全ての記録も、成分Ａ１２０の共通のインスタンスにより処理するよう要求してもよい。直列グラフ１００では、成分Ａ１２０のインスタンスが１つしかないので、このような要件が満たされる。並列グラフ１０１では、特定アカウントについての全ての記録が成分Ａの共通のインスタンスに送られるという要件は、例えばラウンドロビン分岐要素等、幾つかの１：ｍ分岐要素１１５の形式ついては保証されない。この例では、適切な分岐要素１１５がハッシュ関数に従って、各記録におけるアカウントフィールドの値を、分岐要素１１５の出力の１つとそれぞれ関連付けられたｍ個の異なる値にマッピングする。いかなる特定ハッシュ値を生み出す記録も、全て同一出力に送られるので、並列グラフ１０１において成分Ａ１２０の共通のインスタンスにより処理される。このような１：ｍ分岐要素１１５は、ハッシュ分岐要素と呼ばれる。ハッシュ関数は、分岐要素１１５の出力のそれぞれに送られる各記録が、平均して数の偏りがないように設計される。
【００２４】
直列計算グラフ１００に基づいて並列計算グラフ１０１の仕様を決定するユーザは、直列グラフの仕様を変換して直列グラフの所望の機能を保存する。例えば、図１Ａに示す直列グラフについて、ユーザは、並列処理次数（ｍ）を成分Ａ１２０およびＢ１２０について規定し（本例ではともに同一の並列処理次数を有する）、分岐要素１１５および合流要素１３５をグラフに追加し、そして追加した要素の特性を規定することができる。例えば、成分Ａ１２０がアカウント番号に従って分岐された記録を要求する場合、ユーザは、成分Ａ１２０の要件を認識し、手動で分岐要素１１５を構成して、アカウント番号のハッシュ値に従って記録を分割する。
【００２５】
一般に、成分Ａ１２０の特性に依存して、分岐要素１１５を規定するユーザは、各種の分岐要素から選択できる。これらの分岐要素の種類には以下が含まれるが、必ずしもこれらに限定されない：
・ワーク要素を分岐する基準となる各ワーク要素内の１つ、または複数のキーにより規定されるハッシュ分岐要素；
・ワーク要素のキー値とは無関係にワーク要素を分割するラウンドロビン分岐要素、普通は異なる出力間を巡回する；および、
・各入力ワーク要素の複製が出力のそれぞれに送られる一斉伝達分岐要素。
【００２６】
また、並列処理グラフ１０１を規定するユーザは、合流要素１３５の特性を規定しなければならないこともある。例えば、入力ワーク要素は、トランザクション記録にあるアカウント番号等の、ワーク要素のキー値に従ってソートされている場合がある。直列グラフ１００では、その順序は保存されよう。しかしながら、並列グラフ１０１では、異なる分岐が僅かに異なるレートでその出力を処理するだけでも、その順序が乱れることがある。従って、結果的に得られる出力ファイル１４０の順序が直列グラフ１００を用いて拘束されるものと一致すべき場合、合流要素１３５は様々な分岐から受け取るワーク要素内の特定キー、例えばアカウント番号に従って、その入力をソートすべきであるとユーザは規定できる。
【００２７】
出力合流要素１３５の所望の特性、および合流要素への入力についてなし得る仮定に依存して、並列グラフを規定するユーザは、合流要素の種類を選択する。合流要素の利用可能な種類には、以下が含まれるが、限定はされない：
・ワーク要素を入力から出力へ任意の順序で、例えば合流要素に到着した時間に従って通過させる任意の合流要素；および、
・キーに従って入力をソートしてから出力へ通過させるソート合流要素。
【００２８】
図１Ａに戻って参照すると、入力ファイル１１０からのワーク要素を、成分Ａ１２０および成分Ｂ１３０の両方に適するように分岐できない状況もあり得る。例えば、トランザクション記録の場合、成分Ａについてはアカウント番号により、成分Ｂについては受取人により、ワーク要素を分岐する必要があるかもしれない。このような場合、図１Ｃに示すような成分Ａおよび成分Ｂの対応するインスタンス間の直接リンクは、一般に許容されない。このような直接リンクが不可能なもう１つの状況は、成分Ｂとは異なる並列処理次数が成分Ａに望ましい場合である。例えば、成分Ａが成分Ｂの２倍のリソースを要求する場合、成分Ａには２倍の数のインスタンスが規定可能で、それにより、成分ＡおよびＢの異なる対応インスタンス間の直接リンクが不可能になる。
【００２９】
図２Ａ〜図２Ｃを参照すると、より一般的な例で、直列グラフと機能的に等価な並列計算グラフの規定が、幾つかのステップで実行される。図２Ａは、成分間リンク（ＩＣＬ）２０５によりリンクされた並列成分Ａ２１０およびＢ２４０を含む、並列グラフ２００の一部を示す。図２Ａのグラフ表現では、ＩＣＬ２０５の並列特性は明示的でない。これらの特性は、この手法では、並列グラフ２００で実行される計算が、成分ＡおよびＢが次数１を有する直列グラフと等価となるように決定される。図２Ａでは、成分Ａは並列次数ｍを有し、成分Ｂは並列次数ｎを有すると示され、ここで、ｍは必ずしもｎと等しくない。ＩＣＬ２０５の特性は、並列成分Ｂ２４０の直列インスタンスの入力の要件（例えば、分岐または順序要件）、および／または並列成分Ａ２１０の直列インスタンスの出力の特性（例えば、分岐またはソート特性）を含む因子に依存する。
【００３０】
図２Ｂを参照すると、第２並列グラフ２０１は、相互に接続された要素のネットワークとしてＩＣＬ２０５を表す。このネットワークは、並列成分Ａ１２１と並列成分Ｂ１３１との間のリンクを提供し、グラフの全体機能が正しくなるように並列成分を構成する直列成分間でワーク要素を適切に「シャッフル」する。ＩＣＬ２０５のネットワーク表現は、並列成分Ａ１２１の出力を取り込む並列分岐要素２２１、相互接続ネットワーク２２５、および出力が並列成分Ｂ１３１への入力を提供する並列合流要素２３１を用いて、このシャッフルを実行する。
【００３１】
この例では、並列成分Ａ２１０は並列処理次数ｍを有し、一方、並列成分Ｂ２４０は並列処理次数ｎを有し、これは必ずしもｍと同一ではない。並列成分Ａ１２１と、並列分岐要素２２１との間の並列リンクは、ｍ本の直列リンクを表す。並列分岐要素２２１の出力は、ｍｎ（ｍ×ｎ）本の直列リンクを表す。相互接続ネットワーク２２５は、ｍｎ本の入力およびｍｎ本の出力を有する。並列合流要素２３１は、ｍｎ本の入力およびｎ本の出力を有する。
【００３２】
図２Ｃを参照すると、図２Ｂに示す並列計算グラフ２０１の一部の直列表現で、並列分岐要素２２１は、分岐要素２２０のｍ個のインスタンスにより実施される。これらの分岐要素のそれぞれは、図１Ｂ〜図１Ｃに示す分岐要素１１５と類似した１：ｎの分岐要素である。並列合流要素２３１は、合流要素２３０のｎ個のインスタンスにより実施される。これらの合流要素のそれぞれは、図１Ｂ〜図１Ｃの合流要素１３５と類似のｍ：１合流要素である。相互接続ネットワーク２２５は、分岐要素２２０の全てのインスタンスが、合流要素２３０の全てのインスタンスに接続された直列リンクのクロス接続として実施される。並列グラフの代替表現の幾つかでは、単一のシンボルまたはアイコンを用いて分岐要素２２１と相互接続ネットワーク２２５との組合せを表し、この組合せもまた「分岐要素」と呼ぶ。
【００３３】
このように、図２Ｂに示すように並列成分Ａ１２１と、並列成分Ｂ１３１とをリンクするＩＣＬ２０５のネットワーク表現を規定するユーザは、（成分間リンク（ＩＣＬ）２０５を形成する相互接続ネットワーク２２５と併せて）並列分岐要素２２１および並列合流要素２３１の特性を規定する。ユーザは、下流成分Ｂ１３０の認識要件と、上流の並列成分Ａ１２１を構成する成分Ａ１２０のインスタンスの出力特性についてユーザが為し得る何らかの仮定とに基づいて、これらの特性を選択する。
【００３４】
成分間リンク２０５の特性を規定する例として、成分Ａ２１０は、ワーク要素がアカウント番号に従って分岐されるよう要求し、一方、成分Ｂ２４０は、出力が郵便番号に従って分岐されるよう要求すると想定する。成分Ａへの入力が適切に分岐されたと仮定すると、成分Ａの出力もまた同様に分岐されることになる。すなわち、この例では、図２Ｂの成分Ａ２１０の出力は、アカウント番号に従って分岐されることになる。成分間リンクの１：ｎ分岐要素２２０のそれぞれは、各ワード要素内の郵便番号キーを用いて、どの出力にワーク要素を渡すかを決定するハッシュ分岐要素である。同一の郵便番号をもつワーク要素は、成分Ａ２１０の別々のインスタンスにより処理されているのが一般的であり、従って、１：ｎハッシュ要素２２０の別々のインスタンスを通過することになる。同一のハッシュ値と対応する各１：ｎハッシュ分岐要素２２０からの出力は、成分間リンクの共通の合流要素２３０に渡される。この例では、成分Ｂに提示されるワーク要素の順序は重要ではないので、合流要素２３０のそれぞれは、ワーク要素を到着順で対応する成分に渡す。
【００３５】
自動化した、またはコンピュータ支援による、直列グラフを並列化するための手法は、ＩＣＬ２０５のネットワーク表現、およびネットワーク表現の全体のリンクおよび要素（例えば、分岐要素）の特性を決定する。ユーザは、図２Ｂに示すようなＩＣＬ２０５のネットワーク構造を必ずしも考慮せずに、図２Ａに示すようなグラフ表現を用いる。その手法は、成分間リンクのネットワーク表現の分岐、相互接続、および合流要素を明示的に挿入するようユーザに要求することなく、成分間リンクの要素を追加して、上記手法と基本的に同一の結果を達成する。
【００３６】
この自動化した、またはコンピュータ支援による手法の一態様は、計算グラフ内の成分の幾つか、または全ての入力要件を特性化する情報の使用、および成分の幾つか、または全ての出力特性を決定する方法に関する。このために必要な情報は、成分と関連付けたメタデータとして格納される。このメタデータは自動化した並列化手順により用いられる。
【００３７】
直列グラフ（例えば、グラフ２００）内の１つ以上の成分はそれぞれ、成分が要求する各入力特性に関するメタデータを含む。例えば、成分の特定の入力を特定の方法で分岐するよう要求する場合、その入力に対する入力メタデータには、どのキーまたはフィールドに従ってワーク要素を分岐しなければならないかのインジケータを含むことができる。成分が多数の入力を有する場合、各入力は、それと関連付けられた別々のメタデータを有する。例えば、ある入力は、全てのワーク要素の複製が入力に配分されなければならことを示す一方、別の入力は、ワーク要素が各ワーク要素のアカウント番号により分岐されなければならないことを示す場合がある。
【００３８】
成分への入力についてのメタデータ特性には、以下の１つ以上を含めることができる：
・分岐する場合、１つまたは複数の特定キーに基づいて入力を分岐しなければならないことを示すインジケータ；
・成分の各インスタンスが、全てのワーク要素の複製を入力で受け取らなければならないことを示すインジケータ；および、
・入力をソートしなければならないことを示すインジケータ、およびソート順序を定義する１つまたは複数のキー。
【００３９】
１つ以上の成分の別の特性化は、成分の入力フロー特性、および成分自体の特性に基づく各出力フロー特性に関する。このような特性化の一例は、入力フローで順に受け取る各ワーク要素を処理する成分についてのものである。このような成分について、入力ワーク要素が特定キーに基づいてソートされる場合、成分内で順序変更がないので、出力ワーク要素もまた、その同一キーに従ってソートされる。同様に、特定キーに従って分岐されたワーク要素を成分が受け取る場合、そのキーの値を成分が修正しない場合、出力ワーク要素は、そのキーに基づいて分岐したままとなる。（注意すべきは、成分がキーの値を修正する場合、出力がもはやキーの修正値に従って分岐されるとは限らない、ということである）。
【００４０】
この特性化は、一般に、成分の各入力フロー特性を受け入れ、各出力フローについての特性を作り出す、成分に特有のマッピング機能を定義する。
【００４１】
フローの特性化は、成分に対する入力要件の特性化と類似している。特に、フローの特性化には、以下を含めることができる：
・フローがワーク要素の分岐サブセットだけを含むことを示すインジケータ、分岐する場合は、フローを分岐する基準となった１つまたは複数の特定キー；および、
・フローがソートされていることを示すインジケータ、およびソート順序を定義する１つまたは複数のキー。
【００４２】
成分についての入力特性から出力特性へのマッピングをコード化する幾つかの代替法を用いることができる。例えば、マッピングは、成分と関連付けられた手順命令内で明示的にコード化できる。マッピングをコード化する別の方法は、成分がワーク要素内のどのキー値を修正すると、ソート順序または分岐が乱れる可能性があるかのインジケータ、およびその成分が明示的に実施するソート、順序変更、または分岐に関する明示的なインジケータに基づく。マッピングは、入力特性およびこれらの表示に基づき、例えば、一般的な、または成分に特有の一組の規則を用いる。このようなマッピング規則の例には以下が含まれる：
・１入力および１出力を持ち、キーｋｅｙ１の値の修正を示さない成分については、ｋｅｙ１に従って分岐された入力は、ｋｅｙ１に従って分岐されたままの出力を生じる；
・１入力および１出力を持ち、キーｋｅｙ２の値の修正を示さない成分については、ｋｅｙ１、続いてＫｅｙ２に従ってソートされた入力は、ｋｅｙ１だけに従ってソートされた出力を生じる；
・入力ワーク要素の順序変更を示す成分。ソートされた入力は、それ以上ソートされないことを示す出力を生じる。なぜなら、その成分はソート順序を乱しているかもしれないからである；および、
・キーｋｅｙ１の値に従ってソートを明示的に実施する成分は、入力のソート順序とは無関連にｋｅｙ１に従って出力がソートされることを示す。
【００４３】
成分には、ワーク要素内のフィールド名を変更するものもある。このような成分についてのメタデータは、このような名称変更を識別し、出力特性は新規に命名した変数により表される。例えば、入力が「アカウント」キーにより分岐され、かつ「アカウント」フィールドが「顧客」フィールドとして名称変更される場合、出力は、「顧客」フィールドに従って分岐されるとして特性化される。
【００４４】
図３を参照すると、直列計算グラフから並列計算グラフを規定するための自動化した手順３００は、並列化すべき直列グラフの仕様を受け入れるステップで開始する（ステップ３１０）。この仕様には、各成分のどの出力がフローにより別の成分の各入力に接続されるかを規定するグラフのトポロジとも呼ばれるグラフの構造の仕様が含まれる。仕様には、上記各成分についてのメタデータ、すなわち、もしあれば、１つ以上の成分の各入力についての入力要件、および成分についての入力特性と出力特性との間のマッピング、または成分出力の他の特性化も含まれる。注意すべきは、このメタデータは、ある成分はいかなる入力要件も規定せず、また、ある成分は出力フローの特性を生み出すマッピングを提供しないという点で、任意であるということである。成分がいかなる入力特性も規定しない場合、手順は、入力フローについての何らかの特定の特性を必ずしも強化するとは限らない。成分が、その出力フローの特性を生み出すマッピングを提供しない場合、手順は、これらの特性に関する何らかの仮定を行うとは限らない。
【００４５】
本手順でユーザは、計算グラフの各成分に対して所望の並列処理次数を規定する。本手順の応用の一例として、図１Ａに示す単純な直列計算グラフ１００を検討する。成分Ａ１２０がｍ＝３個の並列インスタンスを有し、および成分Ｂ１３０がｎ＝５個の並列インスタンスを有することをユーザが規定すると仮定する。この例では、入力ファイル１１０および出力ファイル１４０は、物理ファイルを表す並列次数１を有し、直列アクセスをサポートする。
【００４６】
最初の直列グラフの各リンクに対して、手順は、成分間リンク（すなわち、分岐要素、相互接続ネットワーク、および合流要素）の特性を決定して、並列計算グラフの直列リンクを実施する。手順は、次の４段階を繰り返す：
（ａ）１つ以上の成分の入力から出力へのリンク特性をマッピングするステップ（ステップ３２０）；
（ｂ）上流成分の出力特性が既知である各成分間リンクに対して、下流の入力の既知の要件のいずれかに基づいて、成分間リンクの分岐要素、相互接続ネットワーク、および合流要素を含む、成分間リンクの特性を決定するステップ（ステップ３３０）；
（ｃ）ステップ（ｂ）で処理された成分間リンクのそれぞれについて、成分間リンクの出力と関連付けられた下流成分の結果的に得られる入力フロー特性を決定するステップ（ステップ３４０）；および、
（ｄ）成分間リンクのネットワーク表現の成分を、並列グラフの対応する成分間に挿入するステップ（ステップ３５０）。
【００４７】
全ての並列リンクが処理されると（ステップ３６０）、並列成分のそれぞれを展開することにより、等価な直列計算グラフが形成される。
【００４８】
手順のマッピング段階（ステップ３２０）では、通常全てではない成分からの１つ以上の出力フロー特性が計算される。例えば、最初の繰り返しで、入力がない成分からのフロー特性が計算できる。続く繰り返しでは、全ての入力フローについて入力特性を計算した任意の成分についてのマッピングを用いて、その成分の出力フロー特性を決定する。
【００４９】
次の段階（ステップ３３０）で、１つ以上の成分間リンクの分岐および合流要素の特性が、そのリンクの上流成分の並列処理次数（ｍ）、および下流成分の並列処理次数（ｎ）、上流成分からの出力フローの特性、および下流成分の入力フローの要件に基づいて決定される。以下は直接取り扱うことができる幾つかの事例である：
（Ｐ１）ｍ＝ｎで、かつ下流成分への入力フローを、いずれかの特定キーに基づいて分岐、またはソートする必要がなく、入力フローが各ワーク要素の複製を必要としない場合、上流および下流成分の対応するインスタンスは、図１Ｂの例に示すように、直接接続される。注意すべきは、これは、基本的に分岐および合流要素の退化した形式に相当する、ということである。
（Ｐ２）ｍ≠ｎで、かつ下流成分への入力フローを、いずれかの特定キーに基づいて分岐する必要がなく、入力フローが各ワーク要素の複製を必要としない場合、成分間リンクの分岐要素は、ラウンドロビン分配を実行するよう定義する。
（Ｐ３）下流成分への入力フローが、上流成分の出力フローの分岐と異なる一組のキーに従ってワーク要素を分岐することを要求する場合、分岐要素は、要求されたキー値に従ってハッシュ分岐を実行する。
（Ｐ４）入力フローが各ワーク要素の複製を要求する場合、成分間リンクの分岐要素は、一斉伝達機能を実行するよう定義する。
【００５０】
事例（Ｐ２）〜（Ｐ４）のそれぞれについて、下流成分の入力フロー特性に適合させるための成分間リンクの合流要素に関する幾つかの特別な場合がある：
（Ｇ１）下流成分の入力フローが、入力が特定組のキーに従ってソートされることを要求し、かつ上流成分の出力がこれらと同じキーに従ってソートされる場合、合流要素はソート合流を実行する。ソート合流では、合流要素は、入力のそれぞれのワーク要素がソートされると仮定し、ソートキーに従って次にどの入力を出力として選択するかを選択し、出力の正しいソート順序を達成する。
（Ｇ２）下流成分の入力フローが、入力が特定組のキー（ｋｅｙ１、．．．、ｋｅｙＪ）に従ってソートされることを要求し、かつ上流成分の出力が一組のキー（ｋｅｙ１、．．．、ｋｅｙＪ、．．．、ｋｅｙＫ）に従ってソートされる場合、分岐要素は、ソート化合流を実行する。Ｊ＝Ｋの場合、特別な場合（Ｇ１）に帰着する。
（Ｇ３）入力フローが、入力が特定組のキーに基づいてソートされることを要求し、かつ上流成分の出力が互換性のある組のキーに従ってソートされない場合、合流要素はソートを実行する。
【００５１】
他の形式の分岐および合流要素を用いることもできる。例えば、ｍ＝ｎで、かつ下流成分が、いずれの特定の分岐も要求しないが、特定キーに従うソートを要求する場合、対応する上流および下流成分は、要求されるソートを実行する１入力／１出力の「合流」要素だけを有する成分間リンクにより接続できる。注意すべきは、成分間リンクへの入力は分岐を維持し、成分間リンクはソートされた特性を追加するということである。
【００５２】
サイクルの次の段階（ステップ３４０）では、下流成分の入力フロー特性は、上流成分の出力フロー特性、および中間の成分間リンクの特性から決定される。注意すべきは、一般に、少なくとも入力に対する要求特性は、これらのフロー上に存在するということである。成分の出力フローの特性に反映させられる追加の特性も存在し得る。例えば、フローがあるキーに従って分岐され、かつ下流成分が、入力が別のキーでソートされることを要求する場合、ソートだけが要求されているにもかかわらず、結果的に得られるフローは、分岐およびソートの両方が行われる。
【００５３】
サイクルの最後の段階（ステップ３５０）では、成分間リンクのネットワーク表現の要素がグラフに追加される。
【００５４】
サイクルの各繰り返し（ステップ３２０〜３５０）の最後に、成分への追加入力フローの特性が計算される。最初の計算グラフが非循環の場合、最初のグラフの全てのリンクが処理された時に本手順は終了する。
【００５５】
全てのリンクが処理されなかった場合、例えば、上流成分の出力フローの特性が計算されなかった場合、手順を再開する手法は、成分間リンクの特性を決定する際に、フロー特性に関する仮定を行わないことである。このような再スタートは、非循環でない計算グラフで、または幾つかの成分についてメタデータが利用可能でないグラフで要求されることがある。例えば、フローが実際には既に分岐されていたとしても、冗長な分岐要素を成分間リンクに挿入できる。効率的ではない可能性もあるが、並列グラフの正しい機能は依然として保たれよう。
【００５６】
上記の自動化した手順では、ユーザに成分間リンクの成分の挿入を明示的に指示できる。代替として、ユーザは、元の直列計算グラフのリンクのそれぞれに導入される成分間リンクの性質を意識しなくてもよい。ユーザインターフェースは、これらの分岐および合流要素を隠すか、またはデフォルトで成分間リンクのネットワーク表現を表示するのではなく、ユーザが操作するこれら要素のオプション表示を提供できる。
【００５７】
コンピュータ支援（例えば、部分的に自動化した）モードでは、分岐および合流要素の幾つかを明示的に導入することにより、ユーザがその手順を導く。例えば、ユーザは、自動化した手順が適用される前に、特定の分岐および合流要素、または他の形式の要素を並列リンク上で用いるよう規定でき、それにより、そのリンクに対する自動化した手順をオーバーライドできる。コンピュータ支援モードの別の態様では、ユーザは自動化した処理の結果を調査し、成分間リンクの分岐および合流要素を修正できる。注意すべきは、ユーザがリンクを修正した後、自動化した処理はオプションとして、そのリンクから下流にフロー特性を伝搬する。下流の変化は、下流の成分間リンクの新仕様をもたらすことになる。
【００５８】
別のコンピュータ支援モードでは、自動化した手順は、各成分の入力要件が満たされていることを検証し、満たされていない場合、ユーザに通知する。次いで、ユーザは、入力要件を満たす要素を導入でき、次に、システムは改良した設計を自動的に再チェックできる。このモードの変形として、システムは、入力要件を満たすためにグラフの修正（例えば、成分間リンク上への分岐または合流要素の可能な挿入）を提案してもよく、ユーザは提案された修正を用いることを確認するか、または代替の修正（例えば、異なる要素の挿入、または挿入した要素の異なる特性の規定）を提供する。
【００５９】
上記の並列処理手法では、ユーザは、成分のそれぞれについて特定の並列処理次数を選択してから、自動手順を適用する。代替の手法では、ユーザは、どの成分が並列処理されるか、またはそれらの並列処理次数と関連付けられた変数の識別だけを行うが、所望する並列処理の次数を必ずしも規定するとは限らない。その結果は、各成分間リンクの特性が決定される「一般的な」並列計算グラフとなるが、並列成分と同様に、成分間リンクのネットワーク表現における並列要素の特定の実現は、まだ決定されていない。成分についての所望の並列処理次数の特定の値を用いることを規定する場合（例えば、グラフの実行時間に）、一般的なグラフは、特定の並列化した形式で実現される。
【００６０】
上記の並列化手法では、フロー特性は、基本的に「あふれる」手法で伝搬される。すなわち、データフロー特性は、データフロー自体と同一の方向で「下流に」伝搬する。代替の手法を用いてもよい。例えば、上流への伝搬を用いることができる。このような上流伝搬の単純な実施例を、一連の２つの成分ＡおよびＢがある場合に用いることができる。ＡおよびＢがともに同一の並列処理次数を有し、Ｂがキーに従う分岐を要求し、Ａがいずれの特定の分岐も要求しない場合、分岐要件を上流に伝搬して、それによりＡがＢと同一の分岐を要求することもできる。こうして、ＡとＢとの間の明示的な分岐および合流要素を導入することなく、ＡおよびＢの対応するインスタンス間の直接リンクを用いることが可能になる。
【００６１】
直列グラフの成分は、直列サブネットワークの全体を表すこともできる。自動並列化手法の一手法は、直列サブネットワークがそのホストグラフ内で完全に展開されるかのように、サブネットワークを並列化することである。
【００６２】
代替の手法では、直列サブネットワークは、それをホストするネットワークと独立して並列化される。サブネットワークを通じたフロー特性の全体マッピングを含む、全体としてのサブネットワークの特性化を行うメタデータは、ホストネットワークの並列化手順中に用いるために、サブグラフ内の成分についてのメタデータに基づいて計算される。
【００６３】
上記並列化した計算グラフで用いることができる要素の一種は、ソートマージ要素である。上で注記したように、ソートマージ要素が仮定するのは、その入力のそれぞれのワーク要素が特定のソート順序に従ってソートされ、ソートマージ要素は、同一のソート順序に従って全体のマージ出力を生成しなければならないということである。このようなソートマージ要素が後続する場合の基本手順は、その入力のそれぞれで保留されている各ワーク要素を考慮し、ソート順序に従って、次のワーク要素を出力として通過させることである。
【００６４】
しかしながら、どの入力にも保留中のワーク要素がない場合、ソートマージは、その入力に後から到着するワーク要素が既に保留となっている入力より早いソート順序で発生するかどうか判らないので、どのワーク要素も通過させない。次いで、ワーク要素は、フロー終了のインジケータがリンクに到着するまで保持され、到着した時点で、ソートマージ要素は、それ以上のワーク要素がそのフローに到着しないと見なすことができる。
【００６５】
このような阻止挙動が並列化したグラフに発生する状況もある。例えば、ｍ個のインスタンスのそれぞれ、または成分Ａの出力が、キーｋｅｙ１に従ってソートされ、下流成分Ｂが、入力がキーｋｅｙ２に従ってソートされ、キーｋｅｙ１に従って分岐されるよう要求すると想定する。ｋｅｙ１に従うＡの出力の分岐がメタデータにより規定されない場合、並列化手法は、ｋｅｙ１に従って分岐する成分間リンク内のハッシュ分岐要素、続いてｋｅｙ２に従ってソートするソート合流を用いる。しかしながら、成分Ａの出力が既にハッシュ分岐されている場合、各ハッシュ分岐要素に対して、１出力だけが何らかのワーク要素を受け入れる。同様に、結果として、ソートマージ要素で、各ソートマージ要素に対して１入力だけが入力を受け入れる。これは、フロー終了インジケータがハッシュ分岐要素からソートマージ要素に渡されるまで、全体のフローを不必要に妨げる。
【００６６】
この状況を避ける方法は、ソートされた入力を受け取るハッシュ分岐要素が、その出力リンクのそれぞれについてソート値インジケータを繰り返し送って、その出力の内の少なくとも１つが到達したソート順序の値を示すことである。このソート値インジケータは、ソート順序で早い値をもつワーク要素が、このリンクを介して提供されないことを下流成分に合図する。このようなソート値インジケータを受け取るソートマージ要素は、インジケータを用いて、例えば、受け取ったソート値インジケータの値に先行するソート値を有するという理由で、別の入力から保留になっているワーク要素を渡すことができるかどうかを決定する。
【００６７】
ソート値インジケータは、成分を通じてワーク要素のフローに基づいてできるだけ頻繁に、または少ない頻度で、例えば、処理されるワーク要素の数に従って、もしくは時間に従って、周期的に送ることができる。ソート値インジケータは、分岐され得る任意のソートされたフロー上で送ることができ、このようなインジケータは、インジケータを受け取る分岐要素の出力上で一斉伝達される。
【００６８】
下流のソートマージ要素を妨げる問題に対する別の解決法は、上流のハッシュ分岐要素の入力をスクランブルすることであり、それにより、一般に、少なくとも幾つかのワーク要素がハッシュ分岐要素の各出力に渡される。
【００６９】
上記自動手法はコンピュータ上で実行するためのソフトウエアを用いて実装できる。例えば、ソフトウエアは、少なくとも１個のプロセッサ、少なくとも１台のデータ格納システム（揮発性または不揮発性メモリ、および／または格納素子を含む）、少なくとも１台の入力装置またはポート、および少なくとも１台の出力装置またはポートを含む、１台以上のプログラムされた、またはプログラム可能なコンピュータシステム（分散、クライアント／サーバ、またはグリッド等の各種アーキテクチャのものでよい）上で実行される１つ以上のコンピュータプログラムで手順を形成する。ソフトウエアは、例えば計算グラフの設計および構成に関する他のサービスを提供する、より大きなプログラムの１つ以上のモジュールを形成してもよい。
【００７０】
ソフトウエアは、汎用もしくは専用のプログラム可能なコンピュータにより可読のＣＤ−ＲＯＭ等の媒体で提供するか、または実行されるコンピュータにネットワークを介して配信（伝搬される信号でコード化して）できる。全ての機能は、専用のコンピュータ上で、またはコプロセッサ等の専用のハードウエアを用いて、実行できる。ソフトウエアは、ソフトウエアが規定する計算の異なる部分を異なるコンピュータで実行する分散式で実装してもよい。このようなコンピュータプログラムはそれぞれ、汎用もしくは専用のプログラム可能なコンピュータにより可読の格納媒体もしくは装置（例えば、固体メモリもしくは媒体、または磁気式もしくは光学式媒体）に格納またはダウンロードして、格納媒体もしくは装置をコンピュータシステムが読み取って、本明細書で説明する手順で実行する際、コンピュータを構成し、動作させるのが好ましい。本発明のシステムは、コンピュータプログラムを伴って構成したコンピュータ可読の格納媒体として実装することも考えられ、そのように構成された格納媒体は、コンピュータシステムを特定の、および所定の方法で動作させて、本明細書で説明した機能を実行する。
【００７１】
言うまでもなく、先に述べた説明は、説明を意図としたものであり、付帯の請求の範囲が定義する本発明の範囲を制限するものではない。他の実施の形態は、以下の請求の範囲内にある。
【図面の簡単な説明】
【００７２】
【図１Ａ】図１Ａは、直列計算グラフである。
【図１Ｂ】図１Ｂは、並列化した計算グラフである。
【図１Ｃ】図１Ｃは、図１Ｂに示す並列化した計算グラフの直列表示である。
【図２Ａ】図２Ａは、並列化した計算グラフの一部である。
【図２Ｂ】図２Ｂは、成分間リンク上に表される要素を持つ並列化した計算グラフの一部である。
【図２Ｃ】図２Ｃは、図２Ｂに示す並列化した計算グラフの一部の直列表示である。
【図３】図３は、自動並列化手順のフロー図である。
【図１Ａ】
2007529041.tif 000003
【図１Ｂ】
2007529041.tif 000004
【図１Ｃ】
2007529041.tif 000005
【図２Ａ】
2007529041.tif 000006
【図２Ｂ】
2007529041.tif 000007
【図２Ｃ】
2007529041.tif 000008
【図３】
2007529041.tif 000009
【手続補正書】
【提出日】平成17年8月29日(2005.8.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並列計算グラフを自動的に規定するための方法であって、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れるステップと、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップと、
を含む方法。
【請求項２】
前記計算グラフの前記各データ処理要素が頂点として表され、前記各リンク要素が前記計算グラフの枝として表される、請求項１の方法。
【請求項３】
前記１つ以上のリンク要素のそれぞれに対して、そのリンク要素と関連付けられた前記上流、および前記下流データ処理要素を接続するデータパス上に、データ処理要素を用いて前記リンク要素を表すステップを更に含む、請求項１の方法。
【請求項４】
データ処理要素を用いて前記リンク要素を表すステップが、前記データ処理要素を前記リンク要素の前記データ処理特性に従って構成するステップを含む、請求項３の方法。
【請求項５】
前記データ処理要素が、分岐要素、合流要素、およびソート要素からなるグループからの要素を含む、請求項４の方法。
【請求項６】
更に、直列計算グラフを形成するステップを含み、当該直列計算グラフでは、前記計算グラフの少なくとも幾つかの前記データ処理要素が、直列データ処理要素の多数のインスタンスとしてそれぞれ表されるとともに、前記１つ以上のリンク要素のそれぞれが、前記直列データ処理要素の前記インスタンスにデータフローにより結合された、１つ以上の直列データ処理要素を用いてそれぞれ表される、請求項１の方法。
【請求項７】
前記上流、および／または下流データ処理要素の前記特性が、前記データ処理要素の少なくとも幾つかについての並列処理次数を含む、請求項１の方法。
【請求項８】
前記上流、および／または下流データ処理要素の前記特性が、上流データ処理要素により出力ポート上で提供されるデータについてのデータ特性、および／または下流データ処理要素により入力ポート上で受信されるデータについてのデータ特性を含む、請求項１の方法。
【請求項９】
前記データ特性がソート特性を含む、請求項８の方法。
【請求項１０】
前記データ特性が分岐特性を含む、請求項８の方法。
【請求項１１】
１つ以上の並列成分を持つ計算グラフを自動的に規定するための方法であって、
前記１つ以上の並列成分の下流並列成分のデータフローに対する入力要件の特性を示すメタデータにアクセスするステップと、
前記データフローを処理するための少なくとも１つの機能要素を規定して、前記下流並列成分の前記入力要件を満たすステップと、
を含む方法。
【請求項１２】
前記少なくとも１つの機能要素が分岐要素を含む、請求項１１の方法。
【請求項１３】
前記分岐要素がハッシュ分岐要素を含む、請求項１２の方法。
【請求項１４】
前記分岐要素がラウンドロビン分岐要素を含む、請求項１２の方法。
【請求項１５】
前記分岐要素が一斉伝達要素を含む、請求項１２の方法。
【請求項１６】
前記少なくとも１つの機能要素が合流要素を含む、請求項１１の方法。
【請求項１７】
前記合流要素がソート要素を含む、請求項１６の方法。
【請求項１８】
少なくとも１つの機能要素を規定するステップが、２つ以上の機能要素を結合する相互接続ネットワークを規定するステップを含む、請求項１１の方法。
【請求項１９】
成分の出力データフローの特性を、前記成分についてのメタデータに基づいて決定するステップを更に含む、請求項１１の方法。
【請求項２０】
前記出力データフローの前記特性を決定するステップが、前記成分に対する１つ以上の入力フローの特性にも基づく、請求項１９の方法。
【請求項２１】
前記出力データフローの前記特性を決定するステップが、１つ以上の規則を適用するステップを含む、請求項１９の方法。
【請求項２２】
前記出力データフローの前記特性を決定するステップが、１つ以上の手順命令を実行するステップを含む、請求項１９の方法。
【請求項２３】
コンピュータ可読媒体に格納された、グラフベース計算の仕様化を処理するためのコンピュータプログラムであって、コンピュータシステムに、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れるステップと、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項２４】
グラフベース計算の仕様化を処理するためのシステムであって、
データ処理要素がリンク要素で接続され、前記リンク要素のそれぞれが、前記データ処理要素の関連上流要素から、前記データ処理要素の関連下流要素へのデータフローと関連付けられた計算グラフの仕様を受け入れる手段と、
前記計算グラフの１つ以上の前記リンク要素のそれぞれに対して、前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップを含む、リンク要素の特性を決定する手段と、
を含むシステム。
【請求項２５】
計算グラフを並列化するための方法であって、
リンクにより接続された第１成分および第２成分を含む、前記計算グラフの仕様を受け入れるステップと、
前記第１成分および／または前記第２成分の並列処理次数の仕様を受け入れるステップと、
前記リンクに対応するとともに、前記規定の並列処理次数に少なくとも基づく並列特性を有する成分間リンクを形成するステップと、
を含む方法。
【請求項２６】
前記計算グラフが直列計算グラフであり、前記第１成分および前記第２成分を結合する前記リンクが直列リンクである、請求項２５の方法。
【請求項２７】
前記直列計算グラフが、前記計算グラフの成分を結合する複数の直列リンクを含み、前記直列計算グラフから並列化した計算グラフを形成するステップを含む、請求項２６の方法。
【請求項２８】
前記並列化した計算グラフを形成するステップが、前記複数の直列リンクのそれぞれに対して、並列特性を有する成分間リンクで前記直列リンクを置換するステップを含む、請求項２７の方法。
【請求項２９】
前記リンクが、前記第１成分の出力フローを前記第２成分の入力フローに結合する、請求項２５の方法。
【請求項３０】
前記成分間リンクが、前記第１成分の前記出力フローの特性に少なくとも基づく並列特性を有する、請求項２９の方法。
【請求項３１】
前記成分間リンクが、前記第２成分の前記入力フローの特性に少なくとも基づく並列特性を有する、請求項２９の方法。
【請求項３２】
前記並列処理次数の前記仕様を受け入れるステップが、前記計算グラフの成分と関連付けられたメタデータにアクセスするステップを含む、請求項２５の方法。
【請求項３３】
コンピュータ可読媒体に格納された、グラフベース計算の仕様化を処理するためのコンピュータプログラムであって、コンピュータシステムに、
リンクにより接続された第１成分および第２成分を含む、前記計算グラフの仕様を受け入れるステップと、
前記第１成分および／または前記第２成分の並列処理次数の仕様を受け入れるステップと、
前記直列リンクに対応するとともに、前記規定の並列処理次数に少なくとも基づく並列特性を有する成分間リンクを形成するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項３４】
直列計算グラフを処理して並列化した計算グラフを形成するためのコンピュータ実装方法であって、
（ａ）前記並列化グラフの成分への入力フローの特性を、その成分の１つ以上の出力フローの特性にマッピングするステップと、
（ｂ）２つの成分間の成分間リンクを実装する機能要素についての特性を、そのリンクからデータを受け入れる成分の要求入力特性に基づいて決定するステップと、
（ｃ）成分の入力フローの前記特性を、別の成分からの出力フローの特性、および、かかる別の成分と前記成分とを接続するリンクに対する機能要素の決定された特性に基づいて決定するステップと、
を含む、コンピュータ実装方法。
【請求項３５】
（ｄ）前記並列化した計算グラフに、前記成分間リンクのネットワーク表現を挿入するステップを更に含む、請求項３４の方法。
【請求項３６】
前記直列計算グラフを並列化する際、（ａ）〜（ｃ）のそれぞれが繰り返し適用される、請求項３４の方法。
【請求項３７】
コンピュータ可読媒体に格納された、直列計算グラフを処理して並列化した計算グラフを形成するためのコンピュータプログラムであって、コンピュータシステムに、
（ａ）前記並列化したグラフの成分への入力フローの特性を、その成分の１つ以上の出力フローの特性にマッピングするステップと、
（ｂ）２つの成分間の成分間リンクを実装する機能要素についての特性を、そのリンクからデータを受け入れる成分の要求入力特性に基づいて決定するステップと、
（ｃ）成分の入力フローの前記特性を、別の成分からの出力フローの特性、および、かかる別の成分と前記成分とを接続するリンクに対する機能要素の決定された特性に基づいて決定するステップと、
を実行させるための命令を含む、コンピュータプログラム。
【請求項３８】
計算グラフ内のソート順序に従ってソートされたデータを処理するための方法であって、
前記計算グラフ内の複数のフローにソートデータを通過させるステップと、
前記複数のフローの１つ以上に、前記ソート順序に関する１つ以上のインジケータを通過させるステップとを含み、
対応するフローの前記インジケータの内の少なくとも幾つかが、前記データについての前記ソート順序における順位をそれぞれ識別し、それにより、前記対応するフロー上の後続データが、前記ソート順序における前記識別した順位より早く発生しないようにする方法。
【請求項３９】
コンピュータ可読媒体に格納された、計算グラフ内のソート順序に従ってソートされたデータを処理するためのコンピュータプログラムであって、コンピュータシステムに、
前記計算グラフ内の複数のフローにソートデータを通過させるステップと、
前記複数のフローの１つ以上に、前記ソート順序に関する１つ以上のインジケータを通過させるステップとを含み、
対応するフローの前記インジケータの内の少なくとも幾つかが、前記データについての前記ソート順序における順位をそれぞれ識別し、それにより、前記対応するフロー上の後続データが、前記ソート順序における前記識別した順位より早く発生しないようにする、コンピュータプログラム。
【請求項４０】
前記リンク要素と関連付けられた前記上流、および／または前記下流データ処理要素の特性に従って、前記リンク要素のデータ処理特性を決定するステップが、前記リンク要素を形成する相互接続ネットワークを、前記決定した特性に基づいて決定するステップを含む、請求項１の方法。
【国際調査報告】
2007529041.tif 000010
2007529041.tif 000011
2007529041.tif 000012
2007529041.tif 000013
2007529041.tif 000014