JP2010532528A - データ並列演算における順番保存 - Google Patents

データ並列演算における順番保存 Download PDF

Info

Publication number
JP2010532528A
JP2010532528A JP2010514964A JP2010514964A JP2010532528A JP 2010532528 A JP2010532528 A JP 2010532528A JP 2010514964 A JP2010514964 A JP 2010514964A JP 2010514964 A JP2010514964 A JP 2010514964A JP 2010532528 A JP2010532528 A JP 2010532528A
Authority
JP
Japan
Prior art keywords
order
computer
operations
reordering
logical
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
JP2010514964A
Other languages
English (en)
Inventor
ジョセフ ダフィー ジョン
カラハン デイヴィッド
ジョージ エッセイ エドワード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010532528A publication Critical patent/JP2010532528A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Abstract

データ並列演算における入力要素の並び順を保存するために様々な技術および技法が開示される。この並び順は、入力における要素の順番を表す位置かまたはそれぞれの入力要素に対する並べ替え可能なキーを発生させるプログラマによって指定されるキー選択ルーチンに基づくことができる。複合的データ並列演算は、分割および結合を発生させる個別のデータ並列演算を含むように書き直される。それぞれの分割は次に、独立して並列処理される。本システムは、使用者の演算が属する分類によって異なる技法を使用して、下流の演算が他のある演算により確立された並び順情報を記憶することを確実にする。データ要素の間で確立された並び順を意識している最終的結合処理を使用して、データが1つの出力ストリームに結合し戻される。

Description

