JP5425541B2 - マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 - Google Patents

マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 Download PDF

Info

Publication number
JP5425541B2
JP5425541B2 JP2009151796A JP2009151796A JP5425541B2 JP 5425541 B2 JP5425541 B2 JP 5425541B2 JP 2009151796 A JP2009151796 A JP 2009151796A JP 2009151796 A JP2009151796 A JP 2009151796A JP 5425541 B2 JP5425541 B2 JP 5425541B2
Authority
JP
Japan
Prior art keywords
data
bucket
buckets
accelerators
accelerator
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.)
Expired - Fee Related
Application number
JP2009151796A
Other languages
English (en)
Other versions
JP2010033561A (ja
Inventor
クァン・フェン
リアン・チェン
シェン・シュー
ヨンファ・リン
Original Assignee
インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation
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
Priority to CN 200810134393 priority Critical patent/CN101639769B/zh
Priority to CN200810134393.X priority
Application filed by インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation filed Critical インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation
Publication of JP2010033561A publication Critical patent/JP2010033561A/ja
Application granted granted Critical
Publication of JP5425541B2 publication Critical patent/JP5425541B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/36Combined merging and sorting
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Description

本発明はデータ処理の分野に関し、とりわけ、データ・セットを区分化するための方法および装置、ならびにマルチプロセッサ・システム上でデータ・セットをソートするための方法および装置に関する。
データ・ソートは、工業および商業の領域でデータを分析する際に頻繁に使用される、一般的なプロセスである。
一般に、図1に示されるようなシングルプロセッサ・データ処理システムでは、データ・ソートは主に、1)メイン・ストレージからソートされることになるデータを収集する段階、2)フェッチされたデータをソートするために処理コアを使用する段階、3)ソートされたデータをメイン・ストレージに再分配する段階、という、3つの段階を含む。
半導体処理がその限界に近づくにつれて、半導体処理の進展によりシングルプロセッサの機能が継続して向上するのに比べて、データ処理システムにおける処理ノードの数を増加させることが、近い将来、さらに実行可能となる。
図2は、従来のマルチプロセッサ・システムのアーキテクチャを示す。図2に示されるように、マルチプロセッサ・システムは、一般に、1つのコアCPUおよび複数のAccelerated Processing Unit(APU)を含む、共有メイン・メモリ上で動作する複数のプロセッサを有する。
たとえば、Cell Broadband Engine(CBE)は、Power Processing Unit(PPU)および8つのSynergistic Processing Unit(SPU)を含む、共有メイン・メモリ上で動作する9つのプロセッサを有する、シングルチップ・マルチプロセッサ・システムである。こうしたシステム・アーキテクチャの下で、CBEは突出したデータ計算機能を提供することができる。したがって、大規模データ・セットでのデータ・ソートに関して、CBEなどのマルチプロセッサ・システムが使用される場合、ソート・プロセスの性能を大幅に向上させることができる。
しかしながら、CBEなどのマルチプロセッサ・システムでは、複数のアクセラレータがソートされることになるデータ・セット上で並行してデータ・ソートを実行するため、アクセラレータのローカル・ストレージのサイズに対応するように、データ・セットを均等に区分化する必要があり、したがって、主な処理段階には、1)ソートされることになるデータ・セットを区分化し、これをメイン・メモリから複数のアクセラレータへと分配する段階、2)複数のアクセラレータがそのそれぞれのデータ上で並行してソートを実行する段階、および3)複数のアクセラレータのデータ・ソート結果をメイン・メモリ内に収束(converge)させる段階が含まれる。
しかしながら、上記のプロセスでは、具体的にどのようにデータ・セットを区分化するか、およびどのようにデータ・ソート結果を収束させるかが、現在でも依然として問題である。
さらに一般的には、マルチプロセッサ・システムにおいて、各アクセラレータに大規模ローカル・ストレージを備えることは非常にコストがかかるため、各アクセラレータのローカル・ストレージの容量は制限されている。たとえばCBEでは、各SPUのローカル・ストレージの容量は256KBであり、これは大規模データ・セットには不十分である。
したがって、データ・セットが適切に区分化されなければ、複数のアクセラレータがそれぞれのソート・タスクを並行して実行する場合、それぞれのアクセラレータとメイン・メモリとの間で、DMA操作を使用することによってデータ・スワップ動作を繰り返して実行する必要が生じる可能性があり、メイン・メモリと複数のアクセラレータとの間のメモリ帯域幅が一般に制限されているため、多数のデータ・スワップ動作はメイン・メモリ動作の効率を低下させることになる。たとえばCBEでは、SPUとメイン・メモリとの間のメモリ帯域幅は約25.6GB/秒でのみ維持可能であり、これが8つのSPUによって共有されることになる。
加えて、データ・セットが適切に区分されなければ、複数のアクセラレータがそれぞれのソート・タスクを実行する場合、各アクセラレータが他のアクセラレータとのデータ通信を実行する必要が生じる可能性もあり、これもソートの効率を低下させることになる。
したがって、CBEなどのマルチプロセッサ・システム上でデータ・ソートが実行された場合、メイン・メモリとアクセラレータとの間、およびアクセラレータ間での、データ・スワップ動作が削減されるはずであることを考慮に入れるべきである。
さらに、典型的なデータ・ソート・アルゴリズムでは多数の分岐(比較)動作が存在するが、CBEなどのマルチプロセッサ・システムの場合、分岐動作の機能は比較的弱い。これも、CBEなどのマルチプロセッサ・システム上でデータ・ソートを実行する場合に考慮に入れるべき問題である。
前述の考察に基づき、CBEなどのマルチプロセッサ・システムに好適なデータの区分化およびソート・ソリューションを設計することが求められている。
前述の問題に鑑みて、本発明は、データ・セットを区分化するための方法および装置、ならびにマルチプロセッサ・システム上のデータ・セットをソートするための方法および装置を提供し、その結果、こうしたマルチプロセッサ・システムの持つ高計算力の利点を十分に活かすように、可能な限り、データ間の比較の代わりにデータの計算を介して、および、データの物理的移動の代わりにデータの論理的収束を介して、CBEなどのマルチプロセッサ・システム上で、大規模データ・セットの区分化およびソートが実行される。
本発明の一態様によれば、マルチプロセッサ・システム上でデータ・セットを区分化するための方法が提供され、このマルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、この方法は、当該複数のアクセラレータを並行して使用することにより、当該データ・セットを異なるデータ領域に対応する複数のバケットに反復的に区分化するステップを含み、複数のバケットそれぞれは当該複数のアクセラレータのローカル・ストレージに格納可能であり、各反復において、この方法は、当該データ・セットを複数の大規模バケットに大まかに区分化するステップと、そのデータ・セット内のデータ値の配分を示すことが可能な当該データ・セットのパラメータを取得するステップと、当該パラメータに基づいて当該データ・セットに関する複数のデータ領域を決定するステップと、当該複数のアクセラレータを並行して使用することにより、当該複数の大規模バケットを、複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するステップと、を含み、当該複数のアクセラレータのそれぞれが、区分化している大規模バケット内の各要素について、複数のデータ領域内でその要素が属するデータ領域を計算によって決定する。
本発明の他の態様によれば、マルチプロセッサ・システム上でデータ・セットをソートするための方法が提供され、このマルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、この方法は、マルチプロセッサ・システム上でデータ・セットを区分化するための上記方法を使用することによって、ソートされることになるデータ・セットを、複数の異なるデータ領域に対応する複数のバケットに区分化するステップと、当該複数のバケットをメイン・メモリから当該複数のアクセラレータに分配するステップと、当該複数のアクセラレータによって、並行して、当該複数のバケットのそれぞれでデータ・ソートを実行するステップと、当該複数のアクセラレータにより、当該複数の異なるデータ領域の順序に従って、それらのソートされたバケットをそれぞれメイン・メモリに書き戻すステップと、を含む。
本発明の特徴、利点、および目的は、添付の図面に関して本発明の詳細な実施の以下の説明を読むことで、より良く理解されるであろうと考えられる。
シングルプロセッサ・システムを示すブロック図である。 マルチプロセッサ・システムを示すブロック図である。 本発明の実施形態に従った、マルチプロセッサ・システム上でデータ・セットを区分化するための方法を示す流れ図である。 図3の方法を示す全体図である。 本発明の実施形態に従った、図3の方法における大規模バケットを複数の小規模バケットに区分化するためのステップ320を示す詳細な流れ図である。 図5のプロセスを示す図である。 図3の方法におけるステップ330、340を示す図である。 本発明の実施形態に従った、マルチプロセッサ・システム上でデータ・セットをソートするための方法を示す流れ図である。 図8のプロセスを示す図である。 本発明の実施形態に従った、マルチプロセッサ・システム内でデータ・セットを区分化するための装置を示すブロック図である。 本発明の実施形態に従った、マルチプロセッサ・システム内でデータ・セットをソートするための装置を示すブロック図である。
次に、本発明の好ましい諸実施形態について、図面を参照しながら詳細に説明する。
図3は、本発明の実施形態に従った、マルチプロセッサ・システム上でデータ・セットを区分化するための方法を示す流れ図である。ここでマルチプロセッサ・システムは、少なくとも1つのコア・プロセッサと複数のアクセラレータとを有する。具体的に言えば、マルチプロセッサ・システムは、たとえば、1つのPPU(コア・プロセッサ)および8つのSPU(アクセラレータ)を備えた上記CBEとすることができる。加えて、区分化されることになるデータ・セットは、前述のマルチプロセッサ・システムのメイン・メモリ内に事前に格納される。
マルチプロセッサ・システム上でデータ・セットを区分化するための実施形態の方法は、当該複数のアクセラレータを並行して使用することにより、当該データ・セットが、異なるデータ領域に対応する、すべてが当該複数のアクセラレータのローカル・ストレージの容量よりも小さな、複数の小規模バケットに区分化されるまで、当該データ・セットを反復的に区分化する。
具体的に言えば、図3に示されるように、第1にステップ305で、そのデータ・セット内のデータ値の配分を実質上示すことができる区分化されることになるデータ・セットのパラメータが取得され、このパラメータは、たとえば、そのデータ・セット内のデータ値の平均/分散または最小値および最大値とすることができる。もちろんパラメータは、データ値の平均または分散、ならびにデータ値の最小値および最大値を含むことができる。
さらに、好ましい実施形態では、データ・セットのパラメータはそのデータ・セットに基づいて推定される。他の実施形態では、パラメータはそのデータ・セットに基づいて算出可能である。
ステップ310では、複数のデータ領域が、当該パラメータに基づくデータ・セットに関して決定される。
たとえば、そのデータ・セットに基づいて推定されたパラメータがデータ値の平均であり、平均が500である場合、そのデータ・セットに関して、固定ステップ100を備えた複数のデータ領域0〜99、100〜199、200〜299、・・・、900〜999を決定することができる。もちろん、これに限定されるものではない。データ領域を決定するための複数の様式が存在する。たとえば、データの2進表現の最高位4ビットに対してそれぞれ重みを設定することが可能であり、たとえば、最高位4ビットに対してそれぞれ重み2、2、2、2を設定し、これらの最高位4ビットの重み付け合計に基づいて、16の異なるデータ領域、すなわち、データの最高位4ビットの重み付け合計が1であるデータ領域、データの最高位4ビットの重み付け合計が2であるデータ領域などを、決定することができる。
ステップ315では、データ・セットが複数の大規模バケットに大まかに区分化される。図4の(a)および(b)に示されるように、データ・セットは例示的に4つの大規模バケットに区分化される。
このステップで、データ・セットを複数の大規模バケットに大まかに区分化する目的は、当該複数のアクセラレータが、これらの大規模バケットを反復的に並行してさらに区分化できるようにすることであるため、複数のアクセラレータがデータ・セット上で並行して動作可能である限り、本発明における区分化の様式には特別な制限はない。
一実施形態では、このステップで、データ・セットは、複数のアクセラレータの数に応じて複数の大規模バケットに均等に区分化される。たとえば、8つのSPUを備えた上記CBEの場合、データ・セットは8つの大規模バケットに均等に区分化される。しかしながらこれは単なる例であり、他の実施形態では、データ・セットはより多いかまたは少ない大規模バケットにも区分化可能であり、これらの大規模バケットのデータ量は均等でない場合もある。
ステップ320では、図4(c)に示されるように、複数の大規模バケットが計算を通じて、複数のデータ領域に対応する複数の小規模バケットに反復的に区分化され、その間に、小規模バケットにおけるデータ値の配分を精密に示すことができる複数の小規模バケットそれぞれのパラメータが、当該複数のアクセラレータによって並行して生成される。
たとえば、上記複数のデータ領域0〜99、100〜199、200〜299、・・・、900〜999の場合、複数のアクセラレータは計算を通じて、複数の大規模バケットをこれらのデータ領域に対応するそれぞれ複数の小規模バケットに並行して区分化することができる。すなわち、複数の大規模バケットそれぞれについて、その値が0〜99の間にあるすべての要素が計算を通じて1つの小規模バケットに区分化され、その値が100〜199の間にあるすべての要素が1つの小規模バケットに区分化されるというようにして、0〜99、100〜199、200〜299、・・・、900〜999のデータ領域それぞれに対応する複数の小規模バケットを形成する。
次に、ステップ320のプロセスについて、添付の図面に関して詳細に説明する。図5は、複数のアクセラレータのうちのいずれか1つによる大規模バケットの区分化を一例として採用することによる、本発明の実施形態に従ったステップ320のプロセスの詳細な流れ図である。図6は、そのプロセスの例示である。
この実施形態では、図6に示されるように、当該複数のアクセラレータそれぞれのローカル・ストレージおよびメイン・メモリにおいて、同じデータ領域に属する要素をまとめてリンクさせるために、リンク付けリストがそれぞれ設定される。一実施形態では、リンク付けリストは、インデックス・リストおよびテール・ポインタ(tail pointer)・リストからなる逆リンク付けリストである。ここでインデックス・リストは複数のエントリを含み、その数はストレージ容量に依存する。加えて、テール・ポインタ・リストも複数のエントリを含み、その数は複数のデータ領域の数に少なくとも等しい。すなわち、複数のデータ領域それぞれについて、テール・ポインタ・リストは、それに対応する少なくとも1つのエントリを含む。加えて、初期に、インデックス・リストおよびテール・ポインタ・リスト内のすべてのエントリは0として設定される。
図5に示されるように、第1のステップ505で、この実施形態に従ったステップ320のプロセスは、複数のデータ領域に対して特定の番号を設定する。
たとえば、上記複数のデータ領域0〜99、100〜199、200〜299、・・・、900〜999の場合、データ領域0〜99を1として番号付けし、データ領域100〜199を2として番号付けするということが可能である。
加えて、データの2進表現の最高位4ビットに対してそれぞれ重み2、2、2、2が設定され、これらの最高位4ビットの重み付け合計に従って、16の異なるデータ領域が決定された場合、データの最高位4ビットの重み付け合計が1のデータ領域を1として番号付けし、データの最高位4ビットの重み付け合計が2のデータ領域を2として番号付けするという具合である。
ステップ510では、データの一部分が、メイン・メモリに格納されたデータ・セットの大規模バケットから獲得され、アクセラレータへ、すなわちそのアクセラレータのローカル・ストレージへと割り振られる。ここで、その部分のデータ量は、そのアクセラレータのローカル・ストレージの容量に基づいて決定される。
一実施形態では、そのアクセラレータのローカル・ストレージは、メイン・メモリから獲得されたデータ、およびそれぞれ区分化されているデータを格納するために、2つの部分に分割することが可能である。この場合、インデックス・リストおよびテール・ポインタ・リストによって占有されるスペースを考慮に入れると、データのその部分の量は、そのアクセラレータのローカル・ストレージ容量の半分より少ないはずである。しかしながら、これに限定されるものではなく、当業者であれば、当分野の技術的な知識を使用することで、そのアクセラレータのローカル・ストレージのスペースをいずれかの妥当な様式で配置構成することが可能である。
ステップ515では、アクセラレータは、区分化されていない要素をそのローカル・ストレージから獲得し、計算を通じて、その要素が属するデータ領域の数にその要素を関連付けることができる。
たとえば、それぞれ1、2、・・・、と番号付けされた上記複数のデータ領域0〜99、100〜199、200〜299、・・・、900〜999の場合、その複数のデータ領域のステップ、すなわち100で、獲得された要素を分割すること、および次にその結果を丸めることにより、その要素が属するデータ領域の番号を獲得することができる。ここで、CEILING(数式)関数を使用して、分割結果で丸めを実行することができる。たとえば、CEILING(512/100)は6を戻すことになり、この場合、512が6番目のデータ領域、すなわちデータ領域500〜599に属することが決定可能である。
しかしながら、これに限定されるものではなく、ステップ505では、データ領域0〜99を0と番号付けし、データ領域100〜199を1と番号付けするということも可能であり、フロア(数式)関数を使用して、当該ステップによって獲得された要素の分割結果で丸めを実行することができる。たとえば、フロア(512/100)は5を戻すことになり、これによって512が、この場合はデータ領域500〜599でもある、5番目のデータ領域に属することが決定可能である。
加えて、1、2、・・・、として番号付けされたデータの2進表現の最高位4ビットの重み付け合計に従って、16の異なるデータ領域が決定される上記のケースでは、獲得された要素の2進表現の最高位4ビットの重み付け合計を計算することによって、その要素が属するデータ領域の番号を取得することができる。
しかしながら、複数のデータ領域に順番に番号付けし、獲得された要素が属するデータ領域を、その要素に関する計算を実行することによって決定し、計算の結果をデータ領域の番号に関連付けるという上記の様式は、単なる例であり、計算を通じて要素が属するデータ領域に要素を関連付けることができる限り、いずれの方法も使用可能である。
ステップ520で、獲得された要素は、上記の計算結果に基づき、番号がその計算結果に対応するデータ領域に、すなわち対応する小規模バケットに区分化される。
この実施形態では、図6の右側に示されるように、アクセラレータのローカル・ストレージでは、128Bなどの固定サイズを備えるストレージ領域(図6のAPUにおいて1、2、・・・、7とラベル表示された部分)が、上記複数のデータ領域のそれぞれ、すなわち複数の小規模バケットそれぞれに対して割り振られ、これがそのデータ領域に分割化されたデータを格納するために使用される。一実施形態では、ストレージ領域の割り振りは、複数のデータ領域のそれぞれについて、128Bなどの固定長を備えるアレイを設定することによって実施される。
したがって、このステップでは、獲得された要素を、その番号が計算結果に対応するデータ領域に区分化することは、そのデータ領域に対応するアクセラレータのローカル・ストレージ内のストレージ領域に、その要素を格納することである。
ステップ525で、対応する数を備えるデータ領域に、すなわち対応する小規模バケットに、要素を区分化した後、その小規模バケット内のデータ値の平均または分散ならびに最小値および最大値などの、その小規模バケット内のデータ値の現在の配分を精密に示すことができるパラメータが決定される。もちろんパラメータは、データ値の単なる平均または分散とするか、あるいはデータ値の単なる最小値および最大値とすることができる。
当該アクセラレータによって大規模バケットを複数の小規模バケットに区分化するプロセス時に、大規模バケット内の要素は1つずつトラバースしなければならないため、それぞれの小規模バケットにおけるデータ値の現在の最小値および最大値ならびに平均/分散はトラバースと同時に決定することができる。したがって、その大規模バケット内のすべての要素が対応する小規模バケットに区分化された後、それぞれの小規模バケットのデータ値の最終的な最小値および最大値ならびに平均/分散を決定し、その小規模バケット内のデータ値の配分を精密に示すことができるパラメータとして採用することができる。
ステップ530で、上記小規模バケットに対応するアクセラレータのローカル・ストレージ内のストレージ領域が満杯であるかどうかが判別される。満杯である場合、プロセスはステップ535に進み、満杯でない場合はステップ555に進む。
ステップ535で、満杯のストレージ領域内の要素はデータ・ストライプとしてメイン・メモリに書き戻される。
具体的に言えばアクセラレータは、メイン・メモリ内で最後に書き戻された、アクセラレータが区分化している大規模バケットのデータ・ストライプの次に、そのデータ・ストライプを書き戻す。すなわち、そのアクセラレータによって区分化されたそれぞれのデータ・ストライプは、メイン・メモリ内でこれらのデータ・ストレイプが属する大規模バケット上に順番に上書きされる。すなわち、大規模バケットから区分化されたそれぞれのデータ・ストライプは、その大規模バケットのロケーションに依然として書き戻される。したがって図6から、それぞれのアクセラレータによって区分化されたデータ・ストライプは、これらのデータ・ストライプが属する大規模バケットに従って、メイン・メモリ内に格納されることがわかる。
ステップ540で、当該アクセラレータのローカル・リンク付けリストが更新される。
そのアクセラレータのローカル・ストレージ内の上記複数のデータ領域に対して割り振られた複数のストレージ領域の中で、あるストレージ領域が満杯になると同時に、アクセラレータがその中のデータ・ストライプをメイン・メモリに書き戻すことになるため、図6から、メイン・メモリ内では、同じアクセラレータによって書き戻される同じ大規模バケットに属するデータ・ストライプの中で、同じデータ領域に対応する、すなわち小規模バケットを形成するデータ・ストライプが、連続して格納されない可能性があることがわかる。
この実施形態では、インデックス・リストおよびテール・ポインタ・リストからなる前述の逆リンク付けリストを使用して、このタスクを実施する。
具体的に言えば、当該アクセラレータのローカル・インデックス・リスト内の複数のエントリは、当該アクセラレータによってメイン・メモリに順番に書き戻された複数のデータ・ストライプと1つずつ対応し、対応するデータ・ストライプの関係インデックスを格納するためにそれぞれが使用される。関係インデックスは、同じ大規模バケットから区分化され、対応するデータ・ストライプと同じデータ領域に属する、対応するデータ・ストライプの、前のデータ・ストライプのメイン・メモリ内の位置を示す。すなわち、関係インデックスは、前のデータ・ストライプの大規模バケットと同じ大規模バケットに書き戻されたデータ・ストライプの中での、前のデータ・ストライプの数値順序を示す。前述のように、それぞれのデータ・ストライプのサイズは、すべてが128Bに等しいなどのように等しいため、前のデータ・ストライプは、インデックスに基づいてメイン・メモリ内の対応する大規模バケット内で容易に位置を突き止めることができる。
加えて、当該アクセラレータのローカル・テール・ポインタ・リスト内の複数のエントリは、複数のデータ領域のうちの1つにそれぞれ対応し、メイン・メモリ内で最新のデータ・ストライプが属する大規模バケット内の対応するデータ領域の最新のデータ・ストライプの位置を示すために、それぞれ使用される。
加えて、このステップで逆リンク付けリストを更新するプロセスは、以下の通りであり、第1に、ステップ535でメイン・メモリに書き戻されたデータ・ストライプが属するデータ領域に対応するテール・ポインタ・リスト内のエントリが決定され、第2に、テール・ポインタ・リスト内のそのエントリの値が、メイン・メモリに書き戻された上記データ・ストライプに対応するインデックス・リスト内のエントリに、そのデータ・ストライプの前のデータ・ストライプの位置を示すために書き戻され、第3に、テール・ポインタ・リスト内のエントリが、メイン・メモリ内でデータ・ストライプが属する大規模バケット内のメイン・メモリに書き戻されたデータ・ストライプの位置を使用して、そのデータ領域の現在の最新データ・ストライプの位置を示すように更新される。
したがって、上記インデックス・リストおよびテール・ポインタ・リストからなる逆リンク付けリストを使用すると、1つの小規模バケットに属する複数のデータ・ストライプをまとめて逆にリンクさせ、論理的には収束するが物理的には分散された、図4(c)に示されたような小規模バケットを形成することができる。
ステップ545で、当該アクセラレータのローカル・インデックス・リストが満杯であるかどうかが判別される。満杯の場合、プロセスはステップ550に進み、満杯でない場合はステップ555に進む。
ステップ550で、当該アクセラレータのローカル・インデックス・リスト内のコンテンツが、メイン・メモリのインデックス・リストに書き込まれる。
前述のように、それぞれのアクセラレータによって書き戻されたデータ・ストライプは、これらのデータ・ストライプが属する大規模バケットに従って個々に格納され、メイン・メモリのインデックス・リスト内のこれらのデータ・ストライプに対応するインデックスも、それに応じて大規模バケットに従って互いに独立している。
したがってこのステップで、当該アクセラレータは、そのローカル・インデックス・リスト内のコンテンツを、アクセラレータが区分化している大規模バケットに対応するメイン・メモリのインデックス・リスト内の部分に追加するはずである。
ステップ555で、当該アクセラレータのローカル・ストレージ内に区分化されていない要素が依然として存在するかどうかが判別され、存在する場合、プロセスはステップ515に戻って他の要素の処理を続行し、存在しない場合、ステップ560に進む。
ステップ560で、メイン・メモリ内のアクセラレータに割り振られた大規模バケット内に区分化されていない要素が依然として存在するかどうかが判別され、存在する場合、プロセスはステップ510に戻って、メイン・メモリ内の大規模バケットからアクセラレータのローカル・ストレージへのデータの次の部分の獲得を続行し、存在しない場合、プロセスは終了する。
上記は、本発明の実施形態に従った、図3のステップ320のプロセスの詳細な説明である。
次に図3に戻ると、ステップ325で、当該複数の大規模バケットがそれぞれ複数の小規模パケットに区分化された後、図4(d)に示されるように、これら複数の大規模バケット内に、同じデータ領域に対応する小規模バケットがマージされる。したがって、図4(e)に示されるように、当該データ・セットは最終的に、当該複数のデータ領域に対応する複数のマージ済みバケットに区分化される。
たとえば、上記複数のデータ領域0〜99、100〜199、200〜299、・・・、900〜999の場合、データ領域0〜99に対応する当該複数の大規模バケット内の小規模バケットが1つのバケットにマージされ、データ領域100〜199に対応する小規模バケットが1つのバケットにマージされるという具合である。
このステップで、同じデータ領域に対応する小規模バケットのいわゆるマージングとは、これらの小規模バケットをまとめて物理的にマージすることではなく、メイン・メモリ内のインデックス・リストおよびテール・ポインタ・リストを使用することにより、インデックス・リストおよびテール・ポインタ・リストの正規化を通じて、そのデータ領域に対応するマージ済みバケットを形成するために、当該データ・セット内の同じデータ領域に属するすべてのデータ・ストライプをまとめてグローバルに、論理的にリンクさせることである。
具体的に言えば、前述のように、それぞれのアクセラレータによって生成されたインデックス・コンテンツは、大規模バケットに従ってメイン・メモリのインデックス・リスト内で互いに独立しており、それぞれのアクセラレータのローカル・テール・ポインタ・リスト内に記録されるのは、対応する大規模バケット内の様々な小規模バケットの最新のデータ・ストライプの位置である。
したがってこのステップでは、第1に、メイン・メモリ内のインデックス・リストについて、その中の第2の大規模バケットに対応するインデックスから始まり、対応する大規模バケット内のデータ・ストライプの当初の位置を示すインデックスを置き換えるために、インデックスはデータ・セット全体の中の対応するデータ・ストライプのグローバル位置を示すように修正される。これは、インデックス・リストを使用することで、各大規模バケットのデータ・ストライプの総数を合計し、その後、第2の大規模バケットから始まる各大規模バケットについて、その大規模バケットに対応するインデックスの値を、そのバケットの前のすべての大規模バケットのデータ・ストライプの総数だけ増加させることを通じて、実施可能である。図6を参照し、第1の大規模バケットが8つのデータ・ストライプを含むと想定すると、第2の大規模バケットに対応するメイン・メモリのインデックス・リスト内のすべてのエントリのインデックス値は、8だけ増加される。さらに、第2の大規模バケットも8つのデータ・ストライプを含むと想定すると、ローカル指示からグローバル指示へのインデックス・リスト内のインデックス値の修正を実施するために、第3の大規模バケットに対応するすべてのインデックスの値は16だけ増加されるという具合である。
加えて、当該複数のアクセラレータそれぞれのローカル・テール・ポインタ・リストについて、メイン・メモリ内のインデックス・リストと同様に、その中の各エントリの値も、データ・ストライプが属する大規模バケット内の対応するデータ・ストライプの位置の当初の指示から、データ・セット全体におけるそのデータ・ストライプのグローバル位置の指示へと、修正されるべきである。
加えてこのステップでは、メイン・メモリのインデックス・リスト内の当該複数の大規模バケットの中で、ヘッド・インデックスおよびテール・インデックスも互いにリンクされる。すなわち、メイン・メモリ内のインデックス・リストについて、その中の第2の大規模バケットに対応するインデックスから始まり、各大規模バケットの各小規模バケットの第1のデータ・ストライプのインデックスが、当該複数のアクセラレータそれぞれのローカル・テール・ポインタ・リスト内の修正されたコンテンツに基づいて、前の大規模バケット内の対応する小規模バケットの最新のデータ・ストライプの位置を示すように、修正される。特に、第2の大規模バケットから始まり、各大規模バケットについて、その大規模バケット内の各小規模バケットの第1のデータ・ストライプは、大規模バケットに対応するアクセラレータのローカル・テール・ポインタ・リスト内のコンテンツに基づいて配置され、これらの第1のデータ・ストライプのインデックス・エントリは、前の大規模バケットに対応するアクセラレータのローカル・テール・ポインタ・リスト内のコンテンツに基づいて、前の大規模バケット内の対応する小規模バケットの最新のデータ・ストライプをポイントするように、修正される。たとえば、第2の大規模バケット内のデータ領域0〜99の小規模バケット内で、第1のデータ・ストライプに対応するインデックス値が最初は0であると想定すると、これは、第1のデータ・ストライプの前に、データ領域0〜99の他のデータ・ストライプがないことを示し、第1の大規模バケット内のデータ領域0〜99の小規模バケット内の最新のデータ・ストライプの位置が、第1の大規模バケットに対応するアクセラレータのローカル・テール・ポインタ・リスト内のコンテンツに基づいて、5と決定されるものと想定すると、第2の大規模バケット内のデータ領域0〜99の小規模バケット内の第1のデータ・ストライプに対応するインデックス値は、第1の大規模バケット内のデータ領域0〜99の小規模バケット内の最新のデータ・ストライプにリンクさせるように、0から5に修正される。
加えてこのステップでは、最新の大規模バケットに対応するアクセラレータのローカル・テール・ポインタ・リスト内のコンテンツが、データ・セット全体のグローバル・テール・ポインタとして、メイン・メモリのテール・ポインタ・リストに書き込まれる。
したがって、メイン・メモリ内のインデックス・リストおよびテール・ポインタ・リストを修正することによって、同じデータ領域に属するデータ・セット内のすべてのデータ・ストライプを、それらを物理的にまとめてマージする必要なしに、論理的にまとめてリンクさせることができる。
ステップ330で、複数のマージ済みバケットのそれぞれについて、そのマージ済みバケット内のデータ値の配分を精密に示すことができるパラメータは、その小規模バケット内のデータ値の配分を精密に示すことができる各小規模バケットについてステップ320で取得されたパラメータに基づいて決定される。
たとえば、各小規模バケットのデータ値の平均または分散、最小値および最大値に基づいて、複数のマージ済みバケットそれぞれのデータ値の平均または分散、最小値および最大値を決定することができる。
ステップ335で、複数のマージ済みバケット内の当該複数のアクセラレータのローカル・ストレージ容量よりも大きいバケットがあるかどうかが判別される。
このステップで、複数のマージ済みバケットのそれぞれについて、メイン・メモリ内のインデックス・リストおよびテール・ポインタ・リストを使用することによって、そのバケット内に含まれるデータ・ストライプの総数を一般化すること、ならびに、その総数に、上記128Bなどのデータ・ストライプのサイズを掛け合わせることを通じて、マージ済みバケットのサイズを取得することができる。
さらに、図7のバケット2などの、当該複数のアクセラレータのローカル・ストレージ容量よりも大きいマージ済みバケットが存在するものと判別された場合、プロセスはステップ340に進み、存在しないと判別された場合、プロセスは終了する。
ステップ340で、当該複数のアクセラレータのローカル・ストレージ容量よりも大きいマージ済みバケットそれぞれについて、そのバケット内のデータ値の配分を精密に示すことができるステップ330で決定されたパラメータに基づいて、複数のデータ領域が決定される。その後、プロセスはステップ315に戻り、結果として生じるすべてのバケットのサイズが、当該複数のアクセラレータのローカル・ストレージ容量よりも小さくなるまで、これらのバケットを、それらを新しいデータ・セットとみなしてさらに区分化する。したがって、後続の反復で使用されるパラメータが、データ・セット自体に基づいて計算されるため、データの区分化はより正確になる。
上記は、この実施形態のマルチプロセッサ・システム上でデータ・セットを区分化するための方法の詳細な説明である。この実施形態では、データ・セットが、データ間の比較ではなくデータの計算を通じて複数のバケットに区分化されるため、この方法は、比較的分岐機能に乏しいCBEなどのマルチプロセッサ・システムにとって特に好適であり、こうしたマルチプロセッサ・システム上でのデータ・セットの区分化に関する性能を向上させることができる。加えて、データの物理的移動を通じて同じデータ領域に属するデータを1つのバケットにマージするのではなく、同じデータ領域に属する複数のデータ・ストライプがリンク付けリストを介して1つのバケットとしてリンクされるため、データ・セットの区分化時のデータ移動コストを大幅に低下させることが可能であり、データの区分化に関する性能を向上させることが可能である。
次に、本発明のマルチプロセッサ・システム上でデータ・セットを区分化するための方法を使用することによって、データ・セットをソートするための方法について説明する。
図8は、本発明の実施形態に従った、マルチプロセッサ・システム上でデータ・セットをソートするための方法を示す流れ図である。ここで、マルチプロセッサ・システムは、少なくとも1つのコア・プロセッサと複数のアクセラレータとを有する。具体的に言えば、マルチプロセッサ・システムは、たとえば1つのPPU(コア・プロセッサ)および8つのSPU(アクセラレータ)を備える、上記CBEとすることができる。
図8に示されるように、ステップ805で、ソートされることになるデータ・セットはメイン・メモリ内で獲得および格納される。
ステップ810で、ソートされることになるデータ・セットは、図3〜7のマルチプロセッサ・システム上でデータ・セットを区分化するための方法を使用することによって、複数の異なるデータ領域に対応する複数のバケットに区分化される。
ここで、図9に示されるように、複数のバケットはそれぞれ複数のデータ・ストライプを含み、これらのデータ・ストライプは論理的には収束され、物理的には分散され、これらのデータ・ストライプは、インデックス・リストおよびテール・ポインタ・リストからなるメイン・メモリ内のリンク付けリストによって、バケットを形成するためにまとめてリンク付けされる。
次にステップ815で、複数のバケットがメイン・メモリから複数のアクセラレータへと分配される。
分配時に、複数のバケットそれぞれについて、そのバケット内の最新のデータ・ストライプは、メイン・メモリ内のテール・ポインタ・リストの対応するエントリの値に基づいて配置され、前のデータ・ストライプは、インデックス・リストを使用して順番に配置されるため、結果としてこれらのデータ・ストライプはメイン・メモリから順番に取得され、図9の右側に示されるように、そのアクセラレータに分配されたバケットとして、対応するアクセラレータのローカル・ストレージに送達される。
ステップ820で、複数のアクセラレータは、複数のバケットそれぞれでデータのソートを並行して実行することができる。ここで、本発明において複数のアクセラレータによって採用されるデータ・ソート・アルゴリズムには特別な制限はなく、挿入ソート、バブル・ソート、選択ソートなどの、現在知られている任意のデータ・ソート・アルゴリズム、あるいは、今後知られることになるデータ・ソート・アルゴリズムを使用することができる。
ステップ825で、図9に示されるように、複数のアクセラレータは、それぞれ複数の異なるデータ領域の順序に従って、それらのソート済みバケットをメイン・メモリに書き戻す。
上記は、この実施形態のマルチプロセッサ・システム上でデータ・セットをソートするための方法の詳細な説明である。この実施形態では、ソートされることになるデータ・セットは、図3〜7のマルチプロセッサ・システム上でのデータ・セットの区分化のための方法を使用することによって、そのサイズが複数のアクセラレータのローカル・ストレージ容量に適した、複数の異なるデータ領域に対応する複数のバケットに区分化されるため、複数のアクセラレータは、そのデータ・セット上でデータのソートを並行して実行することが可能であり、アクセラレータとメイン・メモリとの間でのデータ・スワップ動作を減少させることが可能であって、結果として、データ・ソートの性能を大幅に向上させることができる。
同じ発明の概念の下で、本発明は、マルチプロセッサ・システム内でデータ・セットを区分化するための装置を提供し、これについて、図面に関して以下で説明する。
図10は、本発明の実施形態に従った、マルチプロセッサ・システム上でデータ・セットを区分化するための装置を示すブロック図である。ここで、マルチプロセッサ・システムは、少なくとも1つのコア・プロセッサと複数のアクセラレータとを有する。具体的に言えば、マルチプロセッサ・システムは、たとえば1つのPPU(コア・プロセッサ)および8つのSPU(アクセラレータ)を備えた上記CBEとすることができる。
図10に示されるように、本実施形態のマルチプロセッサ・システムにおいてデータ・セットを区分化するための装置10は、大まかな区分化ユニット101、パラメータ取得ユニット102、データ領域決定ユニット103、精密な区分化ユニット104、バケット・マージ・ユニット105、および再区分化バケット決定ユニット106を備える。
大まかな区分化ユニット101は、各反復において、区分化されることになるデータ・セットを複数の大規模バケットに大まかに区分化する。
パラメータ取得ユニット102は、各反復において、そのデータ・セット内でのデータ値の配分を示すことができる、当該データ・セットのパラメータを取得する。
好ましい実施形態では、第1の反復においてそのデータ・セット内でのデータ値の配分を示すことができる当該データ・セットのパラメータは、そのデータ・セット内でのデータ値の配分を大まかに示すことができるそのデータ・セットに基づいて推定されるパラメータであり、後続の反復におけるパラメータは、前の反復で取得された正確なパラメータである。
他の実施形態では、第1の反復におけるパラメータは、そのデータ・セット内でのデータ値の配分を正確に示すことができる、そのデータ・セットに基づいて計算されるパラメータでもある。
データ領域決定ユニット103は、各反復において、当該パラメータに基づいて当該データ・セットに関する複数のデータ領域を決定する。
一実施形態では、データ領域決定ユニット103は、当該データ・セットに関する固定ステップを備える複数の連続データ領域を決定する。他の実施形態では、データ領域決定ユニット103は、データの2進表現の複数ビットの重み付け合計に従って、複数のデータ領域を決定する。
精密な区分化ユニット104は、各反復において当該複数のアクセラレータを並行して使用することによって、当該複数の大規模バケットを、複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するものであり、ここで、当該複数のアクセラレータそれぞれは、区分化している大規模バケット内の各要素について、複数のデータ領域の中でその要素が属するデータ領域を計算によって決定する。
この実施形態では、当該複数のアクセラレータそれぞれのローカル・ストレージ内で、当該複数のデータ領域のそれぞれについてストレージ領域がそれぞれ設定される。
加えて、図10に示されるように、精密な区分化ユニット104は、データ領域番号付けユニット1041、コンピューティング・ユニット1042、およびデータ・カテゴリ化ユニット1043をさらに備える。
データ領域番号付けユニット1041は、各反復において複数のデータ領域を番号付けする。
コンピューティング・ユニット1042は、当該複数のアクセラレータのそれぞれが、区分化している大規模バケットから順番に各要素を取得すること、および、計算結果が各反復においてその要素が属しているデータ領域の番号に対応するように、その要素について計算を実行することを、可能にする。
一実施形態では、コンピューティング・ユニット1042は、当該複数のアクセラレータそれぞれが、取得した各要素について、その要素を複数のデータ領域の固定ステップの値で割る計算、および結果を丸める計算を実行できるようにするものであって、結果として、丸めの結果はその要素が属するデータ領域の数に対応することになる。他の実施形態では、コンピューティング・ユニット1042は、当該複数のアクセラレータそれぞれが、取得した各要素について、要素の2進表現の複数のビットの重み付け合計の計算を実行できるようにするものであって、結果としてその重み付け合計の値は、その要素が属するデータ領域の数に対応することになる。
データ・カテゴリ化ユニット1043は、当該複数のアクセラレータそれぞれが、各反復におけるコンピューティング・ユニット1042の計算結果に基づいて、アクセラレータが区分化している大規模バケット内の各要素を、その要素が属しているデータ領域に対応するアクセラレータのローカル・ストレージのストレージ領域に格納できるようにするものである。
この実施形態では、当該複数のアクセラレータそれぞれのローカル・ストレージにおいて、小規模バケットを形成するために、アクセラレータが区分化している大規模バケット内の同じデータ領域に属する要素をそれぞれまとめてリンク付けするためのリンク付けリストが設定され、このリンク付けリストは、インデックス・リストおよびテール・ポインタ・リストからなる。
図10に示されるように、精密な区分化ユニット104は、データ・ストライプ書き戻しユニット1044とリンク付けリスト更新ユニット1045とをさらに備える。
データ・ストライプ書き戻しユニット1044は、当該複数のアクセラレータのうちの1つのストレージ領域が満杯であることが判別された場合、当該アクセラレータに、そのストレージ領域内の要素を、各反復において当該アクセラレータがメイン・メモリ内で区分化している大規模バケットの位置に、データ・ストライプとして書き戻させることが可能である。
リンク付けリスト更新ユニット1045は、当該複数のアクセラレータのうちの1つがメイン・メモリにデータ・ストライプを書き戻した後、当該アクセラレータに、そのローカル・ストレージ内のリンク付けリストを更新させ、そのデータ・ストライプを、各反復において同じデータ領域に属する、アクセラレータが区分化している大規模バケット内の他のデータ・ストライプに、リンク付けさせることができる。
この実施形態では、同じデータ領域に属する当該データ・セット内の要素をまとめてリンク付けするために、リンク付けリストがメイン・メモリ内に設定され、このリンク付けリストはインデックス・リストおよびテール・ポインタ・リストからなる。
図10に示されるように、精密な区分化ユニット104は、当該複数のアクセラレータのうちの1つのローカル・インデックス・リストが満杯であるものと判別した場合、当該アクセラレータに、各反復において、アクセラレータが区分化している大規模バケットに対応するメイン・メモリのインデックス・リスト内の一部分に、そのインデックス・リストのコンテンツを書き込ませることができるようにするための、インデックス書き戻しユニット1046をさらに備える。
図10に示されるように、精密な区分化ユニット104は、各反復において、当該複数のアクセラレータのそれぞれに、それによって区分化される複数の小規模バケットそれぞれについて、区分化中のその小規模バケット内でのデータ値の現在の配分を精密に示すことができるパラメータを、リアルタイムで取得させることができるようにするための、パラメータ取得ユニット1047をさらに備える。パラメータは、データ値の平均/分散、最小値および最大値のうちの、1つまたは複数を備える。
バケット・マージ・ユニット105は、各反復において、当該複数の大規模バケットの中で同じデータ領域に対応する複数の小規模バケットのマージを実行する。
図10に示されるように、バケット・マージ・ユニット105は、インデックス・マージ・ユニット1051とパラメータ・マージ・ユニット1052とをさらに備える。
インデックス・マージ・ユニット1051は、各反復において、メイン・メモリにおける当該インデックス・リストおよび当該テール・ポインタ・リストを修正し、結果として、その中の各エントリが、当初はそれが属する大規模バケット内のそのデータ・ストライプの位置を示すエントリを置き換えるために、データ・セット全体において対応するデータ・ストライプのグローバル位置を示すように変更され、ヘッド・インデックスおよびテール・インデックスは当該複数の大規模バケットの中で互いにリンク付けされる。
パラメータ・マージ・ユニット1052は、各反復において、マージ済みバケットそれぞれについて、精密な区分化ユニット104内のパラメータ取得ユニット1047によって取得された、そのマージ済みバケットに含まれる複数の小規模バケットのパラメータに基づいて、そのマージ済みバケット内でのデータ値の配分を精密に示すことができるパラメータを決定する。
再区分化バケット決定ユニット106は、各反復において、当該複数のアクセラレータのローカル・ストレージの容量よりも大きいマージ済みバケット内のバケットを、区分化されることになる新しいデータ・セットとして決定する。
上記は、本実施形態のマルチプロセッサ・システム内でデータ・セットを区分化するための装置についての詳細な説明である。
次に、本発明のマルチプロセッサ・システム内でデータ・セットを区分化するための装置10を適用する、データ・セットをソートするための装置について説明する。
図11は、本発明の実施形態に従ったマルチプロセッサ・システム内でデータ・セットをソートするための装置を示すブロック図である。ここでマルチプロセッサ・システムは、少なくとも1つのコア・プロセッサと複数のアクセラレータとを有する。具体的に言えば、マルチプロセッサ・システムは、たとえば、1つのPPU(コア・プロセッサ)および8つのSPU(アクセラレータ)を備えた上記CBEとすることができる。
図11に示されるように、本実施形態のマルチプロセッサ・システム内でデータ・セットをソートするための装置11は、データ・セット取得111、図10のマルチプロセッサ・システム内でデータ・セットを区分化するための装置10、データ分配ユニット113、ソート・ユニット114、およびデータ書き戻しユニット115を備える。
データ・セット取得ユニット111は、ソートされることになるデータ・セットを取得し、これをメイン・メモリに格納する。
図10のマルチプロセッサ・システム内でデータ・セットを区分化するための装置10は、複数の異なるデータ領域に従って、ソートされることになる当該データ・セットを複数のバケットに区分化する。
データ分配ユニット113は、当該複数のバケットをメイン・メモリから当該複数のアクセラレータへと分配する。
ソート・ユニット114は、当該複数のアクセラレータが、当該複数のバケット上でデータのソートをそれぞれ並行して実行できるようにするものである。
データ書き戻しユニット115は、当該複数のアクセラレータが、当該複数の異なるデータ領域の順序に従って、それらのソート済みバケットをメイン・メモリ内にそれぞれ書き戻しできるようにするものである。
上記は、本実施形態のマルチプロセッサ・システム内でデータ・セットをソートするための装置についての詳細な説明である。ここで、装置10および11ならびにその構成要素は、専用に設計された回路またはチップを使用して実装するか、あるいは、対応するプログラムを実行するコンピュータ(プロセッサ)によって実装することができる。
以上、本発明のマルチプロセッサ・システム上で、データ・セットを区分化するための方法および装置、ならびにデータ・セットをソートするための方法および装置について、いくつかの例示的実施形態を用いて詳細に説明してきたが、これらの実施形態は網羅的なものではなく、当業者であれば、本発明の趣旨および範囲内で様々な変形および修正が実行可能である。したがって本発明はこれらの実施形態に限定されるものではなく、その範囲は添付の特許請求の範囲によってのみ定義される。
101 大まかな区分化ユニット
102 パラメータ取得ユニット
103 データ領域決定ユニット
104 精密な区分化ユニット
105 バケット・マージ・ユニット
106 再区分化バケット決定ユニット
111 データ・セット取得ユニット
113 データ分配ユニット
114 ソート・ユニット
115 データ書き戻しユニット

