JP7052874B2 - 情報処理装置、情報処理方法及びプログラム - Google Patents

情報処理装置、情報処理方法及びプログラム Download PDF

Info

Publication number
JP7052874B2
JP7052874B2 JP2020537940A JP2020537940A JP7052874B2 JP 7052874 B2 JP7052874 B2 JP 7052874B2 JP 2020537940 A JP2020537940 A JP 2020537940A JP 2020537940 A JP2020537940 A JP 2020537940A JP 7052874 B2 JP7052874 B2 JP 7052874B2
Authority
JP
Japan
Prior art keywords
bit
vector
data string
data
value
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
JP2020537940A
Other languages
English (en)
Other versions
JPWO2020039522A1 (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 JPWO2020039522A1 publication Critical patent/JPWO2020039522A1/ja
Application granted granted Critical
Publication of JP7052874B2 publication Critical patent/JP7052874B2/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/30018Bit or string instructions
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は情報処理装置、情報処理方法及びプログラムに関する。
大量のデータに対する処理を高速に実行するためには、ハードウェアによる高速化技術とソフトウェアによる高速化技術の両方を組み合わせて利用することが重要である。
データ列の個々の要素が取り得る値の種類が非常に限られている場合、例えば{0,1}の二値のみからなるデータ列を処理する場合などに、データ列をビットベクトルに変換することで処理を高速化する方法が知られている。ビットベクトルでは、元のデータ列の各要素から意味のあるビットのみを取り出し、そのビット列でデータ列を表現する。例えば、データ列が{0,1}の二値のみからなる場合は、そのデータ列の中で意味のある部分は各要素中の1ビットずつのみであるため、元のデータ列の一要素はビットベクトルの1ビットで表現することができる。プロセッサでビットベクトルを扱うために特殊なデータ構造を用意する必要はなく、単なる整数型の配列を用いることが多い。
特許文献1には、関連する技術として、データベースに対して複雑な条件節を持つクエリを実行する際にビットベクトルを利用する方法に関する技術が開示されている。
特許文献2には、関連する技術として、SVM(Support Vector Machine)の学習においてビットベクトルを利用する方法に関する技術が開示されている。
特許第6305406号公報 特許第6055391号公報
SIMD(Single Instruction Multiple Data)方式の並列処理による並列ビットベクトル変換では、元のデータ列は{0,1}の二値のみからなるものとし、変換先ビットベクトルの一要素あたりのビット幅をmとすると、元のデータ列の要素のm個を一回のSIMD方式の並列処理でまとめて変換する。すなわちSIMD方式の並列処理の並列数はmである。並列するm個の要素に対しては、それぞれ、変換先の一要素内における対応するビット位置まで値をビットシフトした後、それらのm個の値をビット論理和により変換先の一要素に設定する。SIMD型プロセッサの最大並列数は、数百から数千単位に及ぶものまで存在するが、一方で、プロセッサが特殊なデータ構造を用いることなく扱える整数型は、高々64ビットの幅しかないものが普通である。そのため、関連する技術ではSIMD型プロセッサの最大並列数を大きく下回る並列数でしかビットベクトルを生成できない。つまり、関連する技術の並列ビットベクトル変換では、SIMDの並列数がビットベクトルの一要素あたりのビット幅mと同じ数までに制限されてしまうという問題がある。
本発明の各態様は、上記の課題を解決することのできる情報処理装置、情報処理方法及びプログラムを提供することを目的としている。
上記目的を達成するために、本発明の一態様によれば、情報処理装置は、入力データ列を複数の群に分割する入力データ列分割部と、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動するビットシフト部と、前記ビットシフト部によって桁移動した前記データの値を、出力データ列の対応する桁に設定するビット設定部と、を備える。
本発明の別の態様によれば、情報処理方法は、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を含む。
本発明の別の態様によれば、プログラムは、コンピュータに、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を実行させる。
本発明の各態様によれば、SIMD方式の並列処理の並列数がビット幅に制限されず、SIMD方式の並列処理をより多くの並列数で高速にビットベクトルを生成することができる。
本発明の第1の実施形態によるビットベクトル生成装置の構成を示す図である。 本発明の第1の実施形態によるビット設定部の動作を説明するための図である。 本発明の第1の実施形態によるビットベクトル生成装置の処理フローを示す図である。 本発明の第1の実施形態によるビットベクトル生成装置の処理を説明するための図である。 本発明の別の実施形態によるデータ列生成装置の構成を示す図である。 本発明の第2の実施形態による集約演算システムの構成を示す図である。 本発明の第2の実施形態による集約演算システムの処理を説明するための図である。 本発明の第2の実施形態において機械学習のモデル生成に用いるデータセットの例を示す図である。 本発明の第3の実施形態によるベクトル演算システムの構成を示す図である。 本発明の第3の実施形態によるベクトル演算システムの処理を説明するための図である。 本発明の実施形態による最小構成のビットベクトル生成装置を示す図である。 少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
<第1の実施形態>
以下、図面を参照しながら実施形態について詳しく説明する。
本発明の第1の実施形態によるビットベクトル生成装置10(情報処理装置の一例)は、図1に示すように、入力データ列分割部101、ビットシフト部102a1、102a2、102a3、・・・、102am、ビット設定部103を備える。ビットシフト部102a1、102a2、102a3、・・・、102akを総称してビットシフト部102と呼ぶ。
ビットベクトル生成装置10は、SIMD型プロセッサが備える装置である。ビットベクトルの一要素あたりのビット幅をmとし、入力データ列を先頭から順番に、各要素ひとつずつ異なる桁数でビットシフトする関連する技術を用いた場合とは異なり、ビットベクトル生成装置10は、m個のグループひとつあたりに含まれる要素数を、出力ビットベクトルの要素数kと同じ要素数とすることで、SIMD方式の並列処理をk並列で行うことのできる出力ビットベクトルを生成する装置である。
入力データ列分割部101は、入力データ列を複数の群に分割する。例えば、入力データ列分割部101は、入力となるデータ列を、メモリ上で連続した要素で構成されるようにm個のグループに分割する。m個のグループひとつあたりに含まれる要素数は、出力ビットベクトルの要素数kと同じ要素数とする。
ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。例えば、ビットシフト部102それぞれは、ひとつのグループ内の各要素を一回のSIMD方式の並列処理でまとめてビットシフトする。ビットシフト部102は、一回のSIMD方式の並列処理において、グループ内の各要素の値をすべて同じ桁数だけビットシフトする。
ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する。例えば、ビット設定部103は、ビットシフト部102それぞれがビットシフトした後の値を出力ビットベクトルの対応するビット位置に設定する。
例えば、図2に示されている元のデータ列が第jグループ(j∈{0,1,2,…,m-1})であるとき、ビットシフト部102は、この第jグループに含まれるk個の要素はすべてjビットだけ左へ(上位ビット側へ)シフトし、ビット設定部103は、その値を出力ビットベクトルのそれぞれの要素の第jビット目に設定する。
次に、本発明の第1の実施形態によるビットベクトル生成装置10の処理について説明する。ここでは、図3に示すビットベクトル生成装置10の処理フローについて説明する。なお、nは入力データ列の要素数、mはビットベクトルの一要素あたりのビット幅、kは出力ビットベクトルの要素数、iはひとつの群内におけるデータの位置を示す添え字である。また、このとき、変換後のビットベクトルの要素数kは、k=CEILING(n/m)と表すことができる(CEILINGは、天井関数である)。また、SRCは入力データ列、DESTは出力ビットベクトルである。
ビットベクトル生成装置10は、出力ビットベクトルDESTを初期値ゼロに初期化する(ステップS1)。この初期化は、入力データ列分割部101、ビットシフト部102、ビット設定部103のいずれが主体となって行うものであってもよい。
入力データ列SRCが入力データ列分割部101に入力される。入力データ列分割部101は、入力データ列を複数の群に分割する(ステップS2)。例えば、入力データ列分割部101は、入力データ列SRCを先頭から順番に、グループひとつあたりk要素が含まれるように、全体でm個のグループに分割する。この入力データ列分割部101の動作は、図3の処理フローでは繰り返し処理Aに相当し、繰り返し変数j∈{0,1,2,…,m-1}を用いれば、各グループを第jグループと表記するサブルーチンとして表すことができる。
ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する(ステップS3)。例えば、ビットシフト部102それぞれは、第jグループ内の各要素をすべてjビットだけSIMD方式の並列処理により左へシフトする。ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する(ステップS4)。例えば、ビット設定部103は、それらのjビットだけ左へシフトした値を出力ビットベクトルのjビット目に設定する。ビットシフト部102とビット設定部103のこれらの動作は、図3の処理フローでは繰り返し処理Bと内部のSIMD方式の並列処理によるサブルーチンに相当する。なお、ビット設定部103によるビットの設定は、ビット論理和演算により行うことができる。また、ビット設定部103によるビットの設定は、整数の加算演算により行うものであってもよい。
(具体例1)
本発明の第1の実施形態によるビットベクトル生成装置10の処理の具体例について、図4を参照して説明する。入力となる元のデータ列SRCは、図4に示すように、24個の要素からなる(n=24)。ビットベクトルの一要素あたりのビット幅を4ビットとする(m=4)。出力となるビットベクトルの要素数kは、k=CEILING(24÷4)=6である。
ビットベクトル生成装置10において、入力データ列分割部101は、入力データ列を6要素ずつグループに分割し、全体で4個のグループを作る。入力データ列分割部101は、上述した繰り返し変数j∈{0,1,2,…,m-1}の値に合わせて、先頭から順に第0グループ、第1グループ、第2グループ、第3グループとする。また、入力データ列分割部101は、ビットベクトルのビット位置についても、最下位を0ビット目と数えるものとする。
ビットシフト部102それぞれは、第0グループに含まれる6個の要素にはビットシフトを行わない(SIMD方式の並列処理により0ビットのシフトを行う)。ビット設定部103は、ビットベクトルの6個の要素それぞれの0ビット目に設定する。ビットシフト部102それぞれは、SIMD方式の並列処理により第1グループに含まれる6個の要素をすべて1ビット左へシフトする。ビット設定部103は、ビットベクトルの6個の要素それぞれの1ビット目に設定する。以下同様であるが、ビットシフト部102それぞれは、SIMD方式の並列処理により第2グループに含まれる6個の要素にはすべて2ビット左へシフトし、ビット設定部103は、ビットベクトルの6個の要素それぞれの2ビット目に設定する。最後に、ビットシフト部102それぞれは、SIMD方式の並列処理により第3グループに含まれる6個の要素にはすべて3ビット左へシフトし、ビット設定部103は、ビットベクトルの6個の要素それぞれの3ビット目に設定する。このような処理により出力ビットベクトルDESTが完成する。
以上、本発明の第1の実施形態によるビットベクトル生成装置10について説明した。本発明の第1の実施形態によるビットベクトル生成装置10において、入力データ列分割部101は、入力データ列を複数の群に分割する。ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する。
このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。また、処理する入力データ列SRCと出力ビットベクトルDESTは、どちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置10は、高速にビットベクトルを生成することができる。
なお、本発明の別の実施形態では、ビットの並び順は、ビットベクトルの一要素内で逆順であってもよい。つまり、ビットベクトルの一要素内において、下位ビットから上位ビットに向かって順に値を設定していくか、上位ビットから下位ビットに向かって順に値を設定していくかは、どちらの順番でもよい。上で述べた動作の説明とは逆順の場合、ビットシフト部102は、第jグループ内の各要素をすべてm-j-1ビットだけ左へシフトすればよい。
なお、本発明の別の実施形態では、ビットベクトルを入力として元の並び順のデータ列を生成するため、つまり、ビットベクトルから元のデータ列への逆変換を行うデータ列生成装置3(情報処理装置の一例)であってもよい。すなわち、本発明の別の実施形態によるデータ列生成装置3は、例えば図5に示すように、ビット取得部201と、ビット逆シフト部202と、データ要素設定部203と、から構成される。ビット取得部201は、入力ビットベクトルの各要素から特定のビット位置の値を取得する。ビット逆シフト部202は、各ビット位置の値を下位ビットの位置までSIMD方式の並列処理によりビットシフトする。データ要素設定部203は、ビットシフトした値をデータ列の各要素に設定する。本発明の別の実施形態では、データ列生成装置3は、上述のようなビット取得部201、ビット逆シフト部202、データ要素設定部203を備えるものであってもよい。なお、ここで説明したデータ列生成装置3は、後述する本発明の第3の実施形態によるビットベクトル逆変換装置2のビットベクトル逆変換部40に相当する。
なお、本発明の第1の実施形態によるビットベクトル生成装置10は、入力となるデータ列を{0,1}の二値のみからなるものとした。しかしながら、本発明の別の実施形態では、入力となるデータ列を{0,1}の二値に限定するものではない。本発明の別の実施形態では、入力となるデータ列を、例えば離散値データ列とするものであってもよい。ここで、データ列の個々の要素が取り得る値の種類が限られており、その値の種類を表現できるだけの充分なビット数tを考える。例えば、入力データ列が{0,1,2}の三値からなる場合、ビット数tは2ビットあれば充分である。そこで、元のデータ列の一要素とビットベクトルのtビット分が対応するように、ビットシフト部102のビットシフト量とビット設定部103のビット設定位置を変更すれば、離散値データ列を入力とする場合にもビットベクトルを生成することができる。
<第2の実施形態>
次に、本発明の第2の実施形態による集約演算システム1(情報処理装置の一例)について説明する。
本発明の第2の実施形態による集約演算システム1は、入力データ列SRCから出力ビットベクトルDESTを生成した上で、データ列の集約演算を行うシステムである。
集約演算システム1は、図6に示すように、ビットベクトル生成装置10a1、10a2、・・・、10aN、集約演算部20を備える。ビットベクトル生成装置10a1、10a2、・・・、10aNを総称してビットベクトル生成装置10aと呼ぶ。
ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同一である。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成し、生成した出力ビットベクトルDESTを集約演算部20に出力する。
集約演算部20は、複数の出力ビットベクトルDESTを入力として、ビットベクトルの集約演算を行う。集約演算とは、例えば、データ列の総和や平均値などの算出、データ列において特定の条件を満たす要素の個数を数え上げる処理、ベクトル同士の内積演算、行列同士の行列積演算などである。
次に、本発明の第2の実施形態による集約演算システム1の処理について説明する。なお、ビットベクトル生成装置10aは、本発明の第1の実施形態によるビットベクトル生成装置10と同一であるため、ここでは、集約演算部20の処理について説明する。
集約演算部20は、本来は元の入力データ列SRCに対して行う演算と同等の演算を、出力ビットベクトルDESTに対して行う。ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態において説明したように、関連する技術を用いて生成したビットベクトルとはビットの並び順が異なる出力ビットベクトルDESTを生成する。しかしながら、集約演算部20が行う演算は、総和や内積など、ビットの並び順に無関係な演算である。そのため、集約演算システム1は、正しい集約演算を行うことができる。すなわち、集約演算システム1は、正しい集約値を算出することができる。
例えば、{0,1}の二値のみからなるデータ列の集約演算部20による総和の算出は、ビットベクトル中の1となっているビットの個数を数え上げることで算出することができる。この場合の集約演算部20の演算は、出力ビットベクトルDESTの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
また、例えば、{0,1}の二値のみからなるベクトル同士の集約演算部20による内積演算は、ビットベクトル同士のビット論理積演算を行う処理と、ビットベクトルの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
(具体例2)
本発明の第2の実施形態による集約演算システム1の処理の具体例について、図7を参照して説明する。ここでは、集約演算システム1がデータ列の総和を算出する例について説明する。
入力となる入力データ列SRCは、ビットベクトル生成装置10aそれぞれに入力される。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成する。集約演算部20は、ビットベクトル生成装置10aそれぞれが生成した出力ビットベクトルDESTの各要素に対してポップカウント処理を行う。集約演算部20がポップカウント処理を行った結果は、図7においてポップカウントし記載されているように、0,1,2,3,2,1の値を示す。集約演算部20は、これらの値の総和を演算し、演算結果として総和9を導出する。このように、集約演算部20は、図7の元のデータ列の総和9と同じ値を導出する。
以上、本発明の第2の実施形態による集約演算システム1について説明した。本発明の第2の実施形態による集約演算システム1において、ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同様に入力データ列SRCから出力ビットベクトルDESTを生成する。集約演算部20は、本来は元の入力データ列SRCに対して行う演算と同等の演算を、出力ビットベクトルDESTに対して行う。
このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができ、集約演算部20は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、集約演算システム1は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
例えば、機械学習のモデル生成に用いるデータセットTBL1において、特定の特徴量が離散値からなる場合がある。具体例を挙げると、図8に示すように、人間の性別を示す特徴量として、男性なら1、そうでなければ0を用いるという場合や、人間の血液型を示す特徴量として、A型に0、B型に1、O型に2、AB型に3を用いるという場合、職業を示す特徴量として、会社員に0、主婦に1、学生に3を用いるという場合などである。機械学習のモデル生成においては、ベクトルの内積演算を行う処理を含む場合があるが、先に述べたような特徴量を実数ベクトルではなく離散値ベクトルとして扱えば、集約演算システム1を利用して離散値ベクトルの内積演算を行うことができる。そのため集約演算システム1は、機械学習のモデル生成におけるベクトルの内積演算の一部または全部を、高速化することができる。この場合、集約演算部20は、ビット設定部103がデータの値を対応する桁に設定した出力データ列(すなわち、出力されるビットベクトル)に対して、出力データ列の総和、出力データ列の平均値、出力データ列における特定の要素の個数、複数の出力データ列が示すベクトル同士の内積、及び、複数の出力データ列が示す行列同士の行列積のうちの少なくとも1つを、SIMD方式の並列処理によって、演算を行う。
なお、本発明の第2の実施形態による集約演算システム1は、ビットベクトル生成装置10aを複数備えるものとして説明した。しかしながら、本発明の別の実施形態による集約演算システム1は、ビットベクトル生成装置10aを1つ備え、そのビットベクトル生成装置10aが生成した出力ビットベクトルDESTについて、集約演算部20が集約演算を行うものであってもよい。
<第3の実施形態>
次に、本発明の第3の実施形態によるベクトル演算システム2(情報処理装置の一例)について説明する。
本発明の第3の実施形態によるベクトル演算システム2は、入力データ列SRCをビットベクトルに変換した上で、データ列のベクトル演算を行うシステムである。ベクトル演算システム2は、元のデータ列の要素の並び順が後に必要となる場合を想定したシステムである。
ベクトル演算システム2は、図9に示すように、ビットベクトル生成装置10a1、10a2、・・・、10aN、ビット演算部30、ビットベクトル逆変換部40を備える。ビットベクトル生成装置10a1、10a2、・・・、10aNを総称してビットベクトル生成装置10aと呼ぶ。
ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同一である。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成し、生成した出力ビットベクトルDESTをビット演算部30に出力する。
ビット演算部30は、複数のビットベクトルについてビット演算を行う。ビット演算とは、例えば、ビット反転(NOT)、ビット論理積(AND)、ビット論理和(OR)、ビット排他的論理和(XOR)などである。
ビットベクトル逆変換部40は、ビットベクトルを入力として元の並び順のデータ列を生成する。つまり、ビットベクトル逆変換部40は、ビットベクトルから元のデータ列への逆変換を行う機能部である。
次に、本発明の第3の実施形態によるベクトル演算システム2の処理について説明する。なお、ビットベクトル生成装置10aは、本発明の第1の実施形態によるビットベクトル生成装置10と同一であるため、ここでは、ビット演算部30とビットベクトル逆変換部40の処理について説明する。
ビット演算部30は、本来は元の入力データ列SRCに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルDESTに対して行う。
ビットベクトル逆変換部40は、ビットベクトル生成装置10と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。そのため、本発明の第3の実施形態によるベクトル演算システム2は、正しい演算結果を得ることができる。
例えば、{0,1}の二値のみからなるデータ列同士の、要素ごとのベクトル演算システム2による乗算(いわゆるアダマール積)は、ビットベクトル同士のビット論理積演算で同等の結果を得ることができる。この場合のビット演算部30の処理は、ビットベクトルの各要素に対してビット論理積演算を行う処理からなる。
(具体例3)
本発明の第3の実施形態によるベクトル演算システム2の処理の具体例について、図10を参照して説明する。ここでは、データ列Uとデータ列Vの要素ごとの乗算をベクトル演算システム2が算出する例について説明する。
ビットベクトル生成装置10aそれぞれは、入力であるデータ列U及びデータ列Vから、ビットベクトルU’及びビットベクトルV’を生成する(図10におけるビットベクトルU‘及びビットベクトルV’参照)。ビット演算部30は、これらふたつのビットベクトルU‘及びビットベクトルV’のビット論理積AND(U’,V’)を計算する(図10におけるAND(U’,V’)参照)。ビットベクトル逆変換部40は、このビットベクトルAND(U’,V’)を元の並び順のデータ列に逆変換する(図10におけるAND(U’,V’)の逆変換参照)。図10からわかるように、ベクトル演算システム2によるAND(U’,V’)の逆変換の結果は、データ列Uとデータ列Vの要素ごとの乗算の結果と同一になる。
以上、本発明の第3の実施形態によるベクトル演算システム2について説明した。本発明の第3の実施形態によるベクトル演算システム2において、ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同様に入力データ列SRCから出力ビットベクトルDESTを生成する。ビット演算部30は、本来は元の入力データ列SRCに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルDESTに対して行う。ビットベクトル逆変換部40は、ビットベクトル生成装置10と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。
このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができ、ビット演算部30は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、ベクトル演算システム2は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
例えば、データベースの選択演算におけるクエリのWHERE句が複数の条件からなる場合を考える。ここで、条件に合致する行(レコード)であれば1、そうでない行であれば0となるような値を持つ、真偽値列ベクトルを考える。このとき、個々の条件に対応する真偽値列ベクトルを中間結果とし、WHERE句全体に対応する真偽値列ベクトルを最終結果とする。具体例を挙げると、例えばWHERE句が「年齢≧50 AND 性別=男性 AND 血液型=A型」である場合、年齢が50以上か否かを示す真偽値列ベクトルと、性別が男性か否かを示す真偽値列ベクトルと、血液型がA型か否かを示す真偽値列ベクトルと、が中間結果であり、WHERE句全体に合致するか否かを示す真偽値列ベクトルが最終結果である。このような場合、ベクトル演算システム2を利用して、中間結果群から最終結果を求めるベクトル論理演算を行うことができる。そのため、ベクトル演算システム2は、データベースの選択演算における最終結果の取得を高速化することができる。
本発明の実施形態による最小構成のビットベクトル生成装置10について説明する。
本発明の実施形態による最小構成のビットベクトル生成装置10は、図11に示すように、入力データ列分割部101、ビットシフト部102、ビット設定部103を備える。
入力データ列分割部101は、入力データ列を複数の群に分割する。
ビットシフト部102は、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。
ビット設定部103は、ビットシフト部102によって桁移動した前記データの値を、出力データ列の対応する桁に設定する。
ビットベクトル生成装置10がこのように構成されることにより、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。また、処理する入力データ列SRCと出力ビットベクトルDESTがどちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置10は、高速にビットベクトルを生成することができる。
なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
本発明の実施形態における記憶部、その他の記憶装置(ラッチ、レジスタなどを含む)のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、記憶部、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
本発明の実施形態について説明したが、上述のビットベクトル生成装置10、10a、集約演算部20、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
図12は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ5は、図12に示すように、CPU6、メインメモリ7、ストレージ8、インターフェース9を備える。
例えば、上述のビットベクトル生成装置10、10a、集約演算部20、その他の制御装置のそれぞれは、コンピュータ5に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ8に記憶されている。CPU6は、プログラムをストレージ8から読み出してメインメモリ7に展開し、当該プログラムに従って上記処理を実行する。また、CPU6は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ7に確保する。
ストレージ8の例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)、磁気ディスク、光磁気ディスク、CD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)、半導体メモリ等が挙げられる。ストレージ8は、コンピュータ5のバスに直接接続された内部メディアであってもよいし、インターフェース9または通信回線を介してコンピュータ5に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ5に配信される場合、配信を受けたコンピュータ5が当該プログラムをメインメモリ7に展開し、上記処理を実行してもよい。少なくとも1つの実施形態において、ストレージ8は、一時的でない有形の記憶媒体である。
また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル(差分プログラム)であってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。
本発明の各態様によれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。
1・・・集約演算システム
5・・・コンピュータ
6・・・CPU
7・・・メインメモリ
8・・・ストレージ
9・・・インターフェース
10、10a、10a1、10a2、10aN・・・ビットベクトル生成装置
20・・・集約演算部
101・・・入力データ列分割部
102、102a1、102a2、102a3、102an・・・ビットシフト部
103・・・ビット設定部
201・・・ビット取得部
202・・・ビット逆シフト部
203・・・データ要素設定部