ソフトウェア開発が始まった日以来、ソフトウェア・プログラムは順番に動作するように記述されている。コンピューターは、高度な演算を扱うための、より多くの処理能力とメモリとにより、時間とともに着実により一層強力になって来ている。この傾向は、最近、単一の処理装置のクロック速度を次々に増加させることから離れ、単一のコンピューターで使用可能な処理装置の数を増加させる方向、すなわち順次実行から並列実行の方向へと変化している。ソフトウェア開発者は、新しいハードウェアが採用された時に、彼らのソフトウェア・プログラムがより早く動作することを可能にし、コンピューター処理能力の改善を巧みに利用しようと希望する。しかしながら、並列ハードウェアに関しては、これは異なるアプローチを必要とする:開発者は、特定のソフトウェア・プログラムの1つまたは複数のタスクを、そのようなソフトウェアが動作するコンピューターにより多くの処理装置が追加された時には、同一論理演算が一時に多くの処理装置を利用し、そしてより良い性能を提供可能なように、並列に(時には「並行に」と呼ばれる)実行されるように準備しなければならない。
以前に書かれた順次実行アルゴリズムを並列化する際には、前の順次実行プログラムの動作を可能な限り多く維持することがしばしば望まれる。しかしながら、通常の既存の順次実行論理の並列実行は、新しい動作特性を発生させ、順次実行から並列アルゴリズムへの移行(migration)への課題を発生させる可能性があるという問題点を提起する。その上、そのような問題点が、移行を完全に禁止する、ネゴシエーション不可の順次実行動作への変更を示すかもしれない、という可能性がある。そのような問題点の1つの分類は、順番を表す位置(ordinal position)か、またはプログラマによって指定されるキー選択論理に基づき発生されるキーの何れかによる、データ並び順を保存するというものである。
データ並列計算を表す一つの方法の例として、言語統合クエリ解釈(language integrated query comprehension)を使用する、下のプログラム文章を、プログラマが書いたと仮定しよう。
Figure 2010532528
順次実行アルゴリズムは、その結果が‘B’に割り当てられるクエリの単なる順次評価により、‘B’における出力要素に対する‘A’における要素の間での相対的な並び順を保存する。クエリ解釈が通常のデータ並列実行を使用して並列に動作させられると、要素の間での相対的な並び順がバラバラになる場合がある。一例として、‘A’が要素{0、1、2、3}を含むと仮定すると;プログラマは、実行の後に‘B’が{0、1、4、9}を含むとおそらく予想するであろう。この問題点は、単にクエリ解釈のみではなく、一般にすべてのデータ並列演算に適用可能である。
データ並列演算における順番を保存するために様々な技術および技法が開示される。データ並列演算の複合的組み合わせ(例えばツリー)は、分割(partitioning)および結合(merging)を発生させるデータ並列演算を含むように書き直される。分割は、それぞれのパーティションが入力のばらばらな部分集合を並列に処理することを可能とし、そしてその結果は後で使用するために1式の出力に結合し戻される。本システムは、順番を確立する演算の出力を、直接的または間接的に使用する演算群が、その演算群が属する分類によって異なる技法を使用して、結合演算が順番を保存可能であるように、必要な並び順情報を覚えることを確実にする。
一実施方法においては、入力要素の並び順が、様々なステップを実行することによって、データ並列演算において保存される。キー準拠および序数準拠の2種類の並び順が支援される。両方とも、順番キーを使用することによってモデル化される:前者においては、入力要素に対してプログラマによって指定されるキー選択機能を適用することによって、順番キーを発生させる。一方、後者においては、順番を表す要素位置を抽出する(例えば、データ源がインデックスを持つ配列(array)に関して)ことによって、順番キーを発生させる。まず最初に、個別のデータ並列演算を具備する複合的演算が分析され、データ源における各演算にそれぞれの分類が表示される。一実施方法においては、本議論に重要な2つの分類は:要素の間での既存の並び順を演算が(物理的に)かき乱す場合がある物理的な再順序付け、および新しい並び順を容認し、要素に対するすべての以前の並び順の制約を演算が包含する論理的再順序付けである。論理的再順序付け演算は、通常は、物理的な再順序付けでもあるが、必ずそうということではない。複合的演算において、構成する何れの演算もが物理的または論理的再順序付けの分類ではない場合には、順番が問題であるなら、結合ステップの間それらを使用できるように、入力データ要素の順番キーが単に記憶される。1つまたは複数の演算が物理的再順序付け分類である場合には、結合ステップの間に順番キーを復元できるように、再順序付けの間、それらが伝播されなければならない。また、結合ステップは、正しいパーティション間の並び順を再確立させるために、ソート(sort)を実行しなければならない。1つまたは複数の演算が論理的再順序付け分類である場合には、結合の最も近くにある演算は、結合演算に対して並び順を再構築するために必要とされる順番キー情報を提供することに関与する。複数の論理的再順序付け演算が存在するなら、結合の最も近くにある1つの演算のみが、その出力を直接的または間接的に使用する物理的再順序付け演算に前述の要件を付与する。そして順番キーにより要素を並べ替えるための様々な技法の内の1つを使用して最終的な結合処理を実行し、最終的に順序付けられた集合を生成する。
この概要は、選択された概念を単純化した形体にて紹介するために提供されるが、以下の発明を実施するための形態においてさらに記述される。この概要は、請求される主題の主要な特徴または本質的な特徴を特定することを意図するものでなく、また請求される主題の範囲の決定を助けるように使用されることを意図するものでもない。
一実施方法のコンピューター・システムのブロック図である。 図1のコンピューター・システム上で動作する一実施方法の並列演算順番保存アプリケーションのブロック図である。 図1のシステムの一実施方法に対する上位の処理フロー図である。 データ並列演算における既存の要素位置を保存する際に関係する上位段階を例示する、図1のシステムの一実施方法に対する処理フロー図である。 データ並列演算における既存の要素位置を保存する際に関係するより詳細な段階を例示する、図1のシステムの一実施方法に対する処理フロー図である。 順番保存を容易にする処理を提供する際に関係する段階を例示する、図1のシステムの一実施方法に対する処理フロー図である。 最終的に順序付けられた集合を生成する最終的な結合処理を提供する際に関係する段階を例示する、図1のシステムの一実施方法に対する処理フロー図である。 物理的な並び順を論理的な並び順に合致するようにデータ並列並べ替え演算を入力に実行するための変更を例示する、図1のシステムの一実施方法に対する処理フロー図である。
ここでの技術および技法は、データ並列演算における順番を保存するアプリケーションとしての一般的文脈において記述される場合があるが、この技術および技法はまた、これらに加えて他の目的にも役立つものである。一実施方法においては、MICROSOFT(登録商標).NET Framework、またはプログラムにおいてデータ並列演算を取り扱う他の任意の種別のプログラムまたはサービスからなどの、フレームワーク・プログラム中での機能としてここに記述される技法の内の1つまたは複数を実施できる。
一実施方法においては、並列演算を書き直し、分割および結合を発生させる演算を含むシステムが提供される。各分割(partition)は並列に処理され、そして論理要素位置が保存される。データは1つの出力ストリームに結合し戻され、最終的に順序付けられた集合を生成する。一実施方法においては、選択される分割の方法(strategy)にかかわらず、システムは序数保存を可能とし、出力における任意の2つの要素、e0およびe1、の相対的な並び順が入力における対応する要素(または、例えばマッピング演算の場合において、e0およびe1を発生させるために使用される要素)の相対的な並び順に等価であることを確実にする。
一実施方法においては、システムはキー準拠の順番保存に役立つように動作可能である。時には、必ずしも序数準拠ではない要素の間で並び順が確立される。例えば並べ替え演算が、論理的および物理的にデータを再順序付けする。そのような演算を並列化するとき適切な順番を保存する1つの方法は、少なくとも1つの結合演算がとにかく生じることになる区切りまで結合を待つだけの充分に長い間、キー情報を記憶しておくことである。これは、序数保存と全く同様である:実際に以下で記述されるように、序数保存は、元の要素インデックスが並べ替えキーとしてモデル化される、キー準拠の順番保存の特別な場合である。
図1に示されるように、システムの1つまたは複数の部分を実施するために使用する代表的コンピューター・システムは、コンピューティングデバイス100などのコンピューティングデバイスを含む。その最も基本的な構成においては、コンピューティングデバイス100は通常、少なくとも1つの処理ユニット102およびメモリ104を含む。コンピューティングデバイスの正確な構成および種別によって、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこの2つの何らかの組み合わせであることができる。この最も基本的な構成は、図1において破線106によって例示される。
さらにデバイス100はまた、付加的な特徴/機能性を有することができる。例えばデバイス100はまた、限定的ではなく、磁気あるいは光ディスクまたはテープを含む追加的記憶装置(着脱可能および/または着脱不可能な)を含むことができる。そのような追加的記憶装置は、図1において着脱可能記憶装置108および着脱不可能記憶装置110によって例示される。コンピューター記憶装置媒体には、コンピューターにて読み込み可能な命令、データ構造、プログラム・モジュール、または他のデータなどの、情報の格納のための任意の方法または技術にて実施される、揮発性および不揮発性の、着脱可能および着脱不可能な媒体が含まれる。メモリ104、着脱可能記憶装置108、および着脱不可能記憶装置110は、すべてコンピューター記憶装置媒体の例である。コンピューター記憶装置媒体には、限定的ではなく、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CD−ROM、DVD(Digital Versatile Disk:デジタル多用途ディスク)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置デバイス、または必要な情報を格納するために使用可能であり、かつデバイス100がアクセス可能な、他の如何なる媒体もが含まれる。そのようなコンピューター記憶媒体の何れもデバイス100の一部とすることができる。
コンピューティングデバイス100は、コンピューティングデバイス100が他のコンピューター/アプリケーション115と通信することを可能とする1つまたは複数の通信接続部114を含む。デバイス100はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス(群)112を有することができる。ディスプレイ、スピーカー、プリンタなどの出力デバイス(群)111をもまた、含むことができる。これらのデバイスは、当技術分野においてよく知られており、ここで詳細に議論する必要はない。一実施方法においては、コンピューティングデバイス100は並列演算順番保存アプリケーション200を含む。並列演算順番保存アプリケーション200は、図2においてさらに詳細に記述されることになる。
図1を継続的に参照しつつ次に図2を見ると、コンピューティングデバイス100上にて動作する並列演算順番保存アプリケーション200がされる。並列演算順番保存アプリケーション200は、コンピューティングデバイス100に常駐するアプリケーション・プログラムの内の1つである。しかしながら、1つまたは複数のコンピューター上でおよび/または図1上に示されるものとは別の変形における、コンピューターにて実行可能な命令として、代替としてまたは追加的に、並列演算順番保存アプリケーション200を具現化できることが理解されるであろう。代替としてまたは追加的に、並列演算順番保存アプリケーション200の1つまたは複数の部分は、システム・メモリ104の一部であり、他のコンピューターおよび/またはアプリケーション115上にあり、またはコンピューター・ソフトウェア技術において生起するような他の変形である可能性がある。
並列演算順番保存アプリケーション200は、プログラム論理204を含み、これは、ここに記述される技法のいくつかまたはすべてを実行することに関与する。プログラム論理204は、分割および結合を発生させる演算を含むための複合的データ並列演算を書き直すための論理206(図3に関して後述されるように);複合的演算を分析し、物理的再順序付け、論理的再順序付け、両方、またはその何れでもない、としてそれぞれの構成演算に表示するための論理207(図5に関して後述されるように);それぞれの分割を並列に処理するための論理208(図3に関して後述されるように);データ並列演算において論理要素位置を保存するための論理210(図4および図5に関して後述されるように);最終的に順序付けられた集合を生成するために1つの出力ストリームにデータを結合し戻すための論理212(図3および図5に関して後述されるように);およびアプリケーションを動作させるための他の論理220;を含む。
図1〜図2を継続的に参照しつつ次に図3〜図8を見ると、並列演算順番保存アプリケーション200の1つまたは複数の実施方法を実施するための段階がさらに詳細に記述されている。いくつかの実施方法においては、図3〜図8の処理は、コンピューティングデバイス100の演算論理において少なくとも部分的に実施される。図3は並列演算順番保存アプリケーション200に対する上位処理フロー図である。処理は開始点240にて開始し、論理的には透過的(transparent)であるが、分割および結合を物理的に発生させる構成演算を含むように、複合的データ並列演算を書き直す(段階242)。ここに使用される用語「複合的演算」とは、その中のノードがデータ並列演算、特異演算(singular operation)、演算のリンク一覧、グラフ、などであるツリー構造などのより複合的演算に、1つまたは複数のデータ並列演算を組み立てたものを含むことを意味する。一実施方法において分割演算は、さまざまな技法の内の1つを使用して、入力空間を複数のばらばらなパーティションに単に分割する(段階243):すなわち、動的に、関心のあるサイズの「かたまり(chunk)」をオンデマンド的に発生させて、領域の境界に対するインデックスを計算することによってばらばらなサイズに分割して、より小さい粒(granule)にデータを分散化(striping)して、あるキー選択機能に基づきハッシュ符号化する等の処理を実行する。次にそれぞれの分割が、独立にかつ並列に処理される(段階244)。後で結合演算がこれらのパーティションを受け取り、そしてデータを1つの出力ストリームに結合し戻す(段階246)。終了点248にて処理は終了する。
分割および結合のステップの間において、射影(projection)、選別(filtering)、連結(joining)、ソート(sorting)、などのような演算を見出す可能性がある。ほとんどの演算は3つの分類の内の1つに当てはまる:すなわち、
1.論理的順番再順序付け、
2.物理的順番再順序付け、
3.両方(物理的および論理的順番再順序付け)、
4.何れでもない(物理的および論理的順番が保存される)。
ソート(sorting)は、分類#1の一例である:要素は論理的に再順序付けされ、並べ替えによって確立される並び順が最終的な集合において保存されなければならず、また一方で以前に保存していた何れの並び順情報も最早古くなっていることを意味する。並べ替えは、随意的に要素を物理的に再配列する場合があり、その場合にはそれは分類#3になる。ハッシュ再分割化(hash repartitioning)演算は、分類#2における演算の一例である:キー選択機能に基づき、他のパーティションに要素を再分配し、パーティションの間で要素の予測不可能かつ非決定性的なインターリービングを引き起こすかもしれない。しかし再分割化演算は、要素をもっぱら物理的に分配することを意味し、そして要素の間で確立された論理的な並び順に影響力を有さない。ほとんどの演算は分類#4に当てはまる:射影、選別などは、要素を物理的に再順序付けはせず、また保存しなければならない何れの種類の論理的並び順情報を確立することもない。これらは単にわずかな非限定的な例に過ぎず、それぞれの分類において、ずっと多くの演算の例があることは明らかである。何れの分類における演算も、例えば選別、連結といった任意の分類におけるその出力から、入力要素を省略する場合があることに注意されたい。そのような演算に対して論理要素並び順を保存するいくつかの例を図4〜図8において詳細に記述する。
図4は、データ並列演算における既存の要素位置を保存する際に関係する上位段階の一実施方法を例示する。処理は開始点270にて開始し、要素の間で論理的並び順を確立する演算を提供する(段階272)。論理的並び順の確立は、要素の順番を表す位置が保存されることを要求する形を取るかもしれず、またあるいは、1つの要素を考えると、並び順のために使用される1つのキーを発生させる、プログラマが指定するキー選択ルーチンによる並べ替え演算の形を取る場合もある。順番保存を必要とする演算は、その出力を処理することになるすべての下流の演算に対して制限を課す(段階274)。ここに使用される用語「下流の演算(downstream operation)」とは、演算の出力を直接的または間接的に使用する何れの演算をも意味する。これらの下流の演算は、その演算が属する分類、すなわち、物理的再順序付け、論理的再順序付け、両方、または何れでもない、に基づき異なるタスクを使用して、並び順情報を記憶する(段階276)。終了点278にて処理は終了する。
図5は、データ並列演算における既存の要素位置を保存する際に関係するより詳細な段階の一実施方法を例示する。処理は開始点290にて開始し、個別のデータ並列演算から複合的データ並列演算を発生させ、そしてデータ発生源にそれを結び付ける(bind)(段階292)。次にシステムは複合的演算を分析し、それぞれの構成演算にその分類を表示する(段階294)。「物理的および論理的順番再順序付け」分類において何かの演算がある場合には(判定点296)、結合の間に順番を再構築するために必要である情報をすべての下流の演算が必ず記憶するように、複合的演算の中での個別の演算の位置を表示するために、結合に最も近いその分類における演算を使用する(段階298)。その分類のそのような演算からの出力を直接的または間接的に使用するすべての演算は、順番保存を容易にする処理を実行する(段階300)。最終的に結合処理は、先の2ステップからのデータを使用して最終的に順序付けられた集合を生成し(段階302)、そして終了点310にて処理は終了する。
しかしながら「物理的および論理的順番再順序付け」分類においては何の演算もなく(判定点296)、かつシステムが順番に関心がある場合には(判定点304)、システムは、要素の間での必要な要素の並び順情報、例えば序数保存のためのインデックスまたは並べ替えのためのキー、を記憶することになる(段階308)。そして次に段階300および302に進み、前述したように、順番保存を保存し、そして最終的な結合処理を実行することになる。システムが順番に関心がない場合には、何も特別なことは行なわれず(段階306)、そして終了点310にて処理は終了する。
図6は、順番保存を容易にする処理を提供する際に関係する段階の一実施方法を例示する。処理は開始点320にて開始し、「物理的順番再順序付け」分類におけるそれぞれの演算が、並び順が保存される必要があると通知される(段階322)。論理要素並び順情報に対して、伝播しそして記憶するよりもっと効率的な代替のアルゴリズムがあるかを判定するために、分析処理は経験的方法を適用する(段階324)。分析処理がより良い代替手段を明らかにした場合には(判定点326)、システムは代替の演算に進む(段階329)。より良い代替手段が無い場合には(判定点326)、システムは前述したように、関連付けを行ない並び順情報を記憶する(段階328)。処理は終了点330にて終了する。
図7は、最終的に順序付けられた集合を生成する最終的な結合処理を提供する際に関係する段階の一実施方法を例示する。処理は開始点340にて開始し、複合的演算においてすべての構成演算が物理的並び順を保存するように配慮しているなら、要素に対して漸進的並べ替え(incremental sort)を実行する(段階342)。それぞれのパーティションが既に並べ替えられていると、独自にそれぞれのパーティションを単独で再並べ替えする必要はなくなる。複合的演算を実行する間、論理的対物理的並び順関係が保存されていない場合においては、図8において記述されるように、最終的な結合処理は最初にそれぞれのパーティションの間での並び順を再構築しなければならない。それぞれのパーティションに対して独立した並べ替え演算を並列に実行することにより、この処理を実行する。次に結合処理は、多くの技法、例えば、前の比較結果を覚えるためのヒープ(heap)データ構造、結合並べ替え、などの内の1つを使用することによって、単独で並べ替えられたパーティションを漸進的に結合する段階344に進み、最終的に順序付けられた集合を生成する(段階346)。処理は終了点348にて終了する。
図8は、入力に対してデータ並列並べ替え演算を実行する際に関係する段階の一実施方法を例示するものであり、ここでは、要素の間での論理的な並び順は変更されるが、物理的な再順序付け(すなわち、並べ替え)は最終的な結合まで保留される。複数の並べ替えが複合的演算に出現する場合でも、これにより、複数の並べ替えを実行することの必要性を回避し、何れにせよ最終的な結合出力上に最後の効果のみが残ることになる。図8の処理はまた、上述したように、物理的な並び順を保存するようにすべての演算が配慮しているわけではないときにも使用される。処理は開始点370にて開始し、並べ替え演算が、キーを論理的に発生させ、そして順番保存のプロパティを確立するように、並べ替え演算を変更する(段階372)。次にシステムは、要素を物理的に並べ替えることに対する責任を最終的な結合演算に委ねる(段階374)。処理は終了点376にて終了する。
本発明の主題が、構造上の特徴および/または方法論的行為に特有な言語にて記述されているが、添付された請求の範囲において定義される主題が上述された特定の特徴または行為に必ずしも限定されるものではないことを理解されたい。上述された特定の特徴および行為はむしろ、特許請求の範囲を実施する例の形式として開示されるものである。ここに、および/または引き続く特許請求の範囲により記述される実施方法の精神の中に含まれるすべての同等物、変更、および修正が保護されることが望まれる。
例えば、コンピューター・ソフトウェアの技術分野における当業者は、1台または複数のコンピューター上にて、ここで議論された実施例が、例として示されたものにより少ないかまたは追加的なオプションや特徴を含むように、異なる構成にできることを理解するであろう。

