JP7044118B2 - 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム - Google Patents

並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム Download PDF

Info

Publication number
JP7044118B2
JP7044118B2 JP2019570747A JP2019570747A JP7044118B2 JP 7044118 B2 JP7044118 B2 JP 7044118B2 JP 2019570747 A JP2019570747 A JP 2019570747A JP 2019570747 A JP2019570747 A JP 2019570747A JP 7044118 B2 JP7044118 B2 JP 7044118B2
Authority
JP
Japan
Prior art keywords
input
union
output
parallel
sets
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
JP2019570747A
Other languages
English (en)
Other versions
JPWO2019156060A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019156060A1 publication Critical patent/JPWO2019156060A1/ja
Application granted granted Critical
Publication of JP7044118B2 publication Critical patent/JP7044118B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 OR 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、ソート済み集合のユニオン処理を並列に行う技術に関する。
数あるグラフアルゴリズムのカーネル演算として、疎行列疎ベクトル積が注目されている。グラフアルゴリズムには、例えば、連結成分抽出や最短経路問題がある。連結成分抽出は、例えば、Twitter(登録商標)やFacebook(登録商標)などのSNS(social networking service)におけるユーザ間の関係(友達かどうか等)を示すグラフから、お互いに到達可能な頂点の集合(例えば、コミュニティ)を求める(抽出する)。一方、最短経路問題は、例えば、地図上の地点と、それらをつなぐ道路の関係を示すグラフから、ある頂点から別のある頂点へのもっとも近い経路を見つける問題(経路探索)である。
グラフの探索は行列演算である。グラフの構造は疎行列で表される。グラフの探索は、疎行列と疎ベクトルとの積、すなわち、疎行列疎ベクトル積で表される。
すなわち、疎行列疎ベクトル積は、疎行列と疎ベクトルとの積演算である。その疎行列及び疎ベクトルは、非零要素のインデックスと値とを保持する形式となっている。このような疎行列(疎ベクトル)表現を用いることで、零が大半になるようなデータを小容量のメモリで格納することができる。
しかしながら、疎行列疎ベクトル積においては、複数のソート済み集合のユニオンを取る処理(以下、「ユニオン処理」という)の負荷が特に大きい。ユニオン処理については、後で説明する。
ソート済み集合のユニオン処理は、グラフアルゴリズムに頻繁に出現する。例えば、そのようなグラフアルゴリズムは、データベースのテーブルのJoinを取る処理において出現する。ここで、「ソート済み集合」とは、集合の要素が昇順もしくは降順に並んでいるもののことである。また、「ソート済み集合のユニオン処理」とは、入力となる集合の入力要素を含み、かつ重複した入力要素を省いた状態でそれ以外の要素は含まないような、ソート済み集合から成る出力要素を出力として返す処理である。入力となるソート済み集合の数は3つ以上のことがある。
なお、ユニオン処理と近似する処理として、マージ処理が知られている。ここで、「ソート済み集合のマージ処理」とは、入力となる集合の入力要素を含み、かつ重複した入力要素を残した状態でそれ以外の要素は含まないような、ソート済み集合から成る出力要素を出力として返す処理である。
この技術分野において周知のように、ベクトル計算機などの並列計算機は計算処理を高速化することができる。ベクトル計算機は、数値を複数個格納できるレジスタ(ベクトルレジスタ)を持ち、そのレジスタ内の数値に同様の演算を並列に実行するベクトル演算器を有することを特徴とする計算機である。ベクトル演算器は、複数の演算器を含む。ベクトル計算機では、ベクトル演算器を効率的に活用することによって、一般的なプロセッサと比較して計算処理を高速に実行することが期待できる。
換言すると、ベクトル計算機は、ベクトル演算(SIMD(Single Instruction Multiple Data))を行えるコンピュータである。ここで、SIMDとは、コンピュータやマイクロプロセッサで並列処理を行なうための設計仕様の一つである。SIMDは、一つの命令を同時に複数のデータに適用し、並列に処理する方式である。そのような処理方式は、ベクトル演算、ベクトル処理などと呼ばれる。
本発明に関連する先行技術が種々知られている。
例えば、特許文献1は、2つの整列済部分データ列対を入力とするマージ処理の並列化を可能とした、並列マージソート処理装置を開示している。この特許文献1に開示された並列マージソート処理装置は、マージ処理用並列プロセッサと、データ列対分割用並列プロセッサと、ソート処理用並列プロセッサと、管理用プロセッサと、データ記憶域とを有する。マージ処理用並列プロセッサは、複数のプロセッサを含み、複数のタスクを同時並列的に実行可能である。データ列対分割用並列プロセッサは、2組の整列済データ列の対を所定数の部分データ列に分割して、管理用プロセッサに返す。ソート処理用並列プロセッサは、指定された領域に存在する未整列のデータ列をソートする。
特許文献1では、2つの整列済データ列の対を複数の部分データ列の対に分割することで並列度を向上させている。マージの入力となるデータ列の対を2分割することにより2組の入力データ列対を得て、それぞれを正順マージと逆順マージを行うことにより複数のプロセッサに同時に処理をさせることができる。データ列の対を4分割することにより4組の入力データ列を得て、それぞれを正順マージと逆順マージを行うことにより複数のプロセッサに同時に処理をさせることができる。
特許文献2は、ソート処理の高速化を図るとともに、キャッシュヒット率を向上させた、ソート処理装置を開示している。特許文献2に開示されたソート処理装置では、全てのブロックについてブロック内ソートが完了すると、ブロック間マージ処理部が各ブロックのマージを行う。先ず、ブロック間マージ処理部は、ブロック内ソートされたN個のブロックの最小値によるデータ列を生成する。次に、ブロック間マージ処理部は、生成したデータ列をソートする。そして、ブロック間マージ処理部は、ソートされたデータ列の最小値をソート結果データの最小値として主記憶上に出力する。ブロック間マージ処理部は、出力されたデータが属していたブロックに次の最小値のデータがあるか否かを判断し、最小値のデータがあれば、これを最小値のデータ列に挿入するとともに、最小値のデータ列をソートする処理から繰り返して実行する。
また、ブロック間マージ処理部は、出力したデータの属するブロックから次に小さい値の最小値のデータ列への挿入と、そのデータ列の最小値の主記憶装置への出力と、を繰り返す。繰り返しの結果、全てのブロックが空になった時点でソート対象データのソートが完了する。
また、特許文献3は、効率的なレコードの入力を実現することができるマージ処理装置を開示している。特許文献3に開示されたマージ処理装置は、配置変換部と、入力部と、記憶部と、レコード列選択部と、を備えている。配置変換部には、ソートされた複数のレコードから構成されるレコード列が複数入力される。配置変換部は、入力された複数のレコード列を、少なくとも1のレコードを含むレコードブロックに分離し、それぞれのレコードブロックに含まれる複数のレコードの最後方に配置されている予測用レコードを、現在配置されている位置よりも前方に位置するようにレコードの順序を入れ替える。レコード列選択部は、複数のレコードブロックのそれぞれに含まれた予測用レコードに基づいて、入力部が配置変換部から取得するレコード列を選択する。レコード列選択部によって選択されたレコード列は、入力部における現在のレコード列の取得が完了後に、入力部によって配置変換部から取得される。
さらに、特許文献4は、多数の要素からなる配列をソートする装置、方法およびプログラムを開示している。特許文献4は、マルチウェイ・マージを用いて多数のデータからなる配列に対してマージソートの処理を行っている。マルチウェイ・マージでは、複数の入力列をマージして、最終的に1個の出力列が生成される。その際、2ウェイ・マージが繰り返し実行される。特許文献4では、SIMD命令を用いることにより、マージ処理を並列に実行している。特許文献4において、昇順に整列させる場合、入力列の先頭であるペアの比較が行われ、値の小さいものから先に出力列に並べられる。
また、特許文献5は、競合検出演算を実行するための装置および方法を開示している。特許文献5に開示された方法では、先ず、第1のセットのデータ要素が第1のソースベクトルレジスタ内に格納され、第2のセットのデータ要素が第2のソースベクトルレジスタ内に格納される。引き続いて、第1のソースレジスタ内の各データ要素が、第2のソースレジスタ内のデータ要素の指定されたセットと比較される。比較の結果がデスティネーションレジスタ内に格納される。
国際公開第2003/091872号 特開2006-163565号公報 特開2011-233012号公報 特開2016-115092号公報 特表2017-539013号公報
上述した先行技術には、次に述べるような課題がある。
特許文献1~4はいずれも、マージ処理について記載しているに過ぎない。一方、特許文献5は、単に、2つのデータ要素を比較して競合を検出する技術を開示しているに過ぎない。また、特許文献1~5のいずれも、並列計算機を用いて疎行列疎ベクトル積を並列化して実行する上での課題の認識がない。
すなわち、特許文献1は、単に複数のタスクを同時並行的に実行することと、2つの整列済データ列の対を複数の部分データ列に分割することにより並列度を向上させた、並列マージソート処理装置を開示しているに過ぎない。
特許文献2は、ソートされたデータ列の最小値をソート結果データの最小値として主記憶装置に出力し、出力されたデータが属していたブロックに次の最小値のデータがあるか否かを判断し、あれば最小値のデータ列に挿入し、全てのブロックが空になった時点で完了する、ソート処理装置を開示しているに過ぎない。
特許文献3は、予測レコードに基づいてレコードブロックに含まれるレコードを全て取得する前に、レコード列を選択する処理を開始して、効率的なレコードの入力を実現した、マージ処理装置を開示しているに過ぎない。
特許文献4は、単に複数配列のマージを扱っているに過ぎない。また、特許文献4では、ベクトル処理(SIMD)のような並列計算機を用いて疎行列疎ベクトル積を高速に実行する上での課題を認識してはいない。
特許文献5は、単に、競合検出を実行するための方法および装置を開示しているに過ぎない。
本発明の目的は、上述した課題を解決し、ソート済み集合のユニオン処理を、並列計算機を用いて高速に実行させることができる、並列ユニオン制御装置等を提供することにある。
本発明の一態様に係る並列ユニオン制御装置は、N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御装置であって、前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御手段と、メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力手段と、並列で行うユニオン処理が終了したかどうかを判定する終了判定手段と、を備える。
本発明の一態様に係る並列ユニオン制御方法は、N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御方法であって、情報処理装置によって、前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御を行い、メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力を行い、並列で行うユニオン処理が終了したかどうかを判定する終了判定を行う。
本発明の一態様に係る記憶媒体は、N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、コンピュータに、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御用プログラムであって、前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御処理と、メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力処理と、並列で行うユニオン処理が終了したかどうかを判定する終了判定処理と、を前記コンピュータに実行させる並列ユニオン制御用プログラムを記憶する。
さらに、本発明の態様は、上述の記憶媒体に格納されているプログラムによっても実現される。
本発明によれば、ソート済み集合のユニオン処理を、並列計算機を用いて高速に実行させることができる。
ベクトル計算機を含む計算機システムの概略構成を示すブロック図である。 512個のソート済み集合(入力集合)から256組のペアを作り、図1に示したベクトル計算機に、256回のユニオン処理を並列に実行させる例を示す図である。 本発明の第1の実施の形態に係る並列ユニオン制御装置の構成を示すブロック図である。 図3に示す並列ユニオン制御装置に用いられる要素比較制御部が制御するベクトル演算器の演算器と、この演算器に入出力する入力集合および出力集合を格納するベクトルレジスタとの接続関係を示す図である。 図3に示す並列ユニオン制御装置に用いられる要素比較制御部の構成の一例を示す図である。 図3に示す並列ユニオン制御装置の処理全体の動作を説明するためのフローチャートである。 図3に示す並列ユニオン制御装置に用いられる要素比較制御部での比較処理制御の詳細を示すフローチャートである。 図3に示す並列ユニオン制御装置に用いられる終了判定部での終了判定の詳細を示すフローチャートである。 本発明の第2の実施の形態に係る複数ユニオン制御装置の構成を示すブロック図である。 図9に示した複数ユニオン制御装置の処理全体の動作を説明するためのフローチャートである。 本発明の第3の実施の形態に係る並列ユニオン制御装置を示したブロック図である。 図11に示した並列ユニオン制御装置の動作を説明するためのフローチャートである。 本発明の第3の実施の形態に係る複数ユニオン制御装置の構成を示すブロック図である。 図13に示した複数ユニオン制御装置の処理全体の動作を説明するためのフローチャートである。 本発明の第4の実施の形態に係る複数ユニオン制御装置の構成を示すブロック図である。 図15に示した複数ユニオン制御装置の処理全体の動作を説明するためのフローチャートである。 本発明の第5の実施の形態に係る並列ユニオン制御装置の構成を示すブロック図である。 図17に示した並列ユニオン制御装置の動作を説明するためのフローチャートである。 本発明の第5の実施の形態に係る複数ユニオン制御装置の構成を示すブロック図である。 図19に示した複数ユニオン制御装置の処理全体の動作を説明するためのフローチャートである。 本発明の実施の形態に係る、並列ユニオン制御装置、及び、複数ユニオン制御装置として動作できるコンピュータのハードウェア構成の例を表す図である。
[前提技術]
本発明の実施の形態の説明に先立って、説明に必要な諸概念について記述する。
図1を参照して、ベクトル計算機A100について説明する。ベクトル計算機A100は、数値を複数個格納できるレジスタ(ベクトルレジスタ)A120を持つ。ベクトルレジスタA120内の要素の数をベクトル長と呼ぶ。ベクトル計算機A100は、ベクトルレジスタA120内の複数の数値に同様の演算を並列に実行するベクトル演算器A110を有する。ベクトル演算器A110は、例えば、N(Nは2以上の整数)個の演算器(図示せず)を含む。Nは、例えば、256であってよい。
また、ベクトル計算機A100は、ベクトル演算器A110の演算単位(演算器)を制御するマスクレジスタA130を備える。ベクトル計算機A100では、マスクレジスタA130のビットが1である演算単位(演算器)では演算を実行し、ビットが0である演算単位(演算器)では演算を実行しない、といった操作ができる。
ベクトル計算機A100には、メモリ(主記憶装置)B100が接続される。ベクトル計算機A100とメモリB100とは、制御装置C100によって制御される。
なお、後述する本発明の実施の形態ではベクトル計算機を対象としているが、GPGPU(General-Purpose computing on graphics processing units)のような命令レベルでの並列化を実行する計算機アーキテクチャにおいても本発明は効果を発揮する。
ここで、GPGPUとは、画像処理を専門とする演算装置であるGPU(Graphics Processing Unit)の演算資源を画像処理以外の目的に応用する技術である。GPUは元々グラフィックス演算を専門とするアクセラレータであるが、GPUの高い演算性能をグラフィックス演算だけでなく、より汎用的で自由度の高い計算に用いるのがGPGPUである。以下、本明細書では、ベクトル計算機やGPGPUを総称して、「並列計算機」と呼ぶことにする。
なお、この技術分野において周知のように、GPUは複数のコアを搭載しており、単一のコアでは複数の命令は実行できないが、単純な命令を実行できるコアを多く搭載することで演算性能を高めている。また、GPUはそれぞれのコアで、同一の命令を行うスレッドを同時に複数個実行できるSIMT(Single Instruction Multiple Thread)アーキテクチャである。そのため、GPUは同一命令を何度も繰り返し実行するような演算や、N体問題や行列積などのメモリアクセス量に対して演算量の多い計算に適している。これらの計算はGPU上で高い演算性能を出すことができる。
次に、本発明の実施の形態が扱う処理である、ソート済み集合のユニオン処理について説明する。ここで、「集合」とは、要素の集まりのことであり、重複する要素を含まない。すなわち、集合では、その要素は互いに等しくはない、ことを特徴とする。また、本発明の実施の形態では集合の要素間に順序(大きい、もしくは、小さい、もしくは等しい)関係をつけることができると想定する。例えば、整数や小数には順序関係をつけることができる。また、「ソート済み集合」とは、集合の要素に順番が決まっており、前の順番の要素が後の順番の要素よりも大きいか等しい(記号で書くと≦、これを昇順という)、もしくは、小さいか等しい(記号で書くと≧、これを降順という)という関係が成り立つ集合を指す。ソート済み集合では、要素はインデックスもしくはポインタなどで指定される。昇順でも降順でも本質的には変わらない。そこで、以降の説明ではソート済み集合は、要素が昇順に並んでいる集合であるとする。
次に、ソート済み集合のユニオン処理について説明する。この処理は、前述したように、入力集合となるソート済み集合(2つ以上)に含まれる入力要素をすべて含み、かつ重複した入力要素を省いた状態でそれ以外の要素は含まない、出力要素から成るソート済み集合を出力集合として出力するような処理である。次に、具体例を挙げて説明する。
以下では、入力集合として次の3つのソート済み集合A1、A2、A3を考える。ここでは、A1、A2、A3を、それぞれ、第1乃至第3の入力集合と呼ぶことにする。これら入力集合はすべてソート済みであることに注意する。
A1: [1, 4, 6, 8], A2: [4, 6, 7, 9], A3: [2, 4, 8]
この入力集合に対するユニオン処理の結果である出力集合Bは以下のようになる。
B: [1, 2, 4, 6, 7, 8, 9]
ユニオン処理の出力集合Bを得るためには、第1乃至第3の入力集合A1、A2、A3に対してひとつずつユニオン処理を施していけばよい。すなわち、第1の入力集合A1と第2の入力集合A2とにユニオン処理を行い、その出力となるソート済み集合と第3の入力集合A3とについてユニオン処理を行うことによって、最終的な出力集合Bを得ることができる。第1乃至第3の入力集合A1, A2, A3のユニオン処理をする順番はどのようでも良い。
なお、上述した入力集合A1、A2、A3に対してマージ処理を施した場合、その結果である出力集合Cは次のようになる。
C: [1, 2, 4, 4, 4, 6, 6, 7, 8, 8, 9]
詳述すると、マージ処理では、重複した要素を削除しないので、入力集合の入力要素の総数と出力集合の出力要素の数とは等しい。これに対して、ユニオン処理では、重複した要素を削除するので、出力集合の出力要素の数が入力集合の入力要素の総数より少なくなる。したがって、ユニオン処理を繰り返すことによって、得られる出力集合の出力要素は数が徐々に少なくなってくる。これがユニオン処理とマージ処理との間の相違点である。
次に、本発明を実施するための形態について図面を参照して詳細に説明する。
<第1の実施の形態>
以下において、本発明の第1の実施の形態に係る並列ユニオン制御装置について説明する。並列ユニオン制御装置は、図1の制御装置C100として使用されるものである。
並列ユニオン制御装置は、ベクトルレジスタA120の要素の数(ベクトル長)だけペアになったソート済み集合(入力集合)に対して、それぞれの入力集合のペアのユニオン処理(後述する)を、ベクトル演算器A110を用いて並列に実行させる。尚、ベクトル長は、ベクトル演算器A110の演算器の個数であるNに等しい。例えば、ベクトル長Nは256であってよい。
この場合、図2に示されるように、並列ユニオン制御装置は、512個のソート済み集合(入力集合)から256組のペアを作り、ベクトル計算機A100に、256回のユニオン処理を並列に実行させる。ベクトルレジスタA120の各要素(256個ある)が、それぞれのソート済み集合(入力集合)のデータを管理する。
次に、並列ユニオン制御装置を用いてベクトル計算機A100で実行される、ソート済み集合(入力集合)のペアに対するユニオン処理について説明する。
並列ユニオン制御装置は、まず、両方の入力集合の入力要素を指すポインタを定義し、はじめに入力集合の先頭の入力要素を指すものとする。次に、並列ユニオン制御装置は、両方のポインタが指す、入力集合の2つの入力要素をベクトル演算器A110の各演算器で比較させる。比較の結果、2つの入力要素が等しくないとき、並列ユニオン制御装置は、各演算器に小さい方の入力要素を出力要素として選択させ、選択された出力要素を出力のソート済み集合(出力集合)の末尾に追加し、小さい方の入力要素を指すポインタをインクリメントする。比較の結果、2つの入力要素が等しいとき、並列ユニオン制御装置は、その入力要素を選択された出力要素として出力集合の末尾に追加し、両方の入力要素を指すポインタをインクリメントする。並列ユニオン制御装置は、この比較の処理を各演算器に両方のポインタが入力集合の末尾の入力要素を指すまで続けさせる。
<構成の説明>
図3は、本発明の第1の実施の形態に係る並列ユニオン制御装置100の構成を示すブロック図である。並列ユニオン制御装置100は、要素比較制御部101と、レジスタ入出力部102と、終了判定部103と、を備える。
要素比較制御部101は、ベクトル演算器A110の各演算器に、ユニオン処理の対象となる(すなわち、ユニオン処理すべき)一対のソート済み集合(入力集合)の2つの入力要素を比較させる。比較の結果、要素比較制御部101は、演算器に小さい方の入力要素を出力要素として選択させて、選択させた出力要素を出力のソート済み集合(出力集合)の末尾に追加させる。また、要素比較制御部101は、小さい方の入力要素を指すポインタをインクリメントして、そのポインタが入力集合の次の順番の入力要素を指すようにする。比較の結果、2つの入力要素が等しいとき、要素比較制御部101は、演算器にその入力要素を出力要素として選択させて、選択された出力要素を出力集合の末尾に追加させ、両方のポインタをインクリメントする。
図4は、要素比較制御部101が制御するベクトル演算器A110の演算器A1100と、この演算器A1100に入出力する入力集合および出力集合を格納するベクトルレジスタA120との接続関係を示す図である。
演算器A1100は、比較器A1102と選択器A1104とから成る。比較器A1102の一対の入力端子には、ベクトルレジスタA120の第1及び第2の入力オペランドレジスタA121およびA122が接続される。選択器A1104の出力端子には、ベクトルレジスタA120の出力オペランドレジスタA124が接続される。比較器A1102の比較の結果は、要素比較制御部101に供給される。
第1の入力オペランドレジスタA121は、一方の入力集合である第1の入力集合の入力要素を格納する。第2の入力オペランドレジスタA122は、他方の入力集合である第2の入力集合の入力要素を格納する。出力オペランドレジスタA124は、出力集合の出力要素を格納する。出力オペランドレジスタA124は、FIFO(first-in first-out)バッファから成る。
図5は、要素比較制御部101の構成の一例を示す図である。要素比較制御部101は、第1のポインタレジスタ1011と、第2のポインタレジスタ1012と、ポインタ制御部1014とを含む。
第1のポインタレジスタ1011は、第1の入力オペランドレジスタA121に格納されている第1の入力集合の入力要素を指す第1のポインタを格納する。第2のポインタレジスタ1012は、第2の入力オペランドレジスタA122に格納されている第2の入力集合の入力要素を指す第2のポインタを格納する。ポインタ制御部1014は、上記比較の結果に応答して、第1および第2のポインタレジスタ1011および1012を制御する。
換言すれば、要素比較制御部101は、演算器A1100を、比較器A1102と選択器A1104との組み合わせとして動作させるように制御する。
図3に戻って、レジスタ入出力部102は、要素比較制御部101の制御下で演算器A1100が比較する2つの入力要素から成る第1および第2の入力集合を、それぞれ、ベクトル計算機A100(図1)に接続されたメモリB100からベクトルレジスタA120の第1及び第2の入力オペランドレジスタA121およびA122上にロードする。また、要素比較制御部101の制御下での演算器A1100での比較の処理が終了後に、レジスタ入出力部102は、ベクトルレジスタA120の出力オペランドレジスタA124に格納されている出力要素をベクトル計算機A100に接続されたメモリB100にストアする。
終了判定部103は、ベクトル長分の並列に実行するユニオン処理を終了させるか否かを判定する。終了判定部103は、ソート済み集合(入力集合)のペアに対するユニオン処理が終了したかどうかを表す終了フラグを管理する。詳述すると、終了フラグは、ベクトル計算機A100のマスクレジスタA130上に保持される。ペアになったソート済み集合(入力集合)の入力要素を指すポインタ両方が、それぞれの入力集合の末尾を指すと判定されたとき、終了判定部103は、対応する終了フラグを1にする。
終了フラグが1であるとき、対応するソート済み集合(入力集合)のペアに対するユニオン処理は終了していることになるので、並列ユニオン制御装置100は、ベクトル計算機A100にユニオン処理を実行させない。終了判定部103が、すべてのソート済み集合(入力集合)のペアに対する終了フラグが1であると判定したとき、並列ユニオン制御装置100は、処理全体を終了する。
<動作の説明>
図6は、並列ユニオン制御装置100の処理全体の動作を説明するためのフローチャートである。
処理の開始段階で、ベクトル長分Nの終了フラグが確保され、終了フラグの値はすべて0である。また、入力となるベクトル長分の終了フラグはマスクレジスタA130で保持される。ここでは、ユニオン処理を行うペアの入力集合の一方を「左集合」と呼び、他方を「右集合」と呼ぶ。また、左集合の入力要素を指すポインタを「左ポインタ」と呼び、右集合の入力要素を指すポインタを「右ポインタ」と呼ぶ。
尚、前述から明らかなように、左集合は第1の入力集合とも呼ばれ、右集合は第2の入力集合とも呼ばれる。また、左ポインタは第1のポインタとも呼ばれ、右ポインタは第2のポインタとも呼ばれる。
はじめに、左ポインタおよび右ポインタは、それぞれ、左集合および右集合の最初の入力要素を指すようになっている。ベクトル長分の左ポインタおよび右ポインタが格納されるレジスタを、それぞれ、「左ポインタレジスタ」および「右ポインタレジスタ」と呼ぶ。また、左集合および右集合の入力要素が格納されるベクトルレジスタを、それぞれ、「左要素レジスタ」および「右要素レジスタ」と呼ぶ。
尚、前述から明らかなように、左ポインタレジスタは第1のポインタレジスタ1011とも呼ばれ、右ポインタレジスタは第2のポインタレジスタ1012とも呼ばれる。また、左要素レジスタは、第1の入力オペランドレジスタA121とも呼ばれ、右要素レジスタは、第2の入力オペランドレジスタA122とも呼ばれる。
ステップS1101では、ベクトル長分のソート済み集合(入力集合)に係るループ(ループ番号iがそれぞれの左集合および右集合のペアに対応)のはじまりを表す。このループの中の処理はベクトル演算器A110(図1)を用いて並列に実行され得る。
ステップS1102で、終了判定部103は、i番目のペアに対応する終了フラグが1かどうかを判定する。ステップS1102でNoのとき、並列ユニオン制御装置100は次のステップS1103の比較処理制御にすすむ。ステップS1102でYesのとき、並列ユニオン制御装置100はステップS1103,S1104の処理を実行しない。これは終了フラグをマスクレジスタA130に置き、ベクトル演算器A110で判定することによって並列に実行され得る。
ステップS1103で、要素比較制御部101がベクトル演算器A110の演算器A1100に比較処理を行うように制御する。
図7は、要素比較制御部101での比較処理制御の詳細を示すフローチャートである。
先ず、レジスタ入出力部102は、左ポインタpLおよび右ポインタpRが指す入力要素xLおよびxRを含む左集合および右集合を、メモリB100から、それぞれ、左要素レジスタA121および右要素レジスタA122のi番目(図2参照)に格納する(ステップS1201)。
次に、ステップS1202で、要素比較制御部101は、「pRが右集合の末尾を指すまたはxL< xR」という条件の判定を行う。ステップS1202でYesのとき、要素比較制御部101は、演算器A1100に、左ポインタ1011が指す入力要素xLを出力要素として選択させる。さらに、要素比較制御部101は、演算器A1100に、出力要素として選択した入力要素xLを、出力のソート済み集合(出力集合)を格納する出力オペランドレジスタA124の末尾に追加させる。そして、要素比較制御部101は、左ポインタレジスタ1011の左ポインタpLをインクリメントする(ステップS1203)。
ステップS1202でNoのとき、要素比較制御部101は、「pLが左集合の末尾を指すまたはxR < xL」という条件の判定を行う(ステップS1204)。ステップS1204でYesのとき、要素比較制御部101は、演算器A1100に、右ポインタが指す入力要素xRを出力要素として選択させる。さらに、要素比較制御部101は、演算器A1100に、出力要素として選択した入力要素xRを、出力集合を格納する出力オペランドレジスタA124の末尾に追加させる。そして、要素比較制御部101は、右ポインタレジスタ1012の右ポインタpRをインクリメントする(ステップS1205)。
ステップS1204でNoのとき、xL=xRということになる。その場合、要素比較制御部101は、演算器A1100に、この入力要素を出力要素として選択させる。さらに、要素比較制御部101は、演算器A1100に、出力要素として選択した入力要素を、出力集合を格納する出力オペランドレジスタA124の末尾に追加させる。そして、要素比較制御部101は、左ポインタレジスタ1011の左ポインタpLと、右ポインタレジスタ1012の右ポインタpRと、をインクリメントする(ステップS1206)。以上で、比較処理制御S1103は終了である。
図6に戻って、次にステップS1104で、終了判定部103が終了判定を行う。
図8は、終了判定部103での終了判定の詳細を示すフローチャートである。
先ず、終了判定部103は、「pLが左集合の末尾を指すAND pRが右集合の末尾を指す」との条件判定を行う(ステップS1301)。ステップS1301でYesのとき、終了判定部103は、i番目の終了フラグに1を代入し処理を終了する。一方、ステップS1301でNoのとき、終了判定部103は何もせずに、処理を終了する。以上が、ステップS1104の終了判定である。
図6に戻って、ステップS1105において、ループの処理が終了する。
次に、ステップS1106で、終了判定部103がすべての終了フラグが1であるかどうかを判定する。ステップS1106でYesであるとき、並列ユニオン制御装置100は全体の処理を終了する。ステップS1106でNoであるとき、並列ユニオン制御装置100はステップS1101のループの処理に戻る。
以上、図3を用いて並列ユニオン制御装置100の処理全体の動作について説明した。以上の説明では、ユニオン処理の入力となるソート済み集合(入力集合)のペアがベクトル計算機A100のベクトル長Nだけあると想定したが、本発明の実施の形態では、ペアの数はそれ以下でも構わない。この場合、処理を行わない終了フラグをはじめから1に設定しておけば良い。
また、第1の実施の形態では、今回の並列ユニオン処理を一回行い、入力のソート済み集合(入力集合)の数2Nが、出力集合の数Nとして半分になった(図2のStep 1参照)。この並列ユニオン処理を繰り返すことによって、最終的に単一のソート済み集合から成る出力集合を出力として得ることができる(図2のStep 2および「繰り返し」参照)。詳しくは次の実施の形態で説明する。
<効果の説明>
次に、第1の実施の形態の効果について説明する。
第1の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
<第2の実施の形態>
次に、本発明の第2の実施の形態に係る複数ユニオン制御装置について説明する。
<構成の説明>
図9は、本発明の第2の実施の形態に係る複数ユニオン制御装置1000の構成を示すブロック図である。
複数ユニオン制御装置1000は、先に示した並列ユニオン制御装置100を含む。複数ユニオン制御装置1000は、並列ユニオン制御装置100に加えて、プロセス完了判定部1010と、集合ペア作成部1020と、を更に備える。
次に、複数ユニオン制御装置1000の働きを簡単に説明する。
複数ユニオン制御装置1000は、並列ユニオン制御装置100を繰り返し使用して、複数のソート済み集合を入力集合としてとり、そのユニオン処理の結果として、ただ1つのソート済み集合を出力集合として出力する。
プロセス完了判定部1010は、並列ユニオン制御装置100での並列ユニオン処理の制御が繰り返されるなかで、残るソート済み集合(入力集合)の数が1つかどうかを判定し、複数ユニオン制御装置1000の処理終了を決定する。
集合ペア作成部1020は、複数のソート済み集合から並列ユニオン制御装置100の制御下で、ベクトルレジスタA120の第1および第2の入力オペランドレジスタA121およびA122の入力となるソート済み集合(入力集合)のペア(複数)を作成する。
<動作の説明>
図10は、複数ユニオン制御装置1000の処理全体の動作を説明するためのフローチャートである。
まず、Sを複数ユニオン制御装置1000の対象となるすべてのソート済み集合とする(ステップS1401)。ここでは、すべてのソート済み集合Sの数は、2Nに等しいとする。
集合ペア作成部1020は、次のステップで並列ユニオン制御装置100の制御下で、第1および第2の入力オペランドレジスタA121およびA122の入力とするソート済み集合(入力集合)のペアを、すべてのソート済み集合Sから作成する(ステップS1402)。入力集合のペアの数は、ベクトル長か、すべてのソート済み集合Sの属する集合の数2Nの半分Nのいずれか小さい方とする。
ここで、集合ペアの作成方法にはいくつか考えられる。まず一つの作成方法は、すべてのソート済み集合Sからランダムに入力集合のペアを作成する方法である。もう一つの作成方法は、作成するペアの数だけ、入力集合の入力要素の数が小さい方から、すべてのソート済み集合Sからソート済み集合(入力集合)を選び、ランダムに入力集合のペアを作成する方法である。
引き続いて、作成した入力集合のペアに対して、並列ユニオン制御装置100によりユニオン処理を施す(ステップS1403)。この動作は上述した第1の実施の形態で説明した通りである。ユニオン処理のあと、複数ユニオン制御装置1000は、入力集合をすべてのソート済み集合Sから削除して、出力されたソート済み集合(出力集合)をすべてのソート済み集合Sに追加する。
次に、プロセス完了判定部1010は、すべてのソート済み集合Sに含まれる集合が1つかどうかを判定する(ステップS1404)。ステップS1404でYesのとき、複数ユニオン制御装置1000の動作は終了する。ステップS1404でNoのとき、複数ユニオン制御装置1000は、ステップS1402に戻り処理を実行する。
<効果の説明>
次に、第2の実施の形態の効果について説明する。
第2の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
<第3の実施の形態>
次に、本発明の第3の実施の形態に係る並列ユニオン制御装置について説明する。
この並列ユニオン制御装置は、一つのソート済み集合(入力集合)のペアを、ベクトル計算機A100を用いて並列にユニオン処理を行わせ、一つのソート済み集合を出力集合として出力させる。具体的には、並列ユニオン制御装置は、ペアに属するソート済み集合(入力集合)をベクトル長分だけ分割し、ベクトル演算器A110の演算単位(演算器A1100)がそれぞれの部分集合に対してユニオン処理を行う。最後に、並列ユニオン制御装置は、独立にユニオン処理したソート済み集合を結合して、出力集合として出力する。
<構成の説明>
図11は、本発明の第3の実施の形態に係る並列ユニオン制御装置200を示したブロック図である。第3の実施の形態の並列ユニオン制御装置200は、要素比較制御部201と、レジスタ入出力部202と、終了判定部203と、集合分割結合部204と、を備える。
要素比較制御部201、レジスタ入出力部202、および終了判定部203は、それぞれ、上述した第1の実施形態の並列ユニオン制御装置100の要素比較制御部101、レジスタ入出力部102、および終了判定部103と同じであるので、それらの説明を省略する。
集合分割結合部204は、入力となるソート済み集合(入力集合)のペアを所定の数だけ入力部分集合として分割する。ここで、ソート済み集合(入力集合)のペアを分割するとは、ペアの左集合と右集合について所定の数だけ分割することを指す。また、ソート済み集合(入力集合)を分割するとは、分割前のソート済み集合(入力集合)において「所定の数-1」だけ境界を定めて、その境界の前後でソート済み集合(入力集合)を入力部分集合として分割することを指す。
以下に、具体例を示す。ソート済み集合として入力集合A: [1,3,5,8,9,10,11] を3つの入力部分集合に分割する例を示す。この例では、一つめの境界を5と8の間、二つめの境界を9と10の間にとることにする。このとき分割後のソート済み集合は、それぞれ、第1乃至第3の入力部分集合A1, A2,およびA3として、
A1:[1,3,5], A2: [8,9], A3:[10,11]
となる。これは一例であり他の分割もありうる。
集合分割結合部204は、ソート済み集合(入力集合)のペアを分割するときに、左集合のj番目の分割と右集合のj番目の分割が取りうる値の範囲をRj とすると、すべてのjについてRjが重なりあっていてはいけない、という条件を満たす。これはソート済み集合(入力集合)を分割後に並列にユニオン処理を行った結果である複数の出力部分集合を結合するときに、単に複数の出力部分集合を連結すれば十分であるようにするためである。
次に、具体例を見る。ソート済み集合(入力集合)のペア(A,B)である左集合および右集合をA:[ 1,3,5,8,9,10,11 ], B:[4,5,6,7,8,9,13]とする。このとき分割後のソート済み集合は、それぞれ、第1乃至第3の左部分集合A1, A2,およびA3および第1乃至第3の右部分集合B1, B2,およびB3として、
A1:[1,3,5], A2: [8,9], A3:[10,11]
B1:[4,5,6,7], B2: [8,9], B3:[13]
となる。分割後のソート済み集合AjとBjの入力要素の取りうる範囲が、他のjの範囲と重なり合っていない。これの分割は一例であり他の分割もありうる。ただし分割後のソート済み集合AjとBjの入力要素の数の和が、jにかけて等しくなるようにするのが望ましい。その理由は、並列ユニオン処理の負荷が均等になるからである。
集合分割結合部204は、分割後ユニオン処理を行った結果である出力部分集合を所定の数だけ結合する。出力部分集合の結合は、分割がそれぞれのソート済み集合(入力集合)の入力要素の範囲が重なりあわないように行われているので、範囲が小さい方から単に連結すれは良い。
次に、具体例をみる。ユニオン処理後のソート済み集合(出力部分集合)が、それぞれ、第1乃至第3の出力部分集合C1, C2,およびC3として、
C1:[1,3,4,5,6,7], C2: [8,9] C3: [10,11,13]
であるとする。このとき、結合後のソート済み集合である出力集合Cは、
C:[1,3,4,5,6,7,8,9,10,11,13]
となる。結合後のソート済み集合である出力集合Cは、ペアである分割前の左集合Aと分割前の右集合Bとをユニオン処理した結果になっている。
<動作の説明>
図12は、並列ユニオン制御装置200の動作を説明するためのフローチャートである。ステップS2101とS2018を除き、図6に示した第1の実施の形態のフローチャートと同じであるので、それらの説明は省略する。
ステップS2101で、集合分割結合部204は、ソート済み集合(入力集合)のペアを所定の数だけ入力部分集合に分割する。所定の数とはベクトル長を超えない数である。
ステップS2108で、集合分割結合部204は、ユニオン処理したソート済み集合(出力部分集合)を結合し、ひとつのソート済み集合(出力集合)とする。
<効果の説明>
次に、第3の実施の形態の効果について説明する。
第3の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
<第4の実施の形態>
次に、本発明の第4の実施の形態に係る複数ユニオン制御装置について説明する。
複数ユニオン制御装置は、上述した第3の実施の形態の並列ユニオン制御装置200を繰り返し使用することで、ベクトル計算機A100に、複数のソート済み集合(入力集合)に対してユニオン処理を行わせ、ひとつのソート済み集合を出力集合として出力させる。複数ユニオン制御装置は、繰り返しごとに、ソート済み集合(入力集合)のペアを生成し、ベクトル計算機A100に並列ユニオン処理を行わせる。複数ユニオン制御装置は、ソート済み集合がひとつになるまで、ペアの生成と、ベクトル計算機A100による並列ユニオン処理と、を繰り返す。
<構成の説明>
図13は、本発明の第4の実施の形態に係る複数ユニオン制御装置2000の構成を示すブロック図である。
複数ユニオン制御装置2000は、並列ユニオン制御装置200と、プロセス完了判定部2010と、集合ペア作成部2020と、を備える。
並列ユニオン制御装置200は、図11に示す第3の実施の形態で説明したものと同じであるので、その説明を省略する。
プロセス完了判定部2010は、ユニオン処理の対象となるソート済み集合が1つであるかどうかを判定し、1つであれば全体の処理を終了する。
集合ペア作成部2020は、ユニオン処理の対象となるソート済み集合から、入力集合を2つ選びペアを作成する。
<動作の説明>
図14は、複数ユニオン制御装置2000の処理全体の動作を説明するためのフローチャートである。
図14のフローチャートは基本的には、図10と同じであるので、異なる部分のみを以下で言及する。
ステップS2202で、集合ペア作成部2020は、すべてのソート済み集合Sから入力集合のペアをひとつだけ作成する。Sはユニオン処理の対象となるソート済み集合の集合である。
ステップS2203では、1つの入力集合のペアに対して並列ユニオン制御装置200を用いてベクトル計算機A100にユニオン処理を行わせる。
<効果の説明>
次に、第4の実施の形態の効果について説明する。
第4の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
<第5の実施の形態>
次に、本発明の第5の実施の形態に係る複数ユニオン制御装置について説明する。この複数ユニオン制御装置は、第1の並列ユニオン制御装置100と第2の並列ユニオン制御装置200とを備え、並列ユニオン処理の繰り返しの途中で、第1の並列ユニオン制御装置100による処理から第2の並列ユニオン制御装置200の処理へ切り替える。
<構成の説明>
図15は、本発明の第5の実施の形態に係る複数ユニオン制御装置3000の構成を示すブロック図である。
複数ユニオン制御装置3000は、複数のソート済み集合を入力集合として入力として、ベクトル計算機A100にそれらをユニオン処理させて得られた、ひとつのソート済み集合を出力集合として出力する。
図15に示されるように、複数ユニオン制御装置3000は、第1の並列ユニオン制御装置100と、第2の並列ユニオン制御装置200と、プロセス完了判定部3010と、集合ペア作成部3020と、ユニオン制御装置切替部3100と、を備える。
ユニオン制御装置切替部3100は、所定の条件に基づき、第1の並列ユニオン制御装置100によるユニオン処理から第2の並列ユニオン制御装置200によるユニオン処理に切り替える。ここで、所定の条件とは、例えば、対象となるソート済み集合の数がしきい値を超えているか否か、である。所定の条件はこれには限定されない。
<動作の説明>
図16は、複数ユニオン制御装置3000の動作を説明するためのフローチャートである。
ステップS3101で、Sをユニオン処理の対象となるすべてのソート済み集合とする。
ステップS3102で、集合ペア作成部3020が、ベクトル長もしくは所定の数だけすべてのソート済み集合Sからソート済み集合(入力集合)のペアを作成する。
ステップS3103で、第1の並列ユニオン制御装置100を用いて、ベクトル計算機A100に先ほど作成したソート済み集合のペアに対して並列にユニオン処理を行わせる。ユニオン処理の入力集合をすべてのソート済み集合Sから削除して、出力集合をすべてのソート済み集合Sに追加する。
ステップS3104において、ユニオン制御装置切替部3100が、所定の条件を元にユニオン制御装置を切り替えるかどうかを判定する。ここで、所定の条件とは、Sに含まれる集合の数が所定のしきい値よりも小さいかどうか、等である。ステップS3104でYesのとき、処理はステップS3105に進む。ステップS3104でNoのとき、処理はステップS3102に戻る。
ステップS3105では、すべてのソート済み集合Sからソート済み集合のペアをひとつ作成する。
ステップS3106では、第2の並列ユニオン制御装置200を用いて、ベクトル計算機A100に先ほど作成したペアに対して並列にユニオン処理を行わせる。また、ユニオン処理の入力集合をすべてのソート済み集合Sから削除し、出力集合をすべてのソート済み集合Sに追加する。
ステップS3107において、プロセス完了判定部3010が、すべてのソート済み集合Sに属するソート済み集合の数が1であるかどうかを判定する。ステップS3107でYesのとき、複数ユニオン制御装置3000は、全体の処理を終了する。ステップS3107でNoのとき、処理はステップS3105に戻る。
<効果の説明>
次に、第5の実施の形態の効果について説明する。
はじめ、ソート済み集合の数が(ベクトル長に比べて)多い。このため、第1の並列ユニオン制御装置100を用いることによって、ベクトル演算器A110を有効に活用できる。また、並列ユニオン処理が繰り返されると、ソート済み集合の数が少なるが、ひとつのソート済み集合の要素の数が(ベクトル長に比べて)多くなる。そのため、このとき第2の並列ユニオン装置200を用いることによって、ベクトル演算器A110を有効に活用することができる。したがって全体のユニオン処理において、ベクトル演算器A110を有効に活用することができる。
<第6の実施の形態>
次に、本発明の第6の実施の形態に係る並列ユニオン制御装置について説明する。
この並列ユニオン制御装置は、複数のソート済み集合のペアに対して、ペアごとに適切な分割数を決定し、決定した分割数に基づき集合のペアを分割して、複数の分割された集合のペアに対してベクトル計算機A100に並列にユニオン処理を行わせる。
入力となるソート済み集合のペアの数はベクトル長とは限らないが、分割されたあとの集合のペアの数(すなわち、すべての集合のペアに対する分割数の和)がベクトル長に等しいとベクトル演算器A110を効率よく利用できる。
<構成の説明>
図17は、本発明の第6の実施の形態に係る並列ユニオン制御装置400の構成を示すブロック図である。
並列ユニオン制御装置400は、要素比較制御部401と、レジスタ入出力部402と、終了判定部403、集合分割結合部404と、分割数決定部405と、を備える。
集合分割結合部404と分割数決定部405とが、図3に示した第1の実施の形態のものと異なるので、以下では、集合分割結合部404と分割数決定部405とについて説明する。
分割数決定部405は、ユニオン処理の対象となるソート済み集合のペアそれぞれに対して、分割数を決定する。分割数を決定する方法には、分割数をそれぞれのペアに属する両者の集合の要素数の和に比例させ、かつ、すべてのペアに対する分割数の和がベクトル長に等しくなる、ようにする方法がある。
集合分割結合部404は、分割数決定部405が決定した分割数に基づいて、ソート済み集合(入力集合)のペアを複数の入力部分集合に分割する。ユニオン処理を行ったのち、集合分割結合部404は、分割前に同じソート済み集合のペアに属していた複数の出力部分集合を結合して、1つの出力集合を得る。
並列ユニオン制御装置の動作を、具体例で見る。3つの集合の第1乃至第3のペア(XA, YA), (XB, YB), (XC, YD)が入力集合であるとする。それぞれのペアの要素数の和は、第1のペア(XA, YA)が1000、第2のペア(XB, YB)が2000、 第3のペア(XC, YC)が5000であるとする。このとき、それぞれのペアの分割数を要素数の和に比例させ、かつ分割数の和がベクトル長(ここでは8とする)に等しくなるようにする。
この場合、それぞれの分割数は、第1のペア(XA, YA)が1、第2のペア(XB, YB)が2、 第3のペア(XC, YC)が5、となる。第1のペア(XA, YA)は分割数1なので分割しない。第2のペア(XB, YB)は、(XB1, YB1)、(XB2, YB2)と2つに分割される。第3のペア(XC, YC)は(XC1, YC1)、…、(XC5, YC5)と5つに分割される。それぞれの分割ごとに並列にユニオン処理した結果を(XA, YA)->ZA、(XB1, YB1)->ZB1、…、(XC1, YC1)->ZC1、…とする。ユニオン処理した出力部分集合で、分割前に同じソート済み集合に属するものを結合する。これはつまり、ZB1とZB2とを結合してZBとすると共に、ZC1、…、ZC5を結合してZCとする。したがって、並列ユニオン制御装置400は、入力集合として(XA, YA), (XB, YB), (XC, YC)を取り、ユニオン処理した結果としてZA, ZB, ZC を出力集合として出力する。
<動作の説明>
図18は、並列ユニオン制御装置400の動作を説明するためのフローチャートである。
ステップS4101で、分割数決定部405が、入力となるソート済み集合のペアそれぞれに対して、分割数を決定する。
ステップS4102で、集合分割結合部404が、分割数決定部405が決定した分割数に基づき、ソート済み集合のペアを分割する。
ステップS4103からステップS4108のループは、それぞれ、図6に示した第1の実施の形態のステップS1101からステップS1106と同じであるので、それらの説明を省略する。
ステップS4109では、集合分割結合部404が、ユニオン処理したソート済み集合のなかで、分割前に同じソート済み集合に属していたものを結合する。
<効果の説明>
次に、第6の実施の形態の効果について説明する。
第6の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
<第7の実施の形態>
次に、本発明の第7の実施の形態に係る複数ユニオン制御装置について説明する。
複数ユニオン制御装置の働きを簡単に説明する。複数ユニオン制御装置は、並列ユニオン制御装置400を繰り返し使用して、複数のソート済み集合を入力としてとり、そのユニオン処理の結果として、ただ1つのソート済み集合を出力する。
<構成の説明>
図19は、本発明の第7の実施の形態に係る複数ユニオン制御装置4000の構成を示すブロック図である。
複数ユニオン制御装置4000は、並列ユニオン制御装置400と、プロセス完了判定部4010と、集合ペア作成部4020と、を備える。
プロセス完了判定部4010は、対象のソート済み集合の数が1つかどうかを判定して、1つであった場合は全体の処理を終了し、そうでない場合はユニオン処理を繰り返す。
集合ペア作成部4020は、対象の複数のソート済み集合から所定の数だけソート済み集合のペアを作成し、並列ユニオン制御装置400の入力とする。
<動作の説明>
図20は、複数ユニオン制御装置4000の動作を説明するためのフローチャートである。
図20のフローチャートは基本的には、図10と同じであるので、以下では異なる部分のみを言及する。
ステップS4202で、集合ペア作成部4020は、すべてのソート済み集合Sから集合のペアを所定の数だけ作成する。Sはユニオン処理の対象となるソート済み集合の集合である。
ステップS4203では、所定の数の集合のペアに対して並列ユニオン制御装置400を用いてユニオン処理を行う。また、入力となったソート済み集合(入力集合)をすべてのソート済み集合Sから削除し、出力であるソート済み集合(出力集合)をすべてのソート済み集合Sへと追加する。
<効果の説明>
次に、第7の実施の形態の効果について説明する。
第7の実施の形態によれば、ソート済み集合(入力集合)のユニオン処理を、ベクトル計算機(並列計算機)A100のベクトル演算器(コア)A110を用いて高速に実行させることができる。
尚、上記第1、第3、および第6の実施の形態において、並列ユニオン制御装置100、200、および400の各部は、ハードウェアとソフトウェアとの組み合わせを用いて実現可能である。ハードウェアとソフトウェアとを組み合わせた形態では、RAM(random access memory)に並列ユニオン制御用プログラムが展開され、該並列ユニオン制御用プログラムに基づいてCPU(central processing unit)などの情報処理装置(コンピュータ)のハードウェアを動作させることによって、各部を各種手段として実現する。また、該並列ユニオン制御用プログラムは、記憶媒体に記録されて頒布されても良い。当該記憶媒体に記録された並列ユニオン制御用プログラムは、有線、無線、又は記憶媒体そのものを介して、メモリに読込まれ、処理部等を動作させる。尚、記憶媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスクなどが挙げられる。
上記第1、第3、および第6の実施の形態を別の表現で説明すれば、並列ユニオン制御装置100、200、および400として動作させるコンピュータを、RAMに展開された並列ユニオン制御用プログラムに基づき、要素比較制御部、レジスタ入出力部、終了判定部、集合分割結合部、および分割数決定部として動作させることで実現することが可能である。
同様に、上記第2、第4、第5および第7の実施の形態において、複数ユニオン制御装置1000、2000、3000、および4000の各部は、ハードウェアとソフトウェアとの組み合わせを用いて実現可能である。ハードウェアとソフトウェアとを組み合わせた形態では、RAM(random access memory)に複数ユニオン制御用プログラムが展開され、該複数ユニオン制御用プログラムに基づいてCPU(central processing unit)などの情報処理装置(コンピュータ)のハードウェアを動作させることによって、各部を各種手段として実現する。また、該複数ユニオン制御用プログラムは、記憶媒体に記録されて頒布されても良い。当該記憶媒体に記録された複数ユニオン制御用プログラムは、有線、無線、又は記憶媒体そのものを介して、メモリに読込まれ、処理部等を動作させる。尚、記憶媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスクなどが挙げられる。
上記第2、第4、第5および第7の実施の形態を別の表現で説明すれば、複数ユニオン制御装置1000、2000、3000、および4000として動作させるコンピュータを、RAMに展開された複数ユニオン制御用プログラムに基づき、要素比較制御部、レジスタ入出力部、終了判定部、プロセス完了判定部、集合ペア作成部、集合分割結合部、および分割数決定部として動作させることで実現することが可能である。
図21は、本発明の第1、第3、および第6の実施の形態に係る並列ユニオン制御装置、及び、第2、第4、第5および第7の実施の形態に係る複数ユニオン制御装置として動作できるコンピュータのハードウェア構成の例を表す図である。
図21を参照すると、コンピュータ10000は、プロセッサ10001と、メモリ10002と、記憶装置10003と、I/O(Input/Output)インタフェース10004とを含む。また、コンピュータ10000は、記憶媒体10005にアクセスすることができる。メモリ10002と記憶装置10003は、例えば、上述のRAM、ハードディスクなどの記憶装置である。記憶媒体10005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記憶媒体である。記憶装置10003が記憶媒体10005であってもよい。プロセッサ10001は、例えば、上述のCPUである。プロセッサ10001は、メモリ10002と、記憶装置10003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ10001は、I/Oインタフェース10004を介して、例えば、ベクトル計算機にアクセスすることができる。プロセッサ10001は、記憶媒体10005にアクセスすることができる。記憶媒体10005には、コンピュータ10000を、上述の並列ユニオン制御装置として動作させるプログラム、又は、コンピュータ10000を、上述の複数ユニオン制御装置として動作させるプログラムが格納されている。
プロセッサ10001は、記憶媒体10005に格納されている、コンピュータ10000を、並列ユニオン制御装置として動作させるプログラムを、メモリ10002にロードする。そして、プロセッサ10001が、メモリ10002にロードされたプログラムを実行することにより、コンピュータ10000は、並列ユニオン制御装置として動作する。プロセッサ10001は、記憶媒体10005に格納されている、コンピュータ10000を、複数ユニオン制御装置として動作させるプログラムを、メモリ10002にロードしてもよい。そして、プロセッサ10001が、メモリ10002にロードされたプログラムを実行することにより、コンピュータ10000は、複数ユニオン制御装置として動作してもよい。
要素比較制御部101、レジスタ入出力部102、終了判定部103は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。要素比較制御部201、レジスタ入出力部202、終了判定部203、集合分割結合部204は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。要素比較制御部401、レジスタ入出力部402、終了判定部403、集合分割結合部404、分割数決定部405は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。プロセス完了判定部1010、第1のポインタレジスタ1011、第2のポインタレジスタ1012、ポインタ制御部1014、集合ペア作成部1020は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。プロセス完了判定部2010、集合ペア作成部2020は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。プロセス完了判定部3010、集合ペア作成部3020は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。ユニオン制御装置切替部3100、プロセス完了判定部4010、集合ペア作成部4020は、例えば、記憶媒体10005からメモリ10002にロードされたプログラムを実行するプロセッサ10001によって実現できる。
要素比較制御部101、レジスタ入出力部102、終了判定部103の一部又は全部は、専用の回路によっても実現できる。
要素比較制御部201、レジスタ入出力部202、終了判定部203、集合分割結合部204の一部又は全部は、専用の回路によっても実現できる。要素比較制御部401、レジスタ入出力部402、終了判定部403、集合分割結合部404、分割数決定部405の一部又は全部は、専用の回路によっても実現できる。プロセス完了判定部1010、第1のポインタレジスタ1011、第2のポインタレジスタ1012、ポインタ制御部1014、集合ペア作成部1020の一部又は全部は、専用の回路によっても実現できる。プロセス完了判定部2010、集合ペア作成部2020の一部又は全部は、専用の回路によっても実現できる。プロセス完了判定部3010、集合ペア作成部3020の一部又は全部は、専用の回路によっても実現できる。ユニオン制御装置切替部3100、プロセス完了判定部4010、集合ペア作成部4020の一部又は全部は、専用の回路によっても実現できる。
尚、上述したように、本実施の形態に係る並列ユニオン制御装置100、200、400や複数ユニオン制御装置1000、2000、3000、4000は、ソフトウェア関連発明であるとしても、ベクトル計算機A100に高速にユニオン処理を並列に実行させることができるという効果を奏するのであるから、コンピュータ関連技術を改善(向上)するものであり、抽象概念には該当しないのは明らかである。
以上、本発明の実施の形態を、図面を参照しつつ説明してきたが、当業者であれば、他の類似する実施の形態を使用することができること、また、本発明から逸脱することなく適宜形態の変更又は追加を行うことができることに留意すべきである。
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御装置であって、
前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御手段と、
メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力手段と、
並列で行うユニオン処理が終了したかどうかを判定する終了判定手段と、
を備える並列ユニオン制御装置。
(付記2)
前記ソート済み集合は要素が昇順に並んでいる集合であり、
前記要素比較制御手段は、前記比較の結果が等しくないとき、前記演算器に小さい方の入力要素を前記出力要素として選択させて、該小さい方の入力要素を指すポインタをインクリメントし、前記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントする、
付記1に記載の並列ユニオン制御装置。
(付記3)
前記入力集合を複数の入力部分集合に分割して、前記要素比較制御手段に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合手段を更に有する、
付記1又は2に記載の並列ユニオン制御装置。
(付記4)
前記複数の入力部分集合の分割数を決定する分割数決定手段を更に有し、
前記集合分割結合手段は、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
付記3に記載の並列ユニオン制御装置。
(付記5)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御装置であって、
付記1乃至4のいずれか1つに記載の並列ユニオン制御装置と、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成手段と、
ユニオン処理全体が完了したかどうかを判定するプロセス完了判定手段と、
を備える複数ユニオン制御装置。
(付記6)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御装置であって、
それぞれ、付記1に記載の並列ユニオン制御装置である、第1の並列ユニオン制御装置と第2の並列ユニオン制御装置と、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成手段と、
前記第1の並列ユニオン制御装置と前記第2の並列ユニオン制御装置とを切り替えるユニオン制御装置切替手段と、
ユニオン処理全体が完了したかどうかを判定するプロセス完了判定手段と、
を備え、
前記第2の並列ユニオン制御装置は、前記入力集合を複数の入力部分集合に分割して、前記要素比較制御手段に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合手段を更に有する、
複数ユニオン制御装置。
(付記7)
前記第2の並列ユニオン制御装置は、前記複数の入力部分集合の分割数を決定する分割数決定手段を更に有し、
前記集合分割結合手段は、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
付記6に記載の複数ユニオン制御装置。
(付記8)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御方法であって、情報処理装置によって、
前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御を行い、
メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力を行い、
並列で行うユニオン処理が終了したかどうかを判定する終了判定を行う、
並列ユニオン制御方法。
(付記9)
前記ソート済み集合は要素が昇順に並んでいる集合であり、
前記要素比較制御は、前記比較の結果が等しくないとき、前記演算器に小さい方の入力要素を前記出力要素として選択させて、該小さい方の入力要素を指すポインタをインクリメントし、前記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントする、
付記8に記載の並列ユニオン制御方法。
(付記10)
前記情報処理装置によって、前記入力集合を複数の入力部分集合に分割して、前記要素比較制御において、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、
付記8又は9に記載の並列ユニオン制御方法。
(付記11)
前記情報処理装置によって、前記複数の入力部分集合の分割数を決定し、
前記集合を分割し結合することは、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
付記10に記載の並列ユニオン制御方法。
(付記12)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御方法であって、情報処理装置によって、
付記8乃至11のいずれか1つに記載の並列ユニオン制御方法を実施し、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納し、
ユニオン処理全体が完了したかどうかを判定する、
複数ユニオン制御方法。
(付記13)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御方法であって、情報処理装置によって、
それぞれ、付記8に記載の並列ユニオン制御方法である、第1の並列ユニオン制御方法と第2の並列ユニオン制御方法とを実施し、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納し、
前記第1の並列ユニオン制御方法と前記第2の並列ユニオン制御方法とを切り替え、
ユニオン処理全体が完了したかどうかを判定し、
前記第2の並列ユニオン制御方法は、さらに、前記入力集合を複数の入力部分集合に分割して、前記要素比較制御において、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、
複数ユニオン制御方法。
(付記14)
前記第2の並列ユニオン制御方法は、情報処理装置によって、
前記複数の入力部分集合の分割数を決定し、
決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
付記13に記載の複数ユニオン制御方法。
(付記15)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、コンピュータに、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御用プログラムであって、
前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御処理と、
メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力処理と、
並列で行うユニオン処理が終了したかどうかを判定する終了判定処理と、
を前記コンピュータに実行させる並列ユニオン制御用プログラムを記憶する記憶媒体。
(付記16)
前記ソート済み集合は要素が昇順に並んでいる集合であり、
前記要素比較制御処理は、前記コンピュータに、前記比較の結果が等しくないとき、前記演算器に小さい方の入力要素を前記出力要素として選択させて、該小さい方の入力要素を指すポインタをインクリメントさせ、前記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントさせる、
付記15に記載の記憶媒体。
(付記17)
前記入力集合を複数の入力部分集合に分割して、前記要素比較制御処理に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合処理を前記コンピュータに更に実行させる、
付記15又は16に記載の記憶媒体。
(付記18)
前記複数の入力部分集合の分割数を決定する分割数決定処理を前記コンピュータに更に実行させ、
前記集合分割結合処理は、前記コンピュータに、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割させ、前記複数の出力部分集合を前記出力集合に結合させる、
付記17に記載の記憶媒体。
(付記19)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、コンピュータに、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御用プログラムであって、
付記15乃至18のいずれか1つに記載の記憶媒体に格納されている並列ユニオン制御用プログラムを含み、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成処理と、
ユニオン処理全体が完了したかどうかを判定するプロセス完了判定処理と、
を前記コンピュータに実行させる複数ユニオン制御用プログラムを記憶する記憶媒体。
(付記20)
N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、コンピュータに、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御用プログラムであって、
それぞれ、付記15に記載の記憶媒体に格納されている並列ユニオン制御用プログラムである、第1の並列ユニオン制御用プログラムと第2の並列ユニオン制御用プログラムと、を含み、
並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成処理と、
前記第1の並列ユニオン制御用プログラムと前記第2の並列ユニオン制御用プログラムとを切り替えるユニオン制御用プログラム切替処理と、
ユニオン処理全体が完了したかどうかを判定するプロセス完了判定処理と、
を前記コンピュータに実行させ、
前記第2の並列ユニオン制御用プログラムは、前記入力集合を複数の入力部分集合に分割して、前記要素比較制御処理に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合処理を前記コンピュータに更に実行させる、
複数ユニオン制御用プログラムを記憶する記憶媒体。
(付記21)
前記第2の並列ユニオン制御用プログラムは、前記複数の入力部分集合の分割数を決定する分割数決定部処理を前記コンピュータに更に実行させ、
前記集合分割結合処理は、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
付記20に記載の記憶媒体。
この出願は、2018年2月8日に出願された日本出願特願2018-020953を基礎とする優先権を主張し、その開示の全てをここに取り込む。
A100 ベクトル計算機
A110 ベクトル演算器
A1100 演算器
A1102 比較器
A1104 選択器
A120 ベクトルレジスタ
A121 第1の入力オペランドレジスタ
A122 第2の入力オペランドレジスタ
A124 出力オペランドレジスタ
A130 マスクレジスタ
B100 メモリ(主記憶装置)
C100 制御装置
100 並列ユニオン制御装置
101 要素比較制御部
102 レジスタ入出力部
103 終了判定部
200 並列ユニオン制御装置
201 要素比較制御部
202 レジスタ入出力部
203 終了判定部
204 集合分割結合部
400 並列ユニオン制御装置
401 要素比較制御部
402 レジスタ入出力部
403 終了判定部
404 集合分割結合部
405 分割数決定部
1000 複数ユニオン制御装置
1010 プロセス完了判定部
1011 第1のポインタレジスタ
1012 第2のポインタレジスタ
1014 ポインタ制御部
1020 集合ペア作成部
2000 複数ユニオン制御装置
2010 プロセス完了判定部
2020 集合ペア作成部
3000 複数ユニオン制御装置
3010 プロセス完了判定部
3020 集合ペア作成部
3100 ユニオン制御装置切替部
4000 複数ユニオン制御装置
4010 プロセス完了判定部
4020 集合ペア作成部
10000 コンピュータ
10001 プロセッサ
10002 メモリ
10003 記憶装置
10004 I/Oインタフェース
10005 記憶媒体

