JP4758429B2 - 共有メモリ型マルチプロセッサシステム及びその情報処理方法 - Google Patents

共有メモリ型マルチプロセッサシステム及びその情報処理方法 Download PDF

Info

Publication number
JP4758429B2
JP4758429B2 JP2007530960A JP2007530960A JP4758429B2 JP 4758429 B2 JP4758429 B2 JP 4758429B2 JP 2007530960 A JP2007530960 A JP 2007530960A JP 2007530960 A JP2007530960 A JP 2007530960A JP 4758429 B2 JP4758429 B2 JP 4758429B2
Authority
JP
Japan
Prior art keywords
array
elements
value
processors
tabular data
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
JP2007530960A
Other languages
English (en)
Other versions
JPWO2007020849A1 (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.)
Turbo Data Laboratories Inc
Original Assignee
Turbo Data Laboratories Inc
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 Turbo Data Laboratories Inc filed Critical Turbo Data Laboratories Inc
Priority to JP2007530960A priority Critical patent/JP4758429B2/ja
Publication of JPWO2007020849A1 publication Critical patent/JPWO2007020849A1/ja
Application granted granted Critical
Publication of JP4758429B2 publication Critical patent/JP4758429B2/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数台のプロセッサがメモリを共有して並列処理を行う共有メモリ型マルチプロセッサシステムにおける情報処理方法、特に、メモリ上の2組の大規模データを複数台のプロセッサで並列に処理する情報処理方法に関する。
本発明は、また、このような情報処理方法を実施する共有メモリ型マルチプロセッサシステムに関する。
本発明は、さらに、このような情報処理方法を実現させるためのプログラムに関する。
本発明は、さらに、このようなプログラムを記録した記憶媒体に関する。
社会全体のさまざまな場所にコンピュータが導入され、インターネットをはじめとするネットワークが浸透した今日では、そこここで、大規模データが蓄積・処理されるようになった。
従来、大規模データを高速に処理するために適したデータ構造が提案されている。たとえば、本発明者は、大規模データ、特に、表形式データを高速に検索、集計、ソートするために適したデータ管理機構を提案している(特許文献1を参照のこと)。このデータ管理機構は、表形式データの項目の各項目値を表すための情報ブロックを有する。この情報ブロックでは、表形式データの項目に属する項目値は、各項目値に付与された項目値番号と、項目値番号の順番に並べられた実際の項目値の配列とによって表される。各レコードの項目値に対応した項目値番号をレコード番号順に並べた配列が準備され、各レコードの項目値は、当該レコードの項目値番号に対応した値を項目値の配列から見つけることによって特定される。また、表形式データ中の処理対象のレコードは、レコード番号を順番に並べた配列によって特定される。
情報ブロックは、表形式データの各項目に対し、その項目に属する項目値が順序付け(整数化)された項目値番号の順番に、上記項目値番号に対応した項目値が格納されたテーブルである。項目値自体は、数値(整数、固定小数点、浮動小数点など)、文字列などのどのようなタイプのデータでもよい。したがって、このデータ管理機構は、あらゆるタイプのデータの値が項目値番号という整数で取り扱えることに特長がある。すなわち、このデータ管理機構によれば、たとえば、文字列型のデータのソートを行う際に、文字列型のデータをそのままソート対象としてソートするのではなく、文字列型のデータの値に対応した項目値番号をソート対象としてソートすることができる。このとき、ソートの結果はレコード番号を順番に並べた配列によって表される。
また、大規模データを処理するために必要である膨大な計算を高速に実行するため、並列処理を導入することも試みられている。一般に、並列処理アーキテクチャは「分散メモリ型」と「共有メモリ型」に大別される。
分散メモリ型は、各プロセッサがそれぞれローカルなメモリを持ち、これらを結合してシステムを構築する。この方式では、理論的に数百〜数万台ものプロセッサを組み込んだハードウェアシステムの設計が可能である。しかしながら、分散メモリ型は、データの分掌管理の複雑さや、プロセッサ間通信の効率の低さなどの技術的課題がある。本発明者は、これらの技術的課題が解決された、大規模な表形式データを並列処理可能である分散メモリ型コンピュータアーキテクチャを提案している(特許文献2を参照のこと。)。特許文献2に記載された情報処理システムは、メモリおよび制御装置を有する複数のメモリモジュールと、メモリモジュール間を接続し、あるメモリモジュールの値を他のメモリモジュールに伝達するデータ伝送路とを備え、各メモリモジュールのメモリが、それぞれ、昇順または降順に重複なく順序付けられた値のリストを保持するように構成される。各メモリモジュールの制御装置は、値のリストに含まれる値を他のメモリモジュールへ送信する手段と、他のメモリモジュールから値のリストに含まれる値を受信する手段とを含む。これにより、各メモリモジュールの制御装置は、自己の値のリストの値と、他のメモリモジュールの値のリストとを比較することにより、自己の値リストの値について、他のメモリモジュールの値のリスト中の値を考慮したグローバルな順位を得ることが可能となる。
これに対して、共有メモリ型は複数のプロセッサが1つの巨大なメモリ空間を共有する方式である。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので、現実的には百台を越えるプロセッサを用いてシステムを構築することは容易ではない、と考えられている。しかし、このような状況下で、近年、複数台のCPUを用いた共有メモリ型マルチプロセッサシステムとして構成されたパーソナルコンピュータが入手可能である。この種のパーソナルコンピュータに使用される標準的なCPUは、メモリバスの5〜6倍程度の内部クロックで動作し、その内部に自動的な並列実行機能やパイプライン処理機能が装備されており、およそ1データを1クロック(メモリバス)で処理できる。
したがって、共有メモリ型マルチプロセッサシステムとして構成されたパーソナルコンピュータを利用することにより、シングルプロセッサシステムよりも高速に大規模データを処理することが望まれる。
国際公開WO00/10103号パンフレット 国際公開WO2005/041066号パンフレット
大規模データを複数台のプロセッサで処理する場合、データを分割して各プロセッサに割り当てる方式と、機能を分割して各プロセッサに割り当てる方式が考えられるが、たとえば、何百万行以上に及ぶ表形式データを処理する環境では、大規模データに異なる操作を同時に適用することよりも、大規模データに対して同じ操作を適用することの方が一般に効率的である。なぜならば、プロセッサの台数が同時に適用すべき異なる操作の数よりも多い場合、プロセッサが余ってしまうからである。そのため、マルチプロセッサ化は、大規模データを分割し、分割されたデータに対して同じ処理を並列に適用することによってより効果的になる。また、並列処理の効率は、複数台のプロセッサの処理量にばらつきが生じないように、データを割り当てることによって高くなる。
さらに、たとえば、2組の大規模データを併合するマージ処理、或いは、2組の大規模データの一致・不一致を判定するマッチング処理では、比較対象となる2組の大規模データを複数台のプロセッサに割り当てなければならない。その上、2組の大規模データからの実際に比較されるデータは同じプロセッサに割り当てることが必要である。このように、共有メモリ型マルチプロセッサシステムにおいて、2組の大規模データを組み合わせて処理する際、これら2組の大規模データを複数台のプロセッサへ適切に割り当てることが望ましい。
そこで、本発明は、共有メモリ型マルチプロセッサシステムにおいて、大規模データを複数台のプロセッサへ適切に割り当てることにより効率的に大規模データを並列処理する情報処理方法の提供を目的とする。
また、本発明の目的は、このような情報処理方法を実施する共有メモリ型マルチプロセッサシステムを提供することである。
さらに、本発明の目的は、このような情報処理方法を実現させるためのプログラムを提供することである。
さらに、本発明の目的は、このようなプログラムを記録した記憶媒体を提供することである。
上記のように、本発明者は大規模な表形式データを取り扱うためのデータ管理機構を既に提案している。このデータ管理機構では、表形式データの項目に属する項目値は、各項目値に付与された項目値番号と、項目値番号の順番に並べられた実際の項目値の配列とによって表される。項目値自体は、数値(整数、固定小数点、浮動小数点など)、文字列などのどのようなタイプのデータでも構わないが、項目値番号の順番に、たとえば、値の昇順又は値の降順のような所定の順序で配列に格納されている。本発明者は、大規模データがその値の昇順又は降順のような所定の順序で整列することにより、ソートなどの操作が非常に効率的に行えることを明らかにしている(特許文献1を参照のこと。)。
大規模な表形式データは、レコードの個数が膨大になるだけでなく、上記の項目値の配列のサイズもまた膨大になる。したがって、上記のデータ管理機構における大規模な表形式データを共有メモリ型マルチプロセッサシステムで取り扱う場合、所定の順序に整列された項目値の配列を分割して複数台のプロセッサへ割り当てる方式が考えられる。この場合、所定の順序で整列されているデータを複数台のプロセッサへ割り当てた後、複数台のプロセッサがそれぞれ割り当てられたデータを処理することにより、大規模データの並列処理が実現される。本発明者は、個々のプロセッサに割り当てられたデータがソートなどの操作の対象となる点に着目し、大規模データがその値の昇順又は降順のような所定の順序で整列されている場合、大規模データを複数台のプロセッサへ割り当てる際にもその所定の順序を保存したまま割り当てることを提案する。
さらに、2組の大規模な表形式データを併合するアプリケーションでは、多くの場合にそれぞれの表形式データに格納されている対応する項目値が比較される。もし、対応する項目値が別々のプロセッサに割り当てられてしまうと、それらの値を直接比較することが困難になる。そのため、2組の大規模データを複数台のプロセッサへ適切に割り当てることにより、表形式データの併合が効率的に実現される。本発明者は、2組の大規模データを複数台のプロセッサに割り当てる場合にも、大規模データを所定の順序を保存したまま複数台のプロセッサへ割り当てることにより、別々の組からの類似データ、特に、値が一致するデータを同じプロセッサに割り当てると共に、それぞれのプロセッサに割り当てられるデータの量ができる限り均等になるように割り当てることを提案する。
上記の本発明の原理は以下の種々の態様によって実施される。
本発明の第1の態様による実施形態は、昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムにおいて、前記第1の配列と前記第2の配列を前記所定の順序で重複なしにマージする情報処理方法であって、
前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて前記第1の配列の前記複数の区間に対応する前記第2の配列の複数の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較することにより、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で順位付けし、前記区間に含まれる要素のユニークな値の個数をカウントするステップと、
前記複数台のプロセッサのそれぞれが、前記所定の順序に関して自プロセッサに割り当てられた前記区間よりも前の区間に含まれる要素の前記ユニークな値の個数の合計を、前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位に加算することにより、前記第1の配列に格納された値及び前記第2の配列に格納された値に前記所定の順序で順位付けするステップと、
を含む情報処理方法である。
本実施形態によれば、所定の順序で整列された前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップは、各プロセッサに割り当てられる要素の個数がバランスされるように、すなわち、要素の個数の合計の差が所定の幅に収まるように第1の配列及び第2の配列の区間を分割する。これにより各プロセッサの処理量のバラツキが減少し、並列化の効率が高くなる。分割された区間内では、第1の配列の要素と第2の配列の要素はそれぞれ所定の順序で整列されているので、次のステップは、これらの配列の要素を順次比較することによって、区間内で要素に順位を付けることができる。このステップは、同時に区間内に含まれる要素のユニークな値の個数をカウントする。このステップは、複数台のプロセッサのそれぞれが自プロセッサに割り当てられた区間に関して並列に実行する。さらに次のステップでは、各プロセッサは、自プロセッサに割り当てられた区間よりも前の区間に含まれる要素のユニークな値の個数の合計を自プロセッサに割り当てられた区間に含まれる要素に付けられた順位に加算する。これにより、複数台のプロセッサに分割された第1の配列及び第2の配列のすべての要素に一連の順位を付けることができる。このようにして一連の順位が付与された第1の配列の要素と第2の配列の要素は所定の順序で重複なく整列させることができる。
本実施形態の一実施例では、第1の配列の要素及び第2の配列の要素を複数台のプロセッサへ割り当てる前に、要素の値の範囲の中で、第1の配列又は第2の配列の一方の配列、すなわち、片方の配列だけに存在する値の範囲が割り当てられるべき区間から予め除外される。これらの値の範囲では、区間内の要素の値の順位付け、要素のユニークな値の個数のカウントは、一方の配列だけについて考慮すればよい。したがって、これらの値の範囲を除外した配列の要素が複数台のプロセッサに割り当てられる。
また、本実施形態の一実施例では、要素のユニークな値の個数は第1の配列の要素と第2の配列の要素を比較する際に同一でない値の出現回数をカウントすることによって得られる。或いは、要素のユニークな値の個数は、区間内で要素に付与された順位の最大値に基づいて決定される。たとえば、順位が0から始まるときには、要素のユニークな値の個数は、(順位の最大値)−1によって得られる。
本実施形態の一実施例によれば、情報処理方法は、前記第1の配列に格納された値及び前記第2の配列に格納された値を、前記第1の配列に格納された値及び前記第2の配列に格納された値に付けられた順位に従って並べることにより、前記第1の配列に格納された値と前記第2の配列に格納された値が前記所定の順序で重複なしにマージされた第3の配列を作成し、前記メモリに記憶するステップをさらに含む。これにより、第1の配列と第2の配列をマージすることによって得られた第3の配列をさらなる処理のためメモリに記憶することができる。
本実施形態の一実施例によれば、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位が、前記第1の配列及び前記第2の配列のすべての要素について、一方の配列の特定の要素よりも前に順序付けされる他方の配列の要素の個数の合計値を計算し、前記特定の要素の前記一方の配列の前記区間の範囲内における順位を前記計算された合計値に加算することにより算出される。
さらに、前記一方の配列の特定の要素よりも前に順序付けされる他方の配列の要素の個数の合計値は、一方の配列の特定の要素と前記特定の要素の直前の要素との間に収まる値を有する他方の配列の要素の個数を前記一方の配列の前記特定の要素に対応するカウント値として計算し、前記カウント値を累計数化することにより算出される。
上述のように、第1の配列の要素及び第2の配列の要素は所定の順序(たとえば、値の昇順又は降順)に整列されているので、各プロセッサに割り当てられた第1の配列と第2の配列の要素を先頭から順番に比較することにより、一方の配列(たとえば、配列A)を他方の配列(たとえば、配列B)へマージするときに、一方の配列Aから他方の配列Bの特定の要素の直前に挿入される要素の個数を計算することができる。このカウント値を累計数化することにより、他方の配列Bの特定の要素よりも前に順序付けられる一方の配列Aの要素の個数が得られる。この他方の配列Bの特定の要素に対応する累計数化されたカウント値は、この他方の配列Bの特定の要素が一方の配列Aの中で何番目であるか、すなわち、一方の配列A内での順位を表している。この他方の配列Bの特定の要素の区間内での順位は、この特定の要素の一方の配列A内の順位に他方の配列B内での順位を加算することにより決まる。このように各プロセッサに割り当てられた区間内の要素の順位は、一方の配列から他方の配列へ挿入される要素数のカウントと、カウント値の累計数化と、累計数から順位への変換によって得ることができる。
本実施例では、累計数から順位への変換は順位の値の加算によって実現される。また、上述のように、区間内の順位からすべての区間における一連の順位への変換もまた加算によって実現される。したがって、本実施形態の一実施例では、区間内における累計数から順位への変換と、区間内の順位からすべての区間における一連の順位への変換が同時に実行される。
このように本発明の第1の態様によれば、マージされた要素の位置は、各プロセッサにおいて並列に実行される計算によって得られるので、2組の大規模データを高速で効率的にマージすることが可能である。
本発明の第2の態様による実施形態は、昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、
前記メモリにアクセス可能である複数台のプロセッサと、
を具備した共有メモリ型プロセッサシステムにおいて、前記第1の配列に格納された値のうち前記第2の配列に存在する値を識別する情報処理方法である。
この情報処理方法は、
前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて対応する前記第2の配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の配列に存在する場合に、前記一致する値を有する前記第1の配列の要素にマークを付けるステップと、
を含む。
この本発明の第2の態様による情報処理方法は、2組の大規模データがあるときに、一方の大規模データに含まれる要素の値がもう一方の大規模データに含まれる場合に、一方の大規模データの当該要素にマークを付ける。この情報処理方法は、本発明の第1の態様による情報処理方法と同様に、最初のステップにおいて、各プロセッサに割り当てられる要素の個数がバランスされるように、すなわち、要素の個数の合計の差が所定の幅に収まるように第1の配列及び第2の配列の区間を分割する。次のステップでは、第1の配列の値のうち、第2の配列に存在する値をマーキングする。区間分割の際に、値が一致するデータは同じプロセッサに割り当てるので、マーキングが効率的に行われる。
本実施形態の一実施例は、前記第1の配列と同じサイズを有する第3の配列を前記メモリに準備するステップをさらに含み、
前記一致する値を有する前記第1の配列の要素にマークを付けるステップが、前記一致する値を有する前記第1の配列の要素に対応する前記第3の配列の要素にフラグを立てるステップを含む。これにより、後の処理で使用できるように、値の一致の有無を示すフラグ配列をメモリ上に作成することができる。
本発明の第3の態様によれば、2組の表形式データがあるときに、一方の表形式データのレコードを、そのレコードの所定の項目の項目値と同じ項目値を含むレコードが他方の表形式データに存在するかどうかに応じて分類する情報処理方法が提供される。この本発明の第3の態様による実施形態は、第1の表形式データ及び第2の表形式データを記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備し、前記第1の表形式データ及び前記第2の表形式データが、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列、表形式データのレコードの所定の項目の項目値に対応する項目値番号がレコード番号に従って格納された項目値番号配列、及び、表形式データの項目値が当該項目値に対応する項目値番号の順序に従って格納された項目値配列として前記メモリに記憶される、共有メモリ型マルチプロセッサシステムにおいて、前記第1の表形式データの前記レコードを、前記第2の表形式データにそのレコードと同じ項目値を有するレコードが存在する一致レコードと、前記同じ項目値を有するレコードが存在しない不一致レコードとに分類する情報処理方法であって、
前記第1の表形式データの前記項目値配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の表形式データの前記項目値配列の分割された区間の境界の要素の値に応じて対応する前記第2の表形式データの前記項目値配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の表形式データの前記項目値配列の要素の個数と前記第2の表形式データの前記項目値配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の表形式データの前記項目値配列に存在する場合に、前記一致する値を有する前記第1の表形式データの前記項目値配列の要素にマークを付けるステップと、
前記第1の表形式データの前記レコード番号配列を前記複数台のプロセッサの台数と同じ個数の複数の部分に分割し、前記複数の部分を前記複数台のプロセッサに割り当てるステップと、
前記複数台のプロセッサのそれぞれが、前記第1の表形式データの前記レコード番号配列の前記割り当てられた部分から当該部分に格納されているレコード番号を読み出し、前記第1の表形式データの前記項目値番号配列から前記読み出されたレコード番号に対応する項目値番号を読み出し、前記読み出された項目値番号に対応する前記第1の表形式データの前記項目値配列の要素に前記マークが付けられているかどうかを判定し、前記マークが付けられている場合、前記読み出されたレコード番号を前記一致レコードとして分類し、前記マークが付けられていない場合、前記読み出されたレコード番号を前記不一致レコードとして分類するステップと、
を含む情報処理方法である。
本実施形態による情報処理方法は、第2の態様による情報処理方法と同様に、最初に、要素の数をバランスさせる区間分割を行い、次に、第1の表形式データの項目値配列の値のうち、第2の表形式データの項目値配列に存在する値をマーキングする。続いて、レコード番号配列を分割して複数台のプロセッサに割り当てる。これにより、レコード番号の分類を並列処理することが可能になる。すなわち、各プロセッサは、第1の表形式データの割り当てられたレコード番号配列からレコード番号を読み出し、そのレコード番号を使って項目値番号配列から項目値番号を読み出し、その項目値番号を使って、その項目値番号に対応する値が第2の表形式データの項目値配列に存在するかどうかをマーキングから判断し、読み出されたレコード番号をマッチとアンマッチに分類する。
本実施形態の一実施例によれば、第1の表形式データに関するレコードの分類の後に続いて、対応する第2の表形式に関するレコードの分類を行うことができる。本実施形態の別の実施例によれば、第1の表形式データに関するレコードの分類と、対応する第2の表形式に関するレコードの分類は、複数台のプロセッサを2群に分けることにより並列に実行される。
項目値配列には、レコードの削除等の操作のため、実際には参照されない値が含まれていることがある。そこで、本実施形態の一実施例による情報処理方法は、項目値配列から、レコード番号配列に格納されたレコードによって実際に参照される値だけを含む有効項目値配列を作成するステップをさらに含む。これにより、その後のマーキング処理をより効率的に実行することが可能である。また、有効項目値配列は、レコード番号配列を複数台のプロセッサに分割して割り当てることにより、並列に作成することが可能である。
本発明の第4の態様による実施形態は、上記本発明による情報処理方法を実施するため、昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備し、共有メモリ型プロセッサシステムである。
前記複数台のプロセッサのいずれか1台のプロセッサは、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて前記第1の配列の前記複数の区間に対応する前記第2の配列の複数の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備する。
前記複数台のプロセッサのそれぞれは、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較することにより、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で順位付けし、前記区間に含まれる要素のユニークな値の個数をカウントする手段と、
前記所定の順序に関して自プロセッサに割り当てられた前記区間よりも前の区間に含まれる要素の前記ユニークな値の個数の合計を、前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位に加算することにより、前記第1の配列に格納された値及び前記第2の配列に格納された値に前記所定の順序で順位付けする手段と、を具備する。
本発明の第5の態様による実施形態は、上記本発明による情報処理方法を実施するため、昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムである。
前記複数台のプロセッサのいずれか1台のプロセッサは、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて対応する前記第2の配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備する。
前記複数台のプロセッサのそれぞれは、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の配列に存在する場合に、前記一致する値を有する前記第1の配列の要素にマークを付ける手段を具備する。
本発明の第6の態様による実施形態は、上記本発明による情報処理方法を実施するため、第1の表形式データ及び第2の表形式データを記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備し、前記第1の表形式データ及び前記第2の表形式データが、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列、表形式データのレコードの所定の項目の項目値に対応する項目値番号がレコード番号に従って格納された項目値番号配列、及び、表形式データの項目値が当該項目値に対応する項目値番号の順序に従って格納された項目値配列として前記メモリに記憶される、共有メモリ型マルチプロセッサシステムである。
前記複数台のプロセッサのいずれか1台のプロセッサは、前記第1の表形式データの前記項目値配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の表形式データの前記項目値配列の分割された区間の境界の要素の値に応じて対応する前記第2の表形式データの前記項目値配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の表形式データの前記項目値配列の要素の個数と前記第2の表形式データの前記項目値配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備する。
前記複数台のプロセッサのそれぞれは、自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の表形式データの前記項目値配列に存在する場合に、前記一致する値を有する前記第1の表形式データの前記項目値配列の要素にマークを付ける手段を具備する。
また、前記複数台のプロセッサのうちのいずれか1台のプロセッサは、前記第1の表形式データの前記レコード番号配列を前記複数台のプロセッサの台数と同じ個数の複数の部分に分割し、前記複数の部分を前記複数台のプロセッサに割り当てる手段を具備する。
さらに、前記複数台のプロセッサのそれぞれは、前記第1の表形式データの前記レコード番号配列の前記割り当てられた部分から当該部分に格納されているレコード番号を読み出し、前記第1の表形式データの前記項目値番号配列から前記読み出されたレコード番号に対応する項目値番号を読み出し、前記読み出された項目値番号に対応する前記第1の表形式データの前記項目値配列の要素に前記マークが付けられているかどうかを判定し、前記マークが付けられている場合、前記読み出されたレコード番号を一致レコードとして分類し、前記マークが付けられていない場合、前記読み出されたレコード番号を不一致レコードとして分類する手段を具備する。
さらに、本発明の第7の態様によれば、上記の本発明による情報処理方法を実現させるためのプログラムが提供される。
さらに、本発明の第8の態様によれば、上記の本発明によるプログラムを記録した記憶媒体が提供される。
本発明によれば、共有メモリ型の並列処理環境において、大規模データ、特に、大規模な表形式データを複数台のプロセッサへ効率的に割り当てることにより、大規模データの高速な並列処理を実現可能な情報処理装置を提供することが可能となる。
以下、添付図面を参照して本発明の種々の実施例を説明する。
[コンピュータシステム構成]
図1は複数台のプロセッサがメモリを共有して大規模データの情報処理方法を実施するコンピュータシステムの一実施例の概略図である。図1に示すように、このコンピュータシステム10は、プログラムを実行することによりシステム全体および個々の構成部分を制御するp台のプロセッサ(CPU)12−1、12−2、...12−p、ワークデータなどを記憶する共有メモリ、たとえば、RAM(Random Access Memory)14、プログラム等を記憶するROM(Read Only Memory)16、ハードディスク等の固定記憶媒体18、CD−ROM19をアクセスするためのCD−ROMドライバ20、CD−ROMドライバ20や外部ネットワーク(図示せず)と接続された外部端子との間に設けられたインタフェース(I/F)22、キーボードやマウスからなる入力装置24、CRT表示装置26を備えている。CPU12、RAM14、ROM16、外部記憶媒体18、I/F22、入力装置24および表示装置26は、バス28を介して相互に接続されている。図示されていないが、各CPUは固有のローカルメモリを備えていてもよい。
本実施の形態にかかる大規模データの情報処理方法を実施するプログラムは、CD−ROM19に収容され、CD−ROMドライバ20に読取られても良いし、ROM16に予め記憶されていても良い。また、いったんCD−ROM19から読み出したものを、外部記憶媒体18の所定の領域に記憶しておいても良い。或いは、上記プログラムは、ネットワーク(図示せず)、外部端子およびI/F22を経て外部から供給されるものであっても良い。
また、本発明の実施の形態にかかる共有メモリ型マルチプロセッサシステムは、コンピュータシステム10に大規模データの情報処理方法を実施するプログラムを実行させることにより実現される。
[情報ブロックに基づくデータ管理機構]
図2はデータ管理機構を説明するための表形式データの一例を表す図である。この表形式データは、上述の国際公開第WO00/10103号パンフレットに提案したデータ管理機構を用いることにより、コンピュータ内では図3に示されるようなデータ構造として記憶される。
図3に示すように、表形式データの各レコードの並び順の番号と、内部データの並び順の番号を対応付ける配列301(以下、この配列を「OrdSet」のように略記する。)には、表形式のレコード毎に内部データの並び順番号が値として配置される。この例では、すべての表形式データが内部データとして表されるため、表形式データのレコード番号と内部データの並び順番号とは一致する。
例えば、性別に関しては、表形式データのレコード0に対応する内部データの並び順番号は、配列OrdSet301から「0」であることがわかる。並び順番号が「0」であるレコードに関する実際の性別の値、即ち、「男」又は「女」は、実際の値が所定の順序に従ってソートされた値リスト303(以下、値リストを「VL」のように略記する。)へのポインタ配列302(以下、ポインタ配列を「VNo」のように略記する。)を参照することによって取得できる。ポインタ配列302は、配列OrdSet301に格納されている並び順番号の順に従って、実際の値リスト303中の要素を指し示すポインタを格納している。これにより、表形式データのレコード「0」に対応する性別の項目値は、(1)配列OrdSet301からレコード「0」に対応する並び順番号「0」を取り出し、(2)値リストへのポインタ配列302から並び順番号「0」に対応する要素「1」を取り出し、(3)値リスト303から、値リストへのポインタ配列302から取り出された要素「1」によって指し示される要素「女」を取り出すことにより取得できる。
他のレコードに対しても、また、年齢及び身長に関しても同様に項目値を取得することができる。
このように表形式データは、値リストVLと、値リストへのポインタ配列VNoの組合せにより表現され、この組合せを、特に、「情報ブロック」と称する。図3には、性別、年齢及び身長に関する情報ブロックがそれぞれ情報ブロック308、309及び310として示されている。
単一のコンピュータが、単一のメモリ(物理的には複数であっても良いが、単一のアドレス空間に配置されアクセスされるという意味で単一のメモリ)であれば、当該メモリに、順序集合の配列OrdSet、各情報ブロックを構成する値リストVLおよびポインタ配列VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、その大きさに伴ってメモリ容量も大きくなるため、これらの大量のレコードを並列処理できるのが望ましい。
そこで、本発明においては、メモリに記憶された大量のレコードは複数台のプロセッサへ分割して割り当てられ、複数台のプロセッサが自プロセッサへ割り当てられたレコードのデータにアクセスし、複数台のプロセッサが大規模データを並列処理する。
また、大規模な表形式データでは、値リストVLのサイズも大きくなる。そこで、本発明においては、メモリに記憶された大規模な値リストVLは複数台のプロセッサへ分割して割り当てられ、複数台のプロセッサが大規模データを並列処理する。
[並列マージ]
最初に、本発明の実施の形態にかかる共有メモリ型マルチプロセッサシステムにおいて二つの大規模データをマージする情報処理方法、すなわち、並列マージ処理を説明する。ここで、共有メモリ型マルチプロセッサシステムは、複数台のプロセッサがメモリを共有して並列処理を行うシステムを表す。また、二つの大規模データとは、昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列である。上記のデータ管理機構の値リストVLはこのような配列の一例である。これらの配列がメモリに記憶され、複数台のプロセッサはこのメモリにアクセス可能である。以下の説明では、簡単のため、プロセッサの台数は4台とする。
図4Aは本実施の形態でマージされる二つの大規模データの一例である第1のリスト(LIST−1)401と第2のリスト(LIST−2)402を表す図、図4Bは、マージ後の第3のリスト(LIST−3)403を表す図である。実際には、リストの要素の個数は数百万個以上に達するが、簡単のため、数十個の要素の例について説明する。第1のリスト401と第2のリスト402の要素は値の昇順に整列されている。マージ後の第3のリスト403も同様に値の昇順に整列されている。配列の左側の0,1,2,・・・の番号は配列の要素の順位を表している。この順位は配列の要素が格納されるメモリ上のアドレスに対応している。
並列マージ処理では、いずれか1台のプロセッサが、最初に、第1のリスト401をプロセッサの台数に応じた4区間に分割する。図5A、Bおよび図6A、Bは二つのリストの区間分割の種々の例を示す図である。このとき、第2のリスト402を単純に大きさが均等になるように4区画に分割すると、第1のリスト401及び第2のリストは図5Aに示されるように分割される。CPU−0には第1のリスト401から値100、110、120、160、180が割り当てられ、第2のリスト402から値80、90、100、120、180、190が割り当てられ、CPU−1には第1のリストから値200、210、220、250、260が割り当てられ、第2のリスト402から値201、230、250、290、300、310が割り当てられ、以下同様である。しかし、このように単純な区間分割では問題が生じる。たとえば、第1のリスト401の先頭から11番目(=順位10)の要素の値は300であり、この要素はCPU−2に割り当てられている。一方、第2のリスト402の先頭から11番目(=順位10)の要素の値も300であるが、この要素はCPU−1に割り当てられている。したがって、このような分割では、同じ値300が別個のCPUに割り当てられるため、ある値を処理するために二つのCPUが協働しなければならない。
このような問題を回避するため、本実施の形態による並列マージ処理によれば、第2のリスト402の複数の区間は、第1のリスト401の分割された区間の境界の要素の値に応じて決定される。すなわち、第2のリスト402のある区間の最後の要素は、対応する第1のリスト401の区間の最後の要素と同じ値が第2のリスト402に存在する場合には、その値を有する要素となるように選択される。同じ値が存在しない場合には、第2のリスト402の区間の最後の要素は、対応する第1のリスト401の区間の最後の要素の値が第2のリスト402の区間の最後の要素よりも大きく、第2のリスト402の次の区間の最初の要素よりも小さくなるように選択される。このようにして決定された区間分割の例が図5Bに示されている。この区間分割の例では、CPU−0には10個の要素、CPU−1には9個の要素、CPU−2には10個の要素、CPU−3には14個の要素が割り当てられている。勿論、同じ値が存在しない場合に、第2のリスト402の区間の最後の要素は、対応する第1のリスト401の次の区間の最初の要素の値が第2のリスト402の区間の最後の要素よりも大きく、第2のリスト402の次の区間の最初の要素より以下になるように選択してもよい。このような基準で境界の要素の値を決定すると、図6Aに示されるような区間分割が行われる。
本実施の形態による並列マージ処理は、各プロセッサの処理量ができる限り均等になるように各プロセッサに割り当てられる要素の個数の合計を考慮する。そのため、並列マージ処理は、複数の区間のそれぞれに含まれる第1のリスト401の要素の個数と第2のリスト402の要素の個数の合計の差が所定の幅に収まるように区間の境界を調整する。たとえば、図5Bの区間分割では、CPU−1に割り当てられる要素の個数の合計は9個であり、CPU−3に割り当てられる要素の個数の合計は14であり、合計の差が5個である。これに対して、第1のリスト401の境界を調整することにより、たとえば、図6Aに示されるように、各プロセッサに割り当てられる要素の個数の合計の差を2個以下に抑えることができる。並列マージ処理における区間分割方法の詳細については後述する。
次に、複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた第1のリスト401の要素及び第2のリスト402の要素を先頭から順番に比較し、第1のリスト401の特定の要素よりも値が小さい第2のリスト402の要素の個数の合計をカウントし、同様に第2のリストの特定の要素よりも値が小さい第1のリスト401の要素の個数の合計をカウントする。このような要素の個数は、第1のリスト401の特定の要素とこの特定の要素の直前の要素との間に収まる値(特定の要素が先頭の要素である場合には、この先頭の要素の値よりも小さい値)を有する第2のリスト402の要素の個数をカウントし、カウントされた個数を累計数化することにより得られ、第2のリスト402についても同様に得られる。次に、第1のリスト401の特定の要素に対応する累計数化された値に、その特定の要素の第1のリスト401内での順位(本例では、0から始まる)を加算することにより、その特定の要素の区間内での順位(第1のリスト401と第2のリスト402を併せた要素の中での順位)が算出され、第2のリスト402の特定の要素についても同様に算出される。
図7A〜Dは、図5A、B、図6A、Bの区間分割の例に基づいて、CPU−0が区間内の要素に順位を付ける処理の説明図である。図7Aには上記の要素の個数のカウント値がCount−1及びCount−2として示されている。図7Bにはカウントされた個数を累計数化した値がAggr−1及びAggr−2として示されている。図7Cには各要素の区間内での順位がAggr−1及びAggr−2として示されている。図7DにはCPU−0に割り当てられた区間の範囲内で第1のリストと第2のリストを併合して得られた第3のリスト(LIST−3)が示されている。
各プロセッサは、区間内での順位付けと同時に、自プロセッサに割り当てられた区間に含まれる要素のユニークな値の個数をカウントする。この個数は、区間内で併合されたリストの最大順位+1(本例では、順位は0から始まっている)に一致する。或いは、このユニークな値の個数は、図7Aにおいて要素の個数をカウントする際に、新しい値が出現したときにカウントアップすることによっても得られる。
CPU−1、CPU−2及びCPU−3は、図5A、B、図6A、Bおよび図7A〜Dを参照して説明したCPU−0と同様に区間分割と順位付けを実行する。このとき、CPU−0からCPU−3は並列に動作する。図8A〜Dは、各プロセッサが算出した区間内の要素の順位とユニークな値の個数を表す図である。
複数台のプロセッサのそれぞれに割り当てられた区間内の要素の順位とユニークな値の個数が決定されると、複数台のプロセッサのそれぞれは、所定の順序に関して自プロセッサに割り当てられた区間よりも前の区間に含まれる要素のユニークな値の個数の合計を、自プロセッサに割り当てられた第1のリスト401の要素及び第2のリストの要素に付けられた順位に加算する。これにより、第1のリスト401に格納された値及び第2のリスト402に格納された値のすべてに所定の順序で順位付けされる。図9A〜Dはこのようにして得られた各CPUに割り当てられた要素の併合されたリスト内での順位を表す図である。この結果は図4Bに示されたマージ後の第3のリスト403と同じであることがわかる。
[区間分割]
次に、複数台のプロセッサのいずれか1台のプロセッサによって実行される本発明の実施の形態にかかる区間分割処理を説明する。この区間分割処理は、2組の昇順リスト(要素の値の大きさの順番に要素を並べた配列)であるArray1及びArray2を、分割される要素の数のバランスを考慮して、N個の区間に分割する。Array1のサイズ(すなわち、要素の個数)はS1、Array2のサイズはS2であり、Array1のi番目(i=0,1,2,・・・,S1−1)の要素をArray1[i]のように表し、Array2のj番目(j=0,1,2,・・・,S2−1)の要素をArray2[j]のように表す。また、区間k=0,1,2,・・・,N−1に割り当てられるArray1の要素の個数をn1[k]、Array2の要素の個数をn2[k]のように表す。尚、以下の説明中、割り算等の演算は整数演算である。
本区間分割処理は、すべてのkについて、
割り当て個数=n1[k]+n2[k]