Claims (20)

  1. マルチプロセッサ・システム上でデータ・セットを区分化するための方法であって、前記マルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、
    前記複数のアクセラレータを並行して使用することにより、前記データ・セットを異なるデータ領域に対応する複数のバケットに反復的に区分化するステップを含み、前記複数のバケットそれぞれは前記複数のアクセラレータのローカル・ストレージに格納可能であり、
    各反復において、
    前記データ・セットを複数の大規模バケットに大まかに区分化するステップと、
    前記データ・セット内のデータ値の配分を示すことが可能な前記データ・セットのパラメータを取得するステップと、
    前記パラメータに基づいて前記データ・セットに関する複数のデータ領域を決定するステップと、
    前記複数のアクセラレータを並行して使用することにより、前記複数の大規模バケットを、前記複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するステップと、を含み、前記複数のアクセラレータのそれぞれが、区分化している前記大規模バケット内の各要素について、前記複数のデータ領域内で前記要素が属するデータ領域を計算によって決定する、方法。
  2. 前記複数のアクセラレータそれぞれの前記ローカル・ストレージにおいて、前記複数のデータ領域についてそれぞれストレージ領域が設定され、
    前記複数のアクセラレータを並行して使用することにより、前記複数の大規模バケットを、前記複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するステップが、
    前記複数のデータ領域に番号付けするステップと、
    計算結果が、前記要素が属するデータ領域の番号に対応するように、前記アクセラレータが区分化している前記大規模バケット内の各要素について、前記複数のアクセラレータそれぞれによって計算を実行するステップと、
    前記アクセラレータによって、番号が前記計算結果に対応する前記データ領域に対して設定された前記アクセラレータのローカル・ストレージ内の前記ストレージ領域内に、前記要素を格納するステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記複数のアクセラレータそれぞれの前記ローカル・ストレージにおいて、小規模バケットを形成するためにアクセラレータが区分化している大規模バケット内の同じデータ領域に属する要素をまとめてリンク付けするために、リンク付けリストが設定され、
    前記アクセラレータによって、番号が前記計算結果に対応する前記データ領域に対して設定された前記アクセラレータのローカル・ストレージ内の前記ストレージ領域内に、前記要素を格納するステップの後に、
    前記ストレージ領域が満杯であることが判別された場合、前記アクセラレータによって、前記ストレージ領域内の前記要素を、前記メイン・メモリ内で前記アクセラレータが区分化している前記大規模バケットの位置に、データ・ストライプとして書き戻すステップと、
    前記データ・ストライプを、同じデータ領域に属する前記大規模バケット内の他のデータ・ストライプにリンク付けするように、そのローカル・ストレージ内の前記リンク付けリストを、前記アクセラレータによって更新するステップと、
    をさらに含む、請求項に記載の方法。
  4. 前記複数のアクセラレータそれぞれの前記ローカル・ストレージ内の前記リンク付けリストが、インデックス・リストおよびテール・ポインタ・リストからなり、前記インデックス・リストは、前記アクセラレータによって前記メイン・メモリに書き戻された各データ・ストライプについて、前記データ・ストライプと同じ前記データ領域に属するその前のデータ・ストライプの位置を順番に記録し、前記テール・ポインタ・リストは、前記アクセラレータによって前記メイン・メモリに書き戻された前記複数のデータ領域それぞれの最新のデータ・ストライプの位置を示し、
    そのローカル・ストレージ内の前記リンク付けリストを、前記アクセラレータによって更新するステップが、
    前記ストレージ領域から前記メイン・メモリに書き戻された前記データ・ストライプが属する、前記データ領域に対応するそのテール・ポインタ・リスト内のエントリを、前記アクセラレータによって決定するステップと、
    同じデータ領域に属する前記データ・ストライプの前のデータ・ストライプの位置を示すように、前記メイン・メモリに書き戻された前記データ・ストライプに対応する前記アクセラレータの前記インデックス・リスト内のエントリに、前記エントリ内の値を書き込むステップと、
    前記データ・ストライプが属する前記データ領域の現在の最新データ・ストライプの位置を示すように、前記メイン・メモリ内で前記アクセラレータが区分化している前記大規模バケット内の前記データ・ストライプの位置を使用して、前記テール・ポインタ・リスト内の前記エントリの値を更新するステップと、
    をさらに含む、請求項に記載の方法。
  5. 各反復において、
    前記複数の大規模バケットの中で、同じデータ領域に対応する複数の小規模バケットのマージを実行するステップと、
    前記複数のアクセラレータの前記ローカル・ストレージの容量よりも大きい、前記マージ済みバケット内のバケットを、次の反復のための新しいデータ・セットとして決定するステップと、
    をさらに含む、請求項1〜4のいずれか一項に記載の方法。
  6. 第1の反復において、前記データ・セット内のデータ値の前記配分を示すことができる前記データ・セットの前記パラメータが、前記データ・セット内の前記データ値の前記配分を精密に示すことができる前記データ・セットに基づいて計算されたパラメータであるか、または前記データ・セット内のデータ値の前記配分を大まかに示すことができる前記データ・セットに基づいて推定されたパラメータである、請求項に記載の方法。
  7. 各反復において、前記複数のアクセラレータを並行して使用することにより、前記複数の大規模バケットを、前記複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するステップが、
    前記区分化中に、前記小規模バケット内のデータ値の前記現在の配分を精密に示すことができるパラメータを、前記複数の小規模バケットそれぞれについて、リアルタイムで取得するステップをさらに含み、
    前記複数の大規模バケットの中で、同じデータ領域に対応する複数の小規模バケットのマージを実行するステップが、
    マージ済みバケットそれぞれについて、その中に含まれる前記複数の小規模バケットの前記パラメータに基づいて、前記マージ済みバケット内のデータ値の前記配分を精密に示すことができるパラメータを決定するステップをさらに含む、
    請求項に記載の方法。
  8. 前記パラメータに基づいて前記データ・セットに関する複数のデータ領域を決定するステップが、
    前記パラメータに基づいて、前記データ・セットに関する固定ステップを備える複数の連続するデータ領域を決定するステップをさらに含み、
    計算結果が、前記要素が属するデータ領域の番号に対応するように、前記アクセラレータが区分化している前記大規模バケット内の各要素について、前記複数のアクセラレータそれぞれによって計算を実行するステップが、
    前記要素を、前記複数の連続するデータ領域の前記固定ステップで割るステップと、丸めの結果が、前記要素が属するデータ領域の番号に対応するように、前記アクセラレータによって丸めを実行するステップとを、さらに含む、
    請求項2〜4のいずれか一項に記載の方法。
  9. 前記パラメータに基づいて前記データ・セットに関する複数のデータ領域を決定するステップが、
    前記パラメータに基づいて、データの2進表現の複数のビットの重み付け合計に従って、複数のデータ領域を決定するステップをさらに含み、
    計算結果が、前記要素が属するデータ領域の番号に対応するように、前記アクセラレータが区分化している前記大規模バケット内の各要素について、前記複数のアクセラレータそれぞれによって計算を実行するステップが、
    前記重み付け合計の値が、前記要素が属する前記データ領域の番号に対応するように、前記アクセラレータによって前記要素の2進表現の前記複数のビットの重み付け合計を計算するステップをさらに含む、
    請求項2〜4のいずれか一項に記載の方法。
  10. 同じデータ領域に属する前記データ・セット内の要素をまとめてリンク付けするために、前記メイン・メモリ内にリンク付けリストが設定され、前記リンク付けリストはインデックス・リストおよびテール・ポインタ・リストからなり、
    そのローカル・ストレージ内の前記リンク付けリストを前記アクセラレータによって更新するステップの後に、
    前記アクセラレータの前記ローカル・ストレージ内の前記インデックス・リストが満杯の場合、前記インデックス・リストのコンテンツを、前記アクセラレータが区分化している前記大規模バケットに対応する前記メイン・メモリの前記インデックス・リスト内の一部分に書き込むステップを、さらに含む、
    請求項に記載の方法。
  11. 前記複数の大規模バケットの中で、同じデータ領域に対応する複数の小規模バケットのマージを実行するステップが、
    当初はそれが属する前記大規模バケット内の前記データ・ストライプの位置を示すエントリを置き換えるために、前記データ・セット全体において対応するデータ・ストライプのグローバル位置を示すように、その中の各エントリが変更されるように、前記メイン・メモリにおける前記インデックス・リストおよび前記テール・ポインタ・リストを修正するステップをさらに含み、ヘッド・インデックスおよびテール・インデックスは前記複数の大規模バケットの中で互いにリンク付けされる、請求項10に記載の方法。
  12. 前記パラメータが、データ値の平均/分散、最小値および最大値のうちの1つまたは複数を備える、請求項1〜4、10、および11のうちのいずれか一項に記載の方法。
  13. マルチプロセッサ・システム上でデータ・セットをソートするための方法であって、前記マルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、
    請求項1から12のいずれか一項に記載の、マルチプロセッサ・システム上でデータ・セットを区分化するための前記方法を使用することによって、ソートされることになるデータ・セットを、複数の異なるデータ領域に対応する複数のバケットに区分化するステップと、
    前記複数のバケットをメイン・メモリから前記複数のアクセラレータに分配するステップと、
    前記複数のアクセラレータによって、並行して、前記複数のバケットのそれぞれでデータ・ソートを実行するステップと、
    前記複数のアクセラレータにより、前記複数の異なるデータ領域の順序に従って、それらのソートされたバケットをそれぞれ前記メイン・メモリに書き戻すステップと、
    を含む、方法。
  14. マルチプロセッサ・システム内でデータ・セットを区分化するための装置であって、前記マルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、前記装置は、前記複数のアクセラレータを並行して使用することにより、前記データ・セットを異なるデータ領域に対応する複数のバケットに反復的に区分化し、前記複数のバケットそれぞれは前記複数のアクセラレータのローカル・ストレージに格納可能であり、
    各反復において、前記データ・セットを複数の大規模バケットに大まかに区分化するための大まかな区分化ユニットと、
    各反復において、前記データ・セット内のデータ値の配分を示すことが可能な前記データ・セットのパラメータを取得するためのパラメータ取得ユニットと、
    各反復において、前記パラメータに基づいて前記データ・セットに関する複数のデータ領域を決定するためのデータ領域決定ユニットと、
    前記複数のアクセラレータを並行して使用することにより、前記複数の大規模バケットを、前記複数のデータ領域それぞれに対応する複数の小規模バケットに区分化するための精密な区分化ユニットと、を備え、前記複数のアクセラレータのそれぞれが、区分化している前記大規模バケット内の各要素について、前記複数のデータ領域内で前記要素が属するデータ領域を計算によって決定する、装置。
  15. 各反復において、前記複数の大規模バケットの中で、同じデータ領域に対応する複数の小規模バケットのマージを実行するための、バケット・マージ・ユニットと、
    各反復において、前記複数のアクセラレータの前記ローカル・ストレージの容量よりも大きい、前記マージ済みバケット内のバケットを、区分化されることになる新しいデータ・セットとして決定するための、再区分化バケット決定ユニットと、
    をさらに備える、請求項14に記載の装置。
  16. 前記複数のアクセラレータそれぞれの前記ローカル・ストレージにおいて、前記複数のデータ領域についてそれぞれストレージ領域が設定され、
    前記精密な区分化ユニットが、
    各反復において前記複数のデータ領域を番号付けするためのデータ領域番号付けユニットと、
    計算結果が各反復において前記要素が属しているデータ領域の番号に対応するように、前記複数のアクセラレータのそれぞれが、前記アクセラレータが区分化している前記大規模バケット内の各要素について計算を実行できるようにするための、コンピューティング・ユニットと、
    前記複数のアクセラレータそれぞれが、前記計算結果に基づいて、前記アクセラレータが区分化している前記大規模バケット内の各要素を、前記要素が属している前記データ領域に対応する前記アクセラレータのローカル・ストレージ内の前記ストレージ領域に格納できるようにするための、データ・カテゴリ化ユニットと、
    をさらに備える、請求項15に記載の装置。
  17. 前記複数のアクセラレータそれぞれの前記ローカル・ストレージにおいて、小規模バケットを形成するために、前記アクセラレータが区分化している大規模バケット内の同じデータ領域に属する要素をまとめてリンク付けするためのリンク付けリストが設定され、前記リンク付けリストは、インデックス・リストおよびテール・ポインタ・リストからなり、
    前記精密な区分化ユニットが、
    前記アクセラレータが前記ストレージ領域内に要素を書き込んだ後、前記複数のアクセラレータのうちの1つのストレージ領域が満杯である場合、前記アクセラレータに、前記ストレージ領域内の前記要素を、各反復において前記アクセラレータがメイン・メモリ内で区分化している前記大規模バケットの位置に、データ・ストライプとして書き戻させることが可能な、データ・ストライプ書き戻しユニットと、
    前記複数のアクセラレータのうちの1つが前記メイン・メモリにデータ・ストライプを書き戻した後、前記データ・ストライプを、各反復において同じデータ領域に属する、前記アクセラレータが区分化している前記大規模バケット内の他のデータ・ストライプに、リンク付けさせるように、前記アクセラレータに、そのローカル・ストレージ内の前記リンク付けリストを更新させることが可能な、リンク付けリスト更新ユニットと、
    をさらに備える、請求項16に記載の装置。
  18. 同じデータ領域に属する前記データ・セット内の要素をまとめてリンク付けするために、前記メイン・メモリ内にリンク付けリストが設定され、前記リンク付けリストはインデックス・リストおよびテール・ポインタ・リストからなり、
    前記精密な区分化ユニットが、
    前記複数のアクセラレータのうちの1つのインデックス・リストが満杯であるものと判別した場合、前記アクセラレータに、各反復において、前記アクセラレータが区分化している前記大規模バケットに対応する前記メイン・メモリの前記インデックス・リスト内の一部分に、前記インデックス・リストのコンテンツを書き込ませることができるようにするための、インデックス書き戻しユニットをさらに備え、
    前記バケット・マージ・ユニットが、
    当初はそれが属する前記大規模バケット内の前記データ・ストライプの位置を示すエントリを置き換えるために、前記データ・セット全体において対応するデータ・ストライプのグローバル位置を示すように、その中の各エントリが変更されるように、各反復において、前記メイン・メモリにおける前記インデックス・リストおよび前記テール・ポインタ・リストを修正するための、インデックス・マージ・ユニットをさらに備え、ヘッド・インデックスおよびテール・インデックスは前記複数の大規模バケットの中で互いにリンク付けされる、
    請求項17に記載の装置。
  19. 前記精密な区分化ユニットが、
    各反復において、前記複数のアクセラレータのそれぞれに、それによって区分化される前記複数の小規模バケットそれぞれについて、区分化中の前記小規模バケット内でのデータ値の前記現在の配分を精密に示すことができるパラメータを、リアルタイムで取得させることができるようにするための、パラメータ取得ユニットをさらに備え、
    前記バケット・マージ・ユニットが、
    各反復において、マージ済みバケットそれぞれについて、前記パラメータ取得ユニットによって取得された、前記マージ済みバケットに含まれる前記複数の小規模バケットの前記パラメータに基づいて、前記マージ済みバケット内でのデータ値の前記配分を精密に示すことができるパラメータを決定するための、パラメータ・マージ・ユニットをさらに備える、
    請求項15に記載の装置。
  20. マルチプロセッサ・システム内でデータ・セットをソートするための装置であって、前記マルチプロセッサ・システムは少なくとも1つのコア・プロセッサと複数のアクセラレータとを有し、
    ソートされることになるデータ・セットを、複数の異なるデータ領域に対応する複数のバケットに区分化するために、請求項14から19のいずれか一項に記載のマルチプロセッサ・システム内でデータ・セットを区分化するための装置と、
    前記メイン・メモリから前記複数のアクセラレータへ前記複数のバケットを分配するための、データ分配ユニットと、
    前記複数のアクセラレータに、前記複数のバケット上でそれぞれ並行してデータ・ソートを実行させることができるようにするためのソート・ユニットと、
    前記複数のアクセラレータに、前記複数の異なるデータ領域の順序に従って、それらのソート済みバケットを前記メイン・メモリに書き戻させることができるようにするための、データ書き戻しユニットと、
    を備える、装置。