Claims (10)

  1. N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御装置であって、
    前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動する要素比較制御手段と、
    メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力手段と、
    並列で行うユニオン処理が終了したかどうかを判定する終了判定手段と、
    を備え
    前記要素比較制御手段は、前記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントする、
    並列ユニオン制御装置。
  2. 前記ソート済み集合は要素が昇順に並んでいる集合であり、
    前記要素比較制御手段は、前記比較の結果が等しくないとき、前記演算器に小さい方の入力要素を前記出力要素として選択させて、該小さい方の入力要素を指すポインタをインクリメントる、
    請求項1に記載の並列ユニオン制御装置。
  3. 前記入力集合を複数の入力部分集合に分割して、前記要素比較制御手段に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合手段を更に有する、
    請求項1又は2に記載の並列ユニオン制御装置。
  4. 前記複数の入力部分集合の分割数を決定する分割数決定手段を更に有し、
    前記集合分割結合手段は、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
    請求項3に記載の並列ユニオン制御装置。
  5. N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御装置であって、
    請求項1乃至4のいずれか1つに記載の並列ユニオン制御装置と、
    並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成手段と、
    ユニオン処理全体が完了したかどうかを判定するプロセス完了判定手段と、
    を備える複数ユニオン制御装置。
  6. N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させることを繰り返して、最終的にひとつのソート済み集合から成る出力集合を出力させる複数ユニオン制御装置であって、
    それぞれ、請求項1に記載の並列ユニオン制御装置である、第1の並列ユニオン制御装置と第2の並列ユニオン制御装置と、
    並列ユニオン処理の入力となる入力集合のペアを作成して、作成した入力集合のペアを前記入力オペランドレジスタに格納する集合ペア作成手段と、
    前記第1の並列ユニオン制御装置と前記第2の並列ユニオン制御装置とを切り替えるユニオン制御装置切替手段と、
    ユニオン処理全体が完了したかどうかを判定するプロセス完了判定手段と、
    を備え、
    前記第2の並列ユニオン制御装置は、前記入力集合を複数の入力部分集合に分割して、前記要素比較制御手段に対して、前記一対の入力集合の代わりに一対の入力部分集合を使用して、前記N個の演算器から、前記出力集合の代わりに複数の出力部分集合を出力させるように制御させると共に、前記複数の出力部分集合を結合して前記出力集合を得る、集合分割結合手段を更に有する、
    複数ユニオン制御装置。
  7. 前記第2の並列ユニオン制御装置は、前記複数の入力部分集合の分割数を決定する分割数決定手段を更に有し、
    前記集合分割結合手段は、決定した分割数に基づいて、前記入力集合を前記複数の入力部分集合に分割し、前記複数の出力部分集合を前記出力集合に結合する、
    請求項6に記載の複数ユニオン制御装置。
  8. N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御方法であって、情報処理装置によって、
    前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動し、記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントする要素比較制御を行い、
    メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力を行い、
    並列で行うユニオン処理が終了したかどうかを判定する終了判定を行う、
    並列ユニオン制御方法。
  9. 前記ソート済み集合は要素が昇順に並んでいる集合であり、
    前記要素比較制御は、前記比較の結果が等しくないとき、前記演算器に小さい方の入力要素を前記出力要素として選択させて、該小さい方の入力要素を指すポインタをインクリメントる、
    請求項8に記載の並列ユニオン制御方法。
  10. N(Nは2以上の整数)個の演算器とベクトルレジスタとを含む並列計算機を用いて、コンピュータに、各々がソート済み集合である2N個の入力集合を対ごとに並列にユニオン処理させて、各々がソート済み集合であるN個の出力集合を出力させる並列ユニオン制御用プログラムであって、
    前記N個の演算器の各々に、前記ベクトルレジスタの入力オペランドレジスタに格納されているユニオン処理すべき一対の入力集合の入力要素を順次比較させ、比較の結果によって、前記入力要素の一方を出力集合の出力要素として選択させて前記ベクトルレジスタの出力オペランドレジスタに格納させると共に、前記入力要素を指すポインタを移動し、記比較の結果が等しいとき、前記演算器に該入力要素を前記出力要素として選択させて、両方の入力要素を指すポインタをインクリメントする要素比較制御処理と、
    メモリから前記2N個の入力集合を前記入力オペランドレジスタにロードすると共に、前記N個の出力集合を前記出力オペランドレジスタから前記メモリにストアするレジスタ入出力処理と、
    並列で行うユニオン処理が終了したかどうかを判定する終了判定処理と、
    を前記コンピュータに実行させる並列ユニオン制御用プログラム。
