JP6318303B2 - 並列マージソート - Google Patents

並列マージソート Download PDF

Info

Publication number
JP6318303B2
JP6318303B2 JP2017514787A JP2017514787A JP6318303B2 JP 6318303 B2 JP6318303 B2 JP 6318303B2 JP 2017514787 A JP2017514787 A JP 2017514787A JP 2017514787 A JP2017514787 A JP 2017514787A JP 6318303 B2 JP6318303 B2 JP 6318303B2
Authority
JP
Japan
Prior art keywords
range
sorted
processes
sequence
processing
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.)
Active
Application number
JP2017514787A
Other languages
English (en)
Other versions
JP2017517832A (ja
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017517832A publication Critical patent/JP2017517832A/ja
Application granted granted Critical
Publication of JP6318303B2 publication Critical patent/JP6318303B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/32Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、複数の相互接続されている処理ノードを含む処理システム及びソート方法に関し、複数の相互接続されている処理ノードは、それらの複数の処理ノードにわたって分散されている入力データをソートする。本開示は、さらに、非対称メモリによって特徴づけられるコンピュータ・ハードウェア及びそのような非対称メモリのための並列ソート方法に関する。
プロセッサ101、103、及びコア109、119等の各実行ユニットのための非対称メモリによって特徴づけられる現代のコンピュータ・ハードウェア100については、図1に示されるように、すべてのメモリ位置は、(ノード0 101に関しては)ローカル・メモリ107及びリモート・メモリ117に分割される。図1に図示されているように、ローカル・メモリ107に対するアクセス108は、物理的なアクセス・パス102の長さの差により、リモート・メモリ117に対するアクセスと比較してより速い。非対称メモリに起因する問題は、メモリの非対称性にとらわれない計算方法においては、ローカル・メモリ及びリモート・メモリの最適化された使用により達成されることが可能な実行コストと比較して、実行コストがより大きくなるということである。
ソートは、コンピューティングの多くの方法において使用される基本的な動作のうちの1つであると考えられている。例えば、データベース・システムにおいて並列クエリ方法により生成される複数のクエリ結果をソートする間に、非対称メモリにおいてソートすることが必要となるのは明らかである。SQL(Structured Query Language, 構造化照会言語)の”ORDER BY”句及び”GROUP BY”句は、そのようなソートを必要とする。ソート・マージ結合等のいくつかの結合方法は、ソートを必要とする。システムの複数のコアを利用して、ソートを並列化し、パフォーマンスを改善する多くのアルゴリズムが存在する。しかしながら、これらのアルゴリズムのいずれもが、メモリ・アーキテクチャの非対称性を考慮に入れていない。現状では、複数のソート・アルゴリズムにおいて、データはランダムに分割され、複数の異なるスレッドが、上記のランダムに分割されたデータに影響を与えるのを可能にされている。このことは、リモート・アクセス及びソケット相互接続の過剰な使用につながり、したがって、システム・スループットを大幅に制限する可能性がある。
現代のプロセッサ200は、図2に示されているように、マルチ・コア201、202、203、204、主メモリ205、及び複数のレベルのメモリ・キャッシュ206、207、208を使用する。例えば、US 6,427,148 B1、US 5,852,826 A、及びUS 7,536,432 B2に示されている現状のソート・アルゴリズムは、データの局所性及びキャッシュ・コンシャスネスの問題を取り扱っていない。そのことは、頻繁なキャッシュ・ミス及び不十分な実行につながる。プロセッサは、SIMD(single-instruction, multiple-data, 単一命令複数データ)ハードウェアを装備しており、SIMDハードウェアは、いわゆるベクトル化処理を実行すること、すなわち、ごく近接する一連のデータに同一の演算を実行することを可能とする。現状のソート方法は、SIMD用には最適化されていない。
本発明の目的は、改良されたソート技術を提供することである。
上記の目的は、独立請求項の特徴によって達成される。さらなる実装の形態は、従属請求項、発明の詳細な説明及び図面から明らかである。
以下で説明される発明は、非対称メモリ・アクセスの待ち時間の差を利用して、高度にメモリ・アクセスが集中するソート・アルゴリズムにおいてメモリ・アクセスのコストを有意に低減することにより、改良されたソート・アルゴリズムを提供することが可能であるという知見に基づいている。
本発明を詳細に説明するために、以下の用語、略語、及び表記法が用いられる:
DBMS: データベース管理システム
SQL: 構造化照会言語
CPU: 中央処理ユニット
SIMD: 単一命令複数データ
NUMA: 非均一メモリ・アクセス
データベース管理システム(database management system, DBMS)は、特に、ユーザ、他のアプリケーション、及びデータベース自体と相互作用をして、データを保存し及び分析するアプリケーション用に設計されている。汎用データベース管理システム(database management system, DBMS)は、複数のデータベースの定義、構築、クエリ実行、更新、及び管理を可能にするように設計されるソフトウェア・システムである。複数の異なるDBMSは、単一のアプリケーションが1つよりも多くのデータベースと連携するのを可能にするSQL及びオープン・データベース・コネクティビティ(ODBC又はJavaデータベース・コネクティビティ(JDBC等の規格を使用して相互運用することが可能である。
SQL(Structured Query Language, 構造化照会言語)は、関係データベース管理システム(relational database management system, RDBMS)の保持されているデータを管理するように設計されている専用プログラミング言語である。
本来的に関係代数及びタプル関係演算に基づいて、SQLは、データ定義言語及びデータ操作言語からなる。SQLの範囲は、データ挿入、クエリ、更新及び削除、スキーマの生成及び修正、並びにデータ・アクセス制御を含む。
単一命令複数データ(single-instruction, multiple-data, SIMD)は、コンピュータ・アーキテクチャの分類における並列のコンピュータのクラスである。SIMDは、複数の処理要素を使用するコンピュータを記述し、それらの複数の処理要素は、複数のデータ・ポイント上で同一の演算を同時に実行する。したがって、そのようなマシンは、例えば、アレイ・プロセッサ又はグラフィックス・プロセッシング・ユニット(GPUといったデータ・レベル並列処理を利用する。
第1の態様によれば、本発明は、相互接続される複数の処理ノードの複数のローカル・メモリ・パーティションにわたって分散された入力データをソートするソート方法に関し、上記のソート方法は、前記複数の処理ノードの上に第1の複数のプロセスを展開することにより、前記分散された入力データを処理ノードごとに局所的にソートして、前記複数の処理ノードの前記複数のローカル・メモリ・パーティションに複数のソートされたリストを生成するステップと、前記複数の処理ノードの前記複数のローカル・メモリ・パーティションにレンジ・ブロックのシーケンスを生成するステップであって、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される、レンジ・ブロックのシーケンスを生成するステップと、前記複数の処理ノードの上に第2の複数のプロセスを展開することにより、前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーするステップであって、各レンジ・ブロックは、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を受信する、前記レンジ・ブロックの前記シーケンスにコピーするステップと、前記第2の複数のプロセスを使用することにより、前記レンジ・ブロックの前記複数の要素を処理ノードごとに局所的にソートして、前記レンジ・ブロックに複数のソートされた要素を生成するステップと、それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロックの前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得するステップとを含む。
上記のソート・アルゴリズムの効率は、局所的なデータ・アクセスを大幅に使用し、それによってリモート・アクセスのペナルティを回避することによって改善される。複数の処理ノードの複数のローカル・メモリ・パーティションの上にレンジ・ブロックのシーケンスを生成すると、ランダム・アクセスではなく、データへの順次的なアクセスを使用することが可能となり、アクセスの局所性及びキャッシュの効率を改善する。特に、リモート・アクセスの場合には、順次的なアクセスを使用すると、リモート・アクセスのペナルティを相殺するプリフェッチングを利用することが可能となる。計算の際に近接するデータ項目のベクトルを使用すると、SIDMを利用することが可能となる。
第1の態様に従ったソート方法の第1の可能な実装形態において、前記相互接続される複数の処理ノードの前記複数のローカル・メモリ・パーティションは、非対称メモリとして構成される。
ランダム・アクセスの代わりにデータへの順次的なアクセスを使用すると、非対称メモリ上でのアクセスの局所性及びキャッシュの効率を改善する。
第1の態様に従った、したがって、又は第1の態様の第1の実装形態に従ったソート方法の第2の可能な実装形態において、第1の複数のプロセスの数は、複数のローカル・メモリ・パーティションの数と等しい。
第1の複数のプロセスの数が複数のローカル・メモリ・パーティションの数と等しい場合には、各ローカル・メモリ・パーティションは、それぞれの第1のプロセスによって並列に処理されることが可能となり、それによって処理速度を増加させる。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第3の可能な実装形態において、前記第1の複数のプロセスは、複数の互いに素なソートされたリストを生成する。
第1の複数のプロセスが複数の互いに素なソートされたリストを生成する場合には、他方のリストにアクセスすることなく、一方のリストにおける局所的なソートを実行することができる。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第4の可能な実装形態において、分散された入力データを処理ノードごとに局所的にソートすることは、シリアル・ソート手順及び並列ソート手順の一方に基づく。
ソートするステップでの局所的なメモリ・アクセスのみの使用は、ソケット間通信のオーバーヘッドを減少させ、したがって、計算の複雑さを減少させ、そして、ソート方法のパフォーマンスを改善する。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第5の可能な実装形態において、第2の複数のプロセスの数は、レンジ・ブロックの数と等しい。
第2の複数の処理の数がレンジ・ブロックの数と等しい場合には、各レンジ・ブロックは、それぞれの第2のプロセスによって並列に処理されることが可能となり、それによって処理速度を増加させる。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第6の可能な実装形態において、各レンジ・ブロックは異なる範囲を有する。
各レンジ・ブロックが異なる範囲を有する場合には、各メモリ・パーティションは、異なるデータについて動作することが可能であり、それによって処理速度を増加させる並列処理を可能とする。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第7の可能な実装形態において、各レンジ・ブロックは、複数のソートされたリスト、特に、第1の複数のプロセスの数に対応する複数のソートされたリストの数を受信する。
複数の異なる処理ノードからの同様の範囲内のデータを一方の処理ノードに集中させることが可能であり、方法の計算上の効率を改善する。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第8の実装形態において、一方の処理ノードの上で実行されている前記第2の複数のプロセスのうちの1つの第2のプロセスは、前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーする際に、前記一方の処理ノードのローカル・メモリから及び他方の処理ノードのローカル・メモリから順次的に読みだす。
前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーするステップでの順次的なリモート・メモリ・アクセスの使用は、リモート・アクセスのペナルティを減少させる。
第1の態様の第8の実装形態に従ったソート方法の第9の可能な実装形態において、前記一方の処理ノードの上で実行されている前記1つの第2のプロセスは、前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーする際に、前記一方の処理ノードのローカル・メモリにのみ書き込む。
このようにして、前記1つの第2のプロセスは、メモリに書き込む際にソケット間接続応答を待つ必要はない。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第10の可能な実装形態において、レンジ・ブロックの前記シーケンスからの前記複数のソートされた要素の順次的な読み出しは、ハードウェア・プリフェッチングを利用することにより実行される。
ハードウェア・プリフェッチングを利用すると、処理速度が増加する。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第11の可能な実装形態において、前記第2の複数のプロセスは、ベクトル化処理、特に、単一命令複数データ・ハードウェア・ブロックの上で実行されているベクトル化処理を使用し、前記第2の複数のプロセスは、前記複数のソートされたリストの値と前記レンジ・ブロックの範囲とを比較し、前記複数のソートされたリストをレンジ・ブロックの前記シーケンスにコピーする。
前記複数の要素を処理ノードごとに局所的にソートして前記レンジ・ブロックに複数のソートされた要素を生成するステップの間でのSIMD等のベクトル化処理の使用は、ソートのパフォーマンスを改善する。コピーする間のSIMD等のベクトル化処理の使用は、全メモリ帯域幅を利用することを可能にする。
第1の態様に従った、したがって、又は第1の態様の先行する実装形態のいずれかに従ったソート方法の第12の可能な実装形態において、前記複数の処理ノードは、複数のソケット間接続によって相互接続され、一方の処理ノードのローカル・メモリは、別の処理ノードに対するリモート・メモリになっている。
上記の方法は、標準的なハードウェア・アーキテクチャで実装されてもよく、そのハードウェア・アーキテクチャは非対称メモリを使用してもよく、非対称メモリは複数のソケット間接続によって相互接続されていてもよい。上記の方法は、マルチ・コア・プロセッサ・プラットフォーム及び多数コア・プロセッサ・プラットフォームに適用されてもよい。
第2の態様によれば、本発明は、処理システムに関し、その処理システムは、相互接続される複数の処理ノードを含み、前記複数の処理ノードの各々は、ローカル・メモリ及び処理ユニットを含み、入力データが、前記複数の処理ノードの複数の前記ローカル・メモリにわたって分散され、前記処理ユニットは、分散された前記入力データを処理ノードごとに局所的にソートして、前記複数の処理ノードの複数のローカル・メモリに複数のソートされたリストを生成し、前記複数の処理ノードの前記複数のローカル・メモリにレンジ・ブロックのシーケンスを生成し、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成され、前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーし、各レンジ・ブロックは、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を受信し、前記レンジ・ブロックの前記複数の要素を処理ノードごとに局所的にソートして、前記レンジ・ブロックに複数のソートされた要素を生成し、それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロックの前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得する、ように構成される。
分散された入力データをソートする上記の新たな処理システムは、ランダムに分散された値の大規模なセットをソートすることが可能であり、それによってハードウェア・リソースの利用効率を最大化する。
第3の態様によれば、本発明は、読み取り可能な記憶媒体を含むコンピュータ・プログラム製品に関し、読み取り可能な記憶媒体は、コンピュータによる使用のためにプログラム・コードを格納し、前記プログラム・コードは、相互接続される複数の処理ノードの複数のローカル・メモリ・パーティションにわたって分散された入力データをソートし、前記プログラム・コードは、前記複数の処理ノードの上で実行されている第1の複数のプロセスを使用することにより、前記分散された入力データを処理ノードごとに局所的にソートして、前記複数の処理ノードの前記複数のローカル・メモリ・パーティションに複数のソートされたリストを生成する命令と、前記複数の処理ノードの前記複数のローカル・メモリ・パーティションにレンジ・ブロックのシーケンスを生成する命令であって、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される、レンジ・ブロックのシーケンスを生成する命令と、第2の複数のプロセスを使用することにより、前記複数のソートされたリストを前記レンジ・ブロックの前記シーケンスにコピーする命令であって、各レンジ・ブロックは、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を受信する、前記レンジ・ブロックの前記シーケンスにコピーする命令と、前記第2の複数のプロセスを使用することにより、前記レンジ・ブロックの前記複数の要素を処理ノードごとに局所的にソートして、前記レンジ・ブロックに複数のソートされた要素を生成する命令と、それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロックの前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得する命令とを含む。
上記のコンピュータ・プログラムは、柔軟に設計することが可能であり、それによって要件の更新の達成が容易になる。上記のコンピュータ・プログラム製品は、マルチ・コア処理システム及び多数コア処理システムで実行されてもよい。
したがって、本発明の複数の態様は、以下でさらに説明されるように、改良されたソート技術を提供する。
本発明のさらなる実施形態は、以下の図面を参照して説明される。
ある1つの実装形態に従った現代のコンピュータ・ハードウェア100を図示する概略図である。 ある1つの実装形態に従った現代のプロセッサ200を図示する概略図である。 ある1つの実装形態に従った一例としてのソート方法300を示す概略図である。 ある1つの実装形態に従い図3に示されるソート方法300の一例としての区分化動作301を図示する概略図である。 ある1つの実装形態に従い図3に図示されるソート方法300の一例としての局所的な区分ソート動作302を示す概略図である。 ある1つの実装形態に従い図3に図示されるソート方法300の抽出及びソート動作303の中の一例としてのスレッド展開動作303aを図示する概略図である。 ある1つの実装形態に従い図3に図示されるソート方法300の一例としての抽出し及びソートする動作303を図示する概略図である。 ある1つの実装形態に従い図3に図示されるソート方法300の一例としての局所的な範囲ソート動作304を図示する概略図である。 ある1つの実装形態に従い図3に図示されるソート方法300の一例としてのマージ動作305を図示する概略図である。 区分化されたデータにわたる並列クエリ処理を使用して、データベース管理システムにおいてクエリ結果をソートする一例としての方法1000を図示する概略図である。 ある1つの実装形態に従った一例としてのソート方法1100を図示する概略図である。
以下の詳細な説明において、複数の添付の図面が参照され、それらの複数の添付の図面は、以下の詳細な説明の一部を構成し、以下の詳細な説明では、実例として複数の特定の態様が示され、それらの複数の特定の態様の中の開示を実用化することができる。複数の他の態様を利用することが可能であり、構造的な変更及び論理的な変更が、本開示の範囲から逸脱することなく為され得るということを理解すべきである。したがって、以下の詳細な説明は、限定的な意義に解釈されるべきではなく、本開示の範囲は、添付の特許請求の範囲によって規定される。
本明細書で説明されるデバイス及び方法は、分散された入力データをソートすること、ローカル・メモリの区分化、及び相互接続される複数の処理ノードに基づいていてもよい。説明される方法と関連して記載される解説は、その方法を実行するように構成される対応するデバイス又は対応するシステムにも当てはまり、逆もまた同様であるということを理解すべきである。例えば、ある特定の方法ステップが説明される場合に、その説明される方法ステップを実行するユニットが明示的には記載されておらず、或いは図面に図示されていないときであっても、対応するデバイスは、そのようなユニットを含んでいてもよい。さらに、本明細書で説明されるさまざまな一例としての態様に関する特徴は、特に示される場合を除き、互いに組み合わせられてもよいということを理解すべきである。
本明細書で説明される方法及びデバイスは、非対称メモリ及び、特に、SQLを使用するDBMS等のデータベース管理システムを含むハードウェア・アーキテクチャの中で実装されてもよい。説明されるデバイス及びシステムは、集積回路及び/又は受動回路を含んでもよく、さまざまな技術に従って製造されてもよい。例えば、回路は、論理集積回路、アナログ集積回路、混合信号集積回路、光回路、メモリ回路、及び/又は受動集積回路として設計されてもよい。
図3は、ある1つの実装形態に従った図1及び図2を参照して上記で説明されたハードウェア・システム100及び200等の相互接続されている複数の処理ノード101及び103の複数のローカル・メモリ・パーティション107及び117にわたって分散される入力データをソートする一例としてのソート方法300を図示する概略図を示している。
ソート方法300は、多数のメモリ・パーティションを調達する非対称メモリにわたって分散された入力データを区分化するステップ301を含んでいてもよい。ソート方法300は、例えば、いずれかの既知の局所的なソート方法を使用することにより、上記の複数のメモリ・パーティションを局所的にソートするステップ302を含んでいてもよい。ソート動作302は、各メモリ・パーティションについて実行されてもよい。ソート方法300は、局所的なソート・ステップ302の結果を抽出し、複数の範囲、すなわち、特定の範囲に入るデータを格納するように構成されている複数のメモリ区分にコピーする、抽出し及びコピーするステップ303を含んでいてもよい。上記の抽出し及びコピーする動作303は、各メモリ・パーティションについて実行されてもよい。ソート方法300は、例えば、いずれかの既知の局所的なソート方法を使用することにより、各範囲を局所的にソートするステップ304を含んでいてもよい。ソートする動作304は、各範囲について実行されてもよい。ソート方法300は、複数のソートされた範囲をマージするステップ305を含んでいてもよい。複数の異なるソートするステップ又はソートする動作は、図4乃至9を参照して以下でさらに説明される。
本開示において説明される方法300は、5ステップ以内に、ランダムに分散された値の大規模なセットをソートすることが可能であり、したがって、ハードウェア・リソースの利用効率を最大化することが可能であってもよい。上記の方法300は、非対称メモリ・アクセスの待ち時間の差を利用して、ソート等の高度にメモリ・アクセスが集中するアルゴリズムにおいてメモリ・アクセスのコストを有意に低減する。
図4は、ある1つの実装形態に従い図3に図示されるソート方法300の一例としての区分化動作301を図示する概略図を示している。
入力データは、非対称メモリ400にわたって区分化される。入力データは、非対称メモリ400の複数のメモリ・バンク401、402、403、404にわたって分散される。並列クエリ処理方法等の最も並列的なデータ処理方法は区分化されたデータを生成するため、上記の区分化するステップ301は任意に選択されるものであってもよい。
図5は、ある1つの実装形態に従い図3に図示されるソート方法300の一例としての局所的なパーティション・ソート動作302を図示する概略図を示している。
複数のスレッドが展開され、データを局所的にソートする。第1のメモリ・バンク401上のデータ“1,5,3,2,6,4,7”が、第1のメモリ・バンク401上で局所的にソートされ、ソートされたデータ“1,2,3,4,5,6,7”を提供する。第2のメモリ・バンク402上のデータ“5,3,2,4,7,6,1”が、第2のメモリ・バンク402上で局所的にソートされ、ソートされたデータ“1,2,3,4,5,6,7”を提供する。第3のメモリ・バンク403上のデータ“1,2,3,4,5,6,7”が、第3のメモリ・バンク403上で局所的にソートされ、ソートされたデータ“1,2,3,4,5,6,7”を提供する。第4のメモリ・バンク404上のデータ“7,6,5,4,3,2,1”が、第4のメモリ・バンク404上で局所的にソートされ、ソートされたデータ“1,2,3,4,5,6,7”を提供する。
スレッドの数は、パーティションの数と等しくてもよい(4つのパーティション401、402、403、404が図5に示されているが、別の数であってもよい)。すべてのスレッドは、複数の互いに素なソートされたリストを生成してもよく、これらの複数の互いに素なソートされたリストは、以下で説明されるようにマージされてもよく、それにより最終のソートされた出力を得る。ソートする動作302のためにシリアル又は並列のいずれかのソート方法を使用してもよい。ローカル・アクセスが十分に利用される。
図6は、ある実装形態に従い図3に図示されるソート方法300の抽出し及びソートする動作303の中の一例としてのスレッド展開動作303aを図示する概略図を示している。
データ・サンプルに基づいて、範囲のセット600が生成され、範囲のセット600は、複数の異なるスレッドの間でソートされたデータを分散するのに使用されてもよい。上記の範囲は、入力データのサブセットであってもよく、入力データは、図6の例では、例えば、1から7まで及ぶ与えられた値の範囲の複数の値を含んでもよい。上記の範囲は、(概ね)同じサイズとなるように計算されてもよい。上記のことは、ソートする段階で実行されるサンプリングを使用して得られる値の分布ヒストグラムを使用して達成されてもよい。上記の範囲は、すべてのパーティション401、402、403、404からのデータに基づいて計算されてもよい。図6においては、4つの範囲が生成され、第1の範囲はデータ値1及び2を含み、第2の範囲はデータ値3及び4を含み、第3の範囲はデータ値5及び6を含み、第4の範囲はデータ値7を含む。
スレッドの数は、例えば、図6によれば4であるが、いずれかの他の数であってもよく、範囲の数と同じであってもよい。第1のスレッド“スレッド1”は第1の範囲と関連しており、第2のスレッド“スレッド2”は第2の範囲と関連しており、第3のスレッド“スレッド3”は第3の範囲と関連しており、第4のスレッド“スレッド4”は第4の範囲と関連している。
範囲の数に基づいて、メモリの同じ数のレンジ・ブロックが複数の異なるメモリ・バンクの中に生成されてもよい。各々のメモリ・バンクの中のレンジ・ブロックの数は、利用可能であるすべてのコアを利用するために同じになっていてもよい。
図7は、ある実装形態に従い図3に図示されるソート方法300の一例としての抽出し及びコピーする動作303を図示する概略図を示している。
値に基づいて、複数のソートされたリスト401、402、403、404からのデータを新たに生成されたレンジ・ブロック703、704、713、714にコピーするために、複数のスレッドが展開されてもよい。結果として、各々のレンジ・ブロック703、704、713、714は、1つの与えられた値の範囲の中に複数のソートされたリストを有することとなる。図7の例では、メモリ・バンク0(701)の中の第1のレンジ・ブロック703は、データ値1及び2を含んでおり、メモリ・バンク0(701)の中の第2のレンジ・ブロック704は、データ値3及び4を含んでおり、メモリ・バンク1(702)の中の第3のレンジ・ブロック713は、データ値5及び6を含んでおり、メモリ・バンク1(702)の中の第4のレンジ・ブロック714は、データ値7を含んでいる。スレッドは、ローカル・メモリに対してのみ書き込んでもよく、ローカル・メモリ及びリモート・メモリの双方から順次的に読み出してもよい。値の比較を実行する間に、スレッドは、隣接するシリアル・データを使用してもよい。SIMDの利点を利用することが可能である。
図8は、ある実装形態に従い図3に図示されるソート方法300の一例としての局所的な範囲ソート動作304を図示する概略図を示している。
(レンジ・ブロックごとに1つの)同じスレッドは、図6及び図7を参照して上記で説明されたように利用されてもよく、コピーされたデータのインプレースのソートを実行してもよい。メモリ・バンク0の中の第1のレンジ・ブロック703は、ノード0(701)に実装されてもよく、例えば、スレッド1を使用することにより、"12121212"から"11112222"にデータをソートしてもよい。メモリ・バンク0の中の第2のレンジ・ブロック704は、ノード0(701)に実装されてもよく、例えば、スレッド2を使用することにより、"34343434"から"33334444"にデータをソートしてもよい。メモリ・バンク1の中の第3のレンジ・ブロック713は、ノード1(702)に実装されてもよく、例えば、スレッド3を使用することにより、"56565656"から"55556666"にデータをソートしてもよい。メモリ・バンク1の中の第4のレンジ・ブロック714は、ノード1(702)に実装されてもよく、例えば、スレッド4を使用することにより、"7777"から"7777"にデータをソートしてもよい。
結果として、各々のレンジ・ブロック703、704、713、714は、特定の範囲の中にソートされたデータを有してもよい。局所的なソートは、例えば、シリアル又は並列のいずれかの既知のソート方法を使用して実行されてもよい。データ・アクセスの局所性を十分に利用することが可能である。データの編成は、比較及びコピーのためのSIMDの利用に役立ち得る。
図9は、ある実装形態に従い図3に図示されるソート方法300の一例としてのマージ動作305を図示する概略図を示している。
ソートされた結果を得るために、レンジ・ブロック703、704、713、714のシーケンスにわたって反復が実行されてもよく、データが読みだされてもよい。データは、ローカル位置701及びリモート位置702の双方から順次的に読み出されてもよく、したがって、ハードウェア・プリフェッチングを利用することによりソケットからソケットへの通信の影響を減少させる。
図10は、区分化されたデータにわたる並列クエリ処理を使用して、データベース管理システムにおいてクエリ結果をソートする一例としての方法1000を図示する概略図を示している。
図10は、区分化されたデータにわたる並列クエリ処理を伴うデータベース管理システムにおいて、複数のクエリ結果をソートする1つの特定の方法を記載している。一例としてのクエリは、“SELECT A,…FROM table WHERE…ORDER BY A”の形式になっているSQL文によって表現されてもよい。方法1000は、ORDER BY句の実行に適用されてもよい。クエリ・プロセッサは、各スレッドのローカル・メモリ(パーティション)に書き込まれる複数のソートされていない結果を、並列ワーカー・スレッドに生成してもよい。上記のことは、図10のステップ1で図示されている。
ステップ2において、各々のソートされていないパーティションが、専用スレッドにより局所的にソートされてもよい。ステップ3において、(a)概ね等量のデータを含むように複数のデータ値範囲を計算し、(b)ワーカー・スレッドに対してローカルとなっているメモリにデータ値範囲の複数のパーティションを割り当て、(c)ステップ2で生成された複数のソートされたパーティションを順次的にスキャンし、関連するデータを抽出する各々のワーカー・スレッドによって、データ値範囲に整合するデータを上記のデータ値範囲の複数のパーティションに追加する、といった方法で、データを区分化してもよい。ステップ4において、各々の範囲が局所的にソートされてもよく、結果としてのセット(結果としてのパーティション)の正しくソートされた部分を生成してもよい。ステップ5において、複数の結果としてのパーティションを正しい順序でリンクさせ、その順序で順次的に複数の結果としてのパーティションを読み出すことにより、結果としてのセットの複数の部分をマージしてもよい。
一例では、方法1000は、JOIN句を有するSQLクエリ又は非明示的な結合として表現されるSQLクエリを実行する過程で、データベース管理システムにおいてソートを実行するのに適用されてもよい。そのような場合には、上記のステップ2乃至4は、マージ-結合方法との関連で複数の入力テーブルをソートするのに適用されてもよい。
別の例では、方法1000は、GROUP BY句を有するSQLクエリを実行する過程で、データベース管理システムにおいてソートを実行するのに適用されてもよい。そのような場合には、上記のステップ2乃至4は、集約計算結果(グループ)をソートするのに適用されてもよい。
図11は、一例としてのソート方法1100を図示する概略図を示しており、ソート方法1100は、ある実装形態に従った相互接続される複数の処理ノードの複数のローカル・メモリ・パーティションにわたって分散された入力データをソートする。
方法1100は、複数の処理ノードの上に第1の複数のプロセスを展開することにより、分散された入力データを処理ノードごとに局所的にソートして、複数の処理ノードの複数のローカル・メモリ・パーティションに複数のソートされたリストを生成するステップ1101を含んでもよい。方法1100は、複数の処理ノードの複数のローカル・メモリ・パーティションにレンジ・ブロックのシーケンスを生成するステップ1102を含んでもよく、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される。方法1100は、複数の処理ノードの上に第2の複数のプロセスを展開することにより、複数のソートされたリストをレンジ・ブロックのシーケンスにコピーするステップ1103を含んでもよく、各レンジ・ブロックは、値がそのレンジ・ブロックの範囲に入る複数のソートされたリストの複数の要素を受信する。方法1100は、第2の複数のプロセスを使用することにより、レンジ・ブロックの複数の要素を処理ノードごとに局所的にソートして、レンジ・ブロックに複数のソートされた要素を生成するステップ1104を含んでもよい。方法1100は、それらのレンジ・ブロックの範囲を参照してレンジ・ブロックのシーケンスから複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得するステップ1105を含んでもよい。
複数のソートされたリストを生成するステップ1101は、図3を参照して上記で説明された複数のメモリ・パーティションを局所的にソートするステップ302に対応していてもよい。レンジ・ブロックのシーケンスを生成するステップ1102及びコピーするステップ1103は、図3を参照して上記で説明された抽出し及びソートする動作303に対応していてもよい。複数のソートされた要素を生成するステップ1104は、図3を参照して上記で説明された各範囲を局所的にソートするステップ304に対応していてもよい。ソートされた入力データを取得するステップ1105は、図3を参照して上記で説明された複数のソートされた範囲をマージするステップ305に対応していてもよい。
一例において、相互接続される複数の処理ノードの複数のローカル・メモリ・パーティションは、非対称メモリとして構成されてもよい。一例において、第1の複数のプロセスの数は、複数のローカル・メモリ・パーティションの数と等しくなっていてもよい。一例において、第1の複数のプロセスは、複数の互いに素なソートされたリストを生成してもよい。一例において、分散された入力データを処理ノードごとに局所的にソートすることは、シリアル・ソート手順及び並列ソート手順の一方に基づいてもよい。一例において、第2の複数のプロセスの数は、レンジ・ブロックの数と等しくなっていてもよい。一例において、各レンジ・ブロックは異なる範囲を有していてもよい。一例において、各レンジ・ブロックは、複数のソートされたリスト、特に、第1の複数のプロセスの数に対応する複数のソートされたリストの数を受信してもよい。一例において、一方の処理ノードの上で実行されている第2の複数のプロセスのうちの1つの第2のプロセスは、複数のソートされたリストをレンジ・ブロックのシーケンスにコピーする際に、一方の処理ノードのローカル・メモリから及び他方の処理ノードのローカル・メモリから順次的に読みだしてもよい。一例において、複数のソートされたリストをレンジ・ブロックのシーケンスにコピーする際に、一方の処理ノードのローカル・メモリにのみ書き込んでもよい。一例において、レンジ・ブロックのシーケンスからの複数のソートされた要素の順次的な読み出しは、ハードウェア・プリフェッチングを利用することにより実行されてもよい。一例において、第2の複数のプロセスは、ベクトル化処理、特に、単一命令複数データ・ハードウェア・ブロックの上で実行されているベクトル化処理を使用してもよく、第2の複数のプロセスは、複数のソートされたリストの値とレンジ・ブロックの範囲とを比較し、複数のソートされたリストをレンジ・ブロックのシーケンスにコピーしてもよい。一例において、複数の処理ノードは、複数のソケット間接続によって相互接続されていてもよく、一方の処理ノードのローカル・メモリは、別の処理ノードに対するリモート・メモリになっていてもよい。
本発明は、1つのシステム内の異なるメモリ・バンクについてのアクセス時間の差を利用する方法を含む。上記のことは、ソケットからソケットへの通信リンクの使用を最小限にすることにより達成されてもよい。今日まで、いずれの方法も、ランダムに配列されたデータをソートし、複数の異なるソケットをこえてデータにアクセスすることを最小化するように構成されてはいない。測定ツールを使用することにより、ソート動作のために、複数のアクセスパターン及び複数のソケットを通じるデータ・フローを決定してもよい。
本明細書で説明される方法、システム、及びデバイスは、ディジタル信号プロセッサ(Digital Signal Processor, DSP)の中、マイクロ・コントローラの中、又はいずれかの他の付随的なプロセッサの中のソフトウェアとして、或いは、特定用途向け集積回路(application specific integrated circuit, ASIC)の中のハードウェア回路として実装されてもよい。
本発明は、例えば、従来のモバイル・デバイスの利用可能なハードウェアの中で又は本明細書で説明される方法を処理するために専用化された新たなハードウェアの中で等、ディジタル電子回路の中で、又はコンピュータ・ハードウェア、ファームウェア、若しくはソフトウェアの中で、又はそれらの組み合わせの中で実装されてもよい。
本開示は、コンピュータ実行可能なコード又は複数のコンピュータ実行可能な命令を含むコンピュータ・プログラム製品をサポートしてもよく、コンピュータ実行可能なコード又は複数のコンピュータ実行可能な命令は、実行されると、少なくとも1つのコンピュータが、本明細書で説明される実行するステップ及び計算するステップ、特に、図3乃至9を参照して上記で説明される方法300並びに図10及び図11を参照して上記で説明される方法1000及び1100を実行するようにさせる。そのようなコンピュータ・プログラム製品は、読み取り可能な記憶媒体を含んでもよく、読み取り可能な記憶媒体は、コンピュータによる使用のためにプログラム・コードを格納していてもよい。プログラム・コードは、相互接続される複数の処理ノードの複数のローカル・メモリ・パーティションにわたって分散された入力データをソートするように構成されてもよい。プログラム・コードは、複数の処理ノードの上で実行されている第1の複数のプロセスを使用することにより、分散された入力データを処理ノードごとに局所的にソートして、複数の処理ノードの複数のローカル・メモリ・パーティションに複数のソートされたリストを生成する命令と、複数の処理ノードの複数のローカル・メモリ・パーティションにレンジ・ブロックのシーケンスを生成する命令であって、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される、レンジ・ブロックのシーケンスを生成する命令と、第2の複数のプロセスを使用することにより、複数のソートされたリストをレンジ・ブロックのシーケンスにコピーする命令であって、各レンジ・ブロックが、値がそのレンジ・ブロックの範囲に入る複数のソートされたリストの複数の要素を受信する、レンジ・ブロックのシーケンスにコピーする命令と、第2の複数のプロセスを使用することにより、レンジ・ブロックの複数の要素を処理ノードごとに局所的にソートして、レンジ・ブロックに複数のソートされた要素を生成する命令と、それらのレンジ・ブロックの範囲を参照してレンジ・ブロックのシーケンスから複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得する命令とを含んでもよい。
本開示の特定の特徴又は特定の態様は、いくつかの実装のうちの1つのみを参照して開示されてきたが、そのような特徴又は態様は、要求に応じて及びいずれかの与えられた応用又は特定の応用に有利である場合には、他の実装の1つ又は複数の他の特徴又は1つ又は複数の他の態様と組み合わせられてもよい。さらに、“包含する”、“有する”、“備える”等の用語、又はこれらの異綴り語が発明の詳細な説明又は特許請求の範囲のいずれかにおいて使用されている範囲内において、そのような用語は、“含む”の語と同様の方法で包括的であることを意図される。また、“一例としての”、“例えば”及び“例として”の語は、最良又は最適を意味するものではなく、例示を意味しているに過ぎない。
特定の態様が本明細書において図示され説明されてきたが、本開示の範囲を逸脱することなく、さまざまな代替的な実装及び/又は等価な実装が、図示されそして説明された特定の実装の代わりに使用されうるということが、本発明の技術分野の当業者によって明らかとなるであろう。本出願は、本明細書において議論された特定の態様のいずれかの応用又はいずれかの変形を網羅するように意図されている。
以下の特許請求の範囲の構成要素は、対応する標識に従ってある特定の順序で記載されているが、特許請求の範囲の記載がそれらの構成要素のうちのいくつか又はすべてを実装するためのある特定の順序を示唆していない場合には、それらの構成要素は、その特定の順序で実装されるように限定されることを必然的には意図されてはいない。
上記の教示に照らして、多くの代替手段、修正、及び変更が本発明の技術分野の当業者に明らかとなるであろう。もちろん、本発明の技術分野の当業者は、本明細書中で説明された応用例をこえる本発明の応用例が数多く存在するということを容易に認識するであろう。本発明は、1つ又は複数の特定の実施形態を参照して説明されてきたが、本発明の技術分野の当業者は、本発明の範囲を逸脱することなく、多くの改変がなされうるということを認識するであろう。したがって、添付の特許請求の範囲及びそれらの均等な範囲内で、本発明は、本明細書で具体的に説明された以外の態様で実施されうるということを理解すべきである。

Claims (15)

  1. 相互接続される複数の処理ノード(701、702)の複数のローカル・メモリ・パーティション(401、402、403、404)にわたって分散された入力データをソートするソート方法(1100)であって、
    前記複数の処理ノード(701、702)の上に第1の複数のプロセスを展開することにより、前記分散された入力データを処理ノード(701、702)ごとに局所的にソートして、前記複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティション(401、402、403、404)に複数のソートされたリストを生成するステップ(1101)と、
    前記複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティションにレンジ・ブロック(703、704、713、714)のシーケンスを生成するステップ(1102)であって、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される、レンジ・ブロックのシーケンスを生成するステップ(1102)と、
    前記複数の処理ノード(701、702)の上に第2の複数のプロセスを展開することにより、前記複数のソートされたリストを前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーするステップ(1103)であって、各レンジ・ブロック(703、704、713、714)は、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を、相互接続される前記複数の処理ノード(701、702)の間で受信する、前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーするステップ(1103)と、
    前記第2の複数のプロセスを使用することにより、前記レンジ・ブロック(703、704、713、714)の前記複数の要素を処理ノード(701、702)ごとに局所的にソートして、前記レンジ・ブロック(703、704、713、714)に複数のソートされた要素を生成するステップ(1104)と、
    それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロック(703、704、713、714)の前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得するステップ(1105)とを含む、
    ソート方法(1100)。
  2. 前記相互接続される複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティション(401、402、403、404)は、非均一アクセス・メモリとして構成される、請求項1に記載のソート方法(1100)。
  3. 第1の複数のプロセスの数は、複数のローカル・メモリ・パーティション(401、402、403、404)の数と等しい、請求項1又は2に記載のソート方法(1100)。
  4. 前記第1の複数のプロセスは、複数の互いに素なソートされたリストを生成する、請求項1乃至3のいずれか1項に記載のソート方法(1100)。
  5. 前記分散された入力データを処理ノード(701、702)ごとに局所的にソートすることは、前記処理ノード(701、702)についてシリアルな方法で実行されるソート処理及び前記処理ノード(701、702)について並列的に実行されるソート処理のうちの一方に基づく、請求項1乃至4のいずれか1項に記載のソート方法(1100)。
  6. 第2の複数のプロセスの数は、レンジ・ブロック(703、704、713、714)の数と等しい、請求項1乃至5のいずれか1項に記載のソート方法(1100)。
  7. 各レンジ・ブロック(703、704、713、714)は異なる範囲を有する、請求項1乃至6のいずれか1項に記載のソート方法(1100)。
  8. 各レンジ・ブロック(703、704、713、714)は、第1の複数のプロセスの数に対応する複数のソートされたリストの数を含む複数のソートされたリストを受信する、請求項1乃至7のいずれか1項に記載のソート方法(1100)。
  9. 一方の処理ノード(701、702)の上で実行されている前記第2の複数のプロセスのうちの1つの第2のプロセスは、前記複数のソートされたリストを前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーする際に、前記一方の処理ノード(701)のローカル・メモリから及び他方の処理ノード(702)のローカル・メモリから順次的に読みだす、請求項1乃至8のいずれか1項に記載のソート方法(1100)。
  10. 前記一方の処理ノード(701)の上で実行されている前記1つの第2のプロセスは、前記複数のソートされたリストを前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーする際に、前記一方の処理ノード(701)のローカル・メモリにのみ書き込む、請求項9に記載のソート方法(1100)。
  11. レンジ・ブロック(703、704、713、714)の前記シーケンスからの前記複数のソートされた要素の順次的な読み出しは、ハードウェア・プリフェッチングを利用することにより実行される、請求項1乃至10のいずれか1項に記載のソート方法(1100)。
  12. 前記第2の複数のプロセスは、単一命令複数データ・ハードウェア・ブロックの上で実行されているベクトル化処理を含むベクトル化処理を使用し、前記第2の複数のプロセスは、前記複数のソートされたリストの値と前記レンジ・ブロック(703、704、713、714)の範囲とを比較し、前記複数のソートされたリストをレンジ・ブロック(703、704、713、714)の前記シーケンスにコピーする、請求項1乃至11のいずれか1項に記載のソート方法(1100)。
  13. 前記複数の処理ノード(701、702)は、複数のソケット間接続によって相互接続され、
    一方の処理ノード(701)のローカル・メモリは、別の処理ノード(702)に対するリモート・メモリになっている、請求項1乃至12のいずれか1項に記載のソート方法(1100)。
  14. 処理システム(100)であって、
    相互接続される複数の処理ノード(701、702)を含み、前記複数の処理ノード(701、702)の各々は、ローカル・メモリ(107、117)及び処理ユニット(109、119)を含み、入力データが、前記複数の処理ノード(701、702)の複数の前記ローカル・メモリ(107、117)にわたって分散され、前記処理ユニット(109、119)は、
    前記複数の処理ノード(701、702)の上に第1の複数のプロセスを展開することにより、分散された前記入力データを処理ノード(701、702)ごとに局所的にソートして、前記複数の処理ノード(701、702)の複数のローカル・メモリ・パーティション(401、402、403、404)に複数のソートされたリストを生成し(1101)、
    前記複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティションにレンジ・ブロック(703、704、713、714)のシーケンスを生成し(1102)、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成され、
    前記複数の処理ノード(701、702)の上に第2の複数のプロセスを展開することにより、前記複数のソートされたリストを前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーし(1103)、各レンジ・ブロック(703、704、713、714)は、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を、相互接続される前記複数の処理ノード(701、702)の間で受信し、
    前記第2の複数のプロセスを使用することにより、前記レンジ・ブロック(703、704、713、714)の前記複数の要素を処理ノード(701、702)ごとに局所的にソートして、前記レンジ・ブロック(703、704、713、714)に複数のソートされた要素を生成し(1104)、
    それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロック(703、704、713、714)の前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得する(1105)、
    ように構成される、処理システム(100)。
  15. プログラム・コードを含むコンピュータ・プログラムであって、前記プログラム・コードは、コンピュータで実行されると、相互接続される複数の処理ノード(701、702)の複数のローカル・メモリ・パーティションにわたって分散された入力データを前記コンピュータにソートさせ、前記プログラム・コードは、
    前記複数の処理ノード(701、702)の上に第1の複数のプロセスを展開することにより、前記分散された入力データを処理ノード(701、702)ごとに局所的にソートして、前記複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティション(401、402、403、404)に複数のソートされたリストを生成する(1101)命令と、
    前記複数の処理ノード(701、702)の前記複数のローカル・メモリ・パーティションにレンジ・ブロック(703、704、713、714)のシーケンスを生成する(1102)命令であって、各レンジ・ブロックは、そのレンジ・ブロックの範囲に入るデータ値を格納するように構成される、レンジ・ブロックのシーケンスを生成する(1102)命令と、
    前記複数の処理ノード(701、702)の上に第2の複数のプロセスを展開することにより、前記複数のソートされたリストを前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーする(1103)命令であって、各レンジ・ブロック(703、704、713、714)は、データ値がそのレンジ・ブロックの範囲に入る前記複数のソートされたリストの複数の要素を、相互接続される前記複数の処理ノード(701、702)の間で受信する、前記レンジ・ブロック(703、704、713、714)の前記シーケンスにコピーする命令(1103)と、
    前記第2の複数のプロセスを使用することにより、前記レンジ・ブロック(703、704、713、714)の前記複数の要素を処理ノード(701、702)ごとに局所的にソートして、前記レンジ・ブロック(703、704、713、714)に複数のソートされた要素を生成する(1104)命令と、
    それらのレンジ・ブロックの範囲を参照して前記レンジ・ブロック(703、704、713、714)の前記シーケンスから前記複数のソートされた要素を順次的に読みだして、ソートされた入力データを取得する(1105)命令とを含む、
    コンピュータ・プログラム。
JP2017514787A 2014-05-30 2014-05-30 並列マージソート Active JP6318303B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2014/061269 WO2015180793A1 (en) 2014-05-30 2014-05-30 Parallel mergesorting

Publications (2)

Publication Number Publication Date
JP2017517832A JP2017517832A (ja) 2017-06-29
JP6318303B2 true JP6318303B2 (ja) 2018-04-25

Family

ID=50942660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017514787A Active JP6318303B2 (ja) 2014-05-30 2014-05-30 並列マージソート

Country Status (5)

Country Link
US (1) US20170083286A1 (ja)
JP (1) JP6318303B2 (ja)
CN (1) CN106462386B (ja)
RU (1) RU2667385C2 (ja)
WO (1) WO2015180793A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107122134B (zh) * 2017-04-25 2020-01-03 杭州迪普科技股份有限公司 一种数据读取的方法和装置
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
CN108804073B (zh) * 2018-05-21 2021-12-17 南京大学 一种多流水实时高速排序引擎系统
CN109271132B (zh) * 2018-09-19 2023-07-18 中南大学 一种基于机器学习模型的排序方法
CN109949378B (zh) * 2019-03-26 2021-06-08 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN112015366B (zh) * 2020-07-06 2021-09-10 中科驭数(北京)科技有限公司 数据排序方法、数据排序装置及数据库系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge
EP0377993A3 (en) * 1989-01-13 1991-12-18 International Business Machines Corporation Sorting distributed data
US5671405A (en) * 1995-07-19 1997-09-23 International Business Machines Corporation Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts
US5852826A (en) 1996-01-26 1998-12-22 Sequent Computer Systems, Inc. Parallel merge sort method and apparatus
JP3774324B2 (ja) * 1998-08-03 2006-05-10 株式会社日立製作所 ソート処理システムおよびソート処理の方法
US6427148B1 (en) * 1998-11-09 2002-07-30 Compaq Computer Corporation Method and apparatus for parallel sorting using parallel selection/partitioning
US6542826B2 (en) * 2001-06-11 2003-04-01 Saudi Arabian Oil Company BT sorting method and apparatus for large volumes of seismic data
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
CN100470463C (zh) * 2003-07-30 2009-03-18 智邦科技股份有限公司 合并排序分布式数据的方法
JP5304251B2 (ja) * 2006-12-22 2013-10-02 日本電気株式会社 並列ソート装置、方法、およびプログラム
US8332595B2 (en) 2008-02-19 2012-12-11 Microsoft Corporation Techniques for improving parallel scan operations
CN101639769B (zh) * 2008-07-30 2013-03-06 国际商业机器公司 在多处理器系统上对数据集进行划分及排序的方法和装置
US10089379B2 (en) * 2008-08-18 2018-10-02 International Business Machines Corporation Method for sorting data
US8463820B2 (en) * 2009-05-26 2013-06-11 Intel Corporation System and method for memory bandwidth friendly sorting on multi-core architectures
WO2014031114A1 (en) * 2012-08-22 2014-02-27 Empire Technology Development Llc Partitioning sorted data sets

Also Published As

Publication number Publication date
RU2016151387A3 (ja) 2018-07-04
US20170083286A1 (en) 2017-03-23
RU2667385C2 (ru) 2018-09-19
JP2017517832A (ja) 2017-06-29
CN106462386A (zh) 2017-02-22
WO2015180793A1 (en) 2015-12-03
CN106462386B (zh) 2019-09-13
RU2016151387A (ru) 2018-07-04

Similar Documents

Publication Publication Date Title
JP6318303B2 (ja) 並列マージソート
Kwon et al. A study of skew in mapreduce applications
Nykiel et al. MRShare: sharing across multiple queries in MapReduce
Heimel et al. Hardware-oblivious parallelism for in-memory column-stores
Halstead et al. FPGA-based Multithreading for In-Memory Hash Joins.
JP6410825B2 (ja) オンライン・シェアード・ナッシング・データベースを拡張するためのインクリメンタルで、かつ、連結された再分散
Pirk et al. Waste not… Efficient co-processing of relational data
EP2880566B1 (en) A method for pre-processing and processing query operation on multiple data chunk on vector enabled architecture
WO2021050883A1 (en) Accelerated building and probing of hash tables using symmetric vector processing
Andrzejewski et al. Parallel approach to incremental co-location pattern mining
Jiang et al. Efficient SIMD and MIMD parallelization of hash-based aggregation by conflict mitigation
EP4028907A1 (en) Accelerated building and probing of hash tables using symmetric vector processing
Sukhwani et al. Large payload streaming database sort and projection on FPGAs
Crotty et al. Tupleware: Distributed Machine Learning on Small Clusters.
Vilim et al. Aurochs: An architecture for dataflow threads
Lai et al. Accelerating multi-way joins on the GPU
Arcas-Abella et al. Hardware acceleration for query processing: leveraging FPGAs, CPUs, and memory
Böhm et al. Index-supported similarity join on graphics processors
Liu et al. G-Learned Index: Enabling Efficient Learned Index on GPU
Kruliš et al. Optimizing sorting and top-k selection steps in permutation based indexing on gpus
Qin et al. Dot-product join: Scalable in-database linear algebra for big model analytics
Zhang et al. High-performance spatial join processing on gpgpus with applications to large-scale taxi trip data
Paul et al. Query Processing on OpenCL-Based FPGAs: Challenges and Opportunities
Hauck et al. Highspeed graph processing exploiting main-memory column stores
Tripathy et al. Optimizing a semantic comparator using cuda-enabled graphics hardware

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180228

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: 20180313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180402

R150 Certificate of patent or registration of utility model

Ref document number: 6318303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250