Claims (20)

  1. コンピューターに実行させるためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体であって、前記命令は、
    分割および結合を発生させるデータ並列演算を含むように複合的データ並列演算を書き直すステップ(206)と、
    結果としてのそれぞれの分割を並列に処理するステップ(208)と、
    データ並列演算の前記実行の間、論理的順序情報を確立するステップ(207)と、
    必要な論理的並び順を保存するように動作可能な最終的結合処理を使用して1つの出力ストリームにデータを結合し戻すステップ(212)と
    を具備することを特徴とするコンピューター読み取り可能媒体。
  2. 保存される前記論理的順序情報が、前記データ並列演算への入力における要素の位置から導出される(272)ことを特徴とする請求項1に記載のコンピューター読み取り可能媒体。
  3. 前記最終的結合処理が、前記論理的順序情報から最終的に順序付けられた集合を生成する(302)ように動作可能であることを特徴とする請求項1に記載のコンピューター読み取り可能媒体。
  4. 物理的並び順を保存するようにすべての演算が配慮している(have been careful)場合に、前記最終的結合処理が、要素に対して漸進的並べ替え(incremental sort)を実行する(302)ように動作可能であることを特徴とする請求項1に記載のコンピューター読み取り可能媒体。
  5. 前記1つの出力ストリームが、前記最終的結合処理の順序付けられた(302)結果を含むことを特徴とする請求項4に記載のコンピューター読み取り可能媒体。
  6. 物理的並び順を保存するようにすべての演算が配慮していない場合に、前記結合演算が、並べ替えおよび結合に関与する(246)ことを特徴とする請求項1に記載のコンピューター読み取り可能媒体。
  7. 確立した並び順を有する並べ替えが、論理的順序保存特性を確立するキーを発生させるように変更される(372)ことを特徴とする請求項6に記載のコンピューター読み取り可能媒体。
  8. 保存される前記順番情報が、前記データ並列演算への入力におけるそれぞれの要素から並べ替えキーを抽出するキー選択機能から導出される(308)ことを特徴とする請求項1に記載のコンピューター読み取り可能媒体。
  9. 複合的データ並列演算の実行に際して、出力における相対的入力要素の位置を保存するための方法であって、
    前記要素の間での論理的並び順を確立し、かつ順番保存を必要とする演算にアクセスするステップ(272)と、
    下流の演算が、複数の分類の何れに前記演算が属するかによって異なる技法を使用して、並び順情報を記憶することを確実にするステップ(276)と
    を具備することを特徴とする方法。
  10. 複合的演算が、それぞれの構成演算に個々の分類を表示するために分析されるステップであって、前記個々の分類が、物理的順番再順序付け分類、論理的順番再順序付け分類、物理的および論理的順番再順序付け分類、ならびに上記の何れでもない分類、から成るグループから選択される(207)ことを特徴とする請求項9に記載の方法。
  11. 論理的順番再順序付け分類または両方に属する何れかの演算がある場合には、前記結合演算に最も近い前記論理的順序再順序付け分類における演算が、次に順番を再構築するために必要な情報を記憶させる(298)ことを特徴とする請求項9に記載の方法。
  12. 前記最も近い演算から前記結合への出力を使用する、物理的再順序付け分類におけるすべての演算が、前記最終的な結合の間、順番を再構築するために必要な情報を 覚える (300)ことを特徴とする請求項11に記載の方法。
  13. 前記順番保存処理が:
    物理的順番再順序付け分類におけるそれぞれの演算に並び順が保存される必要性があることを通知する(322)ステップと、
    並び順に対する変更を記憶するよりもっと効率的であると判定される(326)代替のアルゴリズムであって、前記アルゴリズムが前記物理的順番再順序付け分類に属さない場合には、前記代替の演算に移る(329)ステップと
    を具備することを特徴とする請求項12に記載の方法。
  14. 並び順に対する変更を記憶するよりもっと効率的であると判定される代替のアルゴリズムがない場合には、関連付けを実行し、変更を記憶する(328)ステップ
    をさらに具備することを特徴とする請求項13に記載の方法。
  15. 前記代替のアルゴリズムに関する前記判定のために経験的方法が使用される(328)ことを特徴とする請求項13に記載の方法。
  16. 請求項9に記載の前記ステップ(200)をコンピューターに実行させるための、コンピューターで実行可能な命令を有するコンピューター読み取り可能媒体。
  17. データ発生源を検索する(292)ステップと、
    前記データ発生源におけるそれぞれの演算に個々の分類を表示するために、複合的データ並列演算を分析する(294)ステップと、
    何れかの演算が論理的順序再順序付け分類に属する場合には(296)、結合に最も近い前記論理的順序再順序付け分類における演算において順番を再構築するために必要な情報を記憶する(298)ステップと、
    前記結合に最も近い前記論理的順序再順序付け演算からの出力を使用するすべての演算における順番保存を容易にする順番保存処理を実行する(300)ステップと、
    最終的に順序付けられた集合を生成するために最終的結合処理を実行する(302)ステップと
    を具備することを特徴とする、データ並列演算において既存の順序を表す要素位置を保存するための方法。
  18. 何れの演算も前記物理的および論理的順番再順序付け分類に属さず、かつ並び順が重要でない場合には、特に何も為されない(306)ことを特徴とする請求項17に記載の方法。
  19. 何れの演算も前記物理的および論理的順番再順序付け分類に属さず、かつ並び順が重要である場合には、前記最終的な結合処理の間、要素の間での入力データの相対的並び順が保存される(308)ことを特徴とする請求項17に記載の方法。
  20. 請求項17に記載の前記ステップ(200)をコンピューターに実行させるためのコンピューターで実行可能な命令を有することを特徴とするコンピューター読み取り可能媒体。