JP2019570747A 2018-02-08 2019-02-05 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム Active JP7044118B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018020953 2018-02-08
JP2018020953 2018-02-08
PCT/JP2019/004004 WO2019156060A1 (ja) 2018-02-08 2019-02-05 並列ユニオン制御装置、並列ユニオン制御方法、および記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2019156060A1 JPWO2019156060A1 (ja) 2021-01-14
JP7044118B2 true JP7044118B2 (ja) 2022-03-30

Family

ID=67549375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019570747A Active JP7044118B2 (ja) 2018-02-08 2019-02-05 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム

Country Status (3)

Country Link
US (1) US11200056B2 (ja)
JP (1) JP7044118B2 (ja)
WO (1) WO2019156060A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022532230A (ja) * 2019-05-14 2022-07-13 エクセジー インコーポレイテッド 金融市場データからの取引シグナルを低遅延で生成しかつ配信するための方法およびシステム
US20220261903A1 (en) * 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Pricing Derivatives at Low Latency

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016115092A (ja) 2014-12-12 2016-06-23 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 多数の要素からなる配列をソートする装置、方法およびプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731588B2 (ja) 1984-12-12 1995-04-10 株式会社日立製作所 ベクトル処理装置
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge
US5193125A (en) * 1990-06-08 1993-03-09 Xerox Corporation Local hierarchical processing focus shift within an image
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JPH0926872A (ja) * 1995-07-12 1997-01-28 Mitsubishi Electric Corp パイプラインマージソータ
AU2003231521A1 (en) 2002-04-26 2003-11-10 Nihon University School Juridical Person Parallel merge/sort processing device, method, and program
JP4408078B2 (ja) 2004-12-03 2010-02-03 三菱電機株式会社 ソート処理装置及びソート処理方法及びプログラム
JP2011233012A (ja) 2010-04-28 2011-11-17 Nec Corp マージ処理装置、制御プログラム及びレコードマージ方法
US9891913B2 (en) 2014-12-23 2018-02-13 Intel Corporation Method and apparatus for performing conflict detection using vector comparison operations
WO2017154946A1 (ja) * 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム
US10812500B2 (en) * 2018-01-30 2020-10-20 The United States Of America As Represented By The Secretary Of The Air Force Method of cyberthreat detection by learning first-order rules on large-scale social media
JP7160441B2 (ja) * 2018-01-31 2022-10-25 日本電気株式会社 情報処理装置及び制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016115092A (ja) 2014-12-12 2016-06-23 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 多数の要素からなる配列をソートする装置、方法およびプログラム

