JP6950675B2 - 情報処理装置、情報処理方法、データ構造およびプログラム - Google Patents

情報処理装置、情報処理方法、データ構造およびプログラム Download PDF

Info

Publication number
JP6950675B2
JP6950675B2 JP2018504539A JP2018504539A JP6950675B2 JP 6950675 B2 JP6950675 B2 JP 6950675B2 JP 2018504539 A JP2018504539 A JP 2018504539A JP 2018504539 A JP2018504539 A JP 2018504539A JP 6950675 B2 JP6950675 B2 JP 6950675B2
Authority
JP
Japan
Prior art keywords
matrix
format
vector
column
information processing
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
JP2018504539A
Other languages
English (en)
Other versions
JPWO2017154946A1 (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 JPWO2017154946A1 publication Critical patent/JPWO2017154946A1/ja
Application granted granted Critical
Publication of JP6950675B2 publication Critical patent/JP6950675B2/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

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

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2016−046028号(2016年3月9日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は情報処理装置、情報処理方法、データ構造およびプログラムに関し、特に、ベクトル計算機、ベクトル計算機用の行列格納方法および行列ベクトル積演算方法、ベクトル計算機用のデータ構造、ならびに、ベクトル計算機用のプログラムに関する。
疎行列とは、データの大半が0(ゼロ)の行列をいう。疎行列に含まれる0の部分をスキップして(飛ばして)保存することで、容量削減および行列ベクトル積演算の高速化を行う方法が知られている。例えば、非特許文献1には疎行列格納方法および疎行列ベクトル積演算方法が記載されている。
関連技術として、特許文献1には、行列から対角要素を取り除き、上三角行列と下三角行列に分解し、JDS(Jagged Diagonal Storage)形式で保存する技術が記載されている。
また、特許文献2には、CRS(Compressed Row Storage)形式で入力された行列をJDS形式に変換する技術が記載されている。
特開平03−262077号公報 特開2001−209631号公報
Richard Barrett, et. al "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, 2nd Edition", SIAM, pp.57-63<URL: http://www.netlib.org/templates/templates.pdf>.
上記特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
図8は、CRS(Compressed Row Storage)形式 による疎行列格納方法を例示する。CRS形式による疎行列格納方法では、ゼロでない要素(以下「非ゼロ要素」という。)の値を1次元配列に格納する。また、非ゼロ要素を行方向に連続して格納し、その行の非ゼロ要素がなくなると、次の行の非ゼロ要素を格納する。例えば、図8の例では、1,2,3,4,…,10という順序で非ゼロ要素が1次元配列に保存される。また、これらの非ゼロ要素の元の行列における列番号も、同様に1次元配列に格納する。例えば、図8の例では、「1」が保存されていた列は0番目の列であるため、0が保存される。なお、ここでは、列番号および行番号は0からスタート(開始)するものとする。また、「2」が保存されていた列は2番目の列であるため、次の値として2が保存される。さらに、行の区切りを保存するため、「いくつ目の要素から行が始まるか」を表すオフセット値を1次元配列に保存する。例えば、0行目は0番目の要素から始まるため、最初の要素は0となる。また、0行目の非ゼロ要素数が3個であるため、1行目は3番目の要素から始まる。したがって、この配列の次の要素は3となる。
図9は、CRS形式による疎行列格納方法において、疎行列ベクトル積を実行する場合を例示する。例えば、行列ベクトル積の第0要素を計算するには、行列の第0行とベクトルの内積を計算すればよい。第0行の非ゼロ要素は1,2,3であり、それぞれの列番号は0,2,4であることが図8の右側に示した配列(値、列番号)から分かる。また、行の切れ目は、図8に示したオフセット値から知ることができる。これらを用いて、値1,2,3と、ベクトルの第0要素、第2要素、第4要素である1,3,5との積をそれぞれ求め、求めた積の和を計算することで、行列ベクトル積の第0要素を計算することができる。行列ベクトル積の他の要素についても、同様に計算することができる。
ベクトル計算機を用いて上述の行列ベクトル積を計算する場合、各行および対応するベクトルの値がベクトルレジスタにロードされた上で計算が行われる。ここで、各行の非ゼロ要素の数が必ずしも多くない場合には、ベクトルレジスタ長に満たないケースが起こり得る。しかしながら、ベクトル計算機では演算時のベクトルレジスタ上の有効なデータ長(すなわち、ベクトル長)が長くないと、計算を高速に実行できないという問題がある。
かかる問題を解決するための手法として、JDS(Jagged Diagonal Storage)形式による疎行列格納方法が知られている。図10は、JDS形式による疎行列格納方法を例示する。JDS形式による疎行列格納方法では、非ゼロ要素を同一行で左に詰める。次に、各行の非ゼロ要素の数が小さくなる順に、行を並べ替える(ソートする)。図10に示す例では、第1行と第2行を入れ替えることで、非ゼロ要素数が3,3,2,2となる。その上で、列方向に非ゼロ要素を1次元配列に保存する。図10に示す例では、1,6,4,9、…という順にデータを保存する。また、CRS形式と同様、対応する値の列番号も1次元配列に保存する。例えば、値1が保存されていた列は0番目の列であるため、0を保存する。次の値6が保存されていた列も0番目の列であるため、0を保存する。また、左詰めにした後の列の区切りを保存するため、オフセット値を1次元配列に保存する。例えば、最初の列は配列の最初の要素から始まるため0が保存される。最初の列の要素数が4個であるため、次の列は4要素目からスタートする。したがって、この配列の次の要素は4となる。さらに、JDS形式の場合、列をどのように入れ替えたかを表す情報も保持する必要がある。図10に示す例の場合、行を入れ替えた後の0,1,2,3行が元の行列の0,2,1,3行目に相当するため、これらの値を保存している。なお、これらの値を保存する代わりに、元の行列の行が入れ替えた行列の何行目に相当するかを表す情報を保存してもよい。
図11はJDS形式による疎行列格納方法において、疎行列ベクトル積を実行する場合を例示する。この場合、各列と入力ベクトルの内容を掛け合わせたものを、行列ベクトル積の結果を表すベクトルに足し込むことになる。例えば、最初の列を参照すると、最初の行の値は1であり、その値が存在した列が0番目の列であることが図10の配列から分かる。そこで、行列要素の値1と入力ベクトルの0番目の要素である1を掛け合わせた1×1を、行列ベクトル積の結果を表すベクトルの最初の値に足し込む。次の行の値は6であり、その値が存在した列も0番目の列であるため、結果を表すベクトルの次の値に6×1を足し込む。このような操作をすべての列について行う。その後、行の入れ替え情報に基づいて、値を入れ替えることで、疎行列ベクトル積を求めることができる。
かかる行列ベクトル積をベクトル計算機で計算する場合、列ごとにデータがベクトルレジスタにロードされた上で計算が実行される。JDS形式によると、各列を左詰めにしたことで、CRS形式の1行よりも長くすることができる。したがって、JDS形式によると、CRS形式と比較してベクトル長を長くすることができる。
しかしながら、上述の疎行列格納方法および疎行列ベクトル積演算方法によると、ベクトル長が十分に長くならない場合がある。その理由を以下に説明する。
近年、ビッグデータ分析等と呼ばれるように、大規模なデータを対象に機械学習が行われる場合が増えてきている。ここで、機械学習は行列演算によって記述される場合が多い。また、大規模な機械学習では、対象とする行列が疎行列となる場合が多い。図12および図13は、このようなケースを例示する。
図12は、文書を疎行列で表したものである。図12の行列の行は「単語」を表し、列は「文」を表す。また、行列の要素は各文において各単語が登場した回数を示す。この行列を対象に「特異値分解」と呼ばれる操作を行うと、各文を構成するトピックや各トピックを構成する単語を分析することができる。かかる分析は、潜在意味解析と呼ばれている。
一方、図13はオンラインストア等での各ユーザの購買行動を疎行列で表したものである。図13の行列の行は「アイテム」を表し、列は「ユーザ」を表す。行列の要素は、各ユーザが各アイテムを購入した回数を表す。この行列を対象として「特異値分解」を行うことで、ユーザが購入しそうなアイテムを推薦することが可能となる。
ここで、疎行列に対して特異値分解を行うには、その計算の途中で疎行列ベクトル積を行う必要がある。また、特異値分解以外の演算においても、疎行列に対する演算としては疎行列ベクトル積が中心となることが多い。
ところで、図12および図13に示す行列をJDS形式に変換すると、図14に示す形となる。ここで、グレーの部分は非ゼロ要素が存在する部分を表す。このような行列の場合、行列の右側の部分に、列の長さがベクトル長に満たない列が大量に生じ得る。
この理由は、対象とするデータがPower Law(またはZipf分布)と呼ばれるデータの分布に従うためである。例えば、一部の単語の出現回数は他の単語に比べて極めて多いことが知られている。Zipf分布に従う場合、単語の出現回数順にソートした場合、2番目に多く現れる単語の出現回数は最も多く現れる単語の出現回数の1/2回となり、3番目に多く現れる単語の出現回数は最も多く現れる単語の1/3回等となる。同様に、一部のアイテムの購入回数は、通常他のアイテムに比べて極めて多くなる傾向がある。
これらの場合には、ベクトル長が十分に長くならない領域が生じ、ベクトル計算機によるベクトル行列積の計算の高速化の妨げとなるおそれがある。なお、特許文献1、2に記載された技術はかかる問題に対処するものではない。
そこで、Power Lowに従うデータを格納した疎行列に対する行列ベクトル積を、ベクトル計算機上で高速に演算可能とすることが課題となる。本発明の目的は、かかる課題解決に寄与する情報処理方法、情報処理装置、プログラムおよびデータ構造を提供することにある。
本発明の第1の態様に係る情報処理装置は、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を第1の形式で保持する第1の変換部を備えている。この情報処理装置は、さらに、前記行列のそれ以外の列に対する部分行列を第2の形式で保持する第2の変換部を備えている。
本発明の第2の態様に係る情報処理方法は、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を第1の形式で保持するステップと、前記行列のそれ以外の列に対する部分行列を第2の形式で保持するステップと、を含む。本方法は、上記した第1の変換部と、第2の変換部とを備える情報処理装置という、特定の機械に結びつけられている。
本発明の第3の態様に係るデータ構造は、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を第1の形式で保持するとともに、前記行列のそれ以外の列に対する部分行列を第2の形式で保持する。
本発明の第4の態様に係るプログラムは、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を第1の形式で保持する処理と、前記行列のそれ以外の列に対する部分行列を第2の形式で保持する処理と、をコンピュータに実行させる。
なお、上記データ構造およびプログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することもできる。
本発明に係る情報処理方法、情報処理装置、プログラムおよびデータ構造によると、Power Lowに従うデータを格納した疎行列に対する行列ベクトル積を、ベクトル計算機上で高速に演算することができる。
一実施形態に係る情報処理装置の構成を例示するブロック図である。 一実施形態においてJDS形式とCRS形式を組み合せて保存する様子を説明するための図である。 第1の実施形態に係る計算機の構成を例示するブロック図である。 第1の実施形態における行列形式変換部の動作を例示するフロー図である。 第1の実施形態における行列形式変換部の動作を説明するための図である。 第1の実施形態における行列ベクトル積演算部の動作を例示するフロー図である。 第1の実施形態における行列ベクトル積演算部の動作を説明するための図である。 CRS形式の疎行列格納方法を説明する図である。 CRS形式の疎行列格納方法での疎行列ベクトル積演算を説明する図である。 JDS形式の疎行列格納方法を説明する図である。 JDS形式の疎行列格納方法での疎行列ベクトル積演算を説明する図である。 文書から作成された疎行列の例を示す図である。 購買行動から作成された疎行列の例を示す図である。 JDS形式でベクトル長が短くなる様子を説明するための図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。また、以下の説明で用いる図面中のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
図1は、一実施形態に係る情報処理装置8の構成を例示するブロック図である。図1を参照すると、情報処理装置8(例えばベクトル計算機)は、行列の列のうちの非ゼロ要素の数が所定の数(例えばベクトル計算機のベクトルレジスタ長)以上の列に対する部分行列を第1の形式(例えば列優先で行列の要素を格納するJDS(Jagged Diagonal Storage)形式)で保持する第1の変換部10と、行列のそれ以外の列に対する部分行列を第2の形式(例えば行優先で行列の要素を格納するCRS(Compressed Row Storage)形式)で保持する第2の変換部12を備えている。
図2に示すように、例えば、列長が十分長い部分をJDS形式で保存し、それ以外の部分をCRS形式で保存することで、いずれの領域でもベクトル長を長くすることができる。JDS形式のみを用いて疎行列を格納すると、疎行列ベクトル積を演算する際、ベクトル長が短くなり実行速度が低下する場合がある。一方、一実施形態によると、かかる場合であってもベクトル長を長くし、疎行列ベクトル積を高速に演算することが可能となる。
<実施形態1>
[構成]
次に、第1の実施形態に係る計算機について図面を参照して詳細に説明する。
図3を参照すると、本実施形態に係る計算機2(例えばベクトル計算機)は、他の形式の行列を、本実施形態で提案する形式に変換する行列形式変換部4と、提案する形式の行列およびベクトルを入力とし行列ベクトル積を出力する行列ベクトル積演算部6を備えている。
行列形式変換部4は、入力した行列を本実施形態で提案する形式に変換する。また、行列形式変換部4は、変換した行列をメモリ、外部記憶等に保存する。
一方、行列ベクトル積演算部6は、メモリ等に保存された本実施形態で提案する形式の行列と、ベクトルを入力とし、行列ベクトル積を計算する。
[動作]
次に、図4のフロー図および図5の例を参照して、行列形式変換部4の動作について詳細に説明する。
まず、行列形式変換部4は、JDS形式の行列を作成する場合と同様に、非ゼロ要素を左詰めにする(ステップA1)。
次に、行列形式変換部4は、各行の非ゼロ要素の数が小さくなる順に行を並べ替える(すなわちソートする)。また、行列形式変換部4はどのように並べ替えたかを表す情報(並べ替え情報)を別途保存する(ステップA2)。
次に、行列形式変換部4は各列の非ゼロ要素数を確認し、「所定の値」以上の所までをJDS形式とし、それ未満の部分をCRS形式とする(ステップA3)。例えば計算機2がベクトル計算機である場合、「所定の値」としてベクトル計算機のベクトルレジスタ長を用いることができる。ただし、本発明における所定の値はこれに限定されない。
図5に例示するケースでは、「所定の値」として4を用いている。このとき、行列形式変換部4は第0列および第1列をJDS形式で保存し、第2列、第3列および第4列をCRS形式で保存する。
このような手順で行列を保存した場合、CRS形式で保存される部分に関しては、通常のCRS形式とは異なり、行の順序が元の行列とは入れ替わることになる。また、非ゼロ要素が存在しない部分に関しては、保存する必要はない。したがって、図5に示す場合には、2行分だけ保存すればよい。すなわち、オフセットを短くすることができる。
なお、CRS形式で保存される部分について、行の順序を入れ替えない方法も考えられる。この場合、オフセットとして元の行列の行数分が必要となる。
次に、図6のフロー図および図7の例を参照して、行列ベクトル積演算部6の動作について詳細に説明する。
まず、行列ベクトル積演算部6は、JDS形式の行列とベクトルとの行列ベクトル積を計算する(ステップB1)。ただし、行列ベクトル積演算部6は、この時点では行の入れ替え情報に基づく結果の入れ替えを行わない。
また、行列ベクトル積演算部6は、CRS形式の行列とベクトルとの行列ベクトル積についても計算する(ステップB2)。なお、ステップB1とステップB2の計算の順序は、図6に示す順序に限定されない。
次に、行列ベクトル積演算部6は、ステップB1、B2の結果の和を計算する(ステップB3)。ここで、CRS形式の行列は、行数が短いものになっている。したがって、結果のベクトルの要素数も少ないものになるが、第0要素から順に足し合わせればよい。要素数が足りない残りの部分は値が0であるため、足し合わせる必要はない。図7の場合、行列ベクトル積演算部6は、CRS形式の行列ベクトル積の結果の第0要素の173と、JDS形式の行列ベクトル積の結果の第0要素である23を足し合わせる。同様に、行列ベクトル積演算部6は、CRS形式の行列ベクトル積の結果の第1要素の39と、JDS形式の行列ベクトル積の結果の第1要素である7を足し合わせる。
次に、行列ベクトル積演算部6は行の入れ替え情報に基づき、結果を入れ替える(ステップB4)。これにより、最終的な行列ベクトル積の結果を得ることができる。
なお、CRS形式で保存される部分について、行の順序を入れ替えない場合には、結果の行列ベクトル積の要素数は元の行列の行数分となる。また、この場合、並べ替え済の結果が得られるため、JDS形式の行列ベクトル積の結果について並べ替えを行った後、和を計算すればよい。
[効果]
本実施形態の計算機2によると、図2に示すように、列長が十分長い部分をJDS形式で保存し、それ以外の部分をCRS形式で保存することで、いずれの領域でもベクトル長を長くすることができる。したがって、本実施形態の計算機2によると、ベクトル長を長くし、疎行列ベクトル積を高速に演算することが可能となる。
<変形例>
上記実施形態では、一例として、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列をJDS形式で保持し、一方それ以外の列に対する部分行列をCRS形式で保持するものとした。しかし、行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を保持する形式はJDS形式に限定されず、列優先で行列の要素を格納する他の形式を用いてもよい。例えば、CCS(Compressed Column Storage)形式や、ELLPACK(ELL)形式も利用可能である。同様に、それ以外の列に対する部分行列を保持する形式はCRS形式に限定されず、行優先で行列の要素を格納する他の形式を用いてもよい。例えば、JDS形式やELL形式を行方向に転置した形式を用いてもよい。
また、上記実施形態において、行方向と列方向を入れ替えた場合についても、本発明の技術思想に含まれることは言うまでもない。
本発明は、例えばベクトル計算機を用いた疎行列ベクトル積を計算する用途に適用することができる。また、本発明はGPU(Graphics Processing Unit)を用いた疎行列ベクトル積を計算する用途にも適用可能である。さらに、これらの疎行列ベクトル積は、機械学習を用いた文書分析やレコメンド、あるいはWebサイトでの広告におけるクリック率予測等の用途に適用可能である。
なお、本発明において、下記の形態が可能である。
[形態1]
上記第1の態様に係る情報処理装置のとおりである。
[形態2]
上記した形態において、
前記第1の形式は、列優先で前記行列の要素を格納する形式であることが好ましい。
[形態3]
上記した形態において、
前記第1の形式は、JDS(Jagged Diagonal Storage)形式であることが好ましい。
[形態4]
上記した形態において、
前記第2の形式は、行優先で前記行列の要素を格納する形式であることが好ましい。
[形態5]
上記した形態において、
前記第2の形式は、CRS(Compressed Row Storage)形式であることが好ましい。
[形態6]
上記した形態において、
前記第1の変換部は、前記行列の非ゼロ要素を左詰めにし、左詰めにした行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持し、
前記第2の変換部は、前記左詰めにした行列のそれ以外の列に対する部分行列を前記第2の形式で保持する、
構成を採ることができる。
[形態7]
上記した形態において、
前記第1の変換部は、前記左詰めにした行列の行を各行に含まれる非ゼロ要素の数の降順に並び替え、前記降順に並び替えた行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持し、
前記第2の変換部は、前記降順に並び替えた行列のそれ以外の列に対する部分行列を前記第2の形式で保持する、
構成を採ることができる。
[形態8]
上記した形態において、
前記第1の形式で保持した部分行列とベクトルの積を計算するとともに、前記第2の形式で保持した部分行列と前記ベクトルの積を計算し、前記計算した積を足し合わせることにより、前記行列と前記ベクトルの積を求める行列ベクトル積演算部を備える、
構成を採ることができる。
[形態9]
上記した形態において、
前記所定の数は、前記行列とベクトルの積を計算するベクトル計算機のベクトルレジスタ長であることが好ましい。
[形態10]
上記した形態において、
行方向と列方向とを入れ替えることができる。
[形態11]
上記した形態において、
前記行列は、疎行列であることが好ましい。
[形態12]
上記した形態において、
前記行列の列ごとの非ゼロ要素の数は、Zipf分布に従うことが好ましい。
[形態13]
上記した形態において、
情報処理装置が、ベクトル計算機であることが好ましい。
[形態14]
上記第2の態様に係る情報処理方法のとおりである。
[形態15]
上記した形態において、
前記第1の形式は、列優先で前記行列の要素を格納する形式であることが好ましい。
[形態16]
上記した形態において、
前記第1の形式は、JDS(Jagged Diagonal Storage)形式であることが好ましい。
[形態17]
上記した形態において、
前記第2の形式は、行優先で前記行列の要素を格納する形式であることが好ましい。
[形態18]
上記した形態において、
前記第2の形式は、CRS(Compressed Row Storage)形式であることが好ましい。
[形態19]
上記した形態において、
前記行列の非ゼロ要素を左詰めにし、左詰めにした行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持するステップと、
前記左詰めにした行列のそれ以外の列に対する部分行列を前記第2の形式で保持するステップと、を含む、ことができる。
[形態20]
上記した形態において、
前記左詰めにした行列の行を各行に含まれる非ゼロ要素の数の降順に並び替え、前記降順に並び替えた行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持するステップと、
前記降順に並び替えた行列のそれ以外の列に対する部分行列を前記第2の形式で保持するステップと、を含むことができる。
[形態21]
上記した形態において、
前記第1の形式で保持した部分行列とベクトルの積を計算するステップと、
前記第2の形式で保持した部分行列と前記ベクトルの積を計算するステップと、
前記計算した積を足し合わせることにより、前記行列と前記ベクトルの積を求めるステップと、を含むことができる。
[形態22]
上記した形態において、
前記所定の数は、前記行列とベクトルの積を計算するベクトル計算機のベクトルレジスタ長であることが好ましい。
[形態23]
上記した形態において、
行方向と列方向とを入れ替えることができる。
[形態24]
上記した形態において、
前記行列は、疎行列であることが好ましい。
[形態25]
上記した形態において、
前記行列の列ごとの非ゼロ要素の数は、Zipf分布に従うことが好ましい。
[形態26]
上記第3の態様に係るデータ構造のとおりである。
[形態27]
上記した形態において、
前記第1の形式は、列優先で前記行列の要素を格納する形式であることが好ましい。
[形態28]
上記した形態において、
前記第1の形式は、JDS(Jagged Diagonal Storage)形式であることが好ましい。
[形態29]
上記した形態において、
前記第2の形式は、行優先で前記行列の要素を格納する形式であることが好ましい。
[形態30]
上記した形態において、
前記第2の形式は、CRS(Compressed Row Storage)形式であることが好ましい。
[形態31]
上記した形態において、
前記行列の非ゼロ要素を左詰めにし、左詰めにした行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持するとともに、
前記第2の変換部は、前記左詰めにした行列のそれ以外の列に対する部分行列を前記第2の形式で保持する、
構成を採ることができる。
[形態32]
上記した形態において、
前記左詰めにした行列の行を各行に含まれる非ゼロ要素の数の降順に並び替え、前記降順に並び替えた行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持するとともに、
前記降順に並び替えた行列のそれ以外の列に対する部分行列を前記第2の形式で保持する、
構成を採ることができる。
[形態33]
上記した形態において、
前記所定の数は、前記行列とベクトルの積を計算するベクトル計算機のベクトルレジスタ長であることが好ましい。
[形態34]
上記した形態において、
行方向と列方向とを入れ替えることができる。
[形態35]
上記した形態において、
前記行列は、疎行列であることが好ましい。
[形態36]
上記した形態において、
前記行列の列ごとの非ゼロ要素の数は、Zipf分布に従うことが好ましい。
[形態37]
上記第4の態様に係るプログラムのとおりである。
[形態38]
上記した形態において、
前記第1の形式は、列優先で前記行列の要素を格納する形式であることが好ましい。
[形態39]
上記した形態において、
前記第1の形式は、JDS(Jagged Diagonal Storage)形式であることが好ましい。
[形態40]
上記した形態において、
前記第2の形式は、行優先で前記行列の要素を格納する形式であることが好ましい。
[形態41]
上記した形態において、
前記第2の形式は、CRS(Compressed Row Storage)形式であることが好ましい。
[形態42]
上記した形態において、
前記行列の非ゼロ要素を左詰めにし、左詰めにした行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持する処理と、
前記左詰めにした行列のそれ以外の列に対する部分行列を前記第2の形式で保持する処理と、を前記コンピュータに実行させることができる。
[形態43]
上記した形態において、
前記左詰めにした行列の行を各行に含まれる非ゼロ要素の数の降順に並び替え、前記降順に並び替えた行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を前記第1の形式で保持する処理と、
前記降順に並び替えた行列のそれ以外の列に対する部分行列を前記第2の形式で保持する処理と、を前記コンピュータに実行させることができる。
[形態44]
上記した形態において、
前記第1の形式で保持した部分行列とベクトルの積を計算する処理と、
前記第2の形式で保持した部分行列と前記ベクトルの積を計算する処理と、
前記計算した積を足し合わせることにより、前記行列と前記ベクトルの積を求める処理と、を前記コンピュータに実行させることができる。
[形態45]
上記した形態において、
前記所定の数は、前記行列とベクトルの積を計算するベクトル計算機のベクトルレジスタ長であることが好ましい。
[形態46]
上記した形態において、
行方向と列方向とを入れ替えることができる。
[形態47]
上記した形態において、
前記行列は、疎行列であることが好ましい。
[形態48]
上記した形態において、
前記行列の列ごとの非ゼロ要素の数は、Zipf分布に従うことが好ましい。
なお、上記特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
2 計算機
4 行列形式変換部
6 行列ベクトル積演算部
8 情報処理装置
10 第1の変換部
12 第2の変換部

Claims (6)

  1. 行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を列優先で前記行列の要素を格納するJDS(Jagged Diagonal Storage)形式で保持する第1の変換部と、
    前記行列のそれ以外の列に対する部分行列を第2の形式で保持する第2の変換部と、を備える、
    ことを特徴とする情報処理装置。
  2. 前記第2の形式は、行優先で前記行列の要素を格納する形式である、
    請求項1に記載の情報処理装置。
  3. 前記第2の形式は、CRS(Compressed Row Storage)形式である、
    請求項2に記載の情報処理装置。
  4. 前記第1の変換部は、前記行列の非ゼロ要素を左詰めにし、左詰めにした行列の列のうちの非ゼロ要素の数が所定の数以上の列を非ゼロ要素としてもつ行列を前記JDS形式で保持し、
    前記第2の変換部は、前記左詰めにした行列のそれ以外を非ゼロ要素としてもつ行列を前記第2の形式で保持する、
    請求項1ないし3のいずれか1項に記載の情報処理装置。
  5. 前記JDS形式で保持した部分行列とベクトルの積を計算するとともに、前記第2の形式で保持した部分行列と前記ベクトルの積を計算し、前記計算した積を足し合わせることにより、前記行列と前記ベクトルの積を求める行列ベクトル積演算部を備える、
    請求項1ないし4のいずれか1項に記載の情報処理装置。
  6. 行列の列のうちの非ゼロ要素の数が所定の数以上の列に対する部分行列を列優先で前記行列の要素を格納するJDS(Jagged Diagonal Storage)形式で保持する処理と、
    前記行列のそれ以外の列に対する部分行列を第2の形式で保持する処理と、をコンピュータに実行させる、
    ことを特徴とするプログラム。
JP2018504539A 2016-03-09 2017-03-08 情報処理装置、情報処理方法、データ構造およびプログラム Active JP6950675B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016046028 2016-03-09
JP2016046028 2016-03-09
PCT/JP2017/009140 WO2017154946A1 (ja) 2016-03-09 2017-03-08 情報処理装置、情報処理方法、データ構造およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2017154946A1 JPWO2017154946A1 (ja) 2019-01-10
JP6950675B2 true JP6950675B2 (ja) 2021-10-13

Family

ID=59790316

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504539A Active JP6950675B2 (ja) 2016-03-09 2017-03-08 情報処理装置、情報処理方法、データ構造およびプログラム

Country Status (3)

Country Link
US (1) US10846362B2 (ja)
JP (1) JP6950675B2 (ja)
WO (1) WO2017154946A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977704B (zh) 2017-11-10 2020-07-31 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
JP6981223B2 (ja) * 2017-12-15 2021-12-15 富士通株式会社 疎行列ベクトル積演算装置及び疎行列ベクトル積演算方法
US11200056B2 (en) * 2018-02-08 2021-12-14 Nec Corporation Parallel union control device, parallel union control method, and storage medium
JP7020236B2 (ja) * 2018-03-28 2022-02-16 日本電気株式会社 情報処理装置、情報処理方法、及びプログラム
WO2021024300A1 (ja) * 2019-08-02 2021-02-11 日本電気株式会社 情報処理装置
KR20210024865A (ko) 2019-08-26 2021-03-08 삼성전자주식회사 데이터를 처리하는 방법 및 장치
JP7096218B2 (ja) * 2019-09-04 2022-07-05 Kddi株式会社 情報処理装置、情報処理方法、及びプログラム
US20220365783A1 (en) * 2021-05-13 2022-11-17 Nvidia Corporation Matrix multiplication and accumulation operations on compressed matrices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0666069B2 (ja) 1990-03-12 1994-08-24 日本電気技術情報システム開発株式会社 ベクトル計算機の記憶装置への大規模不規則疎行列格納法
JP3697992B2 (ja) 2000-01-25 2005-09-21 日本電気株式会社 行列ベクトル積演算システム及びそれに用いる行列格納システム並びにそれらの方法
US10275479B2 (en) * 2014-02-27 2019-04-30 Sas Institute Inc. Sparse matrix storage in a database
US9928034B2 (en) * 2014-12-17 2018-03-27 Nvidia Corporation Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences

Also Published As

Publication number Publication date
US20190050371A1 (en) 2019-02-14
US10846362B2 (en) 2020-11-24
JPWO2017154946A1 (ja) 2019-01-10
WO2017154946A1 (ja) 2017-09-14

Similar Documents

Publication Publication Date Title
JP6950675B2 (ja) 情報処理装置、情報処理方法、データ構造およびプログラム
US9600763B1 (en) Information processing method, information processing device, and non-transitory recording medium for storing program
CN103455518A (zh) 一种数据处理方法及装置
JP5405641B2 (ja) 挙動解析システム、挙動解析方法及び挙動解析プログラム
Ahmad et al. On higher-order sequential fractional differential inclusions with nonlocal three-point boundary conditions
Einkemmer et al. Exponential integrators on graphic processing units
Cheng et al. An improved design of an on-road bicycle frame under fatigue testing simulations
JP5888782B2 (ja) 連立一次方程式の演算処理システム
JP2018049583A (ja) シミュレーション方法、コンピュータプログラム、及びシミュレーション装置
WO2011016281A2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
CN108205523A (zh) 利用语料库训练稠密词向量的方法及装置
JP6663875B2 (ja) 問題解決装置、方法、及びプログラム
Souza et al. Discretisation of sparse linear systems: An optimisation approach
JP5493104B2 (ja) 損失コスト計算方法及び損失コスト計算プログラム、並びに損失コスト計算装置
JP2011076264A5 (ja)
JP2017041207A (ja) 構造解析装置、方法、及びプログラム
JP7020236B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2013205998A (ja) 行列ベクトル積演算装置、行列ベクトル積演算方法、及び行列ベクトル積演算プログラム
US20230367843A1 (en) Vectorized Operations for Sparse Kernels
JP6316163B2 (ja) 解析装置および解析方法
JP5730748B2 (ja) 領域集合演算装置及び方法及びプログラム
Ji et al. Research on parallel algorithms for solving tridiagonal sparse linear equations
JP2006048637A (ja) 連立一次方程式の計算プログラム、連立一次方程式の計算装置、及び連立一次方程式の求解方法
Sharma et al. Viewer’s Sentiments on Game of Thrones: An Automated Lexicon-Based Sentiment Analysis on Real-Time YouTube Comments
Jia et al. A Method of Multi-Failure Models Based on Response Surfaces Method-High Dimensional Model Representation on Structural Reliability Analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210305

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210518

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210709

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210709

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210727

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210803

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210906

R150 Certificate of patent or registration of utility model

Ref document number: 6950675

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150