JP2010514964A 2007-06-27 2008-06-16 データ並列演算における順番保存 Pending JP2010532528A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/823,167 US8074219B2 (en) 2007-06-27 2007-06-27 Order preservation in data parallel operations
PCT/US2008/067138 WO2009002750A2 (en) 2007-06-27 2008-06-16 Order preservation in data parallel operations

Publications (1)

Publication Number Publication Date
JP2010532528A true JP2010532528A (ja) 2010-10-07

Family

ID=40162386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010514964A Pending JP2010532528A (ja) 2007-06-27 2008-06-16 データ並列演算における順番保存

Country Status (6)

Country Link
US (1) US8074219B2 (ja)
EP (1) EP2176752A4 (ja)
JP (1) JP2010532528A (ja)
CN (1) CN101689125B (ja)
TW (1) TWI444894B (ja)
WO (1) WO2009002750A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011141587A (ja) * 2010-01-05 2011-07-21 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム、分散処理方法、およびプログラム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996556B2 (en) * 2009-06-05 2015-03-31 Microsoft Technology Licensing, Llc Parallel processing of an ordered data stream
US8276154B2 (en) * 2009-12-18 2012-09-25 Microsoft Corporation Hash partitioning streamed data
US8949249B2 (en) 2010-06-15 2015-02-03 Sas Institute, Inc. Techniques to find percentiles in a distributed computing environment
US20120124518A1 (en) * 2010-11-16 2012-05-17 Microsoft Corporation Managing Operations via a User Interface
US10007698B2 (en) * 2011-11-28 2018-06-26 Sybase, Inc. Table parameterized functions in database
US9122700B2 (en) * 2011-12-20 2015-09-01 Los Alamos National Security, Llc Parallel log structured file system collective buffering to achieve a compact representation of scientific and/or dimensional data
US9251155B1 (en) * 2012-05-04 2016-02-02 Paraccel Llc Maintaining sort order of data in databases
US10175961B2 (en) * 2015-06-10 2019-01-08 International Business Machines Corporation Joining operator graph elements via whole program optimization
US10783113B2 (en) * 2015-06-11 2020-09-22 Oracle International Corporation Data retention framework
JP6902805B2 (ja) * 2017-03-03 2021-07-14 ランウェイ セーフ アイピーアール エイビー 人工材料拘束システム及びその形成方法
CN111291036B (zh) * 2018-11-21 2023-10-20 杭州海康威视数字技术股份有限公司 数据标签的确定方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0231232A (ja) * 1988-07-21 1990-02-01 Matsushita Electric Ind Co Ltd データ処理装置
JPH09511347A (ja) * 1994-01-31 1997-11-11 サン マイクロシステムズ インコーポレイテッド マルチプロセッサディジタルデータプロセッシングシステムにおけるデータアクセス方法および装置
JP2004302741A (ja) * 2003-03-31 2004-10-28 Fujitsu Ltd グリッドコンピューティングを用いたシステムにおけるリソース提供方法,そのシステムにおける監視装置,その監視装置用プログラムおよびそのシステムにおけるリソース提供端末用プログラム

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447228A3 (en) 1990-03-16 1993-01-07 Hewlett-Packard Company Data stream concentrator providing attribute data storage and graphics pipeline access
US5237691A (en) 1990-08-01 1993-08-17 At&T Bell Laboratories Method and apparatus for automatically generating parallel programs from user-specified block diagrams
JPH077422B2 (ja) 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US5421007A (en) * 1992-05-12 1995-05-30 Syncsort Incorporated Key space analysis method for improved record sorting and file merging
JP3415914B2 (ja) * 1993-10-12 2003-06-09 富士通株式会社 並列マージソート処理方法
US5860009A (en) * 1994-04-28 1999-01-12 Kabushiki Kaisha Toshiba Programming method for concurrent programs and program supporting apparatus thereof
US5659737A (en) 1995-08-01 1997-08-19 Oracle Corporation Methods and apparatus for data compression that preserves order by using failure greater than and failure less than tokens
US5610603A (en) 1995-09-28 1997-03-11 International Business Machines Corporation Sort order preservation method used with a static compression dictionary having consecutively numbered children of a parent
US5745392A (en) * 1995-10-05 1998-04-28 Chevron U.S.A. Inc. Method for reducing data storage and transmission requirements for seismic data
US6055558A (en) * 1996-05-28 2000-04-25 International Business Machines Corporation Pacing of multiple producers when information is required in natural order
US5999729A (en) * 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
CA2209549C (en) 1997-07-02 2000-05-02 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for loading data into a database in a multiprocessor environment
US6212617B1 (en) 1998-05-13 2001-04-03 Microsoft Corporation Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6480876B2 (en) 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6366911B1 (en) * 1998-09-28 2002-04-02 International Business Machines Corporation Partitioning of sorted lists (containing duplicate entries) for multiprocessors sort and merge
US6427148B1 (en) * 1998-11-09 2002-07-30 Compaq Computer Corporation Method and apparatus for parallel sorting using parallel selection/partitioning
US6408314B1 (en) * 1999-07-06 2002-06-18 Synscort Incorporated Method of performing a high-performance sort which gains efficiency by reading input file blocks sequentially
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6434560B1 (en) * 1999-07-19 2002-08-13 International Business Machines Corporation Method for accelerated sorting based on data format
US6438562B1 (en) * 1999-08-24 2002-08-20 Oracle Corporation Parallel index maintenance
US6717851B2 (en) * 2000-10-31 2004-04-06 Sandisk Corporation Method of reducing disturbs in non-volatile memory
US6691109B2 (en) 2001-03-22 2004-02-10 Turbo Worx, Inc. Method and apparatus for high-performance sequence comparison
US7085769B1 (en) * 2001-04-26 2006-08-01 Ncr Corporation Method and apparatus for performing hash join
US7047395B2 (en) * 2001-11-13 2006-05-16 Intel Corporation Reordering serial data in a system with parallel processing flows
US6864892B2 (en) 2002-03-08 2005-03-08 Sun Microsystems, Inc. Graphics data synchronization with multiple data paths in a graphics accelerator
US7058937B2 (en) 2002-04-12 2006-06-06 Intel Corporation Methods and systems for integrated scheduling and resource management for a compiler
WO2003091872A1 (fr) * 2002-04-26 2003-11-06 Nihon University School Juridical Person Dispositif de tri par fusion en parallele, procede et programme y relatifs
CN101165650B (zh) 2003-06-25 2012-10-10 起元科技有限公司 计算图的计算机辅助并行化
US7251650B2 (en) 2003-08-25 2007-07-31 International Business Machines Corporation Method, system, and article of manufacture for processing updates to insert operations
US20050131893A1 (en) * 2003-12-15 2005-06-16 Sap Aktiengesellschaft Database early parallelism method and system
US7426752B2 (en) 2004-01-05 2008-09-16 International Business Machines Corporation System and method for order-preserving encryption for numeric data
US20060155394A1 (en) 2004-12-16 2006-07-13 International Business Machines Corporation Method and apparatus for order-preserving clustering of multi-dimensional data
US7779008B2 (en) * 2005-02-16 2010-08-17 Oracle International Corporation Parallel partition-wise aggregation
US8126870B2 (en) 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7302510B2 (en) * 2005-09-29 2007-11-27 International Business Machines Corporation Fair hierarchical arbiter
US20070250470A1 (en) * 2006-04-24 2007-10-25 Microsoft Corporation Parallelization of language-integrated collection operations
US8316360B2 (en) * 2006-09-29 2012-11-20 Intel Corporation Methods and apparatus to optimize the parallel execution of software processes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0231232A (ja) * 1988-07-21 1990-02-01 Matsushita Electric Ind Co Ltd データ処理装置
JPH09511347A (ja) * 1994-01-31 1997-11-11 サン マイクロシステムズ インコーポレイテッド マルチプロセッサディジタルデータプロセッシングシステムにおけるデータアクセス方法および装置
JP2004302741A (ja) * 2003-03-31 2004-10-28 Fujitsu Ltd グリッドコンピューティングを用いたシステムにおけるリソース提供方法,そのシステムにおける監視装置,その監視装置用プログラムおよびそのシステムにおけるリソース提供端末用プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND199801002001; 正井一夫、根岸和義、土田正士、松澤 茂: '更新処理を並列実行するUNIX向けDBMSを開発' 日経エレクトロニクス 第630号, 19950227, 第107〜111頁, 日経BP社 *
CSND199801515003; 佐藤紅志: '徹底検証!SQL Server7.0 vs Oracle8:SQL Serverはどこまで進化したか?' LAN TIMES 第8巻,第12号, 19981201, 第89〜92頁, ソフトバンク株式会社 *
JPN6012067766; 正井一夫、根岸和義、土田正士、松澤 茂: '更新処理を並列実行するUNIX向けDBMSを開発' 日経エレクトロニクス 第630号, 19950227, 第107〜111頁, 日経BP社 *
JPN6012067767; 佐藤紅志: '徹底検証!SQL Server7.0 vs Oracle8:SQL Serverはどこまで進化したか?' LAN TIMES 第8巻,第12号, 19981201, 第89〜92頁, ソフトバンク株式会社 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011141587A (ja) * 2010-01-05 2011-07-21 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム、分散処理方法、およびプログラム

