JP7310892B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP7310892B2
JP7310892B2 JP2021538525A JP2021538525A JP7310892B2 JP 7310892 B2 JP7310892 B2 JP 7310892B2 JP 2021538525 A JP2021538525 A JP 2021538525A JP 2021538525 A JP2021538525 A JP 2021538525A JP 7310892 B2 JP7310892 B2 JP 7310892B2
Authority
JP
Japan
Prior art keywords
matrix
submatrix
sparse
vector
unit
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
JP2021538525A
Other languages
English (en)
Other versions
JPWO2021024300A5 (ja
JPWO2021024300A1 (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 JPWO2021024300A1 publication Critical patent/JPWO2021024300A1/ja
Publication of JPWO2021024300A5 publication Critical patent/JPWO2021024300A5/ja
Application granted granted Critical
Publication of JP7310892B2 publication Critical patent/JP7310892B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

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

Description

本発明は、情報処理装置、情報処理方法、および、プログラムに関する。
統計的機械学習など、大量のデータを学習してモデルを構築する学習処理は非常に時間がかかるため、高速化が求められている。このような学習処理では、データを疎行列として表現して演算が行われる。例えば、ロジスティックリグレッション(LR)では、疎行列ベクトル積を計算する。したがって、このような疎行列ベクトル積を高速に演算することが重要である。そのため、疎行列ベクトル積計算の高速化を目的として、これまで多くの情報処理方法が提案されている。
例えば特許文献1に記載される情報処理方法では、疎行列を複数の圧縮形式で格納する。具体的には、疎行列におけるゼロでない要素(非ゼロ要素と言う)の数が所定数以上の列の要素をJDS(Jagged Diagonal Storage)形式で格納し、それ以外の列の要素をCRS(Compressed Row Storage)形式で格納する。そして、JDS形式で格納された部分行列とベクトルとの積、および、CRS形式で格納された部分行列とベクトルとの積を個別に計算し、それらの計算結果の和を計算することにより、疎行列とベクトルとの積を計算する。
また特許文献2に記載される情報処理方法では、疎行列における非ゼロ要素が所定数以上の行が集まった密な部分行列と非ゼロ要素が所定数未満の行が集まった疎な部分行列とに分割し、疎な部分行列を非ゼロ要素が存在する行番号と列番号とその値を記憶する形式(リンクリスト方式)で格納する。
WO2017/154946 特開2009-49463
ところで、疎行列の中には、非ゼロ要素が多く集まった行が行列の一部に存在すると共に、非ゼロ要素が多く集まった列が行列の一部に存在するタイプがある。そのようなタイプの疎行列を例えば特許文献1に記載の方法に従ってJDS形式とCRS形式に分割して格納すると、非ゼロ要素が多く集まった行がJDS形式とCRS形式とに無駄に分割される。そのため、疎行列ベクトル積計算を高速に演算するのは困難であった。また、上記タイプの疎行列を例えば特許文献2に記載の方法に従って分割して格納すると、非ゼロ要素が所定数以上の行が集まった密な部分行列の無駄な分割は避けられるけれども、非ゼロ要素が多く集まった列がリンクリスト形式で格納される。そのため、疎行列ベクトル積計算を高速に演算するのは困難であった。
本発明の目的は、上述した課題、すなわち、非ゼロ要素が多く集まった行および列が行列の一部に存在する疎行列を、ベクトルとの積を高速に演算できる形式に変換するのは困難である、という課題を解決する情報処理装置を提供することにある。
本発明の一形態に係る情報処理装置は、
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する第1の変換部と、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する第2の変換部と、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する第3の変換部と、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する第4の変換部と、
を備えるように構成されている。
また本発明の他の形態に係る情報処理方法は、
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換し、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換し、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換し、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する、
ように構成されている。
また本発明の他の形態に係るコンピュータ読み取り可能な記録媒体は、
コンピュータに、
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する処理と、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する処理と、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する処理と、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する処理と、
を行わせるためのプログラムを記録するように構成されている。
本発明は、上述した構成を有することにより、非ゼロ要素が多く集まった行および列が行列の一部に存在する疎行列を、ベクトルとの積を高速に演算できる形式に変換することができる。
本発明の第1の実施形態に係る情報処理装置のブロック図である。 本発明の第1の実施形態に係る情報処理装置が疎行列を互いに形式の異なる複数形式の行列に変換する概要を示す図である。 本発明の第1の実施形態に係る情報処理装置の動作の一例を示すフローチャートである。 本発明の第1の実施形態に係る情報処理装置が入力する疎行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置における初期状態の行の並べ替え情報の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第1の部分行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第2の部分行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列から生成されるRowmajor密行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第3の部分行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第4の部分行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列から生成されるColmajor密行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において並べ替えられた第4の部分行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において並べ替えられたColmajor密行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第5の部分行列と第5の部分行列から生成されるCRS疎行列の例を示す図である。 本発明の第1の実施形態に係る情報処理装置において疎行列を分割して生成される第6の部分行列と第6の部分行列から生成されるJDS疎行列の例を示す図である。 本発明の第2の実施形態に係る情報処理装置のブロック図である。 本発明の第2の実施形態に係る情報処理装置における疎行列との積を計算可能なベクトルの例を示す図である。 本発明の第2の実施形態に係る情報処理装置の動作の一例を示すフローチャートである。 Rowmajor密行列とベクトルとの積の計算例を示す図である。 Colmajor密行列とベクトルとの積の計算例を示す図である。 CRS疎行列とベクトルとの積の計算例を示す図である。 JDS疎行列とベクトルとの積の計算例を示す図である。 疎行列とベクトルとの積の計算例を示す図である。 本発明の第2の実施形態に係る情報処理装置におけるRowmajor密行列ベクトル積演算部を実現するプログラムの一例を示す図である。 本発明の第2の実施形態に係る情報処理装置におけるColmajor密行列ベクトル積演算部を実現するプログラムの一例を示す図である。 本発明の第2の実施形態に係る情報処理装置におけるCRS疎行列ベクトル積演算部を実現するプログラムの一例を示す図である。 本発明の第2の実施形態に係る情報処理装置におけるJDS疎行列ベクトル積演算部を実現するプログラムの一例を示す図である。 本発明の第2の実施形態に係る情報処理装置における行の並べ替え部を実現するプログラムの一例を示す図である。 本発明の第3の実施形態に係る情報処理装置のブロック図である。 本発明の第3の実施形態に係る情報処理装置における入力データWの例を示す図である。 本発明の第3の実施形態に係る情報処理装置において繰り返し実行される計算の例を示す図である。 本発明の第3の実施形態に係る情報処理装置の動作の一例を示すフローチャートである。 本発明の第4の実施形態に係る情報処理装置のブロック図である。
次に本発明の実施形態について図面を参照して詳細に説明する。なお、以下の説明において、行列、ベクトルおよび配列の各インデックスは0から始まるものとする。また行列の行方向は、行インデックスが増加していく方向であり、下方向と同意とする。また行列の列方向は、列インデックスが増加していく方向であり、右方向と同意とする。また行列Xの行インデックスがi、列インデックスがjである要素を、Mijと表すことがある。また配列Y[]のインデックスがiである要素を、Y[i]と表すことがある。
[第1の実施形態]
図1は本発明の第1の実施形態に係る情報処理装置100のブロック図である。情報処理装置100は、入力された疎行列を、ベクトルとの積を高速に演算することができる互いに形式の異なる複数の部分行列に分割して出力するように構成されている。図1を参照すると、情報処理装置100は、通信インタフェース部(以下、通信I/F部という)111、操作入力部112、画面表示部113、記憶部115、および演算処理部116から構成されている。
通信I/F部111は、専用のデータ通信回路から構成され、図示しない通信回線を介して接続された図示しない各種装置との間でデータ通信を行うように構成されている。操作入力部112は、キーボードやマウスなどの操作入力装置から構成され、オペレータの操作を検出して演算処理部116に出力するように構成されている。画面表示部113は、LCD(Liquid Crystal Display)あるいはPDP(Plasma Display Panel)などの画面表示装置から構成され、演算処理部116からの指示に応じて、各種情報を画面表示するように構成されている。
記憶部115は、ハードディスクやメモリなどの記憶装置から構成され、演算処理部116における各種処理に必要な処理情報およびプログラム1151を記憶するように構成されている。プログラム1151は、演算処理部116に読み込まれて実行されることにより各種処理部を実現するプログラムであり、通信I/F部111などのデータ入出力機能を介して外部装置(図示せず)や記憶媒体(図示せず)から予め読み込まれて記憶部115に保存される。記憶部115に記憶される主な処理情報には、疎行列1152、Rowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、JDS疎行列11534、および、行の並べ替え情報11535がある。
疎行列1152は、被変換対象となる疎行列である。疎行列1152は、その要素の多くが処理に必要でないゼロ要素となっている。また疎行列1152の一部の行は、非ゼロ要素が多く集まっている。さらに疎行列1152の一部の列は、非ゼロ要素が多く集まっている。
Rowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、および、JDS疎行列11534は、疎行列1152を変換して生成された部分行列である。行の並べ替え情報11535は、疎行列1152の全体の行が変換処理によってどのように並べ替えられたかを示す情報である。
演算処理部116は、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などのプロセッサとその周辺回路を有し、記憶部115からプログラム1151を読み込んで実行することにより、上記ハードウェアとプログラム1151とを協働させて各種処理部を実現するように構成されている。演算処理部116で実現される主な処理部は、入力部1161、行列変換部1162、および、出力部1163である。
入力部1161は、操作入力部112または/および通信I/F部111を通じて疎行列1152を入力し、記憶部115に記憶するように構成されている。
行列変換部1162は、記憶部115から疎行列1152を読み出し、行列変換処理を行って、Rowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、および、JDS疎行列11534を生成し、記憶部115に記憶するように構成されている。また行列変換部1162は、行列変換処理の過程で疎行列1152の行の並べ替えを行った場合、行の並べ替え情報11535を生成し、記憶部115に記憶するように構成されている。行列変換部1162は、Rowmajor密行列生成部11621、Colmajor密行列生成部11622、CRS疎行列生成部11623、および、JDS疎行列生成部11624を備えている。
Rowmajor密行列生成部11621は、疎行列1152を、図2に示すように、非ゼロ要素の数が所定数(第1の閾値)以上の行から構成される第1の部分行列1152-1とそれ以外の行から構成される第2の部分行列1152-2とに分割するように構成されている。例えばRowmajor密行列生成部11621は、非ゼロ要素の数が第1の閾値以上の行が上方向に集まるように、疎行列1152を第1の部分行列1152-1と第2の部分行列1152-2とに分割する。またRowmajor密行列生成部11621は、上記分割にあわせて、行の並べ替え情報11535を更新するように構成されている。またRowmajor密行列生成部11621は、第1の部分行列1152-1を行優先(Row-major order)の密行列形式であるRowmajor密行列11531に変換し、記憶部115に記憶するように構成されている。Rowmajor密行列11531は、値配列、行情報、および、列情報から構成される。またRowmajor密行列生成部11621は、第2の部分行列1152-2をColmajor密行列生成部11622に伝達するように構成されている。
Colmajor密行列生成部11622は、第2の部分行列1152-2を、図2に示すように、非ゼロ要素の数が所定数(第2の閾値)以上の列から構成される第3の部分行列1152-3とそれ以外の列から構成される第4の部分行列1152-4とに分割するように構成されている。例えばColmajor密行列生成部11622は、非ゼロ要素の数が第2の閾値以上の列が左方向に集まるように、第2の部分行列1152-2を第3の部分行列1152-3と第4の部分行列1152-4とに分割する。またColmajor密行列生成部11622は、第3の部分行列1152-3を列優先(Column-major order)の密行列形式であるColmajor密行列11532に変換するように構成されている。またColmajor密行列生成部11622は、各行の非ゼロ要素の数が小さくなる順に、第4の部分行列1152-4を並べ替え(ソートする)、並べ替え後の第4の部分行列1152-4をCRS疎行列生成部11623に伝達するように構成されている。またColmajor密行列生成部11622は、Colmajor密行列11532を、並べ替え後の第4の部分行列1152-4と同じ順に並べ替え、並べ替え後のColmajor密行列11532を記憶部115に記憶するように構成されている。Colmajor密行列11532は、値配列、行情報、および、列情報から構成される。またColmajor密行列11532は、上記の並べ替えに応じて、行の並べ替え情報11535を更新するように構成されている。
CRS疎行列生成部11623は、第4の部分行列1152-4を、図2に示すように、非ゼロ要素の数が所定数(第3の閾値)以上の行から構成される第5の部分行列1152-5とそれ以外の行から構成される第6の部分行列1152-6とに分割するように構成されている。またCRS疎行列生成部11623は、第5の部分行列1152-5をCRS疎行列11533に変換し、記憶部115に記憶するように構成されている。CRS疎行列11533は、値配列、列番号配列、および、オフセット配列から構成される。またCRS疎行列生成部11623は、第6の部分行列1152-6をJDS疎行列生成部11624に伝達するように構成されている。
JDS疎行列生成部11624は、第6の部分行列1152-6をJDS疎行列11534に変換し、記憶部115に記憶するように構成されている。JDS疎行列11534は、値配列、列番号配列、および、オフセット配列から構成される。JDS疎行列における行の入れ替え情報は、行の並べ替え情報11535において管理される。
出力部1163は、記憶部115からRowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、JDS疎行列11534、および、行の並べ替え情報11535を読み出し、疎行列1152の変換結果として画面表示部113に表示し、または/および、通信I/F部111を通じて外部装置へ送信するように構成されている。
図3は情報処理装置100の動作の一例を示すフローチャートである。以下、図3を参照して情報処理装置100の動作を説明する。
図3を参照すると、先ず入力部1161は、操作入力部112または/および通信I/F部111を通じて疎行列1152を入力し、記憶部115に記憶する(ステップS1)。図4は入力部1161が入力した疎行列1152の例を示す。この例の疎行列1152は、10行×9列から構成される。行と列との交点が1つの要素に対応し、空白の要素はゼロ要素を示し、値が設定されている要素は非ゼロ要素を示す。また入力部1161は、ステップS1において、初期状態の行の並べ替え情報11535を記憶部115に保存する。図5は初期状態の行の並べ替え情報11535の例を示す。
次にRowmajor密行列生成部11621は、Rowmajor密行列11531を作成する(ステップS2)。この処理では、先ずRowmajor密行列生成部11621は、疎行列1152を、非ゼロ要素の数が所定数(第1の閾値)以上の行から構成される第1の部分行列1152-1とそれ以外の行から構成される第2の部分行列1152-2とに分割する。例えば、Rowmajor密行列生成部11621は、第1の閾値を7とすると、図4に示す疎行列1152の場合、図6に示す第1の部分行列1152-1と図7に示す第2の部分行列1152-2とに分割する。図6に示す第1の部分行列1152-1は、疎行列1152の0行目と2行目から構成されている。また図7に示す第2の部分行列1152-2は、疎行列1152の1行目と3~9行目から構成されている。次にRowmajor密行列生成部11621は、第1の部分行列1152-1における値のないゼロ要素に値0を格納することにより、Rowmajor密行列11531を作成し、記憶部115に記憶する。例えば、Rowmajor密行列生成部11621は、図6の第1の部分行列1152-1の場合、例えば図8に示すように、2行9列のRowmajor密行列11531を作成し、記憶部115に記憶する。また、Rowmajor密行列生成部11621は、行の並べ替え情報11535を、「0、2、1、3、4、5、6、7、8、9」に更新する。
次にColmajor密行列生成部11622は、Colmajor密行列11532を作成する(ステップS3)。この処理では、先ずColmajor密行列生成部11622は、第2の部分行列1152-2を、非ゼロ要素の数が所定数(第2の閾値)以上の列から構成される第3の部分行列1152-3とそれ以外の列から構成される第4の部分行列1152-4とに分割する。例えば、Colmajor密行列生成部11622は、第2の閾値を5とすると、図7に示す第2の部分行列1152-2の場合、図9に示す8行2列の第3の部分行列1152-3と、図10に示す8行7列の第4の部分行列1152-4とに分割する。図9に示す第3の部分行列1152-3は、第2の部分行列1152-2の0列と6列から構成されている。また図10に示す第4の部分行列1152-4は、第2の部分行列1152-2の1~5列と7、8列から構成されている。次にColmajor密行列生成部11622は、第3の部分行列1152-3における値のないゼロ要素に値0を格納することにより、Colmajor密行列11532を作成する。例えば、Colmajor密行列生成部11622は、図9の第3の部分行列1152-3の場合、例えば図11に示すようなColmajor密行列11532を作成する。次にColmajor密行列生成部11622は、各行の非ゼロ要素の数が小さくなる順に、第4の部分行列1152-4を並べ替え(ソートする)、並べ替え後の第4の部分行列1152-4をCRS疎行列生成部11623に伝達する。またColmajor密行列生成部11622は、Colmajor密行列11532を、並べ替え後の第4の部分行列1152-4と同じ順に並べ替え、並べ替え後のColmajor密行列11532として記憶部115に記憶する。例えば、Colmajor密行列生成部11622は、図10の第4の部分行列1152-4および図11のColmajor密行列11532の場合、図12に示す第4の部分行列1152-4および図13に示すColmajor密行列11532のように行の並べ替えを行う。またColmajor密行列生成部11622は、上記並べ替えに応じて、行の並べ替え情報11535を、「0、2、8、9、3、4、6、1、7、5」に更新する。
次にCRS疎行列生成部11623は、CRS疎行列11533を作成する(ステップS4)。この処理では、先ずCRS疎行列生成部11623は、第4の部分行列1152-4を、非ゼロ要素の数が所定数(第3の閾値)以上の行から構成される第5の部分行列1152-5とそれ以外の行から構成される第6の部分行列1152-6とに分割する。例えば、第3の閾値を3とすると、CRS疎行列生成部11623は、図12の第4の部分行列1152-4の場合、図14の上側に示す第5の部分行列1152-5と図15の上側に示す第6の部分行列1152-6とに分割する。次にCRS疎行列生成部11623は、第5の部分行列1152-5における非ゼロ要素をCRS形式で格納するCRS疎行列11533を作成し、記憶部115に記憶する。例えば、CRS疎行列生成部11623は、図14の上側の第5の部分行列1152-5の場合、図14の下側に示すように、値配列と列番号配列とオフセット配列とから構成されるCRS疎行列11533を作成する。
次にJDS疎行列生成部11624は、JDS疎行列11534を作成する(ステップS5)。この処理では、JDS疎行列生成部11624は、第6の部分行列1152-6からJDS疎行列11534を作成し、記憶部115に記憶する。例えば、JDS疎行列生成部11624は、図15の上側の第6の部分行列1152-6の場合、非ゼロ要素の左詰めを行って、図15の下側に示すように、値配列と列番号配列とオフセット配列とから構成されるJDS疎行列11534を作成する。
上記手順では、第4の部分行列1152-4からCRS疎行列を生成した後、残りの行を左詰めしてJDS疎行列を作成した。しかし、第4の部分行列1152-4からCRS疎行列とJDS疎行列を作成する手順は上記に限定されない。例えば、図12に示した第4の部分行列1152-4に対して、最初に非ゼロ要素の左詰めを行い、左詰め後の第4の部分行列1152-4の行のうち所定数以上の非ゼロ要素がある行でCRS疎行列を作成し、残りの行でJDS疎行列を作成するようにしてもよい。
次に出力部1163は、記憶部115からRowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、JDS疎行列11534、および、行の並べ替え情報11535を読み出し、疎行列1152の変換結果として画面表示部113に表示し、または/および、通信I/F部111を通じて外部装置へ送信する(ステップS6)。
以上説明したように本実施形態によれば、入力の疎行列における非ゼロ要素が多く集まった行および列を無駄に分割することなくRowmajor密行列およびColmajor密行列として格納することができ、また残りの疎な部分行列をCRS疎行列とJDS疎行列とに分割して格納することができる。これによって、疎行列を、ベクトルとの積を高速に演算可能な複数形式の行列に変換することが可能となる。
[第2の実施形態]
図16は本発明の第2の実施形態に係る情報処理装置200のブロック図である。情報処理装置200は、図1に示した情報処理装置100と同様に疎行列をベクトルの積を高速に演算可能な複数の部分行列に変換する機能を備えるとともに、さらに、変換後の複数の部分行列を使用して、疎行列とベクトルとの積を求める機能を備えている。図16を参照すると、情報処理装置200は、図1に示した情報処理装置100と比較して、記憶部115がさらにベクトル1154および疎行列ベクトル積演算結果1155を記憶するように構成され、また演算処理部116がさらに行列ベクトル積演算部1164を備えるように構成されている点で相違し、それ以外は情報処理装置100と同じように構成されている。
ベクトル1154は、疎行列との積を計算することが可能なベクトルである。図17は、ベクトル1154の一例を示す。この例のベクトル1154は、9行1列で構成されている。疎行列ベクトル積演算結果1155は、疎行列1152とベクトル1154との積の演算結果である。
行列ベクトル積演算部1164は、疎行列1152とベクトル1154との積を演算するように構成されている。行列ベクトル積演算部1164は、Rowmajor密行列ベクトル積演算部11641、Colmajor密行列ベクトル積演算部11642、CRS疎行列ベクトル積演算部11643、JDS疎行列ベクトル積演算部11644、和演算部11645、および、並べ替え部11646を備えている。
Rowmajor密行列ベクトル積演算部11641は、Rowmajor密行列11531とベクトル1154との積を計算するように構成されている。Colmajor密行列ベクトル積演算部11642は、Colmajor密行列11532とベクトル1154との積を計算するように構成されている。CRS疎行列ベクトル積演算部11643は、CRS疎行列11533とベクトル1154との積を計算するように構成されている。JDS疎行列ベクトル積演算部11644は、JDS疎行列11534とベクトル1154との積を計算するように構成されている。和演算部11645は、Rowmajor密行列ベクトル積演算部11641、Colmajor密行列ベクトル積演算部11642、CRS疎行列ベクトル積演算部11643、および、JDS疎行列ベクトル積演算部11644で計算した積を同じ行どうしで足し合わせるように構成されている。並べ替え部11646は、和演算部11645の計算結果の行の並べ替えを行うように構成されている。
図18は情報処理装置200の動作の一例を示すフローチャートである。以下、図18を参照して情報処理装置200の動作を説明する。
図18を参照すると、先ず入力部1161は、操作入力部112または/および通信I/F部111を通じて疎行列1152およびベクトル1154を入力し、記憶部115に記憶する(ステップS11)。
次に行列変換部1162は、記憶部115から疎行列1152を読み出し、第1の実施形態に係る情報処理装置100と同様の行列変換処理を行って、Rowmajor密行列11531、Colmajor密行列11532、CRS疎行列11533、JDS疎行列11534、および、行の並べ替え情報11535を生成し、記憶部115に記憶する(ステップS12)。
次にRowmajor密行列ベクトル積演算部11641は、Rowmajor密行列11531とベクトル1154との積を計算する(ステップS13)。図19は、図8に示すRowmajor密行列1153と図17に示すベクトル1154との積を計算した結果を示す。
次にColmajor密行列ベクトル積演算部11642は、Colmajor密行列11532とベクトル1154との積を計算する(ステップS14)。図20は、図11に示すColmajor密行列11532と図17に示すベクトル1154との積を計算した結果を示す。
次にCRS疎行列ベクトル積演算部11643は、CRS疎行列11533とベクトル1154との積を計算する(ステップS15)。図21は、図14に示すCRS疎行列11533と図17に示すベクトル1154との積を計算した結果を示す。
次にJDS疎行列ベクトル積演算部11644は、JDS疎行列11534とベクトル1154との積を計算する(ステップS16)。図22は、図15に示すJDS疎行列11534とベクトル1154の積を計算した結果を示す。
次に和演算部11645は、Rowmajor密行列ベクトル積演算部11641、Colmajor密行列ベクトル積演算部11642、CRS疎行列ベクトル積演算部11643、および、JDS疎行列ベクトル積演算部11644で計算した積を同じ行どうしで足し合わせる(ステップS17)。図4に示す10行9列の疎行列と図17に示す9行1列のベクトル1154との積の計算結果を示す図23と図19~図22とを比較すると明らかなように、Colmajor密行列ベクトル積演算部11642、CRS疎行列ベクトル積演算部11643、および、JDS疎行列ベクトル積演算部11644の計算結果は、疎行列ベクトル積演算結果の行の部分積を表している。そのため、和演算部11645は、Colmajor密行列ベクトル積演算部11642、CRS疎行列ベクトル積演算部11643、および、JDS疎行列ベクトル積演算部11644で計算した積を同じ行どうしで足し合わせることで、行全体の積を算出する。
次に並べ替え部11646は、行の並べ替え情報11535に基づいて、和演算部11645の計算結果の行の並べ替えを行う(ステップS18)。即ち、和演算部11645で計算された疎行列ベクトル積演算結果の行の並びは、疎行列1152の行の並びと相違するため、行の並べ替え情報11535に基づいて、疎行列1152の行の並びと同じように並べ替えを行う。
次に出力部1163は、記憶部115から疎行列ベクトル積演算結果1155を読み出し、疎行列1152とベクトル1154の演算結果として画面表示部113に表示し、または/および、通信I/F部111を通じて外部装置へ送信する(ステップS19)。
以上説明したように本実施形態によれば、疎行列1152とベクトル1154との積を高速に演算することができる。その理由は、疎行列1152における非ゼロ要素が多く集まった行および列を無駄に分割することなくRowmajor密行列11531およびColmajor密行列11532として格納し、また残りの疎な部分行列をCRS疎行列11533とJDS疎行列11534とに分割して格納し、Rowmajor密行列11531とベクトル1154との積、Colmajor密行列11532とベクトル1154との積、CRS疎行列11533とベクトル1154との積、JDS疎行列11534とベクトル1154との積をそれぞれ計算し、それらの行単位の和を求め、最後に行の並べ替えを行うようにしているためである。
Rowmajor密行列11531とベクトル1154との積、および、Colmajor密行列11532とベクトル1154との積の演算を高速に行える理由は、その演算に必要なデータを少ない転送サイクルで記憶部115から演算処理部116に取得できるためである。例えば、記憶部115から演算処理部116へ1回の転送サイクルで取得可能なデータ量を3要素分とすると、図19のRowmajor密行列11531の合計18要素は6回の転送サイクルで取得でき、ベクトル1154の合計9要素は3回の転送サイクルで取得できる。そして、取得した27要素のうちで無駄なゼロ要素は1つのみである。このことから、Rowmajor密行列ベクトル積演算は高速に行えることになる。また、図20のColmajor密行列11532の合計16要素は6回の転送サイクルで取得でき、ベクトル1154の合計9要素は3回の転送サイクルで取得できる。そして、取得した25要素のうちで無駄なゼロ要素は3要素のみである。このことから、CoLmajor密行列ベクトル積演算は高速に行えることになる。
CRS疎行列11533とベクトル1154との積、および、JDS疎行列11534とベクトル1154との積の演算を高速に行える理由は、疎行列とベクトルとの積に比較して無駄な演算がないためである。
以下、行列ベクトル積演算部1164を実現するプログラム例(疑似コード例)を説明する。プログラム言語はC言語を使用する。但し、行列ベクトル積演算部1164は、C言語以外のプログラム言語によっても実現できることは言うまでもない。
図24は、行列ベクトル積演算部1164におけるRowmajor密行列ベクトル積演算部11641のプログラムの一例を示す。図24において、Val[]、nrow、および、ncolは、Rowmajor密行列11531の値配列、行数、および、列数をそれぞれ表し、U[]は、ベクトル1154の値配列を表し、P´[]は、演算結果ベクトルの値配列を表す。
図25は、行列ベクトル積演算部1164におけるColmajor密行列ベクトル積演算部11642のプログラムの一例を示す。図25において、Val[]、nrow、および、ncolは、Colmajor密行列11532の値配列、行数、および、列数をそれぞれ表し、U[]は、ベクトル1154の値配列を表し、P´[]は、演算結果ベクトルの値配列を表す。
図26は、行列ベクトル積演算部1164におけるCRS疎行列ベクトル積演算部11643のプログラムの一例を示す。図26において、Val[]、Col[]、および、off[]は、CRS疎行列11533の値配列、列番号配列、および、オフセット配列の要素の値をそれぞれ表し、nrowは、CRS疎行列11533の行数を表し、U[]は、ベクトル1154の値配列を表し、P´[]は、演算結果ベクトルの値配列を表す。
図27は、行列ベクトル積演算部1164におけるJDS疎行列ベクトル積演算部11644のプログラムの一例を示す。図27において、Val[]、Col[]、および、off[]は、JDS疎行列11534の値配列、列番号配列、および、オフセット配列の要素の値をそれぞれ表し、colmaxは、JDS疎行列11534の最大列数を表し、U[]は、ベクトル1154の値配列を表し、P´[]は、演算結果ベクトルの値配列を表す。
図28は、行列ベクトル積演算部1164における並べ替え部11646のプログラムの一例を示す。図28において、Row[]は、行の並べ替え情報11535の値配列を表し、nrowは、疎行列1152の行数を表し、P´[]は、演算結果ベクトルの値配列を表し、P[]は、疎行列ベクトル積演算結果の値配列を表す。
図24~図28のプログラムは、図24のプログラムが最初に実行され、次に図25のプログラム、図26のプログラム、図27のプログラムの順に実行され、最後に図28のプログラムが実行される。このとき、演算結果ベクトルの値配列P´[]はプログラム間で引き継がれるように動作する。例えば、配列P´[1]には、図25のプログラム実行終了時点で、9×1+11×7が格納されていた場合、図27のプログラムにおいてP´[1]に更に10×5が加算される。このような動作は和演算部11645の動作に相当する。そのため、上記プログラム例では、和演算部11645のための専用のプログラムは設けられていない。但し、演算結果ベクトルの値配列P´[]を各演算部11641~11644独立に設けるような場合は、それらの実行後に行単位で和を求める和演算部11645をプログラミングしておく必要がある。
以上説明したように本実施形態によれば、疎行列とベクトルとの積を高速に演算することが可能となる。その理由は、疎行列をベクトルとの積を高速に演算可能な複数の部分行列、即ち、Rowmajor密行列、Colmajor密行列、CRS疎行列、および、JDS疎行列に変換し、それらの部分行列とベクトルとの積を個別に計算し、それらの計算結果を足し合わせて、疎行列ベクトル積演算の結果を生成するためである。
[第3の実施形態]
図29は本発明の第3の実施形態に係る情報処理装置300のブロック図である。情報処理装置300は、図16に示した情報処理装置200と同様に疎行列をベクトルとの積を高速に演算可能な複数の部分行列に変換する機能、および、変換後の複数の部分行列を使用して、疎行列とベクトルとの積を求める機能を備えているとともに、統計的機械学習を行う機能を備えている。図29を参照すると、情報処理装置300は、図16に示した情報処理装置200と比較して、記憶部115がデータW、U、P、WT、Q、Y、Aを記憶するように構成され、また演算処理部116がさらに学習部1165を備えるように構成されている点で相違し、それ以外は情報処理装置200と同じように構成されている。
データWは、統計的機械学習の入力データである。データWは、図16の疎行列1152と同様に、その要素の多くが処理に必要でないゼロ要素となっている疎行列である。またデータWは、非ゼロ要素が多く集まった行および列を行列の一部に有している。このようなデータWの例として、1つの行が図30に示すような一人のユーザの情報から構成される疎行列がある。図30に示すユーザ情報は、ラベル、ユーザ名、環境、時間、特徴量1、特徴量2、・・・で構成されており、前半の4つの項目(ラベル、ユーザ名、環境、時間)は全てのユーザ情報が持っている密なデータになる。後半の特徴量の項目は、全体的には疎なデータであるが、殆どのユーザが特定の特徴量値を持っている場合や、特定のユーザが大量の特徴量を持っている場合がある。殆どのユーザが特定の特徴量値を持っている場合、当該特定の特徴量の項目に係る列は密なデータになる。特定のユーザが大量の特徴量を持っている場合、当該ユーザの行は密なデータになる。
データWTは、データWの転置行列である。データAは、教師データである。データUは、学習対象となるモデルのパラメータの集合から構成されるベクトルである。データPは、データWとデータUの積である。データQは、データPと教師データAとの差から計算されるベクトルである。データYは、データWTとデータQとの積である。
学習部1165は、データW、U、P、WT、Q、Y、Aを使用して統計的機械学習を行うように構成されている。統計的機械学習として、本実施形態では、ロジスティックリグレッション(LR)を使用する。LRでは、その実行過程において、図31に示すような計算が何度も繰り返されて、最終的なデータUが求められることになる。
図32は情報処理装置300の動作の一例を示すフローチャートである。以下、図32を参照して情報処理装置300の動作を説明する。
図32を参照すると、先ず入力部1161は、操作入力部112または/および通信I/F部111を通じてデータW、WT、Aを入力し、記憶部115に記憶する(ステップS21)。
次に行列変換部1162は、記憶部115からデータW、WTを読み出し、第2の実施形態に係る情報処理装置200と同様の行列変換処理を行って、データW、WTのそれぞれを互いに形式の異なる複数の部分行列に変換し、記憶部115に記憶する(ステップS22)。即ち、行列変換部1162は、データWを、Rowmajor密行列、Colmajor密行列、CRS疎行列、JDS疎行列に変換する。また行列変換部1162は、データWTを、Rowmajor密行列、Colmajor密行列、CRS疎行列、JDS疎行列に変換する。
次に学習部1165は、データUに乱数を設定し、記憶部115に記憶する(ステップS23)。
次に学習部1165は、ステップS25からステップS28を所定の条件が成立するまで繰り返す(ステップS24、S29)。所定の条件の例として、繰り返し回数が所定回数に達する、といった条件があるが、それに限定されない。
学習部1165は、ステップS25では、行列ベクトル積演算部1164を使用してデータWとデータUとの積を計算し、その計算結果であるデータPを記憶部115に記憶する。行列ベクトル積演算部1164は、データWとデータUとの積の計算では、データWから生成されたRowmajor密行列、Colmajor密行列、CRS疎行列、および、JDS疎行列それぞれとデータUとの積を個別に計算し、それらの積を足し合わせることで、データPを算出する。
また学習部1165は、ステップS26では、上記算出したデータPと教師データAとの差からデータQを計算し、記憶部115に記憶する。
また学習部1165は、ステップS27では、行列ベクトル積演算部1164を使用してデータWTとデータQとの積を計算し、その計算結果であるデータYを記憶部115に記憶する。行列ベクトル積演算部1164は、データWTとデータQとの積の計算では、データWTから生成されたRowmajor密行列、Colmajor密行列、CRS疎行列、および、JDS疎行列それぞれとデータQとの積を個別に計算し、それらの積を足し合わせることで、データYを算出する。
また学習部1165は、ステップS28では、上記算出したデータYでデータUを更新する。
次に出力部1163は、記憶部115からデータUを読み出し、学習結果(学習済みのモデルのパラメータ)として画面表示部113に表示し、または/および、通信I/F部111を通じて外部装置へ送信する(ステップS30)。
以上説明したように本実施形態によれば、統計的機械学習の高速化が可能である。その理由は、統計的機械学習で何度も繰り返して実行することが必要になる疎行列ベクトル積を本発明の手法によって高速化しているためである。
[第4の実施形態]
次に本発明の第4の実施形態について図面を参照して説明する。
図33は第4の実施形態にかかわる情報処理装置400のブロック図である。図33を参照すると、情報処理装置400は、第1の変換部401と第2の変換部402と第3の変換部403と第4の変換部404とを含んで構成されている。
第1の変換部401は、疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、第1の部分行列を行優先の密行列形式の第1の行列に変換するように構成されている。第1の変換部401は、例えば図1のRowmajor密行列生成部11621で構成することができるが、それに限定されない。
第2の変換部402は、第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、第3の部分行列を列優先の密行列形式の第2の行列に変換するように構成されている。第2の変換部402は、例えば図1のColmajor密行列生成部11622で構成することができるが、それに限定されない。
第3の変換部403は、第4の部分行列を第5の部分行列と第6の部分行列とに分割し、第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換するように構成されている。第3の変換部403は、例えば図1のCRS疎行列生成部11623で構成することができるが、それに限定されない。
第4の変換部404は、第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換するように構成されている。第4の変換部404は、例えば図1のJDS疎行列生成部11624で構成することができるが、それに限定されない。
以上のように構成された情報処理装置400は、以下のように動作する。即ち、第1の変換部401は、疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、第1の部分行列を行優先の密行列形式の第1の行列に変換する。次に第2の変換部402は、第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、第3の部分行列を列優先の密行列形式の第2の行列に変換する。次に第3の変換部403は、第4の部分行列を第5の部分行列と第6の部分行列とに分割し、第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する。次に第4の変換部404は、第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する。
以上のように構成され動作する情報処理装置400によれば、非ゼロ要素が多く集まった行および列が行列の一部に存在する疎行列に対する行列ベクトル積を高速に演算することができる。その理由は、入力の疎行列における非ゼロ要素が多く集まった行および列を無駄に分割することなく行優先の密行列形式の第1の行列および列優先の密行列形式の第2の行列として保持することができ、また残りの疎な部分行列を疎行列圧縮形式で保持するためである。
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。例えば、以下のような形態も本発明に含まれる。
第1乃至第3の実施形態では、行列変換部1162は、第4の部分行列1152-4を、非ゼロ要素の数が所定数以上の行から構成される第5の部分行列1152-5とそれ以外の行から構成される第6の部分行列1152-6とに分割し、第5の部分行列1152-5における非ゼロ要素をCRS形式で格納し、第6の部分行列1152-6をJDS形式で格納した。しかし、行列変換部1162は、第4の部分行列1152-4の非ゼロ要素を左詰めにし、左詰めした行列の列のうちの非ゼロ要素の数が所定数以上の列に対する部分行列をJDS形式で格納し、上記左詰めした行列のそれ以外の列に対する部分行列をCRS形式で格納するように構成されていてもよい。
また第1乃至第3の実施形態では、行列変換部1162は、第4の部分行列1152-4の非ゼロ要素を格納する疎行列圧縮形式として、CRS形式とJDS形式を使用した。しかし、行列変換部1162は、行優先で行列の要素を格納する他の疎行列圧縮形式をCRSの代わりに使用してもよく、列優先で行列の要素を格納する他の疎行列圧縮形式をJDS形式の代わりに使用してもよい。
また第3の実施形態では、統計的機械学習において行われる疎行列ベクトル積に本発明を適用した。しかし、本発明はそのような適用に限定されず、K-means・特異値分解・ランチョス法など、様々な科学技術計算における疎行列ベクトル積の計算に適用可能である。
本発明は、疎行列を圧縮して保持する分野や、疎行列ベクトル積を計算する分野に利用できる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する第1の変換部と、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する第2の変換部と、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する第3の変換部と、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する第4の変換部と、
を備える情報処理装置。
[付記2]
前記第3の変換部は、前記第4の部分行列を非ゼロ要素の数が所定数以上の行から構成される前記第5の部分行列とそれ以外の行から構成される前記第6の部分行列とに分割するように構成されている、
付記1に記載の情報処理装置。
[付記3]
前記第2の変換部は、各行の非ゼロ要素の数が小さくなる順に前記第4の部分行列を並べ替え、該並べ替え後の前記第4の部分行列と同じ順に前記第2の行列を並べ替えるように構成されている、
付記2に記載の情報処理装置。
[付記4]
前記行優先の疎行列圧縮形式は、CRS(Compressed Row Storage)形式である、
付記1乃至3の何れかに記載の情報処理装置。
[付記5]
前記列優先の疎行列圧縮形式は、JDS(Jagged Diagonal Storage)形式である、
付記1乃至4の何れかに記載の情報処理装置。
[付記6]
前記第1の行列、前記第2の行列、前記第3の行列、および、前記第4の行列の組に変換された前記疎行列と、前記疎行列との積を計算可能なベクトルとを記憶する記憶部と、
前記第1の行列と前記ベクトルとの積、前記第2の行列と前記ベクトルとの積、前記第3の行列と前記ベクトルとの積、および、前記第4の行列と前記ベクトルとの積を、個別に計算し、前記計算した積を足し合わせることにより、前記疎行列と前記ベクトルとの積を求める行列ベクトル積演算部と、
を更に備える付記1乃至5の何れかに記載の情報処理装置。
[付記7]
前記行列ベクトル積演算部は、統計的機械学習を制御する学習部から計算を指示された疎行列ベクトル積の演算を行うように構成されている、
付記6に記載の情報処理装置。
[付記8]
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換し、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換し、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換し、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する、
情報処理方法。
[付記9]
コンピュータに、
疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する処理と、
前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の行から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する処理と、
前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する処理と、
前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する処理と、
を行わせるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
100、200、300、400…情報処理装置
111…通信I/F部
112…操作入力部
113…画面表示部
115…記憶部
1151…プログラム
1152…疎行列
1152-1…第1の部分行列
1152-2…第2の部分行列
1152-3…第3の部分行列
1152-4…第4の部分行列
1152-5…第5の部分行列
1152-6…第6の部分行列
11531…Rowmajor密行列
11532…Colmajor密行列
11533…CRS疎行列
11534…JDS疎行列
11535…行の並べ替え情報
116…演算処理部
1161…入力部
1162…行列変換部
11621…Rowmajor密行列生成部
11622…Colmajor密行列生成部
11623…CRS疎行列生成部
11624…JDS疎行列生成部
1163…出力部
1164…行列ベクトル積演算部
11641…Rowmajor密行列ベクトル積演算部
11642…Colmajor密行列ベクトル積演算部
11643…CRS疎行列ベクトル積演算部
11644…JDS疎行列ベクトル積演算部
11645…和演算部
11646…並べ替え部
1165…学習部
401…第1の変換部
402…第2の変換部
403…第3の変換部
404…第4の変換部

Claims (9)

  1. 疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する第1の変換部と、
    前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の列から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する第2の変換部と、
    前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する第3の変換部と、
    前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する第4の変換部と、
    を備える情報処理装置。
  2. 前記第3の変換部は、前記第4の部分行列を非ゼロ要素の数が所定数以上の行から構成される前記第5の部分行列とそれ以外の行から構成される前記第6の部分行列とに分割するように構成されている、
    請求項1に記載の情報処理装置。
  3. 前記第2の変換部は、各行の非ゼロ要素の数が小さくなる順に前記第4の部分行列を並べ替え、該並べ替え後の前記第4の部分行列と同じ順に前記第2の行列を並べ替えるように構成されている、
    請求項2に記載の情報処理装置。
  4. 前記行優先の疎行列圧縮形式は、CRS(Compressed Row Storage)形式である、
    請求項1乃至3の何れかに記載の情報処理装置。
  5. 前記列優先の疎行列圧縮形式は、JDS(Jagged Diagonal Storage)形式である、
    請求項1乃至4の何れかに記載の情報処理装置。
  6. 前記第1の行列、前記第2の行列、前記第3の行列、および、前記第4の行列の組に変換された前記疎行列と、前記疎行列との積を計算可能なベクトルとを記憶する記憶部と、
    前記第1の行列と前記ベクトルとの積、前記第2の行列と前記ベクトルとの積、前記第3の行列と前記ベクトルとの積、および、前記第4の行列と前記ベクトルとの積を、個別に計算し、前記計算した積を足し合わせることにより、前記疎行列と前記ベクトルとの積を求める行列ベクトル積演算部と、
    を更に備える請求項1乃至5の何れかに記載の情報処理装置。
  7. 前記行列ベクトル積演算部は、統計的機械学習を制御する学習部から計算を指示された疎行列ベクトル積の演算を行うように構成されている、
    請求項6に記載の情報処理装置。
  8. コンピュータが、
    疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換し、
    前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の列から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換し、
    前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換し、
    前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する、
    情報処理方法。
  9. コンピュータに、
    疎行列を非ゼロ要素の数が所定数以上の行から構成される第1の部分行列とそれ以外の行から構成される第2の部分行列とに分割し、前記第1の部分行列を行優先の密行列形式の第1の行列に変換する処理と、
    前記第2の部分行列を非ゼロ要素の数が所定数以上の列から構成される第3の部分行列とそれ以外の列から構成される第4の部分行列とに分割し、前記第3の部分行列を列優先の密行列形式の第2の行列に変換する処理と、
    前記第4の部分行列を第5の部分行列と第6の部分行列とに分割し、前記第5の部分行列を行優先の疎行列圧縮形式の第3の行列に変換する処理と、
    前記第6の部分行列を列優先の疎行列圧縮形式の第4の行列に変換する処理と、
    を行わせるためのプログラム。
JP2021538525A 2019-08-02 2019-08-02 情報処理装置 Active JP7310892B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/030484 WO2021024300A1 (ja) 2019-08-02 2019-08-02 情報処理装置

Publications (3)

Publication Number Publication Date
JPWO2021024300A1 JPWO2021024300A1 (ja) 2021-02-11
JPWO2021024300A5 JPWO2021024300A5 (ja) 2022-03-31
JP7310892B2 true JP7310892B2 (ja) 2023-07-19

Family

ID=74503371

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021538525A Active JP7310892B2 (ja) 2019-08-02 2019-08-02 情報処理装置

Country Status (3)

Country Link
US (1) US20220253507A1 (ja)
JP (1) JP7310892B2 (ja)
WO (1) WO2021024300A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117436370B (zh) * 2023-12-06 2024-03-19 山东省计算中心(国家超级计算济南中心) 面向流体力学网格生成的超定矩阵方程并行方法及系统
CN117609677B (zh) * 2023-12-08 2024-06-18 上海交通大学 一种稀疏矩阵乘法加速方法、fpga、计算系统及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016066329A (ja) 2014-09-26 2016-04-28 日本電気株式会社 情報処理装置、情報処理方法、及び、コンピュータ・プログラム
WO2017154946A1 (ja) 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064808A (en) * 1997-08-01 2000-05-16 Lucent Technologies Inc. Method and apparatus for designing interconnections and passive components in integrated circuits and equivalent structures by efficient parameter extraction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016066329A (ja) 2014-09-26 2016-04-28 日本電気株式会社 情報処理装置、情報処理方法、及び、コンピュータ・プログラム
WO2017154946A1 (ja) 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム

Also Published As

Publication number Publication date
JPWO2021024300A1 (ja) 2021-02-11
WO2021024300A1 (ja) 2021-02-11
US20220253507A1 (en) 2022-08-11

Similar Documents

Publication Publication Date Title
EP3557484B1 (en) Neural network convolution operation device and method
JP7310892B2 (ja) 情報処理装置
US20120254871A1 (en) Combinatorial computing
JP2021509747A (ja) ハードウェアベースのプーリングのシステムおよび方法
US20170206089A1 (en) Information processing apparatus and computational method
CN105426345A (zh) 一种矩阵求逆运算方法
US11803360B2 (en) Compilation method, apparatus, computing device and medium
WO2017154946A1 (ja) 情報処理装置、情報処理方法、データ構造およびプログラム
TW201602808A (zh) 矩陣轉置電路
JPH08235159A (ja) 逆コサイン変換装置
Faure et al. Implementation of irreducible Sobol’sequences in prime power bases
CN111160560B (zh) 预估模拟量子计算所需资源的方法、系统
JP6357345B2 (ja) ビデオデータ処理時に空間領域と周波数領域との間の変換を実行するためのデータ処理装置および方法
JP6175036B2 (ja) クラスタ抽出装置、クラスタ抽出方法、及びクラスタ抽出プログラム
CN110673824B (zh) 矩阵向量乘电路以及循环神经网络硬件加速器
JP2013101598A (ja) 挙動解析システム、挙動解析方法及び挙動解析プログラム
US9838704B2 (en) Method and apparatus for decoding video
JP2002328915A (ja) 時分割方式の行列演算器
JP6104469B2 (ja) 行列生成装置及び行列生成方法及び行列生成プログラム
JPWO2021024300A5 (ja)
CN114330682A (zh) 应用于Fastformer神经网络的硬件架构及其计算方法
JP5700827B2 (ja) 量子回路生成装置、方法、プログラム及び記録媒体
Zou et al. Analysis and control of the jump modes behavior of 2-D singular systems—Part II: Regular observer and compensator design
Kagerer A short introduction to splines in least squares regression analysis
KR100628316B1 (ko) 변환 행렬 연산 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230619

R151 Written notification of patent or utility model registration

Ref document number: 7310892

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151