JP2012247866A - ソート時のキー削減方法及び装置及びプログラム - Google Patents

ソート時のキー削減方法及び装置及びプログラム Download PDF

Info

Publication number
JP2012247866A
JP2012247866A JP2011117327A JP2011117327A JP2012247866A JP 2012247866 A JP2012247866 A JP 2012247866A JP 2011117327 A JP2011117327 A JP 2011117327A JP 2011117327 A JP2011117327 A JP 2011117327A JP 2012247866 A JP2012247866 A JP 2012247866A
Authority
JP
Japan
Prior art keywords
sort
integer
histogram
sorting
bits
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.)
Withdrawn
Application number
JP2011117327A
Other languages
English (en)
Inventor
Ken Yamamuro
健 山室
Harushio Hidaka
東潮 日高
Masashi Yamamuro
雅司 山室
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011117327A priority Critical patent/JP2012247866A/ja
Publication of JP2012247866A publication Critical patent/JP2012247866A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 基数ソート毎に発生する読み出しと書き出しデータ量の削減を行う。
【解決手段】 本発明は、入力された並び替え対象の整数列を部分ソート列記憶手段に格納し、入力された並び替え対象の整数列の上位Kビットを対象として、ソート処理手段から指定された上位Kビットのビット位置の出現頻度のヒストグラムを作成し、ヒストグラム記憶手段に格納し、ヒストグラム記憶手段から読み出したヒストグラムに基づいて、上位Kビットを並び替えた部分ソート列を部分ソート列記憶手段に格納する処理をM/K(但し、M:整数対象、K:基数ソートを行う単位)回繰り返し、整列済みの整数列を生成する。
【選択図】 図4

Description