Also Published As

Publication number Publication date
US20210049012A1 (en) 2021-02-18
US11200056B2 (en) 2021-12-14
WO2019156060A1 (ja) 2019-08-15
JPWO2019156060A1 (ja) 2021-01-14

Similar Documents

Publication Publication Date Title
JP6977239B2 (ja) 行列乗算器
CN105320469B (zh) 处理器和数据收集方法
US8676874B2 (en) Data structure for tiling and packetizing a sparse matrix
US10346212B2 (en) Approach for a configurable phase-based priority scheduler
US8769216B2 (en) Optimizing output vector data generation using a formatted matrix data structure
CN104952032B (zh) 图的处理方法、装置以及栅格化表示及存储方法
US20210182263A1 (en) Systems and methods for performing data processing operations using variable level parallelism
JP4171835B2 (ja) 並列マージソート処理装置及び方法並びにプログラム
WO2014035699A1 (en) Results generation for state machine engines
CN103810111A (zh) 有源存储器件中的地址生成的方法及其处理元件
JP7044118B2 (ja) 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム
CN110852046B (zh) 一种文本后缀索引的分块归纳排序方法及系统
CN111813370A (zh) 基于fpga的多路并行归并排序系统
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
CN105264488A (zh) 使用数组对来合并有序列表
KR101756820B1 (ko) 중첩 루프를 처리하기 위한 재구성 가능 프로세서 및 방법
Li et al. Enabling high performance deep learning networks on embedded systems
US9507794B2 (en) Method and apparatus for distributed processing of file
KR20220099507A (ko) 그래프 특성 추출을 가속화하는 시스템 및 방법
Xu et al. GPU accelerated image matching with cascade hashing
Zhang et al. In-situ merge sort using hand-shaking algorithm
CN113656414B (zh) 一种数据处理方法、装置、设备及介质
CN112379846B (zh) 一种用于磁盘文件的快速读取方法和系统
Bandyopadhyay et al. Sorting large multifield records on a GPU
Amirul et al. Sorting very large text data in multi GPUs

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200708

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210914

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220228

R151 Written notification of patent or utility model registration

Ref document number: 7044118

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151