(57)【要約】情報処理装置は、データ列を入力としてビットベクトルを出力する情報処理装置であって、前記データ列を複数の群に分割する入力データ列分割部と、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ（Single Instruction Multiple Data）方式の並列処理により桁移動するビットシフト部と、前記ビットシフト部によって桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定するビット設定部と、を備える。
2020039522.tif 000002
【特許請求の範囲】
【請求項１】
データ列を入力としてビットベクトルを出力する情報処理装置であって、
前記データ列を複数の群に分割する入力データ列分割部と、
複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ（Single Instruction Multiple Data）方式の並列処理により桁移動するビットシフト部と、
前記ビットシフト部によって桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定するビット設定部と、
を備える情報処理装置。
【請求項２】
前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルに対して、前記ビットベクトルの総和、前記ビットベクトルの平均値、前記ビットベクトルにおける特定の要素の個数、複数の前記ビットベクトルが示すベクトル同士の内積、及び、複数の前記ビットベクトルが示す行列同士の行列積のうちの少なくとも１つを含む集約演算を行う集約演算部、
を備える請求項１に記載の情報処理装置。
【請求項３】
前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルの各要素から特定のビット位置の値を取得するビット取得部と、
前記ビット取得部が取得した前記ビット位置の値それぞれを下位ビットの位置まで前記ＳＩＭＤの並列処理により桁移動するビット逆シフト部と、
前記ビット逆シフト部が桁移動した値をデータ列の各要素に設定するデータ要素設定部と、
を備える請求項１または請求項２に記載の情報処置装置。
【請求項４】
入力データ列は、
機械学習のモデル生成において、離散値で表現することができる特徴量を、離散値ベクトルで表現したデータ列である、
請求項１から請求項３の何れか一項に記載の情報処理装置。
【請求項５】
入力データ列は、
データベースのテーブル操作における選択演算において、クエリの条件に合致する行か否である行かを表現する真偽値ベクトルである、
請求項１から請求項３の何れか一項に記載の情報処理装置。
【請求項６】
ビットベクトルの各要素から特定のビット位置の値を取得するビット取得部と、
前記ビット取得部が取得した前記ビット位置の値それぞれを下位ビットの位置までＳＩＭＤ（Single Instruction Multiple Data）の並列処理により桁移動するビット逆シフト部と、
前記ビット逆シフト部が桁移動した値をデータ列の各要素に設定するデータ要素設定部と、
を備える情報処置装置。
【請求項７】
データ列を入力としてビットベクトルを出力する情報処理装置による情報処理方法であって、
前記データ列を複数の群に分割することと、
複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ（Single Instruction Multiple Data）方式の並列処理により桁移動することと、
桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
を含む情報処理方法。
【請求項８】
データ列を入力としてビットベクトルを出力する情報処理装置のコンピュータに、
前記データ列を複数の群に分割することと、
複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ（Single Instruction Multiple Data）方式の並列処理により桁移動することと、
桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
大量のデータに対する処理を高速に実行するためには、ハードウェアによる高速化技術とソフトウェアによる高速化技術の両方を組み合わせて利用することが重要である。
データ列の個々の要素が取り得る値の種類が非常に限られている場合、例えば｛０，１｝の二値のみからなるデータ列を処理する場合などに、データ列をビットベクトルに変換することで処理を高速化する方法が知られている。ビットベクトルでは、元のデータ列の各要素から意味のあるビットのみを取り出し、そのビット列でデータ列を表現する。例えば、データ列が｛０，１｝の二値のみからなる場合は、そのデータ列の中で意味のある部分は各要素中の１ビットずつのみであるため、元のデータ列の一要素はビットベクトルの１ビットで表現することができる。プロセッサでビットベクトルを扱うために特殊なデータ構造を用意する必要はなく、単なる整数型の配列を用いることが多い。
特許文献１には、関連する技術として、データベースに対して複雑な条件節を持つクエリを実行する際にビットベクトルを利用する方法に関する技術が開示されている。
特許文献２には、関連する技術として、ＳＶＭ（Support Vector Machine）の学習においてビットベクトルを利用する方法に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６３０５４０６号公報
【特許文献２】特許第６０５５３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＳＩＭＤ（Single Instruction Multiple Data）方式の並列処理による並列ビットベクトル変換では、元のデータ列は｛０，１｝の二値のみからなるものとし、変換先ビットベクトルの一要素あたりのビット幅をｍとすると、元のデータ列の要素のｍ個を一回のＳＩＭＤ方式の並列処理でまとめて変換する。すなわちＳＩＭＤ方式の並列処理の並列数はｍである。並列するｍ個の要素に対しては、それぞれ、変換先の一要素内における対応するビット位置まで値をビットシフトした後、それらのｍ個の値をビット論理和により変換先の一要素に設定する。ＳＩＭＤ型プロセッサの最大並列数は、数百から数千単位に及ぶものまで存在するが、一方で、プロセッサが特殊なデータ構造を用いることなく扱える整数型は、高々６４ビットの幅しかないものが普通である。そのため、関連する技術ではＳＩＭＤ型プロセッサの最大並列数を大きく下回る並列数でしかビットベクトルを生成できない。つまり、関連する技術の並列ビットベクトル変換では、ＳＩＭＤの並列数がビットベクトルの一要素あたりのビット幅ｍと同じ数までに制限されてしまうという問題がある。【０００５】
本発明の各態様は、上記の課題を解決することのできる情報処理装置、情報処理方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の一態様によれば、情報処理装置は、入力データ列を複数の群に分割する入力データ列分割部と、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動するビットシフト部と、前記ビットシフト部によって桁移動した前記データの値を、出力データ列の対応する桁に設定するビット設定部と、を備える。【０００７】
本発明の別の態様によれば、情報処理方法は、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を含む。【０００８】
本発明の別の態様によれば、プログラムは、コンピュータに、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を実行させる。
【発明の効果】
【０００９】
本発明の各態様によれば、ＳＩＭＤ方式の並列処理の並列数がビット幅に制限されず、ＳＩＭＤ方式の並列処理をより多くの並列数で高速にビットベクトルを生成することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態によるビットベクトル生成装置の構成を示す図である。
【図２】本発明の第１の実施形態によるビット設定部の動作を説明するための図である。
【図３】本発明の第１の実施形態によるビットベクトル生成装置の処理フローを示す図である。
【図４】本発明の第１の実施形態によるビットベクトル生成装置の処理を説明するための図である。
【図５】本発明の別の実施形態によるデータ列生成装置の構成を示す図である。
【図６】本発明の第２の実施形態による集約演算システムの構成を示す図である。
【図７】本発明の第２の実施形態による集約演算システムの処理を説明するための図である。
【図８】本発明の第２の実施形態において機械学習のモデル生成に用いるデータセットの例を示す図である。
【図９】本発明の第３の実施形態によるベクトル演算システムの構成を示す図である。
【図１０】本発明の第３の実施形態によるベクトル演算システムの処理を説明するための図である。
【図１１】本発明の実施形態による最小構成のビットベクトル生成装置を示す図である。
【図１２】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
＜第１の実施形態＞
以下、図面を参照しながら実施形態について詳しく説明する。
本発明の第１の実施形態によるビットベクトル生成装置１０（情報処理装置の一例）は、図１に示すように、入力データ列分割部１０１、ビットシフト部１０２ａ１、１０２ａ２、１０２ａ３、・・・、１０２ａｍ、ビット設定部１０３を備える。ビットシフト部１０２ａ１、１０２ａ２、１０２ａ３、・・・、１０２ａｋを総称してビットシフト部１０２と呼ぶ。
ビットベクトル生成装置１０は、ＳＩＭＤ型プロセッサが備える装置である。ビットベクトルの一要素あたりのビット幅をｍとし、入力データ列を先頭から順番に、各要素ひとつずつ異なる桁数でビットシフトする関連する技術を用いた場合とは異なり、ビットベクトル生成装置１０は、ｍ個のグループひとつあたりに含まれる要素数を、出力ビットベクトルの要素数ｋと同じ要素数とすることで、ＳＩＭＤ方式の並列処理をｋ並列で行うことのできる出力ビットベクトルを生成する装置である。
【００１２】
入力データ列分割部１０１は、入力データ列を複数の群に分割する。例えば、入力データ列分割部１０１は、入力となるデータ列を、メモリ上で連続した要素で構成されるようにｍ個のグループに分割する。ｍ個のグループひとつあたりに含まれる要素数は、出力ビットベクトルの要素数ｋと同じ要素数とする。
【００１３】
ビットシフト部１０２それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動する。例えば、ビットシフト部１０２それぞれは、ひとつのグループ内の各要素を一回のＳＩＭＤ方式の並列処理でまとめてビットシフトする。ビットシフト部１０２は、一回のＳＩＭＤ方式の並列処理において、グループ内の各要素の値をすべて同じ桁数だけビットシフトする。
【００１４】
ビット設定部１０３は、ビットシフト部１０２によって桁移動したデータの値を、出力データ列の対応する桁に設定する。例えば、ビット設定部１０３は、ビットシフト部１０２それぞれがビットシフトした後の値を出力ビットベクトルの対応するビット位置に設定する。
例えば、図２に示されている元のデータ列が第ｊグループ（ｊ∈｛０，１，２，…，ｍ−１｝）であるとき、ビットシフト部１０２は、この第ｊグループに含まれるｋ個の要素はすべてｊビットだけ左へ（上位ビット側へ）シフトし、ビット設定部１０３は、その値を出力ビットベクトルのそれぞれの要素の第ｊビット目に設定する。
【００１５】
次に、本発明の第１の実施形態によるビットベクトル生成装置１０の処理について説明する。ここでは、図３に示すビットベクトル生成装置１０の処理フローについて説明する。なお、ｎは入力データ列の要素数、ｍはビットベクトルの一要素あたりのビット幅、ｋは出力ビットベクトルの要素数、ｉはひとつの群内におけるデータの位置を示す添え字である。また、このとき、変換後のビットベクトルの要素数ｋは、ｋ＝ＣＥＩＬＩＮＧ（ｎ／ｍ）と表すことができる（ＣＥＩＬＩＮＧは、天井関数である）。また、ＳＲＣは入力データ列、ＤＥＳＴは出力ビットベクトルである。
【００１６】
ビットベクトル生成装置１０は、出力ビットベクトルＤＥＳＴを初期値ゼロに初期化する（ステップＳ１）。この初期化は、入力データ列分割部１０１、ビットシフト部１０２、ビット設定部１０３のいずれが主体となって行うものであってもよい。
【００１７】
入力データ列ＳＲＣが入力データ列分割部１０１に入力される。入力データ列分割部１０１は、入力データ列を複数の群に分割する（ステップＳ２）。例えば、入力データ列分割部１０１は、入力データ列ＳＲＣを先頭から順番に、グループひとつあたりｋ要素が含まれるように、全体でｍ個のグループに分割する。この入力データ列分割部１０１の動作は、図３の処理フローでは繰り返し処理Ａに相当し、繰り返し変数ｊ∈｛０，１，２，…，ｍ−１｝を用いれば、各グループを第ｊグループと表記するサブルーチンとして表すことができる。
【００１８】
ビットシフト部１０２それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動する（ステップＳ３）。例えば、ビットシフト部１０２それぞれは、第ｊグループ内の各要素をすべてｊビットだけＳＩＭＤ方式の並列処理により左へシフトする。ビット設定部１０３は、ビットシフト部１０２によって桁移動したデータの値を、出力データ列の対応する桁に設定する（ステップＳ４）。例えば、ビット設定部１０３は、それらのｊビットだけ左へシフトした値を出力ビットベクトルのｊビット目に設定する。ビットシフト部１０２とビット設定部１０３のこれらの動作は、図３の処理フローでは繰り返し処理Ｂと内部のＳＩＭＤ方式の並列処理によるサブルーチンに相当する。なお、ビット設定部１０３によるビットの設定は、ビット論理和演算により行うことができる。また、ビット設定部１０３によるビットの設定は、整数の加算演算により行うものであってもよい。
【００１９】
（具体例１）
本発明の第１の実施形態によるビットベクトル生成装置１０の処理の具体例について、図４を参照して説明する。入力となる元のデータ列ＳＲＣは、図４に示すように、２４個の要素からなる（ｎ＝２４）。ビットベクトルの一要素あたりのビット幅を４ビットとする（ｍ＝４）。出力となるビットベクトルの要素数ｋは、ｋ＝ＣＥＩＬＩＮＧ（２４÷４）＝６である。
ビットベクトル生成装置１０において、入力データ列分割部１０１は、入力データ列を６要素ずつグループに分割し、全体で４個のグループを作る。入力データ列分割部１０１は、上述した繰り返し変数ｊ∈｛０，１，２，…，ｍ−１｝の値に合わせて、先頭から順に第０グループ、第１グループ、第２グループ、第３グループとする。また、入力データ列分割部１０１は、ビットベクトルのビット位置についても、最下位を０ビット目と数えるものとする。
ビットシフト部１０２それぞれは、第０グループに含まれる６個の要素にはビットシフトを行わない（ＳＩＭＤ方式の並列処理により０ビットのシフトを行う）。ビット設定部１０３は、ビットベクトルの６個の要素それぞれの０ビット目に設定する。ビットシフト部１０２それぞれは、ＳＩＭＤ方式の並列処理により第１グループに含まれる６個の要素をすべて１ビット左へシフトする。ビット設定部１０３は、ビットベクトルの６個の要素それぞれの１ビット目に設定する。以下同様であるが、ビットシフト部１０２それぞれは、ＳＩＭＤ方式の並列処理により第２グループに含まれる６個の要素にはすべて２ビット左へシフトし、ビット設定部１０３は、ビットベクトルの６個の要素それぞれの２ビット目に設定する。最後に、ビットシフト部１０２それぞれは、ＳＩＭＤ方式の並列処理により第３グループに含まれる６個の要素にはすべて３ビット左へシフトし、ビット設定部１０３は、ビットベクトルの６個の要素それぞれの３ビット目に設定する。このような処理により出力ビットベクトルＤＥＳＴが完成する。
【００２０】
以上、本発明の第１の実施形態によるビットベクトル生成装置１０について説明した。本発明の第１の実施形態によるビットベクトル生成装置１０において、入力データ列分割部１０１は、入力データ列を複数の群に分割する。ビットシフト部１０２それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動する。ビット設定部１０３は、ビットシフト部１０２によって桁移動したデータの値を、出力データ列の対応する桁に設定する。
このようにすれば、ＳＩＭＤ方式の並列処理の並列数がビット幅ｍに制限されず、ビットベクトル生成装置１０は、ＳＩＭＤ方式の並列処理をより多くの並列数ｋで高速にビットベクトルを生成することができる。また、処理する入力データ列ＳＲＣと出力ビットベクトルＤＥＳＴは、どちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置１０は、高速にビットベクトルを生成することができる。
【００２１】
なお、本発明の別の実施形態では、ビットの並び順は、ビットベクトルの一要素内で逆順であってもよい。つまり、ビットベクトルの一要素内において、下位ビットから上位ビットに向かって順に値を設定していくか、上位ビットから下位ビットに向かって順に値を設定していくかは、どちらの順番でもよい。上で述べた動作の説明とは逆順の場合、ビットシフト部１０２は、第ｊグループ内の各要素をすべてｍ−ｊ−１ビットだけ左へシフトすればよい。
【００２２】
なお、本発明の別の実施形態では、ビットベクトルを入力として元の並び順のデータ列を生成するため、つまり、ビットベクトルから元のデータ列への逆変換を行うデータ列生成装置３（情報処理装置の一例）であってもよい。すなわち、本発明の別の実施形態によるデータ列生成装置３は、例えば図５に示すように、ビット取得部２０１と、ビット逆シフト部２０２と、データ要素設定部２０３と、から構成される。ビット取得部２０１は、入力ビットベクトルの各要素から特定のビット位置の値を取得する。ビット逆シフト部２０２は、各ビット位置の値を下位ビットの位置までＳＩＭＤ方式の並列処理によりビットシフトする。データ要素設定部２０３は、ビットシフトした値をデータ列の各要素に設定する。本発明の別の実施形態では、データ列生成装置３は、上述のようなビット取得部２０１、ビット逆シフト部２０２、データ要素設定部２０３を備えるものであってもよい。なお、ここで説明したデータ列生成装置３は、後述する本発明の第３の実施形態によるビットベクトル逆変換装置２のビットベクトル逆変換部４０に相当する。
【００２３】
なお、本発明の第１の実施形態によるビットベクトル生成装置１０は、入力となるデータ列を｛０，１｝の二値のみからなるものとした。しかしながら、本発明の別の実施形態では、入力となるデータ列を｛０，１｝の二値に限定するものではない。本発明の別の実施形態では、入力となるデータ列を、例えば離散値データ列とするものであってもよい。ここで、データ列の個々の要素が取り得る値の種類が限られており、その値の種類を表現できるだけの充分なビット数ｔを考える。例えば、入力データ列が｛０，１，２｝の三値からなる場合、ビット数ｔは２ビットあれば充分である。そこで、元のデータ列の一要素とビットベクトルのｔビット分が対応するように、ビットシフト部１０２のビットシフト量とビット設定部１０３のビット設定位置を変更すれば、離散値データ列を入力とする場合にもビットベクトルを生成することができる。
【００２４】
＜第２の実施形態＞
次に、本発明の第２の実施形態による集約演算システム１（情報処理装置の一例）について説明する。
本発明の第２の実施形態による集約演算システム１は、入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成した上で、データ列の集約演算を行うシステムである。
集約演算システム１は、図６に示すように、ビットベクトル生成装置１０ａ１、１０ａ２、・・・、１０ａＮ、集約演算部２０を備える。ビットベクトル生成装置１０ａ１、１０ａ２、・・・、１０ａＮを総称してビットベクトル生成装置１０ａと呼ぶ。
【００２５】
ビットベクトル生成装置１０ａそれぞれは、本発明の第１の実施形態によるビットベクトル生成装置１０と同一である。ビットベクトル生成装置１０ａそれぞれは、入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成し、生成した出力ビットベクトルＤＥＳＴを集約演算部２０に出力する。
【００２６】
集約演算部２０は、複数の出力ビットベクトルＤＥＳＴを入力として、ビットベクトルの集約演算を行う。集約演算とは、例えば、データ列の総和や平均値などの算出、データ列において特定の条件を満たす要素の個数を数え上げる処理、ベクトル同士の内積演算、行列同士の行列積演算などである。
【００２７】
次に、本発明の第２の実施形態による集約演算システム１の処理について説明する。なお、ビットベクトル生成装置１０ａは、本発明の第１の実施形態によるビットベクトル生成装置１０と同一であるため、ここでは、集約演算部２０の処理について説明する。
【００２８】
集約演算部２０は、本来は元の入力データ列ＳＲＣに対して行う演算と同等の演算を、出力ビットベクトルＤＥＳＴに対して行う。ビットベクトル生成装置１０ａそれぞれは、本発明の第１の実施形態において説明したように、関連する技術を用いて生成したビットベクトルとはビットの並び順が異なる出力ビットベクトルＤＥＳＴを生成する。しかしながら、集約演算部２０が行う演算は、総和や内積など、ビットの並び順に無関係な演算である。そのため、集約演算システム１は、正しい集約演算を行うことができる。すなわち、集約演算システム１は、正しい集約値を算出することができる。
例えば、｛０，１｝の二値のみからなるデータ列の集約演算部２０による総和の算出は、ビットベクトル中の１となっているビットの個数を数え上げることで算出することができる。この場合の集約演算部２０の演算は、出力ビットベクトルＤＥＳＴの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
また、例えば、｛０，１｝の二値のみからなるベクトル同士の集約演算部２０による内積演算は、ビットベクトル同士のビット論理積演算を行う処理と、ビットベクトルの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
【００２９】
（具体例２）
本発明の第２の実施形態による集約演算システム１の処理の具体例について、図７を参照して説明する。ここでは、集約演算システム１がデータ列の総和を算出する例について説明する。
入力となる入力データ列ＳＲＣは、ビットベクトル生成装置１０ａそれぞれに入力される。ビットベクトル生成装置１０ａそれぞれは、入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成する。集約演算部２０は、ビットベクトル生成装置１０ａそれぞれが生成した出力ビットベクトルＤＥＳＴの各要素に対してポップカウント処理を行う。集約演算部２０がポップカウント処理を行った結果は、図７においてポップカウントし記載されているように、０，１，２，３，２，１の値を示す。集約演算部２０は、これらの値の総和を演算し、演算結果として総和９を導出する。このように、集約演算部２０は、図７の元のデータ列の総和９と同じ値を導出する。
【００３０】
以上、本発明の第２の実施形態による集約演算システム１について説明した。本発明の第２の実施形態による集約演算システム１において、ビットベクトル生成装置１０ａそれぞれは、本発明の第１の実施形態によるビットベクトル生成装置１０と同様に入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成する。集約演算部２０は、本来は元の入力データ列ＳＲＣに対して行う演算と同等の演算を、出力ビットベクトルＤＥＳＴに対して行う。
このようにすれば、ＳＩＭＤ方式の並列処理の並列数がビット幅ｍに制限されず、ビットベクトル生成装置１０は、ＳＩＭＤ方式の並列処理をより多くの並列数ｋで高速にビットベクトルを生成することができ、集約演算部２０は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、集約演算システム１は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
例えば、機械学習のモデル生成に用いるデータセットＴＢＬ１において、特定の特徴量が離散値からなる場合がある。具体例を挙げると、図８に示すように、人間の性別を示す特徴量として、男性なら１、そうでなければ０を用いるという場合や、人間の血液型を示す特徴量として、Ａ型に０、Ｂ型に１、Ｏ型に２、ＡＢ型に３を用いるという場合、職業を示す特徴量として、会社員に０、主婦に１、学生に３を用いるという場合などである。機械学習のモデル生成においては、ベクトルの内積演算を行う処理を含む場合があるが、先に述べたような特徴量を実数ベクトルではなく離散値ベクトルとして扱えば、集約演算システム１を利用して離散値ベクトルの内積演算を行うことができる。そのため集約演算システム１は、機械学習のモデル生成におけるベクトルの内積演算の一部または全部を、高速化することができる。この場合、集約演算部２０は、ビット設定部１０３がデータの値を対応する桁に設定した出力データ列（すなわち、出力されるビットベクトル）に対して、出力データ列の総和、出力データ列の平均値、出力データ列における特定の要素の個数、複数の出力データ列が示すベクトル同士の内積、及び、複数の出力データ列が示す行列同士の行列積のうちの少なくとも１つを、ＳＩＭＤ方式の並列処理によって、演算を行う。
【００３１】
なお、本発明の第２の実施形態による集約演算システム１は、ビットベクトル生成装置１０ａを複数備えるものとして説明した。しかしながら、本発明の別の実施形態による集約演算システム１は、ビットベクトル生成装置１０ａを１つ備え、そのビットベクトル生成装置１０ａが生成した出力ビットベクトルＤＥＳＴについて、集約演算部２０が集約演算を行うものであってもよい。
【００３２】
＜第３の実施形態＞
次に、本発明の第３の実施形態によるベクトル演算システム２（情報処理装置の一例）について説明する。
本発明の第３の実施形態によるベクトル演算システム２は、入力データ列ＳＲＣをビットベクトルに変換した上で、データ列のベクトル演算を行うシステムである。ベクトル演算システム２は、元のデータ列の要素の並び順が後に必要となる場合を想定したシステムである。
ベクトル演算システム２は、図９に示すように、ビットベクトル生成装置１０ａ１、１０ａ２、・・・、１０ａＮ、ビット演算部３０、ビットベクトル逆変換部４０を備える。ビットベクトル生成装置１０ａ１、１０ａ２、・・・、１０ａＮを総称してビットベクトル生成装置１０ａと呼ぶ。
【００３３】
ビットベクトル生成装置１０ａそれぞれは、本発明の第１の実施形態によるビットベクトル生成装置１０と同一である。ビットベクトル生成装置１０ａそれぞれは、入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成し、生成した出力ビットベクトルＤＥＳＴをビット演算部３０に出力する。
【００３４】
ビット演算部３０は、複数のビットベクトルについてビット演算を行う。ビット演算とは、例えば、ビット反転（ＮＯＴ）、ビット論理積（ＡＮＤ）、ビット論理和（ＯＲ）、ビット排他的論理和（ＸＯＲ）などである。
【００３５】
ビットベクトル逆変換部４０は、ビットベクトルを入力として元の並び順のデータ列を生成する。つまり、ビットベクトル逆変換部４０は、ビットベクトルから元のデータ列への逆変換を行う機能部である。
【００３６】
次に、本発明の第３の実施形態によるベクトル演算システム２の処理について説明する。なお、ビットベクトル生成装置１０ａは、本発明の第１の実施形態によるビットベクトル生成装置１０と同一であるため、ここでは、ビット演算部３０とビットベクトル逆変換部４０の処理について説明する。
【００３７】
ビット演算部３０は、本来は元の入力データ列ＳＲＣに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルＤＥＳＴに対して行う。
ビットベクトル逆変換部４０は、ビットベクトル生成装置１０と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。そのため、本発明の第３の実施形態によるベクトル演算システム２は、正しい演算結果を得ることができる。
【００３８】
例えば、｛０，１｝の二値のみからなるデータ列同士の、要素ごとのベクトル演算システム２による乗算（いわゆるアダマール積）は、ビットベクトル同士のビット論理積演算で同等の結果を得ることができる。この場合のビット演算部３０の処理は、ビットベクトルの各要素に対してビット論理積演算を行う処理からなる。
【００３９】
（具体例３）
本発明の第３の実施形態によるベクトル演算システム２の処理の具体例について、図１０を参照して説明する。ここでは、データ列Ｕとデータ列Ｖの要素ごとの乗算をベクトル演算システム２が算出する例について説明する。
ビットベクトル生成装置１０ａそれぞれは、入力であるデータ列Ｕ及びデータ列Ｖから、ビットベクトルＵ’及びビットベクトルＶ’を生成する（図１０におけるビットベクトルＵ‘及びビットベクトルＶ’参照）。ビット演算部３０は、これらふたつのビットベクトルＵ‘及びビットベクトルＶ’のビット論理積ＡＮＤ（Ｕ’，Ｖ’）を計算する（図１０におけるＡＮＤ（Ｕ’，Ｖ’）参照）。ビットベクトル逆変換部４０は、このビットベクトルＡＮＤ（Ｕ’，Ｖ’）を元の並び順のデータ列に逆変換する（図１０におけるＡＮＤ（Ｕ’，Ｖ’）の逆変換参照）。図１０からわかるように、ベクトル演算システム２によるＡＮＤ（Ｕ’，Ｖ’）の逆変換の結果は、データ列Ｕとデータ列Ｖの要素ごとの乗算の結果と同一になる。
【００４０】
以上、本発明の第３の実施形態によるベクトル演算システム２について説明した。本発明の第３の実施形態によるベクトル演算システム２において、ビットベクトル生成装置１０ａそれぞれは、本発明の第１の実施形態によるビットベクトル生成装置１０と同様に入力データ列ＳＲＣから出力ビットベクトルＤＥＳＴを生成する。ビット演算部３０は、本来は元の入力データ列ＳＲＣに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルＤＥＳＴに対して行う。ビットベクトル逆変換部４０は、ビットベクトル生成装置１０と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。
このようにすれば、ＳＩＭＤ方式の並列処理の並列数がビット幅ｍに制限されず、ビットベクトル生成装置１０は、ＳＩＭＤ方式の並列処理をより多くの並列数ｋで高速にビットベクトルを生成することができ、ビット演算部３０は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、ベクトル演算システム２は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
例えば、データベースの選択演算におけるクエリのＷＨＥＲＥ句が複数の条件からなる場合を考える。ここで、条件に合致する行（レコード）であれば１、そうでない行であれば０となるような値を持つ、真偽値列ベクトルを考える。このとき、個々の条件に対応する真偽値列ベクトルを中間結果とし、ＷＨＥＲＥ句全体に対応する真偽値列ベクトルを最終結果とする。具体例を挙げると、例えばＷＨＥＲＥ句が「年齢≧５０  ＡＮＤ  性別＝男性  ＡＮＤ  血液型＝Ａ型」である場合、年齢が５０以上か否かを示す真偽値列ベクトルと、性別が男性か否かを示す真偽値列ベクトルと、血液型がＡ型か否かを示す真偽値列ベクトルと、が中間結果であり、ＷＨＥＲＥ句全体に合致するか否かを示す真偽値列ベクトルが最終結果である。このような場合、ベクトル演算システム２を利用して、中間結果群から最終結果を求めるベクトル論理演算を行うことができる。そのため、ベクトル演算システム２は、データベースの選択演算における最終結果の取得を高速化することができる。
【００４１】
本発明の実施形態による最小構成のビットベクトル生成装置１０について説明する。
本発明の実施形態による最小構成のビットベクトル生成装置１０は、図１１に示すように、入力データ列分割部１０１、ビットシフト部１０２、ビット設定部１０３を備える。
入力データ列分割部１０１は、入力データ列を複数の群に分割する。
ビットシフト部１０２は、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にＳＩＭＤ方式の並列処理により桁移動する。
ビット設定部１０３は、ビットシフト部１０２によって桁移動した前記データの値を、出力データ列の対応する桁に設定する。
ビットベクトル生成装置１０がこのように構成されることにより、ＳＩＭＤ方式の並列処理の並列数がビット幅ｍに制限されず、ビットベクトル生成装置１０は、ＳＩＭＤ方式の並列処理をより多くの並列数ｋで高速にビットベクトルを生成することができる。また、処理する入力データ列ＳＲＣと出力ビットベクトルＤＥＳＴがどちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置１０は、高速にビットベクトルを生成することができる。
【００４２】
なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
【００４３】
本発明の実施形態における記憶部、その他の記憶装置（ラッチ、レジスタなどを含む）のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、記憶部、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
【００４４】
本発明の実施形態について説明したが、上述のビットベクトル生成装置１０、１０ａ、集約演算部２０、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
図１２は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ５は、図１２に示すように、ＣＰＵ６、メインメモリ７、ストレージ８、インターフェース９を備える。
例えば、上述のビットベクトル生成装置１０、１０ａ、集約演算部２０、その他の制御装置のそれぞれは、コンピュータ５に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ８に記憶されている。ＣＰＵ６は、プログラムをストレージ８から読み出してメインメモリ７に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ６は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ７に確保する。
【００４５】
ストレージ８の例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、半導体メモリ等が挙げられる。ストレージ８は、コンピュータ５のバスに直接接続された内部メディアであってもよいし、インターフェース９または通信回線を介してコンピュータ５に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ５に配信される場合、配信を受けたコンピュータ５が当該プログラムをメインメモリ７に展開し、上記処理を実行してもよい。少なくとも１つの実施形態において、ストレージ８は、一時的でない有形の記憶媒体である。
【００４６】
また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル（差分プログラム）であってもよい。
【００４７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。
【産業上の利用可能性】
【００４８】
本発明の各態様によれば、ＳＩＭＤ方式の並列処理の並列数がビット幅ｍに制限されず、ＳＩＭＤ方式の並列処理をより多くの並列数ｋで高速にビットベクトルを生成することができる。
【符号の説明】
【００４９】
１・・・集約演算システム
５・・・コンピュータ
６・・・ＣＰＵ
７・・・メインメモリ
８・・・ストレージ
９・・・インターフェース
１０、１０ａ、１０ａ１、１０ａ２、１０ａＮ・・・ビットベクトル生成装置
２０・・・集約演算部
１０１・・・入力データ列分割部
１０２、１０２ａ１、１０２ａ２、１０２ａ３、１０２ａｎ・・・ビットシフト部
１０３・・・ビット設定部
２０１・・・ビット取得部
２０２・・・ビット逆シフト部
２０３・・・データ要素設定部
【図１】
2020039522.tif 000003
【図２】
2020039522.tif 000004
【図３】
2020039522.tif 000005
【図４】
2020039522.tif 000006
【図５】
2020039522.tif 000007
【図６】
2020039522.tif 000008
【図７】
2020039522.tif 000009
【図８】
2020039522.tif 000010
【図９】
2020039522.tif 000011
【図１０】
2020039522.tif 000012
【図１１】
2020039522.tif 000013
【図１２】
2020039522.tif 000014
【国際調査報告】
2020039522.tif 000015
2020039522.tif 000016
2020039522.tif 000017
2020039522.tif 000018