JP2009151796A 2008-07-30 2009-06-26 マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 Expired - Fee Related JP5425541B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN 200810134393 CN101639769B (zh) 2008-07-30 2008-07-30 在多处理器系统上对数据集进行划分及排序的方法和装置
CN200810134393.X 2008-07-30

Publications (2)

Publication Number Publication Date
JP2010033561A JP2010033561A (ja) 2010-02-12
JP5425541B2 true JP5425541B2 (ja) 2014-02-26

Family

ID=41609517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009151796A Expired - Fee Related JP5425541B2 (ja) 2008-07-30 2009-06-26 マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置

Country Status (4)

Country Link
US (1) US8140585B2 (ja)
JP (1) JP5425541B2 (ja)
KR (1) KR20100013257A (ja)
CN (1) CN101639769B (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209305B2 (en) * 2006-04-19 2012-06-26 Microsoft Corporation Incremental update scheme for hyperlink database
US20110190916A1 (en) * 2010-01-29 2011-08-04 Siemens Product Lifecycle Managemet Software Inc. System and Method for Management of Parameters Using Options and Variants in a Product Lifecycle Management System
KR101662769B1 (ko) * 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
US20120150825A1 (en) * 2010-12-13 2012-06-14 International Business Machines Corporation Cleansing a Database System to Improve Data Quality
TW201322022A (zh) * 2011-11-24 2013-06-01 Alibaba Group Holding Ltd 分散式資料流處理方法及其系統
US8898419B2 (en) * 2011-12-22 2014-11-25 Netapp, Inc. System and method for balancing block allocation on data storage devices
WO2013184975A2 (en) * 2012-06-06 2013-12-12 Spiral Genetics Inc. Method and system for sorting data in a cloud-computing environment and other distributed computing environments
CN103514042B (zh) * 2012-06-18 2018-01-09 中国科学院计算机网络信息中心 一种双调归并排序调优方法及装置
JP5962269B2 (ja) * 2012-07-09 2016-08-03 富士通株式会社 評価装置,分散格納システム,評価方法及び評価プログラム
WO2014031114A1 (en) * 2012-08-22 2014-02-27 Empire Technology Development Llc Partitioning sorted data sets
CN103246563B (zh) * 2013-04-24 2016-06-08 湖南大学 一种具有存储感知的多层分块调度方法
CN104123304B (zh) 2013-04-28 2018-05-29 国际商业机器公司 数据驱动的并行排序系统和方法
CN105247663B (zh) * 2013-05-31 2018-03-23 日立化成株式会社 蚀刻组合物
CN104216684B (zh) * 2013-06-04 2017-05-31 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
US9282051B2 (en) * 2013-06-26 2016-03-08 Netronome Systems, Inc. Credit-based resource allocator circuit
RU2667385C2 (ru) * 2014-05-30 2018-09-19 Хуавей Текнолоджиз Ко., Лтд. Параллельная сортировка слиянием
US9286001B2 (en) 2014-06-30 2016-03-15 Microsoft Licensing Technology Llc Effective range partition splitting in scalable storage
CN104360824B (zh) * 2014-11-10 2017-12-12 北京奇虎科技有限公司 一种数据合并的方法和装置
US20160188643A1 (en) * 2014-12-31 2016-06-30 Futurewei Technologies, Inc. Method and apparatus for scalable sorting of a data set
US9740511B2 (en) * 2015-06-04 2017-08-22 Advanced Micro Devices, Inc. Per-block sort for performance enhancement of parallel processors
US9904695B2 (en) 2015-06-25 2018-02-27 International Business Machines Corporation Efficient sorting of large data set with duplicate values
US10296612B2 (en) 2015-09-29 2019-05-21 At&T Mobility Ii Llc Sorting system
US10416959B2 (en) 2015-10-27 2019-09-17 At&T Mobility Ii Llc Analog sorter
US10496370B2 (en) * 2015-12-02 2019-12-03 At&T Intellectual Property I, L.P. Adaptive alphanumeric sorting apparatus
US10261832B2 (en) * 2015-12-02 2019-04-16 At&T Mobility Ii Llc Sorting apparatus
US10261831B2 (en) 2016-08-24 2019-04-16 Qualcomm Incorporated Speculative loop iteration partitioning for heterogeneous execution
CN107329966B (zh) * 2017-05-11 2020-05-19 昆仑智汇数据科技(北京)有限公司 机器数据存储方法及系统
US10691464B1 (en) * 2019-01-18 2020-06-23 quadric.io Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
KR101986129B1 (ko) * 2019-04-17 2019-06-05 영남대학교 산학협력단 데이터 정렬 방법과 장치 및 이를 수행하기 위한 컴퓨팅 장치
CN110618866A (zh) * 2019-09-20 2019-12-27 北京中科寒武纪科技有限公司 数据处理方法及装置以及相关产品

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0522488B1 (en) * 1991-07-10 2002-02-20 Hitachi, Ltd. Method of sorting on distributed database system and method of accessing thereto
JP3395208B2 (ja) * 1991-07-10 2003-04-07 株式会社日立製作所 分散データベースのソート方法およびアクセス方法
JPH10228368A (ja) * 1997-02-14 1998-08-25 Nec Corp ソーティングアクセラレータ
US5987468A (en) * 1997-12-12 1999-11-16 Hitachi America Ltd. Structure and method for efficient parallel high-dimensional similarity join
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
US6477523B1 (en) * 1999-12-03 2002-11-05 Ncr Corporation Selectivity prediction with compressed histograms in a parallel processing database system
US6505188B1 (en) * 2000-06-15 2003-01-07 Ncr Corporation Virtual join index for relational databases
US6757675B2 (en) * 2000-07-24 2004-06-29 The Regents Of The University Of California Method and apparatus for indexing document content and content comparison with World Wide Web search service
US6978458B1 (en) * 2000-11-17 2005-12-20 Oracle International Corporation Distributing data items to corresponding buckets for use in parallel operations
US7139772B2 (en) * 2003-08-01 2006-11-21 Oracle International Corporation Ownership reassignment in a shared-nothing database system

Also Published As

Publication number Publication date
US8140585B2 (en) 2012-03-20
JP2010033561A (ja) 2010-02-12
CN101639769A (zh) 2010-02-03
CN101639769B (zh) 2013-03-06
US20100031003A1 (en) 2010-02-04
KR20100013257A (ko) 2010-02-09

Similar Documents

Publication Publication Date Title
JP5425541B2 (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
JP6605573B2 (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
Bender et al. Cache-adaptive algorithms
CN105550225B (zh) 索引构建方法、查询方法及装置
KR102184280B1 (ko) 동적 파티셔닝을 이용한 데이터 프로세싱
CN105468439A (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
CN104952032A (zh) 图的处理方法、装置以及栅格化表示及存储方法
Hong et al. Multigraph: Efficient graph processing on gpus
CN104778077A (zh) 基于随机和连续磁盘访问的高速核外图处理方法及系统
Chatterjee et al. Data structures and algorithms for counting problems on graphs using gpu
CN106462386B (zh) 排序分布式输入数据的排序方法和处理系统
CN108874532B (zh) 内存分配方法及设备
Kipf et al. Adaptive geospatial joins for modern hardware
CN106033442B (zh) 一种基于共享内存体系结构的并行广度优先搜索方法
CN108108242B (zh) 基于大数据的存储层智能分发控制方法
Bellas et al. Exact set similarity joins for large datasets in the GPGPU paradigm
CN104050189B (zh) 页面共享处理方法及装置
Chen et al. An efficient sorting algorithm with CUDA
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
Che et al. Accelerating all-edge common neighbor counting on three processors
Kang et al. A comparative analysis of iterative MapReduce systems
KR101795848B1 (ko) 디스크 기반의 연결요소 그래프 질의 처리방법
Sanaullah et al. GPU-accelerated charge mapping
Ikeda et al. Optimizing Forward Computation in Adjoint Method via Multi-level Blocking
Wang et al. micMR: An efficient MapReduce framework for CPU–MIC heterogeneous architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131105

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131127

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees