JP7020485B2 - 演算装置、演算方法及びプログラム - Google Patents

演算装置、演算方法及びプログラム Download PDF

Info

Publication number
JP7020485B2
JP7020485B2 JP2019525092A JP2019525092A JP7020485B2 JP 7020485 B2 JP7020485 B2 JP 7020485B2 JP 2019525092 A JP2019525092 A JP 2019525092A JP 2019525092 A JP2019525092 A JP 2019525092A JP 7020485 B2 JP7020485 B2 JP 7020485B2
Authority
JP
Japan
Prior art keywords
matrix
value
columns
rows
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
JP2019525092A
Other languages
English (en)
Other versions
JPWO2018235357A1 (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 JPWO2018235357A1 publication Critical patent/JPWO2018235357A1/ja
Application granted granted Critical
Publication of JP7020485B2 publication Critical patent/JP7020485B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

本発明は、演算装置、演算方法及びプログラムに関する。
畳み込みニューラルネットワークなど、二次元畳み込み行列の演算を用いる処理の高速化に関して幾つかの技術が提案されている。
例えば、特許文献1には、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減するための技術が示されている。特許文献1に記載の技術では、平均プーリングにおいて畳み込み層の出力の平均を求めることに基づいて、カーネルの要素毎に、当該要素と掛け合わされる入力値の総和を算出し、算出した総和とカーネルの要素との積を算出し、積の平均を算出する。
特開2017-078934号公報
コンピュータが二次元畳み込み行列の演算などの行列演算を行う場合、演算に要する時間には、CPUが計算を行う時間(計算時間)だけでなく、CPUがメモリにアクセスして演算対象のデータを取得する時間(メモリアクセス時間)が含まれる。行列演算を高速化するためには、演算回数を低減させて計算時間を低減させるだけでなく、メモリアクセス回数を低減させてメモリアクセス時間を低減させられることが好ましい。
本発明は、上述の課題を解決することのできる演算装置、演算方法及びプログラムを提供することを目的としている。
本発明の第1の態様によれば、演算装置は、行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成するリスト生成部と、複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う演算実行部と、を備える。
本発明の第3の態様によれば、演算方法は、行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成し、複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行うことを含む。
本発明の第4の態様によれば、プログラムは、コンピュータに、行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成し、複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う処理を実行させるプログラムである。
この発明によれば、二次元畳み込み行列の演算などの行列演算におけるメモリアクセス回数を低減させることができる。
一実施形態に係る演算装置の機能構成を示す概略ブロック図である。 実施形態に係るリスト生成部が二次元の畳み込みに用いる行列の構成例を示す図である。 実施形態に係る二次元の畳み込みにおける部分行列911の設定例を示す図である。 実施形態に係る演算実行部が複数のインプット行列及び複数のカーネルを用いて畳み込みを行う例を示す図である。 実施形態に係る演算実行部が1つのインプット行列と複数のカーネルの各々との畳み込みを行う例を示す図である。 実施形態に係るリスト生成部が生成する要素リストの例を示す図である。 実施形態に係るリスト生成部が要素リストを生成する処理手順の例を示すフローチャートである。 実施形態に係る要素リストのテンプレートの例を示す図である。 実施形態に係る演算装置がインプット行列の部分行列とカーネルとの畳み込みを行う処理手順の例を示すフローチャートである。 畳み込みに要する計算時間とメモリアクセス時間の例を示すグラフである。 実施形態に係る演算装置が、インプット行列からの要素値の1回のロードで複数の部分行列に対する処理を行う場合の、複数の部分行列の配置例を示す図である。 実施形態に係るコンピュータの構成例を示す概略ブロック図である。 一実施形態に係る演算装置の最小構成の第一例を示す図である。 一実施形態に係る演算装置の最小構成の第二例を示す図である。
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、一実施形態に係る演算装置の機能構成を示す概略ブロック図である。図1に示すように、演算装置100は、通信部110と、表示部120と、操作入力部130と、記憶部180と、制御部190とを備える。記憶部180は、キャッシュメモリ部181と、主記憶部182とを備える。制御部190は、リスト生成部191と、演算実行部192と、メモリ管理部193とを備える。
演算装置100は、行列演算を行う。以下では、演算装置100が二次元畳み込み行列(Convolution Matrix)の演算、すなわち、二次元の畳み込み(Convolution)を行う場合を例に説明する。二次元の畳み込みは、畳み込みニューラルネットワーク及び画像フィルタなど、いろいろな用途に用いられる。
但し、演算装置100が行う行列演算は、二次元の畳み込みに限定されない。演算装置100が行う行列演算は、要素値が値「0」である場合に演算の一部を省略可能ないろいろな演算であってよい。
演算装置100は、例えばメインフレーム(Mainframe)、ワークステーション(Workstation)またはパソコン(Personal Computer;PC)等のコンピュータを用いて構成される。
以下では、畳み込みの演算子として「*」(アスタリスク)を用いる。また、スカラ積の演算子として「×」(クロス)を用いる。
通信部110は、制御部190の制御に従って他の装置と通信する。例えば、通信部110が、二次元の畳み込みにおけるインプット行列を他の装置から受信するようにしてもよい。
表示部120は、例えば液晶パネル又はLED(Light Emitting Diode、発光ダイオード)パネル等の表示画面を備え、制御部190の制御に従って各種画像を表示する。例えば、演算装置100が二次元の畳み込みを用いて画像処理を行う場合、表示部120が、画像処理にて得られた画像を表示するようにしてもよい。また、演算装置100が二次元の畳み込みを用いて畳み込みニューラルネットワークを構築する場合、表示部120が畳み込みニューラルネットワークによる処理結果を表示するようにしてもよい。
操作入力部130は、例えばキーボード及びマウス等の入力装置を備え、ユーザ操作を受ける。例えば、操作入力部130が、演算装置100に対して処理の実行を指示するユーザ操作を受けるようにしてもよい。
記憶部180は、各種情報を記憶する。記憶部180は、演算装置100が備える複数種類の記憶装置を用いて複数階層にしたがって構成されている。具体的には、演算装置100は、キャッシュメモリ部181と主記憶部182との2階層にしたがって構成されている。キャッシュメモリ部181は、演算装置100が備えるキャッシュメモリ装置を用いて構成されている。
主記憶部182は、演算装置100が備える主記憶装置を用いて構成されている。
キャッシュメモリ装置は主記憶装置よりも高速に動作するデバイスを用いて構成される。キャッシュメモリ装置の方が主記憶装置よりも高速に読み書き可能である。主記憶部182の階層は主記憶装置の階層の例に該当し、キャッシュメモリ部181の階層は主記憶装置の階層よりも高速の階層の例に該当する。主記憶装置の階層を主記憶部182の階層とも称する。また、キャッシュメモリ装置の階層をキャッシュメモリ部181の階層とも称する。
キャッシュメモリ部181は、CPU(Central Processing Unit、中央処理装置)などの処理装置が主記憶装置にアクセスすることによるメモリアクセス時間を短くするために設けられている。
演算装置100が取得したデータは、基本的には主記憶部182に格納され、CPU等によるアクセスが予想されるデータが一時的にキャッシュメモリ部181に格納される。
例えば、キャッシュメモリ部181に格納されていないデータにCPU等がアクセスする際、アクセス対象のデータが主記憶部182から読み出され、キャッシュメモリ部181へブロック単位で書き込まれる。また、主記憶部182からのデータをキャッシュメモリ部181に移動する際、このデータの格納領域を確保するために、例えばLRU(Least Recently Used)など所定の入替方式に従ってキャッシュメモリ部181上のデータがブロック単位で選択される。選択されたデータは主記憶部182へ書き込まれ、キャッシュメモリ部181におけるこのデータの記憶領域が解放される。
キャッシュメモリ部181が、制御部190が演算を行う際に演算結果を格納する行列を保持する(格納している状態を維持する)ようにしてもよい。例えば、制御部190が後述する部分行列に対する演算を開始してから終了するまで、キャッシュメモリ部181が演算結果を格納する行列を保持するようにしてもよい。
制御部190が演算結果の書き込みを繰り返す場合、キャッシュメモリ部181が書き込み対象の行列を保持している。これにより、制御部190が主記憶部182に演算結果を書き込む場合よりもメモリアクセス時間を短くすることができる。
なお、記憶部180の階層構造は、図1に示すキャッシュメモリ部181と主記憶部182との2層構造に限定されない。例えば、記憶部180が、一次キャッシュメモリ装置、二次キャッシュメモリ装置及び主記憶装置を用いることによって、3層構造にしたがって構成されていてもよい。また、記憶部180が、主記憶部182よりも高速の階層に加えて、補助記憶部など主記憶部182よりも低速の階層を含んで構成されていてもよい。
制御部190は、演算装置100の各部を制御して各種処理を実行する。制御部190は、演算装置100が備えるCPUが記憶部180からプログラムを読み出して実行することで構成される。
リスト生成部191は、演算実行部192が二次元の畳み込みに用いるためのリストを生成する。このリストを要素リストとも称する。
演算実行部192は、リスト生成部191が生成した要素リストを用いて二次元の畳み込みを行う。
ここで、図2~図6を参照して、二次元の畳み込み及び要素リストについて説明する。
図2は、演算実行部192が二次元の畳み込みに用いる行列の構成例を示す図である。
演算実行部192は、インプット行列910とカーネル920との畳み込みを行い、演算結果をアウトプット行列930に書き込む。
インプット行列910は、インプット行列910のうちカーネル920と同じ大きさの部分行列911とカーネル920との畳み込みを行ってアウトプット行列930の1つの要素の値を算出する。ここで、行列の大きさが同じであるとは、行列の行数及び列数のいずれも同じことである。
インプット行列910は、演算対象行列の例に該当する。カーネル920は、演算用行列の例に該当する。
部分行列911とカーネル920との畳み込みは、同じ位置の要素同士を乗算し、得られた積の総和を求めることで行われる。
図2の例の場合、部分行列911とカーネル920との畳み込みは式(1)のように表される。
Figure 0007020485000001
例えば、図2の例で、部分行列911の第1行第1列の要素の値は「0」である。また、カーネル920の第1行第1列の要素の値も「0」である。これらの値の積は「0」になる。また、部分行列911の第1行第2列の要素の値は「1」である。また、カーネル920の第1行第2列の要素の値は「0」である。これらの値の積は「0」になる。また、部分行列911の第1行第3列の要素の値は「1」である。また、カーネル920の第1行第3列の要素の値は「2」である。これらの値の積は「2」になる。
このように、部分行列911及びカーネル920における同じ位置の要素同士を乗算し、得られた積の総和を求めると、図2の例では「7」となる。演算実行部192は、式(1)に例示されるような畳み込み演算をそのまま行うのではなく、リスト生成部191が生成した要素リストを用いて行うことで、計算回数及びメモリアクセス回数を低減させる。
演算実行部192は、部分行列911とカーネル920との畳み込みの演算結果を、アウトプット行列930の要素のうち、部分行列911の位置に対応する要素に書き込む。
図2の例では、演算実行部192は、アウトプット行列930の要素のうち、部分行列911の最左かつ最上の要素の位置の同じ位置の要素に演算結果を書き込むよう設定される。演算実行部192は、アウトプット行列930の第1行第1列の要素に演算結果の「7」を書き込む。
図3は、二次元の畳み込みにおける部分行列911の設定例を示す図である。
図3の例では、演算実行部192は、インプット行列910の部分行列911を1列ずつ右にずらした領域に設定しながら、図2を参照して説明したように部分行列911とカーネル920との畳み込みを繰り返す。部分行列911がインプット行列910の右端に到達すると、演算実行部192は、部分行列911の領域を1行下の左端から右端へとずらしながら、部分行列911とカーネル920との畳み込みを繰り返す。演算実行部192は、部分行列911の設定領域を左から右、上から下へとずらし、設定領域が右下端に到達するまで部分行列911の設定を繰り返す。演算実行部192は、部分行列911を設定する毎に部分行列911とカーネル920との畳み込みを繰り返す。これにより、演算実行部192は、インプット行列910全体に対応するアウトプット行列930を算出する。
図4は、演算実行部192が複数のインプット行列910及び複数のカーネル920を用いて畳み込みを行う例を示す図である。
図4の例で、演算実行部192は、C個のインプット行列910及び、C×K個のカーネル920を用いて二次元の畳み込みを行い、演算結果をK個のアウトプット行列930に書き込んでいる。C個のインプット行列910は、いずれも同じ大きさの行列である。C×K個のカーネル920は、いずれも同じ大きさの行列である。K個のアウトプット行列930は、いずれも同じ大きさの行列である。
図4では、C個のインプット行列910に9101、9102、・・・、910Cの符号を付してこれらが区別されている。また、C×K個のカーネル920に、9201-1、9201-2、・・・、9201-C、9202-1、9202-2、・・・、9202-C、・・・、920K-1、920K-2、・・・、920K-Cの符号を付してこれらを区別している。また、図4では、K個のアウトプット行列930に、9301、9302、・・・、930Kの符号を付してこれらが区別されている。
演算実行部192は、インプット行列9101とカーネル9201-1との畳み込み、インプット行列9102とカーネル9201-2との畳み込み、・・・、インプット行列910Cとカーネル9201-Cとの畳み込みを行い、演算結果を要素の位置毎に合計してアウトプット行列9301を算出する。アウトプット行列9302~930Kの算出についても同様である。
すなわち、iを1≦i≦Kの正整数として、演算実行部192は、インプット行列910iとカーネル920i-1との畳み込み、インプット行列9102とカーネル920i-2との畳み込み、・・・、インプット行列910Cとカーネル920i-Cとの畳み込みを行う。演算実行部192は、演算結果を要素の位置毎に合計してアウトプット行列930iを算出する。
演算実行部192が、複数のインプット行列910に対して同じカーネル920を用いるようにしてもよいし、インプット行列910毎に異なるカーネル920を用いるようにしてもよい。例えば図4において、カーネル9201-1~9201-Cが同一のカーネル920であってもよい。
このように、演算実行部192が複数のインプット行列910及び複数のカーネル920を用いて畳み込みを行うようにしてもよい。特に、演算実行部192は、1つのインプット行列910と複数のカーネル920の各々との畳み込みを行う。
図5は、演算実行部192が1つのインプット行列910と複数のカーネル920の各々との畳み込みを行う例を示す図である。図5の例では、演算実行部192は、1つのインプット行列910と4つのカーネル920の各々との畳み込みを行って4つのアウトプット行列930を算出している。演算実行部192は、図2~図3を参照して説明したように、インプット行列910における部分行列911の領域の位置をずらしながら部分行列911とカーネル920との畳み込みを行う。これにより、演算実行部192は、1つのインプット行列910と個々のカーネル920との畳み込みを行う。
演算実行部192が1つのインプット行列910と複数のカーネル920の各々との畳み込みを行う際、処理を高速化するためにリスト生成部191が予め要素リストを生成しておく。
図6は、リスト生成部191が生成する要素リストの例を示す図である。図6では、図5の例におけるカーネル920に対してリスト生成部191が生成する要素リストの例を示している。
図6の例では、図5の4つのカーネル920に対して、上から順に0~3の識別番号を付してこれらを区別している。また、図5の例で4つのカーネル920と4つのアウトプット行列930とが一対一に対応付けられており、4つのアウトプット行列930についても0~3の識別番号で区別される。カーネル920の識別番号をカーネルID(Identifier)とも称する。
図6の要素リストの各行では、領域A11に示されるように、行0~2と列0~2との組み合わせによってカーネル920における各要素の位置が特定されている。
領域A11では、カーネル920の各要素の値が全て「0」である要素の位置については、その表示が除外されている。例えば、図5の4つのカーネル920のいずれでも、第1行第0列の要素値は「0」である。これに対応して、領域A11では、第1行第0列を表す「(1,0)」は示されていない。
図6の要素リストの各行では、特定された要素の位置における要素の値が、カーネル920の識別番号と組み合わせて領域A12に示されている。要素値が0の要素については、領域A12における表示から除外されている。
例えば、図5で一番上のカーネル920(識別番号0のカーネル920)の第0行第0列の要素値は「0」である。この要素は、領域A12では表示されていない。
一方、図5で上から2番目のカーネル920(識別番号1のカーネル920)の第0行第0列の要素値は「1」である。これに対応して、図6の要素リストの一番上の行(第0行第0列に対応する行)の領域A12では、カーネル920の識別番号「1」と、要素値「1」とを組み合わせた「(1,1)」が示されている。
また、図5で上から3番目のカーネル920(識別番号2のカーネル920)の第0行第0列の要素値は「1」である。これに対応して、図6の要素リストの一番上の行(第0行第0列に対応する行)の領域A12では、カーネル920の識別番号「2」と、要素値「1」とを組み合わせた「(2,1)」が示されている。
また、図5で上から3番目のカーネル920(識別番号2のカーネル920)の第0行第1列の要素値は「2」である。これに対応して、図6の要素リストの上から2番目の行(第0行第1列に対応する行)の領域A12では、カーネル920の識別番号「2」と、要素値「2」とを組み合わせた「(2,2)」が示されている。
このようにリスト生成部191は、複数のカーネル920の要素の位置毎に要素値を示す要素リストを生成する。また、リスト生成部191は、複数のカーネル920の要素の位置毎に、要素値が値「0」以外の要素を示す要素リストを生成する。
演算実行部192は、リスト生成部191が生成した要素リストを用いて部分行列911とカーネル920との畳み込みを行う。具体的には、演算実行部192は、部分行列911の要素のうち領域A11に示される位置の要素の値と、要素リストに示される要素値との乗算を行う。また、演算実行部192は、識別番号で識別されるアウトプット行列930の該当要素の値に乗算結果(得られた積)を加算する。
演算実行部192が、複数のカーネル920の要素の位置毎に要素値を示す要素リストを用いて畳み込みを行うことで、部分行列911の要素と複数のカーネル920それぞれの要素との乗算を行うことができる。これにより、部分行列911の要素値の1回のロードで複数のカーネル920の要素との乗算を行うことができ、部分行列911の要素値のダウンロード回数を低減させることができる。
また、演算実行部192が、複数のカーネル920の要素の位置毎に、要素値が0以外の要素を示す要素リストを用いる。これにより、カーネル920の要素値が0の場合に部分行列911の要素とカーネル920の要素との乗算、及び、乗算の結果をアウトプット行列930に反映させるためのアクセスを抑制することができる。この点で、演算回数及びメモリアクセスの回数を低減させることができる。
メモリ管理部193は、記憶部180管理を行う。具体的には、メモリ管理部193は、キャッシュメモリ部181、主記憶部182それぞれに対するデータの読み書きを行う。
特に、メモリ管理部193は、リスト生成部191が生成した要素リストを参照して、インプット行列910の要素のうち当該要素の演算の相手となる要素の値に0以外の値が含まれている要素をロードする。一方、メモリ管理部193は、インプット行列910の要素のうち当該要素の演算の相手となる要素の値が全て0の要素のロードを抑制する。
すなわち、メモリ管理部193は、インプット行列910が有する複数の要素のうち、カーネル920における演算対象の各要素に値「0」以外の要素が含まれる、要素の要素値をロードする。また、メモリ管理部193は、インプット行列910が有する複数の要素のうち、カーネル920における演算対象の各要素が全て値「0」である、要素の要素値のロードを抑制する。
インプット行列910の要素のうち当該要素の演算の相手となる要素の値が全て0の要素のロードを抑制する。このため、演算装置100によれば、メモリアクセスの回数を低減させることができる。
また、メモリ管理部193は、少なくとも演算実行部192が1つの前記部分行列に対する演算を開始してから終了するまで、アウトプット行列930をキャッシュメモリ部181に保持する。
これにより、メモリ管理部193は、演算実行部192による演算結果をアウトプット行列930に反映させる際のメモリアクセス時間を短くすることができる。
メモリ管理部193の機能はCPUを用いて実現されていてもよいし、例えばメモリアクセス専用のプロセッサなどCPU以外の装置を用いて構成されていてもよい。
次に、図7~図9を参照して演算装置100の動作について説明する。
図7は、リスト生成部191が要素リストを生成する処理手順の例を示すフローチャートである。リスト生成部191は、例えば演算装置100にカーネル920が与えられると図7の処理を行うなどのように、図7の処理を予め行っておく。
(ステップS101)
リスト生成部191は、要素リストのテンプレートを生成する。
ステップS101の後、ステップS102へ進む。
図8は、要素リストのテンプレートの例を示す図である。図8に示すテンプレートでは、1つの行がカーネル920の1つ要素の位置に対応している。
図8に示す領域A21は、図6の領域A11に対応しており、要素の位置が行と列との組み合わせで特定されている。図6の例では、第1行第0列のようにカーネル920の要素の値が全て「0」である要素の位置に対応する行が削除されている。これに対し、図8に示すテンプレートの段階では、全ての行と列との組み合わせが示されている。
図8に示す領域A22は、図6の領域A12に対応しており、カーネル920の識別番号と要素値との組み合わせを格納する領域である。
(ステップS102)
図7のステップS101の後、リスト生成部191は、カーネル920の要素の位置毎(すなわち、行毎かつ列毎)に処理を行うループL11を開始する。ループL11で処理対象となっている位置を対象位置と称する。
ステップS102の後、ステップS103へ進む。
(ステップS103)
リスト生成部191は、カーネル920毎に処理を行うループL12を開始する。ループL12で処理対象となっているカーネル920を対象カーネルと称する。
ステップS103の後、ステップS104へ進む。
(ステップS104)
リスト生成部191は、対象カーネルの対象位置の要素値が値「0」であるか否かを判定する。
要素値が値「0」であると判定した場合(ステップS104:YES)、処理はステップS106へ進む。一方、要素値が値「0」ではないと判定した場合(ステップS104:NO)、処理はステップS105へ進む。
(ステップS105)
リスト生成部191は、対象カーネルのカーネルIDと、対象カーネルの対象位置の要素値との組み合わせを、要素リストのテンプレートの対象位置に対応する行の領域A22に書き込む。該当する行に既にカーネルIDと要素値との組み合わせが書き込まれている場合、リスト生成部191は、既に書き込まれている組み合わせを消さずに、対象カーネルのカーネルIDと、対象カーネルの対象位置の要素値との組み合わせを追加する。
ステップS105の後、処理はステップS106へ進む。
(ステップS106)
リスト生成部191は、ループL12の終端処理を行う。具体的には、リスト生成部191は、全てのカーネル920についてループL12の処理を行ったか否かを判定する。
未処理のカーネル920が残っていると判定した場合は、リスト生成部191は、ステップS103へ戻り、引き続き残りのカーネル920についてループL12の処理を行う。一方、全てのカーネル920についてループL12の処理を行ったと判定した場合は、リスト生成部191は、ループL12を終了してステップS107へ進む。
(ステップS107)
リスト生成部191は、ループL11の終端処理を行う。具体的には、リスト生成部191は、カーネル920における全ての要素の位置についてループL11の処理を行ったか否かを判定する。未処理の位置が残っていると判定した場合は、リスト生成部191は、ステップS102へ戻り、引き続き残りの位置についてループL11の処理を行う。一方、全ての位置についてループL11の処理を行ったと判定した場合は、リスト生成部191は、ループL11を終了してステップS108へ進む。
(ステップS108)
リスト生成部191は、要素リストのテンプレートの行のうち、領域A22にカーネルIDと要素値との組み合わせが1つも示されていない行を削除する。領域A22にカーネルIDと要素値との組み合わせが1つも示されていない行が複数ある場合は、リスト生成部191は、全ての該当行を削除する。この処理の結果、要素リストが完成する。
ステップS108の後、図7の処理が終了する。
図9は、演算装置100がインプット行列910の部分行列911とカーネル920との畳み込みを行う処理手順の例を示すフローチャートである。演算装置100は、例えば、操作入力部130が畳み込みの実行を指示するユーザ操作を受けると、図9の処理を行う。
図9では、1つのインプット行列910に対する処理の例を示している。インプット行列910が複数ある場合は、演算装置100は、図9のステップS202~S213の処理を、インプット行列910の数だけ繰り返す。
(ステップS201)
メモリ管理部193は、アウトプット行列930をキャッシュメモリ部181に格納する。具体的には、メモリ管理部193は、キャッシュメモリ部181にアウトプット行列930の個数分の領域を確保し、各アウトプット行列930の各要素の値を値「0」に初期設定する。
ステップS201の後、処理はステップS202へ進む。
(ステップS202)
制御部190は、図3を参照して説明したように部分行列911毎に処理を行うループL21を開始する。ループL21で処理対象となっている部分行列911を対象部分行列と称する。
ステップS202の後、処理はステップS203へ進む。
(ステップS203)
演算実行部192は、インプット行列910における対象部分行列の位置を算出する。例えば、演算実行部192は、部分行列911の最左最上の要素(第0行第0列の要素)のインプット行列910における位置を算出する。
ステップS203の後、処理はステップS204へ進む。
(ステップS204)
制御部190は、対象部分行列の要素の位置毎に処理を行うループL22を開始する。ループL22で処理対象となっている位置を対象位置と称する。
ステップS204の後、処理はステップS205へ進む。
(ステップS205)
演算実行部192は、要素リストの行のうち処理対象位置に対応する行に、カーネルIDと要素値との組み合わせが示されているか否かを判定する。
カーネルIDと要素値との組み合わせが示されていると判定した場合(ステップS205:YES)、処理はステップS206へ進む。一方、カーネルIDと要素値との組み合わせが示されていないと判定した場合(ステップS205:NO)、処理はステップS212へ進む。
(ステップS206)
メモリ管理部193は、インプット行列910の部分行列911の処理対象位置の要素値をロードする。
ステップS206の後、処理はステップS207へ進む。
(ステップS207)
演算実行部192は、ステップS206で得られた要素値と、要素リストの該当行に示されているカーネル920の要素値との積を算出する。
要素リストの該当行にカーネルIDと要素値との組み合わせが複数示されている場合、演算実行部192は、未だステップS207の処理を行っていない組み合わせを1つ選択する。そして、演算実行部192は、選択した組み合わせに示される要素値を用いてステップS207の処理を行う。
(ステップS208)
演算実行部192は、ステップS207で得られた積をアウトプット行列930の要素値に加算する。
具体的には、演算実行部192は、ステップS203で算出したインプット行列910における部分行列911の位置に基づいて、この位置に対応するアウトプット行列930の要素の位置を算出する。メモリ管理部193は、キャッシュメモリ部181にアクセスして、ステップS207で要素リストから選択されたカーネルIDにて識別されるアウトプット行列930の要素の値のうち、演算実行部192が算出した位置の要素値を読み出す。演算実行部192は、メモリ管理部193が読み出した要素値に、ステップS207で得られた積を加算する。メモリ管理部193は、演算実行部192が算出した和を、値を読み出した要素に上書きする。
ステップS208の後、処理はステップS209へ進む。
(ステップS209)
演算実行部192は、要素リストの行のうち処理対象位置に対応する行に、未処理のカーネルIDと要素値との組み合わせが残っているか否かを判定する。
未処理の組み合わせが残っていると判定した場合(ステップS209:YES)、演算実行部192は、ステップS210へ進む。一方、未処理の組み合わせが残っていないと判定した場合(ステップS209:NO)、演算実行部192は、ステップS212へ進む。
(ステップS210)
演算実行部192は、ステップS209で未処理と判定した組み合わせの要素値と、要素リストの該当行に示されているカーネル920の要素値との積を算出する。
ステップS209で未処理と判定した組み合わせが複数ある場合、演算実行部192は、いずれか1つの組み合わせを選択する。そして、演算実行部192は、選択した組み合わせに示される要素値を用いてステップS210の処理を行う。
ステップS210の後、処理はステップS211へ進む。
(ステップS211)
演算実行部192は、ステップS210で得られた積をアウトプット行列930の要素値に加算する。
具体的な処理については、ステップS208で説明した具体的処理について「ステップS207」の記載を「ステップS210」に読み替える。
ステップS211の後、処理はステップS209へ戻る。
(ステップS212)
制御部190は、ループL22の終端処理を行う。具体的には、制御部190は、カーネル920の要素の全ての位置についてループL22の処理を行ったか否かを判定する。未処理の位置が残っていると判定した場合は、ステップS204へ戻り、引き続き残りの位置についてループL22の処理を行う。一方、全ての位置についてループL22の処理を行ったと判定した場合は、制御部190は、ループL22を終了してステップS213へ進む。
(ステップS213)
制御部190は、ループL21の終端処理を行う。具体的には、制御部190は、ループL21で処理対象となる全ての部分行列911についてループL21の処理を行ったか否かを判定する。未処理の部分行列911が残っていると判定した場合は、制御部190は、ステップS202へ戻り、引き続き残りの部分行列911についてループL21の処理を行う。一方、全ての部分行列911についてループL21の処理を行ったと判定した場合は、制御部190は、ループL21を終了してステップS214へ進む。
(ステップS214)
メモリ管理部193は、アウトプット行列930をキャッシュメモリ部181から主記憶部182へ移動させる(スワップアウトする)。あるいはメモリ管理部193が、ステップS214の段階では特に処理を行わず、キャッシュメモリ部181の記憶容量が不足した段階でアウトプット行列930をキャッシュメモリ部181から主記憶部182へ移動させるようにしてもよい。
ステップS214の後、図9の処理が終了する。
以上のように、リスト生成部191は、行数及び列数が等しい複数のカーネル920の要素の位置毎に要素値を示す要素リストを生成する。
演算実行部192は、インプット行列910のうちカーネル920と同じ行数及び列数の部分行列911の要素値と、要素リストに示される要素値との畳み込みを行う。
演算実行部192が、複数のカーネル920の要素の位置毎に要素値を示す要素リストを用いて畳み込みを行うことで、部分行列911の要素と複数のカーネル920それぞれの要素との乗算を行うことができる。これにより、部分行列911の要素値の1回のロードによって複数のカーネル920の要素との乗算を行うことができ、部分行列911の要素値のダウンロード回数を低減させることができる。
また、リスト生成部191は、カーネル920の要素の位置毎に、要素値が値「0」以外の要素を示す要素リストを生成する。
演算実行部192が、複数のカーネル920の要素の位置毎に、要素値が0以外の要素を示す要素リストを用いる。これにより、カーネル920の要素値が値「0」の場合に部分行列911の要素とカーネル920の要素との乗算、及び、乗算の結果をアウトプット行列930に反映させるためのアクセスを抑制することができる。この点で、演算回数及びメモリアクセスの回数を低減させることができる。
特に、演算装置100では計算回数だけでなくメモリアクセス回数も低減させることができる点で、畳み込みの演算に要する時間をより低減させることができる。
図10は、畳み込みに要する計算時間とメモリアクセス時間の例を示すグラフである。図10の縦軸は時間を示す。縦軸の上の方は長い時間を示し、下の方は短い時間を示す。
図10では、例えば、1コアのベクトル計算機等で、計算時間とメモリアクセス時間との釣り合いが取れ、共に時間T11である場合と、計算時間及びメモリアクセス時間のいずれも短縮されている場合との例が示されている。
例えば、計算時間、メモリアクセス時間共に時間T11の状態から計算回数を削減して計算時間のみを短縮した場合、メモリアクセス時間が時間T11のままである点で、時間短縮効果は限定的である。
これに対し、図10の例のように、計算時間が時間T12に短縮され、メモリアクセス時間が時間T13に短縮されている場合、計算時間、メモリアクセス時間共に短縮する。これにより、より大きな時間短縮効果が見込まれる。
また、メモリ管理部193は、要素リストを参照して、インプット行列910の要素のうち当該要素の演算の相手となる要素の値に「0」以外の値が含まれている要素をロードする。一方、メモリ管理部193は、インプット行列910の要素のうち当該要素の演算の相手となる要素の値が全て「0」の要素のロードを抑制する。
具体的には、演算実行部192が、インプット行列910における部分行列911の位置、及び、要素リストの行毎に行及び列で示される位置に基づいて、インプット行列910の要素のうちロード対象の要素を特定する。メモリ管理部193は、演算実行部192が特定した要素の値をロードする。上記のように要素リストには、値が「0」以外の要素が1つ以上ある位置のみが記載されている。このため、メモリ管理部193は、インプット行列910の要素のうち当該要素の演算の相手となる要素の値が全て「0」の要素のロードを抑制する。
インプット行列910の要素のうち当該要素の演算の相手となる要素の値が全て「0」の要素のロードを抑制する点で、演算装置100によれば、メモリアクセスの回数を低減させることができる。
また、記憶部180は複数階層にしたがって構成されている。演算装置100のメモリ管理部193は、少なくとも1つの部分行列911に対する演算を開始してから終了するまで、アウトプット行列930を、記憶部180の記憶階層のうち主記憶部182よりも高速の階層であるキャッシュメモリ部181に保持する。
これにより、メモリ管理部193は、演算実行部192による演算結果をアウトプット行列930に反映させる際のメモリアクセス時間を短くすることができる。
演算装置100が、複数の部分行列911の各々とカーネル920との畳み込みを並列実行するなど、インプット行列910からの要素値の1回のロードで複数の部分行列911に対する処理を行うようにしてもよい。この点について、図11を参照して説明する。
図11は、演算装置100が、インプット行列910からの要素値の1回のロードで複数の部分行列911に対する処理を行う場合の、複数の部分行列911の配置例を示す図である。図11では、3つの部分行列911が示されており、符号911a、911b、911cを付すことでこれらが区別されている。図の左から1列ずつずれて、部分行列911a、911b、911cの順で配置されている。
部分行列911aの最右列の各要素は、これら3つの部分行列911のいずれにも含まれている。これらの要素は、部分行列911bでは真ん中の列に位置し、部分行列911cでは最左列に位置している。
メモリ管理部193が、このように複数の部分行列911に共通の要素の値をロードすると、演算実行部192は、ロードされた値を用いてこれら複数の部分行列911の各々についての計算を行う。
例えば、メモリ管理部193が、部分行列911aの第0行第2列(最上行最右列)の要素値をロードした場合、演算実行部192は、ロードした要素値と、カーネル920の各々の第0行第2列の要素値との乗算を行う。演算実行部192は、得られた積をアウトプット行列930の該当する要素の値に加算する。
メモリ管理部193がロードした要素値は、部分行列911bでは第0行第1列(最上行真ん中の列)の要素値に該当する。そこで、演算実行部192は、この要素値と、カーネル920の各々の第0行第1列の要素値との乗算を行い、得られた積をアウトプット行列930の該当する要素の値に加算する。
メモリ管理部193がロードした要素値は、部分行列911cでは第0行第0列(最上行最左列)の要素値に該当する。そこで、演算実行部192は、この要素値と、カーネル920の各々の第0行第0列の要素値との乗算を行い、得られた積をアウトプット行列930の該当する要素の値に加算する。
以上のように、演算実行部192は、インプット行列910の要素のうち複数の部分行列に共通する要素の値がロードされると、ロードされた値を用いて複数の部分行列911の各々に対する演算を行う。
これにより、演算装置100では、メモリアクセス回数を低減させることができる。
次に、図12を参照して、演算装置100を構成するためのハードウェア構成の例について説明する。
図12は、実施形態に係るコンピュータの構成例を示す概略ブロック図である。図12に示すコンピュータ50は、CPU51と、通信装置52と、表示装置53と、入力装置54と、主記憶装置55と、キャッシュメモリ装置56と、を備える。通信装置52は、他の装置と通信を行う。表示装置53は、各種画像を表示する。入力装置54は、ユーザ操作を受ける。主記憶装置55は、各種情報を記憶する。キャッシュメモリ装置56は、CPU等が主記憶装置55へアクセスするメモリアクセス時間を低減させるために設けられた主記憶装置55よりも高速の記憶装置であり、CPU等での使用が予想される情報を一時的に記憶する。CPU51は、主記憶装置55及びキャッシュメモリ装置56のうち何れか一方又は両方からプログラムを読み出して実行することで、コンピュータ50の各部を制御して各種処理を実行する。
主記憶部182は、主記憶装置55に実装されている。キャッシュメモリ部181は、キャッシュメモリ装置56に実装されている。制御部190の動作は、プログラムの形式で主記憶装置55及びキャッシュメモリ装置56のうち何れか一方又は両方に記憶されている。CPU51は、プログラムを主記憶装置55及びキャッシュメモリ装置56のうち何れか一方又は両方から読み出し、このプログラムに従って制御部190の処理を実行する。通信部110は、通信装置52に実装されている。表示部120は、表示装置53に実装されている。操作入力部130、入力装置54に実装されている。
次に、図13及び図14を参照して本発明の最小構成について説明する。
図13は、本発明に係る演算装置の最小構成の第一例を示す図である。図13に示す演算装置10は、リスト生成部11と、演算実行部12とを備える。
かかる構成にて、リスト生成部11は、行数及び列数が等しい複数の演算用行列が有する要素(第1の要素)の演算用行列における位置毎に、要素値を示すリストを生成する。演算実行部12は、演算対象行列のうち演算用行列と同じ行数及び列数の部分行列が有する要素(第2の要素)の要素値と、リストに示される要素(第1の要素)の要素値とに基づく演算を行う。
演算実行部12が、複数の演算用行列の要素の位置毎に要素値を示すリストを用いて演算を行うことで、演算対象行列の部分行列の要素と複数の演算用行列それぞれの要素との乗算を行うことができる。これにより、演算装置10では、部分行列の要素値の1回のロードで複数の演算用行列の要素との演算を行うことができ、部分行列の要素値のダウンロード回数を低減させることができる。
図14は、本発明に係る演算装置の最小構成の第二例を示す図である。図14に示す演算装置20は、リスト生成部21と、演算実行部22とを備える。
かかる構成にて、リスト生成部21は、行数及び列数が等しい複数の演算用行列が有する要素(第1の要素)の演算用行列における位置毎に、要素値が値「0」以外である要素の要素値を示すリストを生成する。
演算実行部22は、演算対象行列のうち演算用行列と同じ行数及び列数の部分行列が有する要素(第2の要素)の要素値と、リストに示される要素とに基づく演算を行う。
演算実行部22が、複数の演算用行列における要素の位置毎に、要素値が値「0」以外である要素の要素値を示すリストを用いて演算を行う。これにより、演算用行列の要素値が「0」の場合に演算対象行列の部分行列の要素と演算用行列の要素との乗算、及び、乗算の結果を記憶領域のデータに反映させるためのアクセスを抑制することができる。この点で、演算回数及びメモリアクセスの回数を低減させることができる。
なお、制御部190の全部または一部を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
この出願は、2017年6月22日に日本出願された特願2017-122481号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
この発明によれば、二次元畳み込み行列の演算などの行列演算におけるメモリアクセス回数を低減させることができる。
10、20、100 演算装置
11、21、191 リスト生成部
12、22、192 演算実行部
110 通信部
120 表示部
130 操作入力部
180 記憶部
181 キャッシュメモリ部
182 主記憶部
190 制御部
193 メモリ管理部

Claims (7)

  1. 行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成するリスト生成部と、
    複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う演算実行部と、
    を備える演算装置。
  2. 前記リスト生成部は、前記第一行列における行と列との組み合わせによって特定される位置毎に、値が0以外である前記第1の要素の前記要素値を示す前記リストを生成
    前記演算実行部は、複数の前記第一行列の各々について、その第一行列が有する第1の要素と、前記部分行列が有する前記第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算、かつ、前記第1の要素の要素値が0の場合に省略可能な演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う、
    請求項1に記載の演算装置。
  3. 前記リストを参照して、前記第二行列が有する複数の前記第2の要素のうち、演算対象の各第1の要素に0以外の前記要素値の前記第1の要素が含まれる前記第2の要素の前記要素値をロードし、前記演算対象の各第1の要素の前記要素値が全て0である前記第2の要素の前記要素値のロードを抑制するメモリ管理部を備え、
    前記演算実行部は、複数の前記第一行列の各々について、その第一行列が有する第1の要素と、前記部分行列が有する前記第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算、かつ、前記第1の要素の要素値が0の場合に省略可能な演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う、
    請求項1または請求項2に記載の演算装置。
  4. 主記憶装置を示す第1の階層と、前記第1の階層より高速の第2の階層とを有する記憶部を備え、
    少なくとも1つの前記部分行列に対する演算を開始してから終了するまで、演算結果を格納する行列を前記第2の階層に保持する、
    請求項1から3の何れか一項に記載の演算装置。
  5. 前記演算実行部は、前記第二行列が有する前記第2の要素のうち複数の部分行列に共通する前記第2の要素の前記要素値をロードした場合、ロードした前記要素値を用いて前記複数の部分行列の各々の前記演算を行う、
    請求項1から4の何れか一項に記載の演算装置。
  6. 行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成し、
    複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う
    ことを含む演算方法。
  7. コンピュータに、
    行数が等しくかつ列数も等しい複数の第一行列が有する要素である各第1の要素の要素値を、前記第一行列における行と列との組み合わせによって特定される位置毎に示すリストを生成し、
    複数の前記第一行列の各々について、その第一行列が有する第1の要素と、第二行列のうち前記第一行列と同じ行数及び列数の部分行列が有する要素である第2の要素とのうち、前記第一行列における行と列との組み合わせによって特定される前記第1の要素の位置と、前記部分行列における行と列との組み合わせによって特定される前記第2の要素の位置とが同じ位置である、前記第1の要素の要素値と、前記第2の要素の要素値とを用いた演算を、前記リストから、前記第一行列における行と列との組み合わせを指定して読み出される前記第一行列毎の前記第1の要素の要素値を用いて行う
    処理を実行させるプログラム。
JP2019525092A 2017-06-22 2018-03-16 演算装置、演算方法及びプログラム Active JP7020485B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017122481 2017-06-22
JP2017122481 2017-06-22
PCT/JP2018/010640 WO2018235357A1 (ja) 2017-06-22 2018-03-16 演算装置、演算方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2018235357A1 JPWO2018235357A1 (ja) 2019-12-26
JP7020485B2 true JP7020485B2 (ja) 2022-02-16

Family

ID=64737098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019525092A Active JP7020485B2 (ja) 2017-06-22 2018-03-16 演算装置、演算方法及びプログラム

Country Status (3)

Country Link
US (1) US11580193B2 (ja)
JP (1) JP7020485B2 (ja)
WO (1) WO2018235357A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018174930A1 (en) * 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatuses for matrix add, subtract, and multiply
KR20200082613A (ko) * 2018-12-31 2020-07-08 에스케이하이닉스 주식회사 프로세싱 시스템
KR20210156554A (ko) * 2020-06-18 2021-12-27 삼성전자주식회사 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006067521A (ja) 2004-08-30 2006-03-09 Kyocera Corp 画像処理装置と方法、および画像撮像装置と方法
JP2014119949A (ja) 2012-12-17 2014-06-30 Nippon Hoso Kyokai <Nhk> 超解像装置及びプログラム
JP2015095259A (ja) 2013-11-14 2015-05-18 インテル コーポレイション グラフィカルテクスチャデータのマルチモードフィルタリングのためのフレキシブルフィルタロジック
JP2016004572A (ja) 2014-06-18 2016-01-12 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド シングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06197222A (ja) * 1992-12-25 1994-07-15 Fuji Xerox Co Ltd 画像処理装置
CN103238168A (zh) 2010-12-03 2013-08-07 夏普株式会社 图像处理装置、图像处理方法及图像处理程序
JP6750203B2 (ja) 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
CN108073977A (zh) * 2016-11-14 2018-05-25 耐能股份有限公司 卷积运算装置及卷积运算方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006067521A (ja) 2004-08-30 2006-03-09 Kyocera Corp 画像処理装置と方法、および画像撮像装置と方法
JP2014119949A (ja) 2012-12-17 2014-06-30 Nippon Hoso Kyokai <Nhk> 超解像装置及びプログラム
JP2015095259A (ja) 2013-11-14 2015-05-18 インテル コーポレイション グラフィカルテクスチャデータのマルチモードフィルタリングのためのフレキシブルフィルタロジック
JP2016004572A (ja) 2014-06-18 2016-01-12 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド シングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置

Also Published As

Publication number Publication date
US20200117701A1 (en) 2020-04-16
WO2018235357A1 (ja) 2018-12-27
US11580193B2 (en) 2023-02-14
JPWO2018235357A1 (ja) 2019-12-26

Similar Documents

Publication Publication Date Title
US10642613B2 (en) Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
JP6900487B2 (ja) ハードウェアにおける平均プーリングの実行
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
JP6987860B2 (ja) ハードウェアにおけるカーネルストライドの実行
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
JP6958027B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP7020485B2 (ja) 演算装置、演算方法及びプログラム
JP6936592B2 (ja) 演算処理装置およびその制御方法
TWI441021B (zh) 使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置
EP3460725A1 (en) Method and apparatus for adapting parameters of neural network
US20170206089A1 (en) Information processing apparatus and computational method
JP2018124867A (ja) 演算処理装置及び演算処理装置の制御方法
JP7353475B2 (ja) コンピュータがテンソルデータの計算を実現する方法、装置、媒体及び機器
JP7165018B2 (ja) 情報処理装置、情報処理方法
EP4024290A1 (en) Implementing fully-connected neural-network layers in hardware
CN114792124A (zh) 在硬件中实施扩张卷积
CN111133457A (zh) 电子设备及其控制方法
JP6906622B2 (ja) 演算回路および演算方法
US20220179923A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
KR20230068992A (ko) 가속을 통한 신경망 훈련
JP7251416B2 (ja) 情報処理プログラムおよび情報処理方法
JP7169768B2 (ja) 画像処理装置、画像処理方法
JP7420100B2 (ja) 処理装置、処理方法、およびプログラム
JP2023073824A (ja) 演算装置、情報処理方法、及びプログラム
US20210288650A1 (en) Semiconductor device and circuit layout method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210802

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220117

R151 Written notification of patent or utility model registration

Ref document number: 7020485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151