Also Published As

Publication number Publication date
EP2176752A2 (en) 2010-04-21
CN101689125B (zh) 2013-12-25
US8074219B2 (en) 2011-12-06
EP2176752A4 (en) 2011-05-04
WO2009002750A2 (en) 2008-12-31
CN101689125A (zh) 2010-03-31
TWI444894B (zh) 2014-07-11
WO2009002750A3 (en) 2009-02-26
US20090007137A1 (en) 2009-01-01
TW200907800A (en) 2009-02-16

Similar Documents

Publication Publication Date Title
JP2010532528A (ja) データ並列演算における順番保存
JP6454706B2 (ja) ソースコード変換
US8201171B2 (en) Adjacent data parallel and streaming operator fusion
EP4250135A2 (en) Systems and methods for dataflow graph optimization
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
US9575639B2 (en) Compound controls
KR102549994B1 (ko) 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
JP6387399B2 (ja) データ操作のための、メモリ及びストレージ空間の管理
TW200910093A (en) Memory transaction grouping
Qiao et al. Hyper dimension shuffle: Efficient data repartition at petabyte scale in scope
Jayalath et al. Efficient Geo-distributed data processing with rout
JP6523823B2 (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム
US10642876B1 (en) Query processing pipeline for semi-structured and unstructured data
Ponce et al. Extension of a Task-based model to Functional programming
Gurumurthy et al. ADAMANT: A Query Executor with Plug-In Interfaces for Easy Co-processor Integration
US11288447B2 (en) Step editor for data preparation
Marszałek Modification of parallelization for fast sort algorithm
US20230359668A1 (en) Dataflow graph datasets
Schram Software architectures and patterns for persistence in heterogeneous data-intensive systems
Browning et al. Common Protocols
Skifjeld Retrieval of Genomic Data using PyTables
Wadkar et al. Basics of MapReduce Development
Guller et al. Spark Core

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130328

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130528

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131126