本発明は、ソート時のキー削減方法及び装置及びプログラムに係り、特に、N個からなるM-bit整数列を昇順(もしくは降順)に並び替える処理(ソート)を高速化するために、並び替えながら不必要なデータ量を削減するためのソート時のキー削減方法及び装置及びプログラムに関する。
任意の順序で並んだ整数列を入力値として、指定された順序で並び替えを行い、結果を出力する。例えば、入力整数列"10, 3, 7, 8, 1, 4, 2"(N=7)がある場合を考える。この入力整数列を昇順で並び替える最も単純な方法は、先頭の整数(10)から値を調べ、整数列から最も小さい値を先頭に移動する(ここでは、1が先頭になる)。先頭の整数列は並び替えが完了しているため、次の並び替え処理は先頭から2番目の整数から同様の処理を行う。この繰り返し処理を7回行うと並び替え処理が完了する。しかし、並び替え処理を行うための『調べる回数』が7!回(計算量はθ(n2))と非常に多くなるため、古くから非常に多くの並び替え処理の高速化手法が提案されている。
古くから用いられる並び替え手法は様々存在するが、一般的な用途で最も多く用いられるものとしてクイックソートが挙げられる。
具体的な処理方法を図1に示す。
クイックソートでは、まず処理の始めに任意の軸値(図1のグレーのマスの整数値)を決定する。軸値を決定後、その値より小さい整数値を持つ領域と、その値以上の値を持つ整数値の領域に分割する(図1では軸値が6で,{2,3,5,4}{6,9,8,7}の2つの領域に分割している)。その後、分割された領域毎に同じ処理を整数の個数が1になるまで繰り返し行い処理を完了する。
しかし、近年のハードウェアの進歩により最も高速な並び替え手法は桁毎に比較処理を行う基数ソートである(例えば、非特許文献1参照)。範囲1〜5の整数値列における基数ソートの具体的な例を図2に示す。基数ソートでは、まず並び替え対象の整数列の出現頻度ヒストグラムを作成する(図2の左上のヒストグラム)。この作成したヒストグラムを参照することで各整数値が、並び替え後の配列における位置を決定することができる。例えば、整数値『1』であれば出現頻度が4であるため、配列番号1〜4に位置付けられ、整数値『2』であれば出現頻度が3であるため、配列番号5〜7(整数値『1』の出現頻度数に1を加えた値が整数値『2』の開始位置になる)に位置付けられる。そのため、このヒストグラムを参照しながら各値が位置づけられる配列に整数値を書き出す処理を行えば並び替えが完了する。
図2の例では範囲1〜5の整数値を例に説明したが、これをM-bitの整数値に適用した場合の具体的な例を図3に示す。M-bitの整数を基数ソートする場合には、上位K-bit単位ずつ図2で説明した並び替え処理を実施する。図3の具体例ではMを16,Kを8として説明を行う。
まずStep1の処理で各整数値の上位8bitのヒストグラムを作成する(ヒストグラムのエントリ数は8bitなので0〜255の256個である)。ヒストグラム作成後は図2の例の具体例と同じように上位8bitが0〜255の256個の領域に分割する。
そして、Step2の処理で、分割された領域毎で同じように下位8bitのヒストグラムを作成し、領域毎に並び替えを実施する。そして最後に同一の配列に書き出せば、整列された整数列が得られる。この例では整列対象(M)が16bit、基数ソートを行う単位(K)が8bitであるため、全体の基数ソート実行回数は16/8(M/K)で2回となる。
本発明はN個からなるM-bit整数列を、基数ソートを用いて並び替えを行う際に発生する課題を取り扱う。
浅野哲雄,アルゴリズムイントロダクション第1巻(p163-165),近代科学者,2007
しかしながら、上記従来の技術では、M/K回の基数ソートを実行する際に、各整数値のM/K回の読み出しと、M/K回の書き出し処理が発生する。整数値総数をNとした場合、全体で((N*M/8)*(M/K))byteの読み出しと書き出しが発生することになる。そのためセンサ情報や、アクセスログデータなど大規模データ内のM個の整数列を並び替える必要がある時、部分的に並び替えられた整数列を書き出す、もしくは次の並び替えのために読み出す(もしくは,書き出す)データ量が非常に大きくなってしまう問題がある。
本発明は、上記の点に鑑みなされたもので、基数ソート毎に発生する読み出しと書き出しデータ量の削減を行うことが可能なソート時のキー削減方法及び装置及びプログラムを提供することを目的とする。
上記の課題を解決するため、本発明は、N個からなるM-bit整数列を、基数ソートを用いて並び替えを行う際のデータ量を削減するためのソート時のキー削減方法であって、
ソート処理手段が、入力された並び替え対象の整数列を部分ソート列記憶手段に格納し、
基数ソート実行手段が、入力された並び替え対象の整数列の上位Kビットを対象として、前記ソート処理手段から指定された上位Kビットのビット位置の出現頻度のヒストグラムを作成し、ヒストグラム記憶手段に格納し、
前記ソート処理手段が、前記ヒストグラム記憶手段から読み出した前記ヒストグラムをに基づいて、上位Kビットを並び替えた部分ソート列を前記部分ソート列記憶手段に格納する処理をM/K(但し、M:整数対象、K:基数ソートを行う単位)回繰り返し、整列済みの整数列を生成する。
上記のように本発明によれば、各領域における並び替え済みの上位d*K-bitを共通化することで並び替え中に発生する読み込み(もしくは,書き込み)整数値のデータ量を削減することが可能となる。
クイックソートの具体例である。 基数ソートの具体例である。 bit単位で行う基数ソートの例である。 本発明の一実施の形態におけるキー削減装置の構成図である。 本発明の一実施の形態におけるソート処理部の動作のフローチャートである。 本発明の一実施の形態における基数ソート実行部の動作のフローチャートである。 本発明の一実施の形態における図5のS540の詳細な動作のフローチャートである。 本発明の一実施の形態における上位d*K-bitが共通化(並び替え済み)された核領域内の整数値データ表現である。
以下図面と共に、本発明の実施の形態を説明する。
図4は、本発明の一実施の形態におけるキー削減装置の構成を示す。
同図に示すキー削減装置10は、整数列入力装置1、パラメータK入力装置2、結果出力装置3に接続されている。
キー削減装置10は、ソート処理部11、基数ソート実行部12、部分ソート列記憶部13、ヒストグラム記憶部14から構成される。部分ソート列記憶部13、ヒストグラム記憶部14は、ハードディスク装置やメモリ等の記憶媒体である。
上記の構成において、まず、ソート処理部11は、入力値として整数列入力装置1とパラメータK入力装置2から値を受け取り、入力された並び替え対象の整数列を部分ソート列記憶部13に記録する。そして、基数ソート実行部12は、入力された整数列の上位K-bitを対象に上位K-bitの出現頻度のヒストグラムを作成し、ヒストグラム記憶部14に記録する。そして、ソート処理部11では、作成されたヒストグラムをもとに上位K-bitを並び替えた部分ソート列を部分ソート列記憶部13に再度書き出す。この処理をM/K回繰り返すことで、整列済みの整数列を作成し、最終的に結果出力装置3に出力する。
以下に、各処理部の動作を説明する。
ソート処理部11は、整数列入力装置1から整列対象整数列、パラメータK入力装置2からパラメータKを取得する。入力された整数列を基数ソート実行部12を利用しながら上位K-bitずつ並び替えを実施する。上位bitを部分的に並び替えられた中間整数列は部分ソート列記憶部13に記憶しながら並び替えを実施し、整列結果整数列を結果出力装置3に出力する。
基数ソート実行部12は、ソート処理部11からヒストグラム作成対象のbit位置が入力され、整数列入力装置1から整数列が入力されると、指定されたbit位置の出現頻度を数え上げ、ヒストグラムを作成し、ヒストグラム記憶部14に書き出す。
以下に、ソート処理部11の詳細な動作を説明する。
図5は、本発明の一実施の形態におけるソート処理部の動作のフローチャートである。
ステップ500) ソート処理部11は、パラメータK入力装置2から入力があるまで待機し、パラメータKを設定する。
ステップ505) 整数列入力装置2から入力があるまで待機する。
ステップ510) 整数列入力装置2からN個の整数列が入力されると、当該整数列を部分ソート列記憶部2に記録する。
ステップ515) d(並び替え済み上位ビット)を値1で初期化する。
ステップ520) 上位の((d-1)*K)-bitからK-bitを対象に基数ソート実行部12を実行するため、dとN個の整数列を基数ソート実行部12に渡すことで処理を実行させる。
ステップ525) 基数ソート実行部12がヒストグラム作成処理を行う(詳細については図6にて後述する)。
ステップ530) 基数ソート実行部12で作成されたヒストグラムをヒストグラム記憶部14から読み出し、参照することで上位d*K-bitが並び替えられた整数列を生成する。
ステップ535) iを値1で初期化する。
ステップ540) 並び替え済み上位ビットを示すdと、並び替え対象整数の総数を取得し、並び替え済みの上位d*K-bitの値を共通化する「上位d*K-bitの共通化処理」を行い、内部の各整数値のデータ量を削減する(図8)。当該処理の詳細は図7にて後述する。
ステップ545) iに1を加算し、i≦2Kになるまでステップ540を繰り返す。
ステップ550) dに1を加算し、d≦M/Kであればステップ555に移行し、d>M/Kであればステップ520に戻る。
ステップ555) 部分ソート列記憶部13から整列された結果整数列を読み出し、結果出力装置3に出力する。
次に、基数ソート実行部12の処理を説明する。
図6は、本発明の一実施の形態における基数ソート実行部の動作のフローチャートである。
ステップ600) 基数ソート実行部12は、ソート処理部11からヒストグラム対象の整数内bit列位置を示すdの値を受け取る。
ステップ605) 入力された整数の出現頻度のヒストグラムを作成するために、2K個のエントリを持つヒストグラムを初期化する。
ステップ610) jを値1で初期化する。
ステップ615) j番目の整数列の上位((d-1)*K)-bitからK-bitを抜き出す。
ステップ620) 抜き出されたK-bitの値に対応するヒストグラムのカウント値に1を加算する。
ステップ625) ステップ620で作成されたヒストグラムをヒストグラム記憶部14に記録する。
次に、図5のステップ540の『上位d*K-bitの共通化処理』について説明する。
図7は、本発明の一実施の形態における図5のS540の詳細な動作のフローチャートである。
ステップ700) ソート処理部11は、ステップ520でソートされた並び替え済み上位ビットを示すdと、並び替え対象整数の総数Aを入力値として受け取る。
ステップ705) 共通値である上位(d*K)-bitをメモリの共通化領域内のヘッダに格納する。格納された状態を図8に示す。このとき、整数値はまだ格納されていない状態である。
ステップ710) jを値1で初期化する。
ステップ715) j番目の整数と、先頭に共通値、その後続に共通値を削除した整数が連結されたデータ列を取得し、j番目の整数の上位(d*K)-bitを削除し、連結したデータ列の後続に加える。jに1を加算し、j>Aであれば当該ステップの処理を繰り返し、j≦Aであればステップ720に移行する。
ステップ720) 連結したデータ列を部分ソート列記憶部13に記憶する。
上述のように、本発明は、各領域(図3における太枠四角内)における並び替え済みの上位d*K-bitを共通化することで並び替え中に発生する読み込み(もしくは、書き込み)整数値のデータ量を削減することに特徴がある。共通化された上位d*K-bitは、図8に示すように、各部分領域の先頭にあるヘッダに格納する。部分的に並び替えられた整数列を書き出す際には、この削減された整数値を用いて並び替えを実施し、最終的な整列整数値を書き出す際に、ヘッダに格納された共通値を利用して元の値を復元する。このように並び替え済みの値を共通化することで、並び替え済みbit長が大きくなるにつれて、並び替え対象の各整数値のデータ量が削減され、結果としてこれらの値を読み書きするために必要なデータ総量が減少する。
このように、本発明を適用することで、基数ソート毎に発生する読み出しと書き出しデータ量の削減効果が得られる。
入力整数の総数をN,整数のbit長をM,基数ソートを行うbit長をKとする。
1回目の基数ソートで読み込まれるデータ量は(N*M/8)byte、書き出されるデータ量は並び替え済みの上位K-bitを除去した(N*(M-1*K)/8)byteとなる。実際には共通化された(各整数値から除去された)並び替え済みのK-bitを各領域のヘッダに保存するための書き出しデータ量αが存在するが、Nが大きい場合にαは非常に小さくなるため、これ以降では無視して説明を行う。
続けて2回目の基数ソートで読み込まれるデータ量は(N*(M-1*K)/8)byteで、書き出されるデータ量は(N*(M-2*K)/8)byteとなる。そしてM/K回目の書き出し処理で各共通領域のヘッダに存在する値を利用して元値を復元して並び替えを終了する。最終的に読み出しと書き出しのデータ総量は
Figure 2012247866
となる。
以下に具体的に説明する。
例えば、232個の32bit整数を4bit毎に基数ソートする場合を考える。従来の手法では、この整数列に対して通常の基数ソートを実行する場合、232個の32bit整数全体を8回読み書きする必要があり、その総サイズは128GiBとなる。一方、本発明の場合は、ソート済みのbit列を共通化することで、必要な読み書きの総数が72GiBとなり、結果的に56GiBの節約が可能になる。
なお、図4に示すキー削減装置の構成要素の図5〜7に示す動作をプログラムとして構築し、キー削減装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
1 整数列入力装置
2 パラメータK入力装置
3 結果出力装置
10 キー削減装置
11 ソート処理部
12 基数ソート実行部
13 部分ソート列記憶部
14 ヒストグラム記憶部

