(57)【要約】  データ並列演算における入力要素の並び順を保存するために様々な技術および技法が開示される。この並び順は、入力における要素の順番を表す位置かまたはそれぞれの入力要素に対する並べ替え可能なキーを発生させるプログラマによって指定されるキー選択ルーチンに基づくことができる。複合的データ並列演算は、分割および結合を発生させる個別のデータ並列演算を含むように書き直される。それぞれの分割は次に、独立して並列処理される。本システムは、使用者の演算が属する分類によって異なる技法を使用して、下流の演算が他のある演算により確立された並び順情報を記憶することを確実にする。データ要素の間で確立された並び順を意識している最終的結合処理を使用して、データが１つの出力ストリームに結合し戻される。
2010532528.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターに実行させるためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体であって、前記命令は、
分割および結合を発生させるデータ並列演算を含むように複合的データ並列演算を書き直すステップ（２０６）と、
結果としてのそれぞれの分割を並列に処理するステップ（２０８）と、
データ並列演算の前記実行の間、論理的順序情報を確立するステップ（２０７）と、
必要な論理的並び順を保存するように動作可能な最終的結合処理を使用して１つの出力ストリームにデータを結合し戻すステップ（２１２）と
を具備することを特徴とするコンピューター読み取り可能媒体。
【請求項２】
保存される前記論理的順序情報が、前記データ並列演算への入力における要素の位置から導出される（２７２）ことを特徴とする請求項１に記載のコンピューター読み取り可能媒体。
【請求項３】
前記最終的結合処理が、前記論理的順序情報から最終的に順序付けられた集合を生成する（３０２）ように動作可能であることを特徴とする請求項１に記載のコンピューター読み取り可能媒体。
【請求項４】
物理的並び順を保存するようにすべての演算が配慮している（have been careful）場合に、前記最終的結合処理が、要素に対して漸進的並べ替え（ｉｎｃｒｅｍｅｎｔａｌ  ｓｏｒｔ）を実行する（３０２）ように動作可能であることを特徴とする請求項１に記載のコンピューター読み取り可能媒体。
【請求項５】
前記１つの出力ストリームが、前記最終的結合処理の順序付けられた（３０２）結果を含むことを特徴とする請求項４に記載のコンピューター読み取り可能媒体。
【請求項６】
物理的並び順を保存するようにすべての演算が配慮していない場合に、前記結合演算が、並べ替えおよび結合に関与する（２４６）ことを特徴とする請求項１に記載のコンピューター読み取り可能媒体。
【請求項７】
確立した並び順を有する並べ替えが、論理的順序保存特性を確立するキーを発生させるように変更される（３７２）ことを特徴とする請求項６に記載のコンピューター読み取り可能媒体。
【請求項８】
保存される前記順番情報が、前記データ並列演算への入力におけるそれぞれの要素から並べ替えキーを抽出するキー選択機能から導出される（３０８）ことを特徴とする請求項１に記載のコンピューター読み取り可能媒体。
【請求項９】
複合的データ並列演算の実行に際して、出力における相対的入力要素の位置を保存するための方法であって、
前記要素の間での論理的並び順を確立し、かつ順番保存を必要とする演算にアクセスするステップ（２７２）と、
下流の演算が、複数の分類の何れに前記演算が属するかによって異なる技法を使用して、並び順情報を記憶することを確実にするステップ（２７６）と
を具備することを特徴とする方法。
【請求項１０】
複合的演算が、それぞれの構成演算に個々の分類を表示するために分析されるステップであって、前記個々の分類が、物理的順番再順序付け分類、論理的順番再順序付け分類、物理的および論理的順番再順序付け分類、ならびに上記の何れでもない分類、から成るグループから選択される（２０７）ことを特徴とする請求項９に記載の方法。
【請求項１１】
論理的順番再順序付け分類または両方に属する何れかの演算がある場合には、前記結合演算に最も近い前記論理的順序再順序付け分類における演算が、次に順番を再構築するために必要な情報を記憶させる（２９８）ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記最も近い演算から前記結合への出力を使用する、物理的再順序付け分類におけるすべての演算が、前記最終的な結合の間、順番を再構築するために必要な情報を  覚える  （３００）ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記順番保存処理が：
物理的順番再順序付け分類におけるそれぞれの演算に並び順が保存される必要性があることを通知する（３２２）ステップと、
並び順に対する変更を記憶するよりもっと効率的であると判定される（３２６）代替のアルゴリズムであって、前記アルゴリズムが前記物理的順番再順序付け分類に属さない場合には、前記代替の演算に移る（３２９）ステップと
を具備することを特徴とする請求項１２に記載の方法。
【請求項１４】
並び順に対する変更を記憶するよりもっと効率的であると判定される代替のアルゴリズムがない場合には、関連付けを実行し、変更を記憶する（３２８）ステップ
をさらに具備することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記代替のアルゴリズムに関する前記判定のために経験的方法が使用される（３２８）ことを特徴とする請求項１３に記載の方法。
【請求項１６】
請求項９に記載の前記ステップ（２００）をコンピューターに実行させるための、コンピューターで実行可能な命令を有するコンピューター読み取り可能媒体。
【請求項１７】
データ発生源を検索する（２９２）ステップと、
前記データ発生源におけるそれぞれの演算に個々の分類を表示するために、複合的データ並列演算を分析する（２９４）ステップと、
何れかの演算が論理的順序再順序付け分類に属する場合には（２９６）、結合に最も近い前記論理的順序再順序付け分類における演算において順番を再構築するために必要な情報を記憶する（２９８）ステップと、
前記結合に最も近い前記論理的順序再順序付け演算からの出力を使用するすべての演算における順番保存を容易にする順番保存処理を実行する（３００）ステップと、
最終的に順序付けられた集合を生成するために最終的結合処理を実行する（３０２）ステップと
を具備することを特徴とする、データ並列演算において既存の順序を表す要素位置を保存するための方法。
【請求項１８】
何れの演算も前記物理的および論理的順番再順序付け分類に属さず、かつ並び順が重要でない場合には、特に何も為されない（３０６）ことを特徴とする請求項１７に記載の方法。
【請求項１９】
何れの演算も前記物理的および論理的順番再順序付け分類に属さず、かつ並び順が重要である場合には、前記最終的な結合処理の間、要素の間での入力データの相対的並び順が保存される（３０８）ことを特徴とする請求項１７に記載の方法。
【請求項２０】
請求項１７に記載の前記ステップ（２００）をコンピューターに実行させるためのコンピューターで実行可能な命令を有することを特徴とするコンピューター読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェア開発が始まった日以来、ソフトウェア・プログラムは順番に動作するように記述されている。コンピューターは、高度な演算を扱うための、より多くの処理能力とメモリとにより、時間とともに着実により一層強力になって来ている。この傾向は、最近、単一の処理装置のクロック速度を次々に増加させることから離れ、単一のコンピューターで使用可能な処理装置の数を増加させる方向、すなわち順次実行から並列実行の方向へと変化している。ソフトウェア開発者は、新しいハードウェアが採用された時に、彼らのソフトウェア・プログラムがより早く動作することを可能にし、コンピューター処理能力の改善を巧みに利用しようと希望する。しかしながら、並列ハードウェアに関しては、これは異なるアプローチを必要とする：開発者は、特定のソフトウェア・プログラムの１つまたは複数のタスクを、そのようなソフトウェアが動作するコンピューターにより多くの処理装置が追加された時には、同一論理演算が一時に多くの処理装置を利用し、そしてより良い性能を提供可能なように、並列に（時には「並行に」と呼ばれる）実行されるように準備しなければならない。
【０００２】
以前に書かれた順次実行アルゴリズムを並列化する際には、前の順次実行プログラムの動作を可能な限り多く維持することがしばしば望まれる。しかしながら、通常の既存の順次実行論理の並列実行は、新しい動作特性を発生させ、順次実行から並列アルゴリズムへの移行（ｍｉｇｒａｔｉｏｎ）への課題を発生させる可能性があるという問題点を提起する。その上、そのような問題点が、移行を完全に禁止する、ネゴシエーション不可の順次実行動作への変更を示すかもしれない、という可能性がある。そのような問題点の１つの分類は、順番を表す位置（ｏｒｄｉｎａｌ  ｐｏｓｉｔｉｏｎ）か、またはプログラマによって指定されるキー選択論理に基づき発生されるキーの何れかによる、データ並び順を保存するというものである。
【０００３】
データ並列計算を表す一つの方法の例として、言語統合クエリ解釈（ｌａｎｇｕａｇｅ  ｉｎｔｅｇｒａｔｅｄ  ｑｕｅｒｙ  ｃｏｍｐｒｅｈｅｎｓｉｏｎ）を使用する、下のプログラム文章を、プログラマが書いたと仮定しよう。
【０００４】
【数１】
2010532528.tif 000003
【０００５】
順次実行アルゴリズムは、その結果が‘Ｂ’に割り当てられるクエリの単なる順次評価により、‘Ｂ’における出力要素に対する‘Ａ’における要素の間での相対的な並び順を保存する。クエリ解釈が通常のデータ並列実行を使用して並列に動作させられると、要素の間での相対的な並び順がバラバラになる場合がある。一例として、‘Ａ’が要素｛０、１、２、３｝を含むと仮定すると；プログラマは、実行の後に‘Ｂ’が｛０、１、４、９｝を含むとおそらく予想するであろう。この問題点は、単にクエリ解釈のみではなく、一般にすべてのデータ並列演算に適用可能である。
【発明の概要】
【課題を解決するための手段】
【０００６】
データ並列演算における順番を保存するために様々な技術および技法が開示される。データ並列演算の複合的組み合わせ（例えばツリー）は、分割（ｐａｒｔｉｔｉｏｎｉｎｇ）および結合（ｍｅｒｇｉｎｇ）を発生させるデータ並列演算を含むように書き直される。分割は、それぞれのパーティションが入力のばらばらな部分集合を並列に処理することを可能とし、そしてその結果は後で使用するために１式の出力に結合し戻される。本システムは、順番を確立する演算の出力を、直接的または間接的に使用する演算群が、その演算群が属する分類によって異なる技法を使用して、結合演算が順番を保存可能であるように、必要な並び順情報を覚えることを確実にする。
【０００７】
一実施方法においては、入力要素の並び順が、様々なステップを実行することによって、データ並列演算において保存される。キー準拠および序数準拠の２種類の並び順が支援される。両方とも、順番キーを使用することによってモデル化される：前者においては、入力要素に対してプログラマによって指定されるキー選択機能を適用することによって、順番キーを発生させる。一方、後者においては、順番を表す要素位置を抽出する（例えば、データ源がインデックスを持つ配列（ａｒｒａｙ）に関して）ことによって、順番キーを発生させる。まず最初に、個別のデータ並列演算を具備する複合的演算が分析され、データ源における各演算にそれぞれの分類が表示される。一実施方法においては、本議論に重要な２つの分類は：要素の間での既存の並び順を演算が（物理的に）かき乱す場合がある物理的な再順序付け、および新しい並び順を容認し、要素に対するすべての以前の並び順の制約を演算が包含する論理的再順序付けである。論理的再順序付け演算は、通常は、物理的な再順序付けでもあるが、必ずそうということではない。複合的演算において、構成する何れの演算もが物理的または論理的再順序付けの分類ではない場合には、順番が問題であるなら、結合ステップの間それらを使用できるように、入力データ要素の順番キーが単に記憶される。１つまたは複数の演算が物理的再順序付け分類である場合には、結合ステップの間に順番キーを復元できるように、再順序付けの間、それらが伝播されなければならない。また、結合ステップは、正しいパーティション間の並び順を再確立させるために、ソート（ｓｏｒｔ）を実行しなければならない。１つまたは複数の演算が論理的再順序付け分類である場合には、結合の最も近くにある演算は、結合演算に対して並び順を再構築するために必要とされる順番キー情報を提供することに関与する。複数の論理的再順序付け演算が存在するなら、結合の最も近くにある１つの演算のみが、その出力を直接的または間接的に使用する物理的再順序付け演算に前述の要件を付与する。そして順番キーにより要素を並べ替えるための様々な技法の内の１つを使用して最終的な結合処理を実行し、最終的に順序付けられた集合を生成する。
【０００８】
この概要は、選択された概念を単純化した形体にて紹介するために提供されるが、以下の発明を実施するための形態においてさらに記述される。この概要は、請求される主題の主要な特徴または本質的な特徴を特定することを意図するものでなく、また請求される主題の範囲の決定を助けるように使用されることを意図するものでもない。
【図面の簡単な説明】
【０００９】
【図１】一実施方法のコンピューター・システムのブロック図である。
【図２】図１のコンピューター・システム上で動作する一実施方法の並列演算順番保存アプリケーションのブロック図である。
【図３】図１のシステムの一実施方法に対する上位の処理フロー図である。
【図４】データ並列演算における既存の要素位置を保存する際に関係する上位段階を例示する、図１のシステムの一実施方法に対する処理フロー図である。
【図５】データ並列演算における既存の要素位置を保存する際に関係するより詳細な段階を例示する、図１のシステムの一実施方法に対する処理フロー図である。
【図６】順番保存を容易にする処理を提供する際に関係する段階を例示する、図１のシステムの一実施方法に対する処理フロー図である。
【図７】最終的に順序付けられた集合を生成する最終的な結合処理を提供する際に関係する段階を例示する、図１のシステムの一実施方法に対する処理フロー図である。
【図８】物理的な並び順を論理的な並び順に合致するようにデータ並列並べ替え演算を入力に実行するための変更を例示する、図１のシステムの一実施方法に対する処理フロー図である。
【発明を実施するための形態】
【００１０】
ここでの技術および技法は、データ並列演算における順番を保存するアプリケーションとしての一般的文脈において記述される場合があるが、この技術および技法はまた、これらに加えて他の目的にも役立つものである。一実施方法においては、ＭＩＣＲＯＳＯＦＴ（登録商標）．ＮＥＴ  Ｆｒａｍｅｗｏｒｋ、またはプログラムにおいてデータ並列演算を取り扱う他の任意の種別のプログラムまたはサービスからなどの、フレームワーク・プログラム中での機能としてここに記述される技法の内の１つまたは複数を実施できる。
【００１１】
一実施方法においては、並列演算を書き直し、分割および結合を発生させる演算を含むシステムが提供される。各分割（partition）は並列に処理され、そして論理要素位置が保存される。データは１つの出力ストリームに結合し戻され、最終的に順序付けられた集合を生成する。一実施方法においては、選択される分割の方法（strategy）にかかわらず、システムは序数保存を可能とし、出力における任意の２つの要素、ｅ０およびｅ１、の相対的な並び順が入力における対応する要素（または、例えばマッピング演算の場合において、ｅ０およびｅ１を発生させるために使用される要素）の相対的な並び順に等価であることを確実にする。
【００１２】
一実施方法においては、システムはキー準拠の順番保存に役立つように動作可能である。時には、必ずしも序数準拠ではない要素の間で並び順が確立される。例えば並べ替え演算が、論理的および物理的にデータを再順序付けする。そのような演算を並列化するとき適切な順番を保存する１つの方法は、少なくとも１つの結合演算がとにかく生じることになる区切りまで結合を待つだけの充分に長い間、キー情報を記憶しておくことである。これは、序数保存と全く同様である：実際に以下で記述されるように、序数保存は、元の要素インデックスが並べ替えキーとしてモデル化される、キー準拠の順番保存の特別な場合である。
【００１３】
図１に示されるように、システムの１つまたは複数の部分を実施するために使用する代表的コンピューター・システムは、コンピューティングデバイス１００などのコンピューティングデバイスを含む。その最も基本的な構成においては、コンピューティングデバイス１００は通常、少なくとも１つの処理ユニット１０２およびメモリ１０４を含む。コンピューティングデバイスの正確な構成および種別によって、メモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこの２つの何らかの組み合わせであることができる。この最も基本的な構成は、図１において破線１０６によって例示される。
【００１４】
さらにデバイス１００はまた、付加的な特徴／機能性を有することができる。例えばデバイス１００はまた、限定的ではなく、磁気あるいは光ディスクまたはテープを含む追加的記憶装置（着脱可能および／または着脱不可能な）を含むことができる。そのような追加的記憶装置は、図１において着脱可能記憶装置１０８および着脱不可能記憶装置１１０によって例示される。コンピューター記憶装置媒体には、コンピューターにて読み込み可能な命令、データ構造、プログラム・モジュール、または他のデータなどの、情報の格納のための任意の方法または技術にて実施される、揮発性および不揮発性の、着脱可能および着脱不可能な媒体が含まれる。メモリ１０４、着脱可能記憶装置１０８、および着脱不可能記憶装置１１０は、すべてコンピューター記憶装置媒体の例である。コンピューター記憶装置媒体には、限定的ではなく、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ：デジタル多用途ディスク）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置デバイス、または必要な情報を格納するために使用可能であり、かつデバイス１００がアクセス可能な、他の如何なる媒体もが含まれる。そのようなコンピューター記憶媒体の何れもデバイス１００の一部とすることができる。
【００１５】
コンピューティングデバイス１００は、コンピューティングデバイス１００が他のコンピューター／アプリケーション１１５と通信することを可能とする１つまたは複数の通信接続部１１４を含む。デバイス１００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス（群）１１２を有することができる。ディスプレイ、スピーカー、プリンタなどの出力デバイス（群）１１１をもまた、含むことができる。これらのデバイスは、当技術分野においてよく知られており、ここで詳細に議論する必要はない。一実施方法においては、コンピューティングデバイス１００は並列演算順番保存アプリケーション２００を含む。並列演算順番保存アプリケーション２００は、図２においてさらに詳細に記述されることになる。
【００１６】
図１を継続的に参照しつつ次に図２を見ると、コンピューティングデバイス１００上にて動作する並列演算順番保存アプリケーション２００がされる。並列演算順番保存アプリケーション２００は、コンピューティングデバイス１００に常駐するアプリケーション・プログラムの内の１つである。しかしながら、１つまたは複数のコンピューター上でおよび／または図１上に示されるものとは別の変形における、コンピューターにて実行可能な命令として、代替としてまたは追加的に、並列演算順番保存アプリケーション２００を具現化できることが理解されるであろう。代替としてまたは追加的に、並列演算順番保存アプリケーション２００の１つまたは複数の部分は、システム・メモリ１０４の一部であり、他のコンピューターおよび／またはアプリケーション１１５上にあり、またはコンピューター・ソフトウェア技術において生起するような他の変形である可能性がある。
【００１７】
並列演算順番保存アプリケーション２００は、プログラム論理２０４を含み、これは、ここに記述される技法のいくつかまたはすべてを実行することに関与する。プログラム論理２０４は、分割および結合を発生させる演算を含むための複合的データ並列演算を書き直すための論理２０６（図３に関して後述されるように）；複合的演算を分析し、物理的再順序付け、論理的再順序付け、両方、またはその何れでもない、としてそれぞれの構成演算に表示するための論理２０７（図５に関して後述されるように）；それぞれの分割を並列に処理するための論理２０８（図３に関して後述されるように）；データ並列演算において論理要素位置を保存するための論理２１０（図４および図５に関して後述されるように）；最終的に順序付けられた集合を生成するために１つの出力ストリームにデータを結合し戻すための論理２１２（図３および図５に関して後述されるように）；およびアプリケーションを動作させるための他の論理２２０；を含む。
【００１８】
図１〜図２を継続的に参照しつつ次に図３〜図８を見ると、並列演算順番保存アプリケーション２００の１つまたは複数の実施方法を実施するための段階がさらに詳細に記述されている。いくつかの実施方法においては、図３〜図８の処理は、コンピューティングデバイス１００の演算論理において少なくとも部分的に実施される。図３は並列演算順番保存アプリケーション２００に対する上位処理フロー図である。処理は開始点２４０にて開始し、論理的には透過的（ｔｒａｎｓｐａｒｅｎｔ）であるが、分割および結合を物理的に発生させる構成演算を含むように、複合的データ並列演算を書き直す（段階２４２）。ここに使用される用語「複合的演算」とは、その中のノードがデータ並列演算、特異演算（ｓｉｎｇｕｌａｒ  ｏｐｅｒａｔｉｏｎ）、演算のリンク一覧、グラフ、などであるツリー構造などのより複合的演算に、１つまたは複数のデータ並列演算を組み立てたものを含むことを意味する。一実施方法において分割演算は、さまざまな技法の内の１つを使用して、入力空間を複数のばらばらなパーティションに単に分割する（段階２４３）：すなわち、動的に、関心のあるサイズの「かたまり（ｃｈｕｎｋ）」をオンデマンド的に発生させて、領域の境界に対するインデックスを計算することによってばらばらなサイズに分割して、より小さい粒（ｇｒａｎｕｌｅ）にデータを分散化（ｓｔｒｉｐｉｎｇ）して、あるキー選択機能に基づきハッシュ符号化する等の処理を実行する。次にそれぞれの分割が、独立にかつ並列に処理される（段階２４４）。後で結合演算がこれらのパーティションを受け取り、そしてデータを１つの出力ストリームに結合し戻す（段階２４６）。終了点２４８にて処理は終了する。
【００１９】
分割および結合のステップの間において、射影（ｐｒｏｊｅｃｔｉｏｎ）、選別（ｆｉｌｔｅｒｉｎｇ）、連結（ｊｏｉｎｉｎｇ）、ソート（ｓｏｒｔｉｎｇ）、などのような演算を見出す可能性がある。ほとんどの演算は３つの分類の内の１つに当てはまる：すなわち、
１．論理的順番再順序付け、
２．物理的順番再順序付け、
３．両方（物理的および論理的順番再順序付け）、
４．何れでもない（物理的および論理的順番が保存される）。
【００２０】
ソート（ｓｏｒｔｉｎｇ）は、分類＃１の一例である：要素は論理的に再順序付けされ、並べ替えによって確立される並び順が最終的な集合において保存されなければならず、また一方で以前に保存していた何れの並び順情報も最早古くなっていることを意味する。並べ替えは、随意的に要素を物理的に再配列する場合があり、その場合にはそれは分類＃３になる。ハッシュ再分割化（ｈａｓｈ  ｒｅｐａｒｔｉｔｉｏｎｉｎｇ）演算は、分類＃２における演算の一例である：キー選択機能に基づき、他のパーティションに要素を再分配し、パーティションの間で要素の予測不可能かつ非決定性的なインターリービングを引き起こすかもしれない。しかし再分割化演算は、要素をもっぱら物理的に分配することを意味し、そして要素の間で確立された論理的な並び順に影響力を有さない。ほとんどの演算は分類＃４に当てはまる：射影、選別などは、要素を物理的に再順序付けはせず、また保存しなければならない何れの種類の論理的並び順情報を確立することもない。これらは単にわずかな非限定的な例に過ぎず、それぞれの分類において、ずっと多くの演算の例があることは明らかである。何れの分類における演算も、例えば選別、連結といった任意の分類におけるその出力から、入力要素を省略する場合があることに注意されたい。そのような演算に対して論理要素並び順を保存するいくつかの例を図４〜図８において詳細に記述する。
【００２１】
図４は、データ並列演算における既存の要素位置を保存する際に関係する上位段階の一実施方法を例示する。処理は開始点２７０にて開始し、要素の間で論理的並び順を確立する演算を提供する（段階２７２）。論理的並び順の確立は、要素の順番を表す位置が保存されることを要求する形を取るかもしれず、またあるいは、１つの要素を考えると、並び順のために使用される１つのキーを発生させる、プログラマが指定するキー選択ルーチンによる並べ替え演算の形を取る場合もある。順番保存を必要とする演算は、その出力を処理することになるすべての下流の演算に対して制限を課す（段階２７４）。ここに使用される用語「下流の演算（ｄｏｗｎｓｔｒｅａｍ  ｏｐｅｒａｔｉｏｎ）」とは、演算の出力を直接的または間接的に使用する何れの演算をも意味する。これらの下流の演算は、その演算が属する分類、すなわち、物理的再順序付け、論理的再順序付け、両方、または何れでもない、に基づき異なるタスクを使用して、並び順情報を記憶する（段階２７６）。終了点２７８にて処理は終了する。
【００２２】
図５は、データ並列演算における既存の要素位置を保存する際に関係するより詳細な段階の一実施方法を例示する。処理は開始点２９０にて開始し、個別のデータ並列演算から複合的データ並列演算を発生させ、そしてデータ発生源にそれを結び付ける（ｂｉｎｄ）（段階２９２）。次にシステムは複合的演算を分析し、それぞれの構成演算にその分類を表示する（段階２９４）。「物理的および論理的順番再順序付け」分類において何かの演算がある場合には（判定点２９６）、結合の間に順番を再構築するために必要である情報をすべての下流の演算が必ず記憶するように、複合的演算の中での個別の演算の位置を表示するために、結合に最も近いその分類における演算を使用する（段階２９８）。その分類のそのような演算からの出力を直接的または間接的に使用するすべての演算は、順番保存を容易にする処理を実行する（段階３００）。最終的に結合処理は、先の２ステップからのデータを使用して最終的に順序付けられた集合を生成し（段階３０２）、そして終了点３１０にて処理は終了する。
【００２３】
しかしながら「物理的および論理的順番再順序付け」分類においては何の演算もなく（判定点２９６）、かつシステムが順番に関心がある場合には（判定点３０４）、システムは、要素の間での必要な要素の並び順情報、例えば序数保存のためのインデックスまたは並べ替えのためのキー、を記憶することになる（段階３０８）。そして次に段階３００および３０２に進み、前述したように、順番保存を保存し、そして最終的な結合処理を実行することになる。システムが順番に関心がない場合には、何も特別なことは行なわれず（段階３０６）、そして終了点３１０にて処理は終了する。
【００２４】
図６は、順番保存を容易にする処理を提供する際に関係する段階の一実施方法を例示する。処理は開始点３２０にて開始し、「物理的順番再順序付け」分類におけるそれぞれの演算が、並び順が保存される必要があると通知される（段階３２２）。論理要素並び順情報に対して、伝播しそして記憶するよりもっと効率的な代替のアルゴリズムがあるかを判定するために、分析処理は経験的方法を適用する（段階３２４）。分析処理がより良い代替手段を明らかにした場合には（判定点３２６）、システムは代替の演算に進む（段階３２９）。より良い代替手段が無い場合には（判定点３２６）、システムは前述したように、関連付けを行ない並び順情報を記憶する（段階３２８）。処理は終了点３３０にて終了する。
【００２５】
図７は、最終的に順序付けられた集合を生成する最終的な結合処理を提供する際に関係する段階の一実施方法を例示する。処理は開始点３４０にて開始し、複合的演算においてすべての構成演算が物理的並び順を保存するように配慮しているなら、要素に対して漸進的並べ替え（ｉｎｃｒｅｍｅｎｔａｌ  ｓｏｒｔ）を実行する（段階３４２）。それぞれのパーティションが既に並べ替えられていると、独自にそれぞれのパーティションを単独で再並べ替えする必要はなくなる。複合的演算を実行する間、論理的対物理的並び順関係が保存されていない場合においては、図８において記述されるように、最終的な結合処理は最初にそれぞれのパーティションの間での並び順を再構築しなければならない。それぞれのパーティションに対して独立した並べ替え演算を並列に実行することにより、この処理を実行する。次に結合処理は、多くの技法、例えば、前の比較結果を覚えるためのヒープ（ｈｅａｐ）データ構造、結合並べ替え、などの内の１つを使用することによって、単独で並べ替えられたパーティションを漸進的に結合する段階３４４に進み、最終的に順序付けられた集合を生成する（段階３４６）。処理は終了点３４８にて終了する。
【００２６】
図８は、入力に対してデータ並列並べ替え演算を実行する際に関係する段階の一実施方法を例示するものであり、ここでは、要素の間での論理的な並び順は変更されるが、物理的な再順序付け（すなわち、並べ替え）は最終的な結合まで保留される。複数の並べ替えが複合的演算に出現する場合でも、これにより、複数の並べ替えを実行することの必要性を回避し、何れにせよ最終的な結合出力上に最後の効果のみが残ることになる。図８の処理はまた、上述したように、物理的な並び順を保存するようにすべての演算が配慮しているわけではないときにも使用される。処理は開始点３７０にて開始し、並べ替え演算が、キーを論理的に発生させ、そして順番保存のプロパティを確立するように、並べ替え演算を変更する（段階３７２）。次にシステムは、要素を物理的に並べ替えることに対する責任を最終的な結合演算に委ねる（段階３７４）。処理は終了点３７６にて終了する。
【００２７】
本発明の主題が、構造上の特徴および／または方法論的行為に特有な言語にて記述されているが、添付された請求の範囲において定義される主題が上述された特定の特徴または行為に必ずしも限定されるものではないことを理解されたい。上述された特定の特徴および行為はむしろ、特許請求の範囲を実施する例の形式として開示されるものである。ここに、および／または引き続く特許請求の範囲により記述される実施方法の精神の中に含まれるすべての同等物、変更、および修正が保護されることが望まれる。
【００２８】
例えば、コンピューター・ソフトウェアの技術分野における当業者は、１台または複数のコンピューター上にて、ここで議論された実施例が、例として示されたものにより少ないかまたは追加的なオプションや特徴を含むように、異なる構成にできることを理解するであろう。
【図１】
2010532528.tif 000004
【図２】
2010532528.tif 000005
【図３】
2010532528.tif 000006
【図４】
2010532528.tif 000007
【図５】
2010532528.tif 000008
【図６】
2010532528.tif 000009
【図７】
2010532528.tif 000010
【図８】
2010532528.tif 000011
【国際調査報告】
2010532528.tif 000012
2010532528.tif 000013