目標値=(S1+S2)/N
にほぼ一致するようにリストを分割することを目標とする。そのため、割り当て個数と目標値との差が所定のマージンMの範囲内に収まるように、すなわち、
条件:|(n1[k]+n2[k])−(S1+S2)/N|<M
が成り立つようにリストを分割する。
このとき、分割の境界の値の拘束条件として、すなわち、異なるリストに同じ値が含まれる場合には、その値が同じ区間に分割されるための拘束条件として、
拘束条件1:Array1[n1[k]−1]=Array2[n2[k]−1]
又は、
拘束条件2:Array1[n1[k]−1]>Array2[n2[k]−1]
かつ
Array1[n1[k]−1]<Array2[n2[k]]
を設定する。
上記の条件が満たされない場合には、分割の境界を調整するため、Array1へ分割される要素の個数n1[k]を所定の量diffだけ変化させる。
図10および図11は、本発明の実施の形態にかかる区間分割処理を説明するフローチャートである。共有メモリ型マルチプロセッサシステムのある1台のプロセッサは以下の手順で要素数がバランスする区間分割を実行する。
ステップ1001:区間の初期値k=0とマージンMを設定する。
ステップ1002:Array1の区間kの候補要素数n1[k]をn1[k]=S1/nとして設定する。また、Array1の区間kの要素数の調整量diffをdiff=n1[k]/2として設定する。
ステップ1003:Array1の区間kの終わりであるArray1[n1[k]−1]と一致する要素Array2[n2[k]−1]]をバイセクション法によって探索する。
ステップ1004:一致する要素Array2[n2[k]−1]]が存在しない場合、ステップ1005へ進み、存在する場合にはステップ1006へ進む。
ステップ1005:Array1[n1[k]−1]>Array2[n2[k]−1]となる最大のArray2[n2[k]−1]を検出し、ステップ1006へ進む。
ステップ1006:Array2の区間kの候補要素数に、ステップ1004又はステップ1005で見つけられたn2[k]を設定する。
ステップ1007:候補要素数の合計と目標値との差が所定のマージンMの範囲内に収まるかどうかの条件、すなわち、|(n1[k]+n2[k])−(S1+S2)/N|<Mを調べる。条件が充たされない場合、ステップ1008へ進む。条件が満たされる場合、ステップ1013へ進む。
ステップ1008:調整の向きを決めるため、(n1[k]+n2[k])−(S1+S2)/N>0であるかどうかを判定し、判定結果が肯定的であるならばステップ1009へ進み、否定的であるならばステップ1011へ進む。
ステップ1009:調整量diffが0であるかどうかを判定し、0であるならば、ステップ1013へ進み、0でないならば、ステップ1010へ進む。
ステップ1010:調整量diffを用いて、Array1の区間kの要素の個数を
n1[k]=n1[k]−diff
に従って変更し、次に、調整量diffを
diff=diff/2
に従って変更し、ステップ1003へ戻る。
ステップ1011:調整量diffが0であるかどうかを判定し、0であるならば、ステップ1013へ進み、0でないならば、ステップ1012へ進む。
ステップ1012:調整量diffを用いて、Array1の区間kの要素の個数を
n1[k]=n1[k]+diff
に従って変更し、次に、調整量diffを
diff=diff/2
に従って変更し、ステップ1003へ戻る。
ステップ1013:現在のn1[k]とn2[k]を区間kに割り当てられた要素の個数として確定する。
ステップ1014:次の区間が存在するかどうか(k<N)を判定し、存在するならば、ステップ1015へ進み、存在しないならば、区間分割処理を終了する。
ステップ1015:区間kをk=k+1によって更新し、ステップ1002へ戻る。
好ましい実施例では、上記の区間分割処理は簡略化される。たとえば、最初の区間の割り当てが終了した時点で、Array1のn1個の要素がその区間に割り当てられ、Array2のn2個の要素がその区間に割り当てられたとすると、次の区間の割り当ては、区間の数をN=N−1とし、Array1の先頭をArray1[0]からArray1[n1]へ移動し(すなわち、Array1[0]からArray1[n1−1]までの要素を削除し)、Array2の先頭をArray2[0]からArray2[n2]へ移動(すなわち、Array2[0]からArray1[n2−1]までの要素を削除)することにより、1回目の分割と全く同じ処理を2回目以降の分割に適用することができる。
具体的には、上位の区間分割処理において、n1[k]をn1で置き換え、n2[k]をn2で置き換え、1区間の分割が終了した時点で、
N←N−1
S1←S1−n1
S2←S2−n2
とし、リスト中の割り当てられた要素を削除して、すなわち、
Array1[0]←Array1[n1]
Array1[1]←Array1[n1+1]
・・・
Array2[0]←Array2[n2]
Array2[1]←Array2[n2+1]
・・・・
のように配列の添え字を置き換えることにより、すべての区間に対して全く同じ処理ステップを適用することが可能になる。
[並列マージ処理の実施例]
次に、図4Aに示された二つの昇順リストを4台のプロセッサを使用してマージする一実施例を説明する。以下の説明では、これらの二つの昇順リストは、コンピュータシステム10のメモリ14にあることを前提としているが、これらの昇順リストは外部からインタフェース22を介して、たとえば、通信によって入力されることもある。
図12A、Bおよび図13A、Bは、それぞれ、本発明による並列処理マージ処理の一実施例の第1ステップから第4ステップの説明図である。第1ステップにおいて、コンピュータシステム10のいずれか1台以上のプロセッサが二つの昇順リストLIST−1及びLIST−2をメモリ14上に準備する(図12A)。ここで、LIST−1[0]はLIST−1の1番目の要素である「100」を表し、LIST−1[1]はLIST−1の2番目の要素である「110」を表し、以下同様である。また、LIST−2[0]はLIST−2の1番目の要素である「80」を表し、LIST−2[1]はLIST−2の2番目の要素である「90」を表し、以下同様である。
第2ステップにおいて、いずれか1台のプロセッサ(以下では、たとえば、CPU−0とする)は、メモリ上の二つの昇順リストLIST−1及びLIST−2にそれぞれカウント配列Count−1及びCount−2を付加し、カウント配列の要素を0で初期化する(図12B)。カウント配列の要素は、リスト配列と同様にCount−1[0]、Count−1[1]のように表される。
第3ステップにおいて、CPU−0は、一方のリストだけに存在する値の区間を特定し、処理範囲から除外する。図13Aに示されるように、LIST−1の要素の最小値は100であり、最大値は450である。また、LIST−2の要素の最小値は80であり、最大値は555である。したがって、LIST−1の最小値よりも小さい値はLIST−2だけに存在し、LIST−1の最大値よりも大きい値はLIST−2だけに存在する。そこで、これらの値の範囲、すなわち、LIST−2の要素80、90と、要素460、470、480、500、550、555を処理範囲から除外する。この第3ステップは省略可能である。
第4ステップにおいて、CPU−0は、LIST−1の中で第3ステップにおいて除去されなかった範囲、すなわち、要素100から要素450までの20個の要素をプロセッサ台数に一致する4区間に分割し、CPU−0からCPU−3の4台のプロセッサへ割り当てる。図13Bの左側に示されるように、CPU−0にはLIST−1[0]からLIST−1[4]の5個の要素が割り当てられ、CPU−1にはLIST−1[5]からLIST−1[9]の5個の要素が割り当てられ、同様にCPU−2及びCPU3にも5個ずつの要素が割り当てられる。
次に、各CPUに割り当てられたLIST−1の区間に対応するLIST−2の範囲を定め、各CPUへ割り当てる。本実施例では、第3ステップにおいて、LIST−2[0]からLIST−2[1]とLIST−2[17]からLIST−2[22]は除外されているので、LIST−2[2]からLIST−2[16]までの15個の要素をCPUに割り当てる。CPU−0への割り当てはLIST−2[2]から順番に開始される。LIST−2からCPU−0へ割り当てられる区間とCPU−1へ割り当てられる区間の境界は、LIST−1からCPU−1へ割り当てられる最初の要素の値とLIST−2からCPU−1へ割り当てられる最初の要素の値が一致するか、又は、LIST−1からCPU−1へ割り当てられる最初の要素の値がLIST−2からCPU−0へ割り当てられる最後の要素の値よりも大きく、LIST−2からCPU−1へ割り当てられる最初の要素の値よりも小さくなるように定められる。このようにして定められた境界が、図13Bの右側に示されている。
本実施例では、LIST−2から各CPUへ割り当てられた要素の個数は、CPU−0へ4個、CPU−1へ4個、CPU−2へ4個、CPU−3へ3個である。その結果、LIST−1とLIST−2を併せて、CPU−0、CPU−1、CPU−2及びCPU−3へそれぞれ9個、9個、9個及び8個の要素が割り当てられているので、CPUの処理量はほぼ揃っていると認められる。CPUの処理量にバラツキがある場合には、上記の区間分割方法を適用すればよい。
第5ステップでは、各CPUは、自プロセッサに割り当てられたLIST−1とLIST−2の要素を先頭から順に比較し、一方のリストの要素間に位置付けられるもう一方のリストの要素の個数をカウントし、同時に、両方のリストからの要素のユニークな値の個数をカウントする。図14A〜Fは、一例として、CPU−0において実行される第5ステップの説明図である。図14A〜Fにおいて、直線的な矢印は現在の比較位置を表し、曲線的な矢印は現在の比較位置の移動を表す。
図14Aを参照すると、CPU−0は、LIST−1[0]とLIST−2[2]を比較する。両方の値が同一であると判定されるので、CPU−1は、LIST−1側とLIST−2側のそれぞれの現在の比較位置を一つずつ後へ移動し、同時に、ユニークな値(値100に相当)の個数を0から1へインクリメントする。
図14Bを参照すると、CPU−0は、LIST−1[1]とLIST−2[3]を比較すると、LIST−1[1]=110<LIST−2[3]=120であるので、Count−2[3]をインクリメントし、LIST−1側の現在の比較位置を一つ後へ移動し、ユニークな値(値110に相当)の個数をインクリメントする。
図14Cを参照すると、CPU−0は、LIST−1[2]とLIST−2[3]を比較し、LIST−1[2]=LIST−2[3]=120であり、両方の値が同一であると判定されるので、LIST−1側とLIST−2側のそれぞれの現在の比較位置を一つずつ後へ移動し、同時に、ユニークな値(値120に相当)の個数をインクリメントする。
図14Dを参照すると、CPU−0は、LIST−1[3]とLIST−2[4]を比較すると、LIST−1[3]=160<LIST−2[4]=180であるので、Count−2[4]をインクリメントし、LIST−1側の現在の比較位置を一つ後へ移動し、ユニークな値(値160に相当)の個数をインクリメントする。
図14Eを参照すると、CPU−0は、LIST−1[4]とLIST−2[4]を比較し、LIST−1[4]=LIST−2[4]=180であり、両方の値が同一であると判定されるので、LIST−1側とLIST−2側のそれぞれの現在の比較位置を一つずつ後へ移動し、同時に、ユニークな値(値180に相当)の個数をインクリメントする。
図14Fを参照すると、CPU−0は、自プロセッサに割り当てられたLIST−1の要素の終わりに到達しているので、LIST−2側の現在の比較位置を一つ後へ移動し、ユニークな値(値190に相当)の個数をインクリメントする。この段階で、自プロセッサに割り当てられたLIST−2の要素の終わりに到達しているので、CPU−0は自プロセッサに割り当てられた区間内のカウント処理を終了する。
CPU−1、CPU−2及びCPU−3はCPU−0と同様に、自プロセッサに割り当てられたLIST−1とLIST−2の要素を先頭から順に比較し、一方のリストの要素間に位置付けられるもう一方のリストの要素の個数をカウントし、同時に、両方のリストからの要素のユニークな値の個数をカウントする。図15A〜Fはこのようにして得られたカウント結果を表す図である。図15Aおよび図15Fは第3ステップで除外された区間についてのユニークな値の個数を示している。この個数は、たとえば、CPU−0によって設定される。
次に、第6ステップにおいて、各CPUは、第5ステップにおいてカウントした一方のリストの要素間に位置付けられるもう一方のリストの要素の個数を累計数化する。図16A〜Cおよび図17A〜Cはこの累計数化を説明する図である。図16Bに示されるように、CPU−0は、自プロセッサに割り当てられた配列Count−2の要素を累計数化する。CPU−0に割り当てられた配列Count−1は全ての要素が0であるため、累計数化によって要素の値は変化しない。説明の便宜上、累計数化されたカウントは、配列Aggr−1及び配列Aggr−2のように表す。この累計数化の計算は、次式のように表すことができる。
Aggr−2[2]=Count−2[2]=0
Aggr−2[3]=Count−2[2]+Count−2[3]=0+1=1
Aggr−2[4]=Count−2[3]+Count−2[4]=1+1=2
Aggr−2[5]=Count−2[4]+Count−2[5]=2+0=2
CPU−1、CPU−2及びCPU−3は、図16C、図17A及びBに示されるように、CPU−1と同様にCount配列の累計数化を行う。第3ステップで除外された区間はCount配列の要素が0のままであるため、累計数化は不要である。
次に、第7ステップにおいて、各CPUは、自プロセッサに割り当てられたLIST−1の要素及びLIST−2の要素の順位付けを行う。順位付けは、原理的には、区間内の順位付けと、全区間に亘る順位付けの2段階に分離できる。しかし、どちらの順位付けも加算演算によって実現されるので、実際的には、両方の順位付けは同時に実行される。図18A〜Cおよび図19A〜Cはこの順位付けを説明する図である。
あるCPUに割り当てられた一方のリストの特定の要素の区間内での順位は、その特定の要素について計算された累計数に、割り当てられた区間内におけるその一方のリスト中でのその特定の要素の順位(順位は0から始まる)を加算することにより得られる。たとえば、図18Bに示されたCPU−0の例では、LIST−2[3]の区間内での順位は、Aggr−2[3]に、LIST−2[3]の区間内での順位、すなわち、1(LIST−2[2]が順位0)を加算することにより、2であることがわかる。CPU−0に割り当てられた区間内で、LIST−2[3]は、LIST−1[0]=LIST−2[2]=100と、LIST−1[1]=110の次の順位であるので、その順位は確かに2である。
全区間での順位を計算するためには、この区間内の順位に、その区間よりも前の区間のユニークな値の個数の合計を加算すればよい。図18Bに示されたCPU−0の例では、CPU−0に割り当てられた区間よりも前に、第3ステップで除外された区間(図18A)が存在するので、この区間のユニークな値の個数=2を、区間内の順位に加算すればよい。図18Cに示されたCPU−1の例では、第3ステップで除外された区間内のユニークな値の個数=2とCPU−0に割り当てられた区間内のユニークな値の個数=6の合計値である8が、CPU−1に割り当てられた区間内の順位に加算される。図19Bを参照すると、LIST−1[15]=390の順位はAggr−1[15]=23であり、LIST−2[14]=400の順位はAggr−2[14]=24であることがわかる。図20には上記の第7ステップ実行後の要素の順位が表されている。
以上の処理によって、LIST−1の全要素とLIST−2の全要素には両方のリストに共通の一連の順位が付けられているので、LIST−1とLIST−2のマージは実質的に終了している。後の処理のために、LIST−1とLIST−2を実際に併合したリストLIST−3をメモリ上に保持する必要がある場合には、(1)簡便法又は(2)高効率法によってリストを作成することができる。
図21〜図23は、本発明による並列マージ処理の一実施例における併合リスト作成処理(簡便法)の説明図である。配列Aggr−1、LIST−1、LIST−2及びAggr−2は、図20に示された配列と同じである。LIST−3はLIST−1とLIST−2を実際に併合した配列である。この併合リスト作成処理では、各CPUが自プロセッサに割り当てられたLIST−1の区間及びLIST−2の区間についてLIST−3の対応する要素を設定する。本例では、第3ステップで除外された区間のうち、LIST−2[0]及びLIST−2[1]はCPU−0へ割り当て、LIST−2[17]乃至LIST−2[22]はCPU−3へ割り当て、その後の処理を実行する。
第1ステップでは、図21に示されるように、CPU−0は、最初に、順位Aggr−1[0]=2が付与された要素LIST−1[0]=100をLIST−3[2]へ転送し、順位Aggr−1[1]=3が付与された要素LIST−1[1]=110をLIST−3[3]へ転送し、以下同様である。CPU−2、CPU−3及びCPU−4もCPU−1と同時に自プロセッサに割り当てられたLIST−1の要素をLIST−3へ転送する。
第2ステップでは、図22に示されるように、CPU−0は、最初に、順位Aggr−2[0]=0が付与されたLIST−2[0]=80をLIST−3[0]へ転送し、次に、順位Aggr−2[1]=1が付与されたLIST−2[1]=90をLIST−3[1]へ転送し、以下同様である。CPU−2、CPU−3及びCPU−4もCPU−1と同時に自プロセッサに割り当てられたLIST−2の要素をLIST−3へ転送する。
このような転送処理により、図23に示されたLIST−3の完成型が得られる。但し、簡便法では、LIST−1とLIST−2に同じ値が存在する場合に、その値はLIST−1とLIST−2の両方からLIST−3へ転送されるので、LIST−1とLIST−2の重複が大きい場合に効率の低下が起こる。そこで、高効率法では、図14A〜Fに示された並列マージ処理の第5ステップにおいて、LIST−1の要素とLIST−2の要素を比較する際に、LIST−2に含まれる要素のうち、LIST−2に存在し、LIST−1に存在しない要素にタグを付ける。そして、図22に示された併合リスト作成処理の第2ステップにおいて、LIST−2の要素の中でタグが付けられている要素だけをLIST−3へ転送する。これにより、重複した転送が回避されるので、効率が高くなる。
[並列マッチング処理の実施例]
最後に、本発明による並列マッチング処理の実施例を説明する。マッチング処理とは、データAとデータBの二つのデータが存在する場合に、相手側のデータに同じ値が存在するかどうかに応じて、自分側のデータ(すなわち、元集合)から一致する相手側が存在するマッチ集合と一致する相手側が存在しないアンマッチ集合とを作成することを意味する。以下の実施例の説明では、データは上記の情報ブロックに基づくデータ管理機構に適合した表形式データである。また、データA側とデータB側とでは同じ処理が行われるので、一方のデータ側だけについて説明する。データA側の処理とデータB側の処理は、十分の台数のプロセッサが存在する場合には並列に実行してもよいが、データA側の処理終了後にデータB側の処理を実行するような形で逐次的に実行してもよい。
図24A、Bは、二つの表形式データ(テーブルA及びテーブルB)のマッチング処理の説明図である。「性別(Sex)」及び「年齢(Age)」を項目とするテーブルA及びテーブルBは、最初に、「性別」=女性であるレコードに絞り込まれる。この絞り込まれたテーブルに関して、自テーブルのあるレコードの項目「年齢」の項目値に一致する「年齢」の項目値が相手側テーブルに存在する場合、自テーブルのそのレコードはマッチ集合に分類され、相手側テーブルに同じ項目値が存在しない場合、そのレコードはアンマッチ集合に分類される。図24A、Bを参照すると、たとえば、テーブルAのレコード0の「年齢」の値18は、テーブルBのレコード4の「年齢」の値と一致するので、テーブルAのレコード0はマッチ集合に分類され、テーブルAのレコード1の「年齢」の値24は、テーブルBの「年齢」の項目値の中に存在しないので、テーブルAのレコード1はアンマッチ集合に分類される。
図25A、Bは、図24A、Bに示された例を上記情報ブロックに基づくデータ管理機構による表形式データとして表現した例である。図25AのテーブルAの例では、初期的なレコード番号配列OrdSetから女性のみの絞り込み検索によってレコード番号配列OrdSet'が生成され、次に、項目「年齢」に関するマッチング処理により、レコード番号配列OrdSet'から一致レコード番号配列OrdSet''と不一致レコード番号配列OrdSet'''が生成される。本発明の実施形態では、情報ブロックに基づくデータ管理機構が使用されるので、項目「性別」及び項目「年齢」の情報ブロックを保持したまま、レコード番号配列が変換されている。たとえば、図25Aに示されたレコード番号配列OrdSet''の2番目の要素は、レコード番号5を表し、このレコード番号5に対応するレコードの項目値はそれぞれの情報ブロックから獲得される。レコード5の「性別」の値は、「性別」の値番号配列VNoの要素VNo[5]の値1を取り出し、この値を用いて「性別」の値リストVLからVL[1]を取り出すことによりWomanであることがわかる。同様に、レコード5の「年齢」の値は20であることがわかる。これは図24A、Bを用いて説明した例と一致している。
以下では、図25A、Bに示された絞り込み検索後のレコード番号配列OrdSet'を元集合として並列マッチング処理の動作を説明する。
第1の表形式データ及び第2の表形式データは共有メモリ型プロセッサシステムのメモリに記憶され、複数台のプロセッサがメモリに記憶された第1の表形式データ及び第2の表形式データにアクセス可能である。第1の表形式データ(テーブルA)及び第2の表形式データ(テーブルB)は、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列OrdSet、表形式データのレコードの所定の項目の項目値に対応する値番号がレコード番号に従って格納された値番号配列VNo、及び、表形式データの項目値が当該項目値に対応する値番号の順序に従って格納された値配列VLとしてメモリに記憶されている。本発明の実施の形態にかかる共有メモリ型マルチプロセッサシステムは、第1の表形式データのレコードを、第2の表形式データにそのレコードと同じ項目値を有するレコードが存在する一致レコードと、同じ項目値を有するレコードが存在しない不一致レコードとに分類する。
図26A、Bは本発明の実施の形態にかかる並列マッチング処理の一実施例の第1ステップから第3ステップの説明図である。尚、以下の説明では、主としてテーブルA側についてのみ説明を行うが、テーブルB側でも同様の処理がなされる。プロセッサの台数が多数である場合には、プロセッサをテーブルA側とテーブルB側に割り振ることにより、各ステップにおいてテーブルA側の処理とテーブルB側の処理を並列に実行することが可能である。或いは、テーブルA側とテーブルB側のそれぞれの処理に全てのプロセッサを使用するため、各ステップにおいて、テーブルA側の処理とテーブルB側の処理を順次行うことも可能である。
第1ステップでは、複数台のプロセッサのうちのいずれか1台のプロセッサ、たとえば、プロセッサCPU−0は、レコード番号配列OrdSet'を分割して複数台のプロセッサに割り当てる。また、値配列VLに設定されている値が実際に使用されているかどうかを示す有効フラグ配列Valid
Flagを作成し、初期化する。有効フラグ配列のサイズは値配列のサイズと同じである。
第2ステップでは、各プロセッサは、自プロセッサに割り当てられたレコード番号配列OrdSet'の要素iを順番に読み出し、読み出されたレコード番号iに対応した項目「年齢」の値番号VNo[i]を読み出し、有効フラグ配列Valid
Flagの中でその値番号に対応した要素のフラグをセットする(すなわち、Valid Flag[VNo[i]]=1)。各プロセッサが割り当てられたレコード番号配列の要素に対して、この処理を繰り返すことにより、有効フラグ配列が完成する。尚、有効フラグ配列Valid
Flagをビットマップとして、プロセッサごとに別々の有効フラグを作成し、その後、これらの有効フラグのビットOR演算を実行しても同じ有効フラグ配列が完成する。
第3ステップでは、いずれか1台のプロセッサが有効フラグ配列Valid Flagの要素にフラグがセットされているかどうかを配列の先頭から順番にチェックし、もしフラグがセットされているならば、そのフラグがセットされた要素に対応した(すなわち、添え字が一致する)値配列VLの要素を有効値配列VL'の先頭から順に格納する。これにより、OrdSet'に含まれているレコードによって実際に使用されている項目「年齢」の値だけが有効値配列VL'に昇順に格納される。
図26Aを参照すると、レコード番号配列の先頭の要素OrdSet'[0]は0であるので、レコード0のVNoを読み出すと、値が1であるので、有効フラグのValid Flag[1]がセットされる。その他のすべてのレコード番号2、3、5、6、9について同様の処理を行うと、完成後Valid
Flagが得られる。この完成後Valid FlagはValid Flag[0]、Valid Flag[1]、Valid Flag[2]及びValid
Flag[4]がセットされているので、テーブルA側の有効値配列の要素は、VL[0]=16、VL[1]=18、VL[2]=20及びVL[4]=24の4個である。図26Bに示されたテーブルB側でも同様の処理がなされ、有効値配列が得られる。
次に、テーブルA側の値配列VLとテーブルB側で作成された有効値配列VL'を比較することにより、テーブルA側の値配列VLの要素が、テーブルB側にも存在する要素とテーブルB側には存在しない要素に分類される。この処理は、テーブルA側の値配列VLを複数のプロセッサに分割して割り当てることによって並列に実行される。
図27A、Bは本発明の実施の形態にかかる並列マッチング処理の一実施例の第4ステップから第5ステップの説明図である。
第4ステップでは、複数台のプロセッサのうちのいずれか1台のプロセッサ、たとえば、プロセッサCPU−0は、テーブルA側の値配列VLを複数台のプロセッサの台数に応じて複数の区間に分割し、テーブルA側の値配列VLの分割された区間の境界の要素の値に応じて対応するテーブルB側の有効項目値配列VL'の区間を定め、複数の区間のそれぞれに含まれるテーブルAの値配列VLの要素の個数とテーブルB側の有効値配列VL'の要素の個数の合計の差が所定の幅に収まるように区間の境界を調整することにより、テーブルA側の値配列VLの要素及びテーブルB側の有効値配列VL'の要素を所定の順序で複数台のプロセッサに割り当てる。このステップでは上記の区間分割処理が行われる。区間分割処理については既に詳細に説明したのでこれ以上説明しない。
第5ステップでは、複数台のプロセッサのそれぞれが、自プロセッサに割り当てられたテーブルA側の値配列VLの要素及びテーブルB側の有効値配列VL'の要素を比較し、自プロセッサに対応する区間の範囲内で自プロセッサに割り当てられたテーブルA側の値配列VLの要素の値と一致する値を有する要素が自プロセッサに割り当てられたテーブルB側の有効値配列VL'に存在する場合に、一致する値を有するテーブルA側の値配列VLの要素にマークを付ける。このマークは、一実施例では、存在フラグ配列Exist
Flagによって実現される。
図27Aを参照すると、テーブルA側の値配列VLの先頭の要素と一致する要素がテーブルB側の有効値配列VL'に存在しないので、対応する存在フラグ配列Exist Flagのフラグはセットされない。テーブルA側の値配列VLの次の要素18は、その要素18と一致する要素がテーブルB側の有効値配列VL'に存在するので、対応する存在フラグ配列Exist
Flagのフラグはセットされる。以下同様に、テーブルA側の値配列VLの全ての要素に対して、複数台のプロセッサが並列にこのマーキングを行う。テーブルB側についても同様である。
この存在フラグ配列は、テーブルA側の値配列VLの要素と一致する要素がテーブルB側に存在するかどうかを示す配列である。したがって、テーブルA側の各レコードについてそのレコードの項目「年齢」の値番号を読み出し、その値番号をインデックスとして存在フラグ配列のフラグの有無を判定することにより、当該レコードを一致レコード又は不一致レコードに分類することができる。
図28はこのような本発明の実施の形態にかかる並列マッチング処理の一実施例の第6ステップから第7ステップの説明図である。
第6ステップでは、いずれかのプロセッサ、たとえば、CPU−0は、第1ステップと同様に、テーブルA側のレコード番号配列OrdSet'を複数台のプロセッサの台数と同じ個数の複数の部分に分割し、複数の部分を複数台のプロセッサに割り当てる。
次に、第7ステップにおいて、複数台のプロセッサのそれぞれが、テーブルA側のレコード番号配列OrdSet'の割り当てられた部分から当該部分に格納されているレコード番号を読み出し、テーブルA側の値番号配列VNoから読み出されたレコード番号に対応する値番号を読み出し、読み出された項目値番号に対応する存在フラグ配列ExistFlagの要素にフラグがセットされているかどうかを判定し、フラグがセットされている場合、読み出されたレコード番号を一致レコードとして分類して一致レコード番号配列OrdSet''に格納し、フラグがセットされていない場合、読み出されたレコード番号を不一致レコードとして分類して不一致レコード番号配列OrdSet'''に格納する。
図28を参照してより具体的に説明する。たとえば、レコード番号配列の先頭から2番目の要素OrdSet''[1]がCPU−0に割り当てられるならば、CPU−0は、OrdSet''[1]=2を読み出す。CPU−0は、次に、値番号配列VNoからVNo[OrdSet''[1]]=VNo[2]=4を読み出す。続いて、CPU−0は、存在フラグ配列ExitFlagからExitFlag[VNo[OrdSet''[1]]]=ExitFlag[VNo[2]]=ExitFlag[4]=0を読み出す。これにより、CPU−0は、テーブルA側のレコード番号2の項目「年齢」の値24に一致する値がテーブルB側に存在しないと判定し、このレコード番号2を不一致レコード番号配列OrdSet'''に格納する。同様の処理が、テーブルA側のOrdSet'の全ての要素に対して複数台のプロセッサによって並列に適用され、テーブルB側のOrdSet'の全ての要素に対しても複数台のプロセッサによって並列に適用される。プロセッサの台数に余裕があるならば、テーブルA側の処理とテーブルB側の処理も並列に実行される。
前述したように、本発明の実施の形態においては、コンピュータシステム10にレコードの所定の項目の項目値に応じてレコード順を並べ替えるプログラムを実行させる。より具体的には、本実施の形態においては、以下のように、プログラムは、各CPUに、上述した処理ステップを実行させ、或いは、上述した機能を実現させる。
本実施の形態において、コンピュータシステム10には、OS(たとえば、リナックス(Linux:登録商標))が搭載される。初期的には、OSの制御にしたがって、あるCPU(たとえば、CPU12−1)が、プログラムをメモリ(たとえば共有メモリ14)にロードする。プログラムがメモリにロードされると、CPU12−1、12−2、...、12−pの各々が処理を実行すべき場合には、OSの制御の下、各CPUに、それぞれ、所定の機能を実現させる。つまり、各CPUが、共有メモリ14に記憶されたプログラム中の所定の処理ステップを読み出し、当該処理ステップを実行する。その一方、特定のCPUが処理をすべき場合には、OSの制御の下、当該特定のCPUに、他の所定の機能を実現させる。つまり、特定のCPUのみが、共有メモリ14に記憶されたプログラム中の他の所定の処理ステップを読み出し、当該他の所定の処理ステップを実行する。なお、各CPUが実行するプログラムの格納場所は、上記共有メモリ14に限定されず、各CPUに付随するそれぞれのローカルメモリ(図示せず)でもよい。
このように、本実施の形態においては、OSの制御の下、プログラムは、各CPUに所定の機能を実現させるとともに、必要に応じて、特定のCPUに、他の所定の機能を実現させることができる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
図1、は本発明の実施の形態にかかるコンピュータシステムの概要図である。 図2は、データ管理機構を説明するための表形式データの一例を表す図である。 図3は、本発明の実施の形態にかかるデータ管理機構の説明図である。 図4A、Bは、本発明の実施の形態にかかるマージ対象のデータ構造の説明図である。 図5A、Bは、二つのリストの区間分割の種々の例を示す図である。 図6A、Bは、二つのリストの区間分割の種々の例を示す図である。 図7A〜Dは、図6Bの区間分割の例に基づく区間内の順位付けの説明図である。 図8A〜Dは、図6Bの区間分割の例に基づいてCPU−0からCPU−3が算出した区間内の要素の順位とユニークな値の個数を表す図である。 図9A〜Dは、図4A、Bのデータ構造に本発明の実施の形態にかかる並列マージ処理を適用して得られた併合リスト内での要素の順位を表す図である。 図10は、本発明の実施の形態にかかる区間分割処理を説明するフローチャートである。 図11は、本発明の実施の形態にかかる区間分割処理を説明するフローチャートである。 図12A、Bは、それぞれ、本発明による並列マージ処理の一実施例の第1ステップおよび第2ステップの説明図である。 図13A、Bは、それぞれ、本発明による並列マージ処理の一実施例の第3ステップおよび第4ステップの説明図である。 図14A〜Fは、本発明による並列マージ処理の一実施例の第5ステップの説明図である。 図15A〜Fは、本発明による並列マージ処理の一実施例の第5ステップ実行後のカウント結果を表す図である。 図16A〜Cは、本発明による並列マージ処理の一実施例の第6ステップの説明図である。 図17A〜Cは、本発明による並列マージ処理の一実施例の第6ステップの説明図である。 図18A〜Cは、本発明による並列マージ処理の一実施例の第7ステップの説明図である。 図19A〜Cは、本発明による並列マージ処理の一実施例の第7ステップの説明図である。 図20は、本発明による並列マージ処理の一実施例の第7ステップ実行後の要素の順位を表す図である。 図21は、本発明による並列マージ処理の一実施例における併合リスト作成処理(簡便法)の説明図である。 図22は、本発明による並列マージ処理の一実施例における併合リスト作成処理(簡便法)の説明図である。 図23は、本発明による並列マージ処理の一実施例における併合リスト作成処理(簡便法)の説明図である。 図24A、Bは、二つの表形式データのマッチング処理の概略図である。 図25A、Bは、情報ブロックに基づくデータ管理機構に従って表現された二つの表形式データのマッチング処理の概略図である。 図26A、Bは、本発明の実施の形態にかかる並列マッチング処理の一実施例の第1ステップから第3ステップの説明図である。 図27A、Bは本発明の実施の形態にかかる並列マッチング処理の一実施例の第4ステップから第5ステップの説明図である。 図28は本発明の実施の形態にかかる並列マッチング処理の一実施例の第6ステップから第7ステップの説明図である。
符号の説明
10 コンピュータシステム
12−1,12−2,・・・,12−p CPU
14 共有メモリ
16 ROM
18 固定記憶装置
20 CD−ROMドライバ
22 I/F
24 入力装置
26 表示装置

Claims (10)

  1. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、
    前記メモリにアクセス可能である複数台のプロセッサと、
    を具備した共有メモリ型プロセッサシステムにおいて、前記第1の配列に格納された値のうち前記第2の配列に存在する値を識別する情報処理方法であって、
    前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて対応する前記第2の配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
    前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の配列に存在する場合に、前記一致する値を有する前記第1の配列の要素にマークを付けるステップと、
    を含む、情報処理方法。
  2. 第1の表形式データ及び第2の表形式データを記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備し、前記第1の表形式データ及び前記第2の表形式データが、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列、表形式データのレコードの所定の項目の項目値に対応する項目値番号がレコード番号に従って格納された項目値番号配列、及び、表形式データの項目値が当該項目値に対応する項目値番号の順序に従って格納された項目値配列として前記メモリに記憶される、共有メモリ型マルチプロセッサシステムにおいて、前記第1の表形式データの前記レコードを、前記第2の表形式データにそのレコードと同じ項目値を有するレコードが存在する一致レコードと、前記同じ項目値を有するレコードが存在しない不一致レコードとに分類する情報処理方法であって、
    前記第1の表形式データの前記項目値配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の表形式データの前記項目値配列の分割された区間の境界の要素の値に応じて対応する前記第2の表形式データの前記項目値配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の表形式データの前記項目値配列の要素の個数と前記第2の表形式データの前記項目値配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
    前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の表形式データの前記項目値配列に存在する場合に、前記一致する値を有する前記第1の表形式データの前記項目値配列の要素にマークを付けるステップと、
    前記第1の表形式データの前記レコード番号配列を前記複数台のプロセッサの台数と同じ個数の複数の部分に分割し、前記複数の部分を前記複数台のプロセッサに割り当てるステップと、
    前記複数台のプロセッサのそれぞれが、前記第1の表形式データの前記レコード番号配列の前記割り当てられた部分から当該部分に格納されているレコード番号を読み出し、前記第1の表形式データの前記項目値番号配列から前記読み出されたレコード番号に対応する項目値番号を読み出し、前記読み出された項目値番号に対応する前記第1の表形式データの前記項目値配列の要素に前記マークが付けられているかどうかを判定し、前記マークが付けられている場合、前記読み出されたレコード番号を前記一致レコードとして分類し、前記マークが付けられていない場合、前記読み出されたレコード番号を前記不一致レコードとして分類するステップと、
    を含む情報処理方法。
  3. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムにおいて、前記第1の配列と前記第2の配列を前記所定の順序で重複なしにマージする情報処理方法であって、
    前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて前記第1の配列の前記複数の区間に対応する前記第2の配列の複数の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てるステップと、
    前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較することにより、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で順位付けし、前記区間に含まれる要素のユニークな値の個数をカウントするステップと、
    前記複数台のプロセッサのそれぞれが、前記所定の順序に関して自プロセッサに割り当てられた前記区間よりも前の区間に含まれる要素の前記ユニークな値の個数の合計を、前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位に加算することにより、前記第1の配列に格納された値及び前記第2の配列に格納された値に前記所定の順序で順位付けするステップと、
    を含む情報処理方法。
  4. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、
    前記メモリにアクセス可能である複数台のプロセッサと、
    を具備した共有メモリ型プロセッサシステムであって、
    前記複数台のプロセッサのいずれか1台のプロセッサが、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて対応する前記第2の配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備し、
    前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の配列に存在する場合に、前記一致する値を有する前記第1の配列の要素にマークを付ける手段を具備する、
    共有メモリ型プロセッサシステム。
  5. 第1の表形式データ及び第2の表形式データを記憶するメモリと、
    前記メモリにアクセス可能である複数台のプロセッサと、
    を具備し、
    前記第1の表形式データ及び前記第2の表形式データが、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列、表形式データのレコードの所定の項目の項目値に対応する項目値番号がレコード番号に従って格納された項目値番号配列、及び、表形式データの項目値が当該項目値に対応する項目値番号の順序に従って格納された項目値配列として前記メモリに記憶される、
    共有メモリ型マルチプロセッサシステムであって、
    前記複数台のプロセッサのいずれか1台のプロセッサが、前記第1の表形式データの前記項目値配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の表形式データの前記項目値配列の分割された区間の境界の要素の値に応じて対応する前記第2の表形式データの前記項目値配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の表形式データの前記項目値配列の要素の個数と前記第2の表形式データの前記項目値配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備し、
    前記複数台のプロセッサのそれぞれが、自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の表形式データの前記項目値配列に存在する場合に、前記一致する値を有する前記第1の表形式データの前記項目値配列の要素にマークを付ける手段を具備し、
    前記複数台のプロセッサのうちのいずれか1台のプロセッサが、前記第1の表形式データの前記レコード番号配列を前記複数台のプロセッサの台数と同じ個数の複数の部分に分割し、前記複数の部分を前記複数台のプロセッサに割り当てる手段を具備し、
    前記複数台のプロセッサのそれぞれが、前記第1の表形式データの前記レコード番号配列の前記割り当てられた部分から当該部分に格納されているレコード番号を読み出し、前記第1の表形式データの前記項目値番号配列から前記読み出されたレコード番号に対応する項目値番号を読み出し、前記読み出された項目値番号に対応する前記第1の表形式データの前記項目値配列の要素に前記マークが付けられているかどうかを判定し、前記マークが付けられている場合、前記読み出されたレコード番号を一致レコードとして分類し、前記マークが付けられていない場合、前記読み出されたレコード番号を不一致レコードとして分類する手段を具備する、
    共有メモリ型プロセッサシステム。
  6. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムであって、
    前記複数台のプロセッサのいずれか1台のプロセッサが、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて前記第1の配列の前記複数の区間に対応する前記第2の配列の複数の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる手段を具備し、
    前記複数台のプロセッサのそれぞれが、
    自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較することにより、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で順位付けし、前記区間に含まれる要素のユニークな値の個数をカウントする手段と、
    前記所定の順序に関して自プロセッサに割り当てられた前記区間よりも前の区間に含まれる要素の前記ユニークな値の個数の合計を、前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位に加算することにより、前記第1の配列に格納された値及び前記第2の配列に格納された値に前記所定の順序で順位付けする手段と、
    を具備する、
    共有メモリ型マルチプロセッサシステム。
  7. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムにおいて、
    前記複数台のプロセッサのいずれか1台のプロセッサに、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて対応する前記第2の配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる機能を実現させ、
    前記複数台のプロセッサのそれぞれに、自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の配列に存在する場合に、前記一致する値を有する前記第1の配列の要素にマークを付ける機能を実現させるためのプログラム。
  8. 第1の表形式データ及び第2の表形式データを記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備し、前記第1の表形式データ及び前記第2の表形式データが、それぞれのレコードのレコード番号が所定のレコード順に従って格納されたレコード番号配列、表形式データのレコードの所定の項目の項目値に対応する項目値番号がレコード番号に従って格納された項目値番号配列、及び、表形式データの項目値が当該項目値に対応する項目値番号の順序に従って格納された項目値配列として前記メモリに記憶される、共有メモリ型マルチプロセッサシステムにおいて、
    前記複数台のプロセッサのいずれか1台のプロセッサに、前記第1の表形式データの前記項目値配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の表形式データの前記項目値配列の分割された区間の境界の要素の値に応じて対応する前記第2の表形式データの前記項目値配列の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の表形式データの前記項目値配列の要素の個数と前記第2の表形式データの前記項目値配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる機能を実現させ、
    前記複数台のプロセッサのそれぞれに、自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素及び前記第2の表形式データの前記項目値配列の要素を比較し、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の表形式データの前記項目値配列の要素の値と一致する値を有する要素が前記自プロセッサに割り当てられた前記第2の表形式データの前記項目値配列に存在する場合に、前記一致する値を有する前記第1の表形式データの前記項目値配列の要素にマークを付ける機能を実現させ、
    前記複数台のプロセッサのいずれか1台のプロセッサに、前記第1の表形式データの前記レコード番号配列を前記複数台のプロセッサの台数と同じ個数の複数の部分に分割し、前記複数の部分を前記複数台のプロセッサに割り当てる機能を実現させ、
    前記複数台のプロセッサのそれぞれに、前記第1の表形式データの前記レコード番号配列の前記割り当てられた部分から当該部分に格納されているレコード番号を読み出し、前記第1の表形式データの前記項目値番号配列から前記読み出されたレコード番号に対応する項目値番号を読み出し、前記読み出された項目値番号に対応する前記第1の表形式データの前記項目値配列の要素に前記マークが付けられているかどうかを判定し、前記マークが付けられている場合、前記読み出されたレコード番号を一致レコードとして分類し、前記マークが付けられていない場合、前記読み出されたレコード番号を不一致レコードとして分類する機能を実現させるためのプログラム。
  9. 昇順又は降順である所定の順序で重複のない値が格納された第1の配列及び第2の配列を記憶するメモリと、前記メモリにアクセス可能である複数台のプロセッサと、を具備した共有メモリ型プロセッサシステムにおいて、
    前記複数台のプロセッサのいずれか1台のプロセッサに、前記第1の配列を前記複数台のプロセッサの台数に応じて複数の区間に分割し、前記第1の配列の分割された区間の境界の要素の値に応じて前記第1の配列の前記複数の区間に対応する前記第2の配列の複数の区間を定め、前記複数の区間のそれぞれに含まれる前記第1の配列の要素の個数と前記第2の配列の要素の個数の合計の差が所定の幅に収まるように前記区間の境界を調整することにより、前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で前記複数台のプロセッサに割り当てる機能を実現させ、
    前記複数台のプロセッサのそれぞれに、
    自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を比較することにより、前記自プロセッサに対応する前記区間の範囲内で前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素を前記所定の順序で順位付けし、前記区間に含まれる要素のユニークな値の個数をカウントする機能と、
    前記所定の順序に関して自プロセッサに割り当てられた前記区間よりも前の区間に含まれる要素の前記ユニークな値の個数の合計を、前記自プロセッサに割り当てられた前記第1の配列の要素及び前記第2の配列の要素に付けられた順位に加算することにより、前記第1の配列に格納された値及び前記第2の配列に格納された値に前記所定の順序で順位付けする機能と、
    を実現させるためのプログラム。
  10. 請求項7乃至9のうちいずれか1項に記載のプログラムを記録したコンピュータ読み取り可能な記憶媒体。
JP2007530960A 2005-08-15 2006-08-09 共有メモリ型マルチプロセッサシステム及びその情報処理方法 Active JP4758429B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007530960A JP4758429B2 (ja) 2005-08-15 2006-08-09 共有メモリ型マルチプロセッサシステム及びその情報処理方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005235129 2005-08-15
JP2005235129 2005-08-15
PCT/JP2006/315738 WO2007020849A1 (ja) 2005-08-15 2006-08-09 共有メモリ型マルチプロセッサシステム及びその情報処理方法
JP2007530960A JP4758429B2 (ja) 2005-08-15 2006-08-09 共有メモリ型マルチプロセッサシステム及びその情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2007020849A1 JPWO2007020849A1 (ja) 2009-02-26
JP4758429B2 true JP4758429B2 (ja) 2011-08-31

Family

ID=37757511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007530960A Active JP4758429B2 (ja) 2005-08-15 2006-08-09 共有メモリ型マルチプロセッサシステム及びその情報処理方法

Country Status (3)

Country Link
US (1) US7890705B2 (ja)
JP (1) JP4758429B2 (ja)
WO (1) WO2007020849A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101196566B1 (ko) * 2005-05-24 2012-11-01 가부시키가이샤 터보 데이터 라보라토리 멀티 프로세서 시스템 및 그 정보처리방법
JP4881435B2 (ja) * 2007-06-21 2012-02-22 株式会社ターボデータラボラトリー メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置
US20150019516A1 (en) * 2013-07-09 2015-01-15 David Wein Providing Durability of In-Memory Columnar Datastores Using Multile Logs
US9721007B2 (en) * 2014-10-07 2017-08-01 Oracle International Corporation Parallel data sorting
US10706055B2 (en) 2016-04-06 2020-07-07 Oracle International Corporation Partition aware evaluation of top-N queries
US10599395B1 (en) 2017-10-11 2020-03-24 Amperity, Inc. Dynamically merging database tables
CN111339133B (zh) * 2018-12-19 2022-08-05 深圳市优必选科技有限公司 数据的切分方法、装置、计算机设备及存储介质
CN113791742B (zh) * 2021-11-18 2022-03-25 南湖实验室 一种高性能的数据湖系统及数据存储方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044667A (ja) * 2001-07-30 2003-02-14 Nippon Risk Data Bank Kk 名寄せシステム、名寄せ方法、そのシステムでの処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体、及び、情報一致判断装置
JP2004086782A (ja) * 2002-08-29 2004-03-18 Hitachi Ltd 異種データベース統合支援装置
JP2004171220A (ja) * 2002-11-19 2004-06-17 Yamatake Corp 文書管理装置および方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3449216A (en) * 1966-08-11 1969-06-10 Artisan Ind Multistage evaporator system for the separation of monomer-solvent mixtures
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
JP3392280B2 (ja) * 1996-01-11 2003-03-31 富士通株式会社 並列ソート処理方法
US6131113A (en) * 1998-02-24 2000-10-10 International Business Machines Corporation Managing a shared resource in a multi-processor system
JP3581831B2 (ja) 1998-08-11 2004-10-27 晋二 古庄 表形式データの検索・集計・ソート方法及び装置
US6427148B1 (en) * 1998-11-09 2002-07-30 Compaq Computer Corporation Method and apparatus for parallel sorting using parallel selection/partitioning
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法
JP3674515B2 (ja) * 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
WO2001093106A2 (en) * 2000-05-26 2001-12-06 Infolibria, Inc. High performance efficient subsystem for data object storage
US20070174843A1 (en) * 2003-10-24 2007-07-26 Shinji Furusho Distributed memory type information processing system
KR101196566B1 (ko) * 2005-05-24 2012-11-01 가부시키가이샤 터보 데이터 라보라토리 멀티 프로세서 시스템 및 그 정보처리방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044667A (ja) * 2001-07-30 2003-02-14 Nippon Risk Data Bank Kk 名寄せシステム、名寄せ方法、そのシステムでの処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体、及び、情報一致判断装置
JP2004086782A (ja) * 2002-08-29 2004-03-18 Hitachi Ltd 異種データベース統合支援装置
JP2004171220A (ja) * 2002-11-19 2004-06-17 Yamatake Corp 文書管理装置および方法

Also Published As

Publication number Publication date
US7890705B2 (en) 2011-02-15
US20090106299A1 (en) 2009-04-23
WO2007020849A1 (ja) 2007-02-22
JPWO2007020849A1 (ja) 2009-02-26

Similar Documents

Publication Publication Date Title
JP4758429B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
US7558802B2 (en) Information retrieving system
US10579661B2 (en) System and method for machine learning and classifying data
US9292567B2 (en) Bulk matching with update
US8126911B2 (en) System and method for content-based partitioning and mining
US8943091B2 (en) System, method, and computer program product for performing a string search
US11281645B2 (en) Data management system, data management method, and computer program product
EP2804115B1 (en) Index scan device and index scan method
US6424970B1 (en) Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes
US10545960B1 (en) System and method for set overlap searching of data lakes
US8515976B2 (en) Bit string data sorting apparatus, sorting method, and program
US11182125B2 (en) Computing device sort function
JP4511469B2 (ja) 情報処理方法及び情報処理システム
US8667008B2 (en) Search request control apparatus and search request control method
US7533245B2 (en) Hardware assisted pruned inverted index component
US20130031048A1 (en) Data partitioning apparatus and data partitioning method
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP2015162042A (ja) インデックス管理装置
CN110309367B (zh) 信息分类的方法、信息处理的方法和装置
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
US20050055364A1 (en) Hardware assisted pruned inverted index component
JP4772506B2 (ja) 情報処理方法、情報処理システムおよびプログラム
CN111639103B (zh) 业务数据处理方法、装置、计算机系统和介质
US11734282B1 (en) Methods and systems for performing a vectorized delete in a distributed database system
US20150278259A1 (en) Entry insertion apparatus, method, and program

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090629

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090629

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110602

R150 Certificate of patent or registration of utility model

Ref document number: 4758429

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140610

Year of fee payment: 3

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250