Claims (3)

  1. N個からなるM-bit整数列を、基数ソートを用いて並び替えを行う際のデータ量を削減するためのソート時のキー削減方法であって、
    ソート処理手段が、入力された並び替え対象の整数列を部分ソート列記憶手段に格納し、
    基数ソート実行手段が、入力された並び替え対象の整数列の上位Kビットを対象として、前記ソート処理手段から指定された上位Kビットのビット位置の出現頻度のヒストグラムを作成し、ヒストグラム記憶手段に格納し、
    前記ソート処理手段が、前記ヒストグラム記憶手段から読み出した前記ヒストグラムに基づいて、上位Kビットを並び替えた部分ソート列を前記部分ソート列記憶手段に格納する処理をM/K(但し、M:整数対象、K:奇数ソートを行う単位)回繰り返し、整列済みの整数列を生成する
    ことを特徴とするソート時のキー削減方法。
  2. N個からなるM-bit整数列を、基数ソートを用いて並び替えを行う際のデータ量を削減するためのソート時のキー削減装置であって、
    ソート処理手段と、基数ソート実行手段と、を有し、
    前記ソート処理手段は、
    入力された並び替え対象の整数列を部分ソート列記憶手段に格納する手段と、
    前記基数ソート実行手段で作成されたヒストグラムに基づいて、上位Kビットを並び替えた部分ソート列を前記部分ソート列記憶手段に格納する処理をM/K(但し、M:整数対象、K:基数ソートを行う単位)回繰り返し、整列済みの整数列を生成する部分ソート列生成手段と、を有し、
    基数ソート実行手段は、
    入力された並び替え対象の整数列の上位Kビットを対象として、前記ソート処理手段から指定された上位Kビットのビット位置の出現頻度のヒストグラムを作成し、ヒストグラム記憶手段に格納するヒストグラム作成手段を有することを特徴とするソート時のキー削減装置。
  3. コンピュータを、
    請求項2記載のキー削減装置の各手段として機能させるためのキー削減プログラム。