Claims (7)

  1. データ列を入力としてビットベクトルを出力する情報処理装置であって、
    前記データ列を複数の群に分割する入力データ列分割部と、
    複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動するビットシフト部と、
    前記ビットシフト部によって桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定するビット設定部と、
    を備える情報処理装置。
  2. 前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルに対して、前記ビットベクトルの総和、前記ビットベクトルの平均値、前記ビットベクトルにおける特定の要素の個数、複数の前記ビットベクトルが示すベクトル同士の内積、及び、複数の前記ビットベクトルが示す行列同士の行列積のうちの少なくとも1つを含む集約演算を行う集約演算部、
    を備える請求項1に記載の情報処理装置。
  3. 前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルの各要素から特定のビット位置の値を取得するビット取得部と、
    前記ビット取得部が取得した前記ビット位置の値それぞれを下位ビットの位置まで前記SIMDの並列処理により桁移動するビット逆シフト部と、
    前記ビット逆シフト部が桁移動した値をデータ列の各要素に設定するデータ要素設定部と、
    を備える請求項1または請求項2に記載の情報処装置。
  4. 入力データ列は、
    機械学習のモデル生成において、離散値で表現することができる特徴量を、離散値ベクトルで表現したデータ列である、
    請求項1から請求項3の何れか一項に記載の情報処理装置。
  5. 入力データ列は、
    データベースのテーブル操作における選択演算において、クエリの条件に合致する行か否である行かを表現する真偽値ベクトルである、
    請求項1から請求項3の何れか一項に記載の情報処理装置。
  6. データ列を入力としてビットベクトルを出力する情報処理装置による情報処理方法であって、
    前記データ列を複数の群に分割することと、
    複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動することと、
    桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
    を含む情報処理方法。
  7. データ列を入力としてビットベクトルを出力する情報処理装置のコンピュータに、
    前記データ列を複数の群に分割することと、
    複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動することと、
    桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
    を実行させるプログラム。
JP2020537940A 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム Active JP7052874B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/030994 WO2020039522A1 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2020039522A1 JPWO2020039522A1 (ja) 2021-08-10
JP7052874B2 true JP7052874B2 (ja) 2022-04-12

Family

ID=69592770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020537940A Active JP7052874B2 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム

Country Status (3)

Country Link
US (1) US20210182061A1 (ja)
JP (1) JP7052874B2 (ja)
WO (1) WO2020039522A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150277917A1 (en) 2014-04-01 2015-10-01 Oracle International Corporation Hybrid bit-sliced dictionary encoding for fast index-based operations
JP2016527650A (ja) 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064653B (zh) * 1995-08-31 2016-05-18 英特尔公司 控制移位分组数据的位校正的装置
JP6844327B2 (ja) * 2017-03-03 2021-03-17 富士通株式会社 データ生成方法、データ生成装置及びデータ生成プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016527650A (ja) 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US20150277917A1 (en) 2014-04-01 2015-10-01 Oracle International Corporation Hybrid bit-sliced dictionary encoding for fast index-based operations

Also Published As

Publication number Publication date
WO2020039522A1 (ja) 2020-02-27
JPWO2020039522A1 (ja) 2021-08-10
US20210182061A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
Kress Numerical analysis
JP6989006B2 (ja) 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
KR102100368B1 (ko) 양자 데이터베이스를 위한 효과적 양자 메모리 구조
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing
JPWO2018061800A1 (ja) 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム
KR102075848B1 (ko) 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
JP7505570B2 (ja) 秘密決定木テスト装置、秘密決定木テストシステム、秘密決定木テスト方法、及びプログラム
US20240022395A1 (en) Encryption processing device and encryption processing method
JP7052874B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP6367959B2 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
JP7020555B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6104469B2 (ja) 行列生成装置及び行列生成方法及び行列生成プログラム
CN113222160A (zh) 一种量子态的转换方法及装置
EP3246900B1 (en) Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program
JP7205623B2 (ja) 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
JP2014203182A (ja) フーリエ変換計算方法、量子回路
JP7494932B2 (ja) 秘密決定木テスト装置、秘密決定木テストシステム、秘密決定木テスト方法、及びプログラム
JP2021051448A (ja) 情報処理装置、疎行列格納方法及びプログラム
JP7491390B2 (ja) 秘密グループ分け装置、秘密グループ分けシステム、秘密グループ分け方法、及びプログラム
JP7173282B2 (ja) データ置換装置、データ置換方法、プログラム
WO2022264238A1 (ja) 累積計算装置、累積計算方法、及びプログラム
Ladroue et al. A distributed procedure for computing stochastic expansions with Mathematica
JP7207423B2 (ja) 作業集合選択装置、作業集合選択方法および作業集合選択プログラム
JP6093718B2 (ja) 拡大体乗算装置、拡大体乗算方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220314

R151 Written notification of patent or utility model registration

Ref document number: 7052874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151