JP2011117327A 2011-05-25 2011-05-25 ソート時のキー削減方法及び装置及びプログラム Withdrawn JP2012247866A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011117327A JP2012247866A (ja) 2011-05-25 2011-05-25 ソート時のキー削減方法及び装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011117327A JP2012247866A (ja) 2011-05-25 2011-05-25 ソート時のキー削減方法及び装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2012247866A true JP2012247866A (ja) 2012-12-13

Family

ID=47468286

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011117327A Withdrawn JP2012247866A (ja) 2011-05-25 2011-05-25 ソート時のキー削減方法及び装置及びプログラム

Country Status (1)

Country Link
JP (1) JP2012247866A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021176679A1 (ja) * 2020-03-06 2021-09-10 三菱電機株式会社 並列処理装置、並列処理システム及び並列処理用プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021176679A1 (ja) * 2020-03-06 2021-09-10 三菱電機株式会社 並列処理装置、並列処理システム及び並列処理用プログラム

Similar Documents

Publication Publication Date Title
US11706020B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
JP6051212B2 (ja) 反復データの処理
US6353910B1 (en) Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
JP2014534486A (ja) スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム
JP2012008725A (ja) データをソートする装置及び方法
US10817474B2 (en) Adaptive rate compression hash processor
US8005992B1 (en) Scalable storage and retrieval of multiple asynchronous signals
CN111475508B (zh) 一种优化叶子节点合并操作的高效索引方法
CN106201774B (zh) 一种nand flash存储芯片数据存储结构分析方法
US9137336B1 (en) Data compression techniques
US10303655B1 (en) Storage array compression based on the structure of the data being compressed
US11789639B1 (en) Method and apparatus for screening TB-scale incremental data
CN111126619B (zh) 一种机器学习方法与装置
Park et al. FAST: Flash-aware external sorting for mobile database systems
CN110309081B (zh) 基于压缩存储和地址映射表项的ftl读写数据页的方法
CN108920097B (zh) 一种基于交织存储的三维数据处理方法
JP2012247866A (ja) ソート時のキー削減方法及び装置及びプログラム
CN110825747B (zh) 一种信息存取方法、装置和介质
Chen et al. The real-time compression layer for flash memory in mobile multimedia devices
KR20220100030A (ko) 패턴 기반 캐시 블록 압축
JP2022545644A (ja) エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮
JP5143797B2 (ja) ビット列データソート装置、ソート方法及びプログラム
US10037148B2 (en) Facilitating reverse reading of sequentially stored, variable-length data
US20220138338A1 (en) Data replacement apparatus, data replacement method, and program

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140805