JP6540725B2 - 演算処理装置、方法、およびプログラム - Google Patents

演算処理装置、方法、およびプログラム Download PDF

Info

Publication number
JP6540725B2
JP6540725B2 JP2017014780A JP2017014780A JP6540725B2 JP 6540725 B2 JP6540725 B2 JP 6540725B2 JP 2017014780 A JP2017014780 A JP 2017014780A JP 2017014780 A JP2017014780 A JP 2017014780A JP 6540725 B2 JP6540725 B2 JP 6540725B2
Authority
JP
Japan
Prior art keywords
statistical information
bit
data
significant bit
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017014780A
Other languages
English (en)
Other versions
JP2018124681A5 (ja
JP2018124681A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017014780A priority Critical patent/JP6540725B2/ja
Priority to PCT/JP2018/000988 priority patent/WO2018139266A1/ja
Priority to EP18744586.1A priority patent/EP3575952B1/en
Publication of JP2018124681A publication Critical patent/JP2018124681A/ja
Publication of JP2018124681A5 publication Critical patent/JP2018124681A5/ja
Application granted granted Critical
Publication of JP6540725B2 publication Critical patent/JP6540725B2/ja
Priority to US16/515,110 priority patent/US11137981B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/507Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Nonlinear Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、演算処理装置、この演算処理装置を含む情報処理装置、方法、およびプログラムに関する。
今日、深層学習へのニーズが高まっている。深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。ところで、深層学習では、個々の演算精度への要求は、他のコンピュータ処理ほど厳密ではない。例えば、従来の信号処理等では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。深層学習では、複数の入力データを畳み込み演算するときの係数(重み)の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和された値も、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数調整に反映できるようになるためである。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力性能の向上等を図るため、浮動小数点数を用いないで、固定小数点数による整数演算を用いることが考えられる。浮動小数点数演算よりも整数演算の方が回路構成を簡素にできるからである。
しかしながら、固定小数点数は、ダイナミックレンジが狭いので、浮動小数点数より演算精度が劣化する場合がある。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
例えば、Mixed Fixed Pointによる処理では、プログラム全体として統一した小数点位
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。図1は、Q3.12フォーマットを例示する図である。Q3.12フォーマットは、符号ビット1桁、整数部3桁、小数点以下12桁の16ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり、整数部の桁数と小数点以下の桁数が異な
るものとして処理される。
他の例として、Dynamic Fixed Point (動的固定小数点数)による処理では、実行中に変数の値域が取得され、一定のタイミングで小数点位置が見直される。したがって、Mixed Fixed Point演算、およびDynamic Fixed Point演算は、浮動小数点演算よりも処理が簡単な固定小数点演算に、浮動小数点演算の側面を加えたものと言える。
さらに、Mixed Fixed Point演算、Dynamic Fixed Point演算による処理を実行するためのプログラム向けの機能を有するDigital Signal Processor(DSP)も提案されている。例えば、ブロック・シフト指定付きの演算命令を実行するDSPがある。ブロック・シフト指定付きの演算命令は、変数のビット幅より大きいビット幅で演算を実行し、演算結果から値をシフトして切り出して変数用のレジスタに格納する。この命令では、演算結果から値を切り出すときのシフト量 S (例えば、-128〜127)が即値/汎用レジスタで指定可
能である。例えば、DSPがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16bit を残し、上位ビットを
飽和処理する。S ≧0 の場合には、DSPは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、DS
Pは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数での下位ビットを削除する。
ブロック・カウント・リーディング・サイン(BCLS)出力を実行するDSPも提案されている。BCLS出力は、DSPが演算結果の count leading sign を取って、結果をレジスタに書き込む機能である。ここで、count leading signとは、正数最上位のビット1の位置(負数で最上位のビット0の位置)をいう。例えば、DSPが、max (block_count_leading_sign(in1 (演算子) in2) -1)を実行すると、変数in1 と変数in2の演算子による演算結果から、正数最上位のビット1の位置(負数で最上位のビット0の位置)がレジスタに記録される。
図2は、深層学習において、単精度浮動小数点数(Single Precision Floating Point
)、半精度浮動小数点数(Half Precision Floating Point)、固定小数点数(Fixed point)、Dynamic Fixed Point数を適用した場合の認識エラー率を例示する(非特許文献1
参照)。なお、図2で、第1行目のデータ(Goodfellow et al.(2013))は、他の論文の
評価結果である。また、図2の表で、Propは、認識(フォーワッド方向)および学習(バックワード方向)おけるデータ伝搬時のビット幅を示す。また、Up.は、重み係数アップ
デート時のビット幅を示す。さらに、PI MNIST、MNIST、CIFAR−10、およびSVHNは、深層学習に用いられたデータセットを示す。
なお、非特許文献1によるDynamic Fixed Point数による処理では、演算または変数の
代入ごとに、オーバーフローの有無を記録し、オーバーフロー率(全演算回数に対するオーバーフローした演算の回数、全代入回数に対するオーバーフローした代入回数等)が算出される。そして、この処理では、所定の期間ごとに、各変数の小数点位置を以下の手順1、2で変更する。
(手順1)オーバーフロー率が規定値(rmax)より大きい場合、小数点位置を1つ下げる。
(手順2)オーバーフロー率の2倍の値が規定値(rmax)以下の場合、小数点位置を1つ上げる。
図2に例示されるように、従来技術による処理では、単精度浮動小数点数、半精度浮動小数点数、固定小数点数、およびDynamic Fixed Point数による結果においても、認識エ
ラー率は大きく増加していない。
特開2016−33754号公報 特開2012−203566号公報 特開2010−112878号公報
Courbariaux et al.、 "TRAINING DEEP NEURAL NETWORKS WITH LOW PRECISION MULTIPLICATIONS" Accepted as a workshop contribution at ICLR 2015, International Conference on Learning Representations(ICLR),2015年9月23日,
上述のように、従来技術のDynamic Fixed Point数による処理結果においても、認識エ
ラー率が大きく増加しない。しかしながら、上記従来の技術においては、小数点位置をオーバーフロー率を基に1ビット調整するため学習結果の精度が劣化する。例えば、k個の
データの学習ごとに小数点位置を調整する場合、小数点位置が適正位置からn ビットずれている場合、小数点位置が適切な位置に調整されるまでに、(n * k)回の学習が進む。そ
の結果、小数点位置が適正な位置になるまでに、飽和するデータやアンダーフローするデータが増え、学習が収束しない、あるいは、学習結果の精度劣化につながるおそれがある。
1つの側面では本発明の目的は、深層学習を固定小数点数で精度よく実行し、回路規模と消費電力を削減できるようにすることである。
本発明の一側面は、以下の演算処理装置によって例示される。すなわち、本演算処理装置は、固定小数点数データに対する命令実行後の前記固定小数点数データ中のビットの分布についての統計情報を取得する取得回路と、前記固定小数点数データの小数点位置を更新する更新回路と、を備える。
本実施形態によれば、深層学習を固定小数点数で精度よく実行することで、回路規模と消費電力を削減することができる。
Q3.12フォーマットを例示する図である。 深層学習において、単精度浮動小数点数、半精度浮動小数点数、固定小数点数、Dynamic Fixed Point数を適用した場合の認識エラー率を例示する図である。 ニューラルネットワークにおける深層学習を例示する図である。 フォーワッド方向の認識処理および識別処理とともにバックワード方向の学習処理を例示する図である。 比較例に係る深層学習の手順を例示する図である。 各層の処理の詳細を例示する図である。 比較例の情報処理装置による学習処理のフローチャートを例示する図である。 非符号となる最上位ビット位置の分布データを例示する図である。 非符号となる最下位ビット位置の分布データを例示する図である。 プロセッサの構成を例示する図である。 プロセッサの回路ブロックを例示する図である。 ベクトルユニットの詳細を例示する図である。 スカラユニットの構成を例示する図である。 データ変換部の構成を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部の処理を例示する図である。 非符号最上位ビット検出器の真理値表を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。 非符号となる最下位ビット位置を取得する統計情報取得部の処理を例示する図である。 非符号最下位ビット検出器の真理値表を例示する図である。 非符号となる最下位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。 統計情報集約部の処理を例示する図である。 統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報集約部の処理を例示する図である。 統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報格納部のハードウェア回路の構成を例示する図である。 統計情報集約部の変形例である。 統計情報格納部のハードウェア回路の構成を例示する図である。 統計情報格納部のハードウェア回路の構成を例示する図である。 変形例の統計情報格納部の構成を例示する図である。 変形例の統計情報格納部の構成を例示する図である。 命令フォーマットを例示する図である。 命令フォーマットを例示する図である。 情報処理装置が深層学習を実行する場合の各層の処理の詳細を例示する図である。 情報処理装置による学習処理のフローチャートを例示する図である。 データが固定小数点数の範囲に収まらない場合の小数点位置更新例である。 データが固定小数点数の範囲に収まる場合の小数点位置更新例である。 非符号となる最下位ビットの分布である。
以下、図面を参照して一実施形態に係る情報処理装置について説明する。本情報処理装置は、深層学習を実行する。
[深層学習の実行例]
まず、図3を参照して、ニューラルネットワークにおける深層学習を例示する。ニューラルネットワークは、ハードウェア回路であってもよいし、コンピュータプログラム上で仮想的に構築される階層間を接続するソフトウェアによる仮想的なネットワークであってもよい。ニューラルネットワークは、例えば、画像を認識し、識別するためのフォーワッド方向の処理と、フォーワッド方向の処理で使用するパラメータを決定するバックワード方向の処理を実行する。なお、バックワード方向の処理は、バックプロパゲーション(Back Propagation、BP)と呼ばれる。
図3のニューラルネットワークは、入力画像に対して、畳み込み層(Convolution Layer)の処理と、プーリング層(Pooling Layer)の処理とを実行し、画像の特徴を抽出し、画像を識別する。すなわち、図3では、フォーワッド方向の処理が例示されている。図3では、Input Layerとされている入力画像に対して、畳み込み層の処理とプーリング層の処理が実行され、4フィーチャマップ、6フィーチャマップ等が順次生成される。ここでフィーチャマップは、例えば、画像の異なるチャンネルで授受されるデータ、あるいは、画像のうちのR,G,Bデータ等に相当するデータである。そして、図3のニューラルネットワークは、最終層であるFully Connected multilayer perceptron(MLP)において、識別結果を出力する。なお、プーリング層は、サブサンプリング層(Sub-sampl
ing Layer)とも呼ばれる。最終層は、全結合層(Fully Connected Layer)とも呼ばれる。
フォーワッド方向の処理のうち、最終層に至るまでの畳み込み層の処理と、プーリング層の処理を繰り返し実行する演算回路部分を特徴抽出部と呼ぶ。すなわち、特徴抽出部は、入力画像に対して、畳み込み層の処理と、プーリング層の処理を繰り返し実行することで、間引かれた画像を抽出する。畳み込み層の処理は、畳み込み演算とも呼ばれる。プーリング層の処理は、プーリング演算、あるいはサブサンプリング演算とも呼ばれる。
より具体的には、特徴抽出部は、フォーワッド方向のある層(第l−1層)において、N個×N個の画素を有する画像の情報に対して、例えば、m×m個の重みwab(a,b=
0,...,m−1)のフィルタによる畳み込み演算を実行する。特徴抽出部は、この畳み込み演算を実行することで、現在処理中の層(第l−1層)の画像から、次の層(第l層)の画像の情報を作る。さらに、畳み込み演算による処理結果は、非線形活性化関数 y=sigma(x)によって変換され、発火と呼ばれるモデル化がなされる。非線形活性化関数は、例えば、sigma(x)=max(0,x)である。すなわち、非線形活性化関数 y=sigma(x)は、xが負の値の場合、sigm(x)=0であり、xが正の値の場合、sigma(x)=xの値をとる関数である。なお、重みwは畳み込み演算に用いられることから、係数ということもできる。
<畳み込み層の計算>
今、第l−1層における画素(i,j)からの出力をyl-1 i,jとし、第l層の画素(i,j)における畳み込み演算の処理結果をxl i,jとし、第l層における画素(i,j)の非線形活
性化関数 y=sigm(x)の演算結果をyl i,jとする。xl i,jとyl i,jは以下の(式1)、(式2)で表すことができる。ただし、(式2)において、関数sigmaは、ギリシャ文字で表している。
式1の対象となる第l−1層の画像の情報のうち、m×m個の画素の領域を以下、単位矩形領域と呼ぶ。なお、単位矩形領域は1つのフィーチャマップに限定される訳ではなく、図1に例示した4フィーチャマップ、6フィーチャマップが畳み込み演算の対象となる場合に、複数のフィーチャマップを用いて、畳み込み演算が実行されてもよい。また、以下、画素をセルともよぶ。
プーリング演算は、N個×N個の画素を有する画像をN/k個×N/k個の画素を有する画像に間引く処理である。間引き方としては、例えば、N個×N個の画素をk個×k個ずつの部分画像に区切り、各部分画像に含まれるk個×k個の画素中の最大の画素値を有する1つの画素を選択する処理(以下、max poolingと呼ぶ)が例示できる。また、他の例として、k個×k個の画素の平均値によって1つの画素を生成する処理が例示できる。
識別部は、間引かれた画像中の全画素に対して、それぞれの画素に重みを適用し、畳み込み演算を実行することで、出力値を得る。今、特徴抽出部の最後の層を第l−1層として、第l−1層の各画素値をyl-1 jとし、全結合による畳み込み演算結果をxl iとし、重みをwl-1 jiとすると、xl iは以下の(式3)で表すことができる。
また、識別部における非線形活性化関数 y=sigma(x)の演算結果をyl iとすると、識別部の演算結果yl iは以下の(式4)で表すことができる。ただし、(式4)において、関数sigmaは、ギリシャ文字で表している。
ここで、Il iはバイアス成分である。
図4に、フォーワッド方向の認識処理および識別処理とともにバックワード方向の学習処理を例示する。図4のニューラルネットワークにおいても、フォーワッド方向の認識処理は、入力画像に畳み込み演算を実行する畳み込み層、間引き処理を実行するプーリング層によって実行される。また、識別結果を出力する識別処理は、全結合層(図4では、Fully connectedと記載)によって実行される。
全結合層による識別処理の結果は、正解データを比較され、比較結果である差分値がエラーとして出力される。エラーは、学習処理に用いられる。学習処理は、エラーから、フォーワッド方向の畳み込み層および全結合層における各層でのエラーおよび各層での次の重みを計算する処理である。図2では、現在の重みとして、畳み込み層(1層)における1つの重みwiと、全結合層(1層)における1つの重みwjが例示されている。また、次の重みとして、畳み込み層(1層)における1つの重みwi+1と、全結合層(1層)にお
ける1つの重みwj+1が例示されている。
今、例えば、エラーの評価関数として、識別結果である出力値yと正解データTiとの差分値の平方和を評価関数として例示すると、(式5)のように定義できる。学習処理は、(式5)で例示されるエラーの評価関数を最小にするための重みwを決定する処理と考えることができる。
次に、(式5)をyで偏微分すると(式6)となり、右辺は出力値yと正解データTiとの差である誤差値となる。エラーの評価関数を(式5)から一般化した場合も、エラーの評価関数を出力値yで偏微分すると、出力値yと正解データTiとの差である誤差値となると考えることができる。
さらに、(式5)をxiで偏微分し、(式7)の推移律を適用し、さらに、yiに式4を代入すると、(式8)が得られる。なお、画素値xと、非線形活性化関数の出力yとの関係を(式2)で表す場合には、(式9)が得られる。
一方、(式5)をyl iで偏微分し、全結合層の画素値xl iが1つ入力側の層(第l−1層)からの出力値yl-1 jによって(式3)のように表されることを考慮すると、(式10)が得られる。なお、第l層の画素値xl i,jが1つ入力側の層(第l−1層)からの出力値yl-1 jによって(式1)で表される場合には、(式10)は、(式11)のようになる。
(式10)の左辺は、第l層の誤差を示す。また、(式10)の右辺は、第l+1層の誤差に、第l層の画素iと第l+1層の画素jとの間の重みの変数wi,jを乗算した結果
の集計である。この集計は、第l層の画素iに関係する第l+1層の画素jについて集計したものである。
また、(式5)を重みwl ijで偏微分し、推移律を適用し、さらに、(式3)を代入す
ると、(式12)が得られる。ただし、(式3)は、第1−1層からの出力yと、第l層の画素値xの関係となっているが、(式12)は、第1層からの出力yと、第l+1層の画素値xの関係となっている。(式12)は、エラーの評価関数Eの勾配を示す。最勾降下法によるニューラルネットワークの学習処理においては、エラーの評価関数Eの勾配と、学習係数イータの積が重みWの変化量(現在の重みWtと次の重みWt+1の差分値)となる。したがって、以下の記述において、エラーの評価関数Eの勾配を重みWの更新量
deltaWと定義する。なお、画素値xとyの関係が(式1)で表される場合には、(式12)は、(式13)のようになる。以上から、エラーの評価関数Eに最勾降下法を適用すると、(式14)が得られる。なお、(式14)では、演算がM回繰り返される式となっているが、M=1でもよい。
(A)各層の重み
(式14)は、現在の重みWtと次回認識処理での重みWt+1との関係を示している。したがって、(式14)の右辺の第2項が次回の重みへの増分値となる。また、(式14)でギリシャ文字イータは、エラーの評価関数Eの勾配から重みWtの増分値を得るための係数であり、例えば、経験的実験的に設定できる。すなわち、学習処理においては、学習回路の各層において、(式12)(あるいは式13)による勾配を求め、エラーの評価関数Eが小さくなる方向に、(式14)の第2項の増分値を算出し、次回の重みWt+1を求める処理を実行する。
(B)各層のエラーの評価関数の勾配(更新量deltaWの計算)
ここで、(式14)の第2項は、(式12)により、各層(第l層)の画素値(yl i)と、各層(第l層)に対して1つ出力側の層(第l+1層)のエラー(エラーの評価関数の画素値xl+1 jによる偏微分値)との積から得られる。ただし、現在の層((式13)では第l−1層)と、1層全結合層側の層((式13)では第l層)との関係が(式1)のように積和演算で表される場合、更新量deltaWは、(式13)で表される。すなわち、更新量deltaWは、現在の層(第l−1層)の画素の出力値yl-1 i,jと関係する第l層の画素値xl i,jからのエラーへの寄与を集計したものとなっている。
(C)各層のエラー
一方、(式10)の左辺は、各層(第l層)のエラー(エラーの評価関数の画素値yl iによる偏微分値)を示す。また、(式10)の右辺は、現在の層(第l層)に対して1つ出力側の層(第l+1層)のエラー(エラーの評価関数の画素値xl+1 jによる偏微分値)と、第l層の画素iと第l+1層の画素jとの間の重みの変数wi,jとの積の集計である
。この集計は、第l層の画素iに関係する第l+1層の画素jについての集計である。
[比較例]
図5から図7を参照して、比較例に係る情報処理装置での深層学習について説明する。
図5は、比較例に係る深層学習の手順を例示する図である。比較例の情報処理装置は、コンピュータプログラムにしたがって深層学習を実行する。比較例の情報処理装置は、Dynamic Fixed Point数の処理を実行可能なプロセッサを有している。
図5のように、比較例の深層学習は、1層目の畳み込み層(Conv_1)とプーリング層(Pool_1)、2層目の畳み込み層(Conv_2)とプーリング層(Pool_2)、全結合層1(fc1)、および
全結合層2(fc2)の処理により実行される。深層学習は、ミニバッチと呼ばれる処理の単
位に区切られて実行される。ここで、ミニバッチとは、学習の対象となる入力データの集合{(Ini,Ti),i=1〜N}を複数組(例えば、k個のデータのM組、N=k*M)に分割したk個のデータの組み合わせをいう。また、ミニバッチは、このような個々の入力データの組(k個のデータ)で実行される学習の処理単位のことをいう。ここで、Iniは、入力データ(ベクトル)、Tiは正解データ(ベクトル)である。比較例の情報処理装置は、以下のように、深層学習中の所定数のミニバッチごとに、各層の各変数のオーバーフロー回数を取得してコンピュータプログラム中の変数に蓄積し、深層学習に用いる変数の固定小数点位置を自動調整する。
比較例の情報処理装置は、例えば、浮動小数点数による試行(ミニバッチ1回など)や、
ユーザ指定により各変数の初期小数点位置を決定し、学習を開始する(S1)。そして、情報処理装置は、k回のミニバッチを学習中に、各層の各変数のオーバーフローの回数を
統計情報として保存する(S2)。このとき、情報処理装置は、学習を実行するプログラム中の各変数に対する演算、代入等がなされる毎に、オーバーフローの有無を判定し、回数を計数し、回数を保持するカウンタ変数に代入する。
ミニバッチを学習中に変数にオーバーフローが発生した場合は、変数に対する飽和処理を行ない、学習を続行する(S3)。ここで、飽和処理とは、正の数がオーバーフローした際には正の最大値に、負の数がオーバーフローした際は負の最小値にクリップする処理である。
そして、情報処理装置は、k組のデータに対するミニバッチ終了後(k回の学習終了後
)、カウンタ変数に蓄積したオーバーフロー回数からオーバーフロー率を求め、オーバーフロー率を基に、固定小数点数の小数点位置を調整する(S4)。そして、情報処理装置は、S2の処理に戻り、学習を進める。
図6は、図5における各層の処理の詳細を例示する図である。図では、1層目の畳み込み層(Conv_1)、プーリング層(Pool_1)、および全結合層2(fc2)が例示されている。この
例では、1層目の畳み込み層(Conv_1)において、入力データini=(x0,...,xn)と、重み(Wij)との間で、畳み込み演算が実行され、z0,...,zj,...等が計算される。また、z0,...,zj,...等に対して、活性化関数が演算され、u0,...,uj,...等が計算される。情報処理装置
は、この1層目の畳み込み層(Conv_1)での変数z0,...,zj,...のオーバーフロー回数をカ
ウンタ変数Conv_1_zに蓄積する。また、情報処理装置は、この1層目の畳み込み層(Conv_1)での変数u0,...,uj,...等でのオーバーフロー回数をカウンタ変数Conv_1_uに蓄積する
。例えば、カウンタ変数Conv_1_uが配列の場合、カウンタ変数Conv_1_u(1)には、変数u0,...,uj,...のうち、オーバーフローした変数の個数が累積される。また、カウンタ変
数Conv_1_u(2)には、変数u0,...,uj,...のうち、2倍するとオーバーフローする変数
の個数が累積される。
1層目の畳み込み層(Conv_1)での演算結果は、1層目のプーリング層(Pool_1)から、さらに上位層へ伝播される。このとき、情報処理装置は、2層目以上の層でも同様の演算と、オーバーフロー回数の蓄積を実行する。情報処理装置は、以上のような演算を上位層においても実行して演算結果をさらに上位層へ伝播させる。そして、情報処理装置は、最終
的には、全結合層2(fc2)において、得られた演算結果と、正解データTiとの差分値から
エラーδ0(7),...,δj(7),...を算出する。そして、情報処理装置は、エラーδ0(7),...,δj(7),...を基に、逆方向の伝播を実行する。その結果、情報処理装置は、下位の階層(例えば、結合層1(fc1))の出力でのエラーδ0(6),...,δj(6),...δn(6)と重みの変数Wijの次回の重みへの差分値ΔWijを算出する。このとき、情報処理装置は、エラーδ0(7),...,δj(7),...およびエラーδ0(6),...,δj(6),...,δn(6)でのオーバーフロー回数をカ
ウンタ変数fc2_δに蓄積する。また、情報処理装置は、差分値ΔWijでのオーバーフロー
回数をカウンタ変数fc2_ΔWに蓄積する。また、情報処理装置は、重みの変数Wijでのオーバーフロー回数をカウンタ変数fc2_Wに蓄積する。
そして、情報処理装置は、全結合層1(fc1)から1層目の畳み込み層(Conv_1)まで、エ
ラーを逆方法に伝播させながら、重みの差分を計算する。情報処理装置は、以上のような順伝播と逆伝播をk組の入力データを用いて、k回繰り返す。情報処理装置は、このようなk回のミニバッチ終了後、各変数に対応するカウンタ変数のオーバーフロー回数を基に、各変数の固定小数点位置を更新する。
図7に、比較例の情報処理装置による学習処理のフローチャートを例示する。この処理では、情報処理装置は、初期小数点位置を決定する(C1)。そして、情報処理装置は、回数kを値0で初期化する。そして、情報処理装置は学習終了の条件が充足されたか否か
を判定する(C3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下とな
るか、または、学習回数が規定の最大値に達した場合である。
学習終了の条件が充足されない場合、情報処理装置は、次のミニバッチを実行し、変数kをカウントアップする(C4)。そして、情報処理装置は、統計情報としてオーバーフロー回数を各カウンタ変数に蓄積する(C5)。すなわち、情報処理装置は、各層において、オーバーフローした変数の個数、2倍するとオーバーフローする変数の個数を累積する。
そして、情報処理装置は、回数kが更新間隔に達したか否かを判定する(C6)。回数kが更新間隔に達していない場合、情報処理装置は、C3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置は、変数のオーバーフロー回数にしたがって、小数点位置を更新する。例えば、情報処理装置は、非特許文献1と同様、オーバーフロー回数を演算の実行回数で除算したオーバーフロー率を求めればよい。そして、オーバーフロー率が規定値を超えた場合に、情報処理装置は、該当する変数の小数点位置を1つ下げ、整数部を1ビット拡張すればよい。また、オーバーフロー率の2倍の値が規定値以下の場合、情報処理装置は、小数点位置を1つ上げ、整数部を1ビット削減すればよい。そして、情報処理装置1は、C3の処理に戻る。
しかし、以上の処理は、各層の演算ごとにオーバーフロー回数を累積し、オーバーフロー率が既定値を越えた場合、および、オーバーフロー率の2倍の値が既定値未満となった場合に固定小数点位置を1ビットずらす処理である。この処理は、オーバーフロー回数あるいはオーバーフロー率に基づく固定小数点位置の更新処理である。情報処理装置は、オーバーフロー回数あるいはオーバーフロー率からは、適正な小数点位置がどこであるかを判断することが困難である。
したがって、比較例の処理は、固定小数点位置の更新時、小数点位置を1つ下げる、あるいは上げる等の処理で、適正な位置を試行し、その結果からさらに判断を重ねていくという手順となる。このため、情報処理装置が適正な小数点位置を決定するまでに、小数点位置が複数回更新されることになる。例えば、上記のように、情報処理装置がk回のミニバッチごとにオーバーフロー率を判定し、1ビットずつ小数点位置を更新する場合には、
小数点位置をNビットずらすために、N*k回(*は乗算)分のミニバッチが実行される。こ
のため、小数点位置が不適切な状態で学習処理が繰り返される。つまり、学習中に、望ましくないレベルで固定小数点数データの飽和、あるいは、アンダーフローが発生し、学習結果の精度劣化につながり、収束が遅くなる恐れがある。
また、比較例の情報処理装置は、単にオーバーフロー回数を取得し、蓄積する処理を深層学習のプログラム中で実行するため、学習時間が増大する可能性がある。つまり、情報処理装置は、適正な小数点位置を決定するための情報をプログラムに提供する機能がないため、プログラムにオーバーフロー回数を累積するコードが組み込まれ、処理時間が増加する恐れがある。
[実施形態]
以下、図8Aから図32により、一実施形態に係る情報処理装置1、情報処理装置1が実行する情報処理方法、および情報処理装置1で実行されるプログラムについて説明する。本実施形態は、一例であり、情報処理装置1は、本実施形態の構成に限定される訳ではない。
<統計情報>
本実施形態では、情報処理装置1のプロセッサが統計情報を取得することで、統計情報取得のためのプログラム中のオーバーヘッドが削減される。ここで、プロセッサが取得する統計情報は、例えば、以下のいずれか、または、これらの組み合わせをいう。情報処理装置1が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理にしたがってプロセッサは、Dynamic Fixed Point演算のための命令を実行する。
(1)非符号となる最上位ビット位置の分布
図8Aに、非符号となる最上位ビット位置の分布データを例示する。図8Aは演算の途中結果が40bitで、固定小数点数の桁あわせのために14bit右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位置の分
布が得られると、絶対値としての値の分布範囲が把握可能となる。
図8Aで、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は最上位のビットの位置 Count Leading Sign(CLS)である。図8Aでは、ビット0の右側に小
数点があると仮定する。本実施形態では、情報処理装置1のプロセッサの演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置1のプロセッサの演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトし、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレ
ジスタのビット幅を越えるデータ(ビット15を越えるデータ)は、飽和処理される。
また、図8Aの横軸に付与された数値は、固定小数点で表現可能な数値を示す。例えば、情報処理装置1がこの固定小数点数を−2ビットだけシフト(右方向に2ビットシフト)すると、最上位ビットが14の位置にシフトし、飽和される領域が2ビット拡張され、
アンダーフローが発生して0となる領域が2ビット減少する。すなわち、情報処理装置1
が小数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置1が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
情報処理装置1は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、Dynamic Fixed Point演算における適正なシフト量、つまり、適切な固定小数点位置
を直ちに決定できる。例えば、情報処理装置1は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置1は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
非符号となる最上位ビット位置の分布は、情報処理装置1のプロセッサ10(図9参照)内の所定のレジスタ(統計情報レジスタともいう)内に積算される。プロセッサ10は、当該統計情報レジスタからの分布データの読み出し、書き込み、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までに命令実行の対象となった1以上の固定小数点数についての分布データが蓄積される。蓄積された分布データは、読み出し命令によってメモリに読み出される。なお、プロセッサ10は、クリア命令に代えて、統計情報レジスタへのロード命令の実行を可能とし、値0を統計情報レジスタにロードできるようにしてもよい。
(2)非符号となる最下位ビット位置の分布
非符号となる最下位ビット位置の分布とは、ビットが符号と異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビット
であるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデ
ックスkが最小のものをいう。非符号となる最下位ビット位置の分布は図8Bのように表
現される。また、非符号となる最下位ビット位置の分布では、有効なデータが含まれる最下位ビットが把握される。
(3)非符号となる最上位ビット位置の最大値
非符号となる最上位ビット位置の最大値は、前回クリア命令が実行されたときから現在に至るまでに、命令実行の対象となった1以上の固定小数点数について符号ビットの値と異なる値となる最上位のビット位置のうちの最大値である。情報処理装置1は、非符号となる最上位のビット位置の最大値をDynamic Fixed Point演算における適正なシフト量、
つまり、適切な小数点位置の決定に利用できる。
プロセッサは、上記統計情報レジスタからの上記最大値の読み出し、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの最大値が蓄積され、読み出し命令によって最大値がメモリに読み出される。
(4)非符号となる最下位ビット位置の最小値
非符号となる最下位ビット位置の最小値は、前回クリア命令が実行されたときから現在に至るまでの1以上の固定小数点数について符号と異なる値となる最下位のビット位置のうちの最小値である。情報処理装置1は、非符号となる最下位ビット位置の最小値をDynamic Fixed Point演算における適正なシフト量、つまり、適切な小数点位置の決定に利用
できる。
プロセッサ10は、統計情報レジスタからの上記最小値の読み出し、クリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの上記最小値が蓄積され、読み出し命令によってメモリに読み出される。
<構成>
図9に、情報処理装置1のプロセッサ10の構成を例示する。図9では、プロセッサ10とともに、命令用メモリ(IRAM)21およびデータ用メモリ(DRAM)22も例示されている。プロセッサ10は、single instruction multiple data(SIMD)型の演算処理装置である。
プロセッサ10は、プログラムカウンタ(PC)111、デコーダ(Decoder)112
、レジスタファイル12、ベクトル演算用の演算器131、スカラ演算用の演算器(Arithmetic Logic Unit(ALU))141、およびベクトル演算用の演算器131の結果を
加算するアキュムレータ132を有している。また、プロセッサ10は、ベクトル演算用の演算器131、スカラ演算用の演算器141、アキュムレータ132等の演算結果、および、データ用メモリ22からの読み出し結果を選択する複数のセレクタ101を有している。なお、図では、複数のセレクタを総称してセレクタ101と呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器131と呼ぶ。
さらに、プロセッサ10は、セレクタ101によって選択されたデータからの統計情報を取得する統計情報取得部102、統計情報取得部102によって取得された統計情報を格納する統計情報格納部105を有している。統計情報取得部102と統計情報格納部105は、固定小数点数データに対する命令実行後の固定小数点数データ中のビットの分布についての統計情報を取得する取得回路の一例である。なお、図では、複数の統計情報取得部を総称して統計情報取得部102と呼ぶ。
さらに、プロセッサ10は、セレクタ101によって選択されたデータの固定小数点位置を変更するデータ変換部103を有している。また、図では、複数のデータ変換部を総称してデータ変換部103と呼ぶ。
図のように、プログラムカウンタ111の指す命令用メモリ21のアドレスから、命令がフェッチされ、デコーダ112がフェッチされた命令をデコードする。なお、図では、命令のフェッチを実行する命令フェッチの制御部が省略されている。
デコーダ112が命令をデコードすると、デコード結果に応じて、プロセッサ10の各部が制御される。例えば、デコードの結果がベクトル演算命令であった場合、レジスタファイル12のベクタレジスタのデータがベクトル演算用の演算器131に入力され、ベクトル演算が実行される。ベクトル演算用の演算器131の演算結果は、セレクタ101を介して統計情報取得部102およびデータ変換部103に供給される。また、ベクトル演算用の演算器131の演算結果は、アキュムレータ132に入力され、ベクトル演算用の演算器131の演算結果が例えば、カスケードに加算される。アキュムレータ132の演算結果は、セレクタ101を介して、統計情報取得部102およびデータ変換部103に供給される。
また、例えば、デコードの結果、命令がスカラ演算命令であった場合には、レジスタファイル12のスカラ・レジスタのデータがスカラ演算用の演算器141に入力される。演算器141の演算結果は、アキュムレータ132の演算結果と同様、セレクタ101を介して統計情報取得部102およびデータ変換部103に供給される。
さらに、例えば、デコードの結果、命令がロード命令であった場合には、データ用メモリ22からデータが読み出され、セレクタ101を介して、統計情報取得部102およびデータ変換部103に供給される。データ変換部103でデータ変換された結果は、レジスタファイル12のレジスタに格納される。
また、デコードの結果、命令がDynamic Fixed Point演算を実行する命令であった場合
、デコーダ112は、シフト量がデータ変換部103に供給されるように指示する。シフト量は、例えば、命令のオペランド(即値)、オペランドで指定されたレジスタ、オペランドで指定されたアドレス・レジスタの示すアドレスのデータ用メモリ22等から取得され、データ変換部103に供給される。図9の処理は、デコーダが命令から、固定小数点数データの小数点位置の指定(シフト量)を取得することの一例である。
データ変換部103は、ベクトル演算の結果、スカラ演算の結果、アキュムレータ132の演算結果、あるいは、データ用メモリ22からの読み出し結果等で得られる固定小数点数データを、指定されたシフト量Sだけシフトする。また、データ変換部103は、シ
フトとともに、上位ビットの飽和処理および下位ビットの丸めを実行する。図12にデータ変換部の具体的構成を例示する。データ変換部103は、例えば入力を40ビットの演算結果とし、下位Sビットを小数部として丸めを行な丸め処理部と、算術シフトを実行す
るシフタと飽和処理を行なう飽和処理部を有する。
丸め処理部は、下位S bitを小数部として丸めを行なう。Sが負の場合には、丸め処理部は、何も行なわない。丸めとしては、最近接丸め、0への丸め、正の無限大への丸め、負
の無限大への丸め、乱数丸めなどが例示される。図でシフト量は、例えば、図9に例示されるように、デコーダが命令から取得するシフト量である。
シフト部は、Sが正の場合はS bit算術右シフト、Sが負の場合は、算術左シフト、すな
わち、-S bit算術左シフトを行なう。飽和部は、シフト結果が 2E15-1(正の最大値)以
上の場合は 2E15、-2E15(負の最小値)以下の場合は -2E15、それ以外は入力の下位16bitを出力する。ここで、2E15は、2の15乗を表す。
そして、データ変換部103は、左シフト時上位ビットの符号を維持し、符号ビット以外を飽和処理、すなわち、上位ビット廃棄し、下位ビットに0を埋め込む。また、データ変換部103は、右シフト時、上位ビット(符号ビットより下位のビット)に符号ビットを埋め込む。そして、データ変換部103は、上記のように丸め、シフト、飽和処理によって得られるデータを、レジスタファイル12のレジスタ等と同一のビット幅(例えば、16ビットのレジスタ)で出力する。データ変換部は固定小数点数データの小数点位置を更新する更新回路の一例である。
したがって、プロセッサ10で実行されるコンピュータプログラムがDynamic Fixed Point演算を実行する命令のオペランドにシフト量を指定することで、プロセッサ10は、
プログラム実行中に、固定小数点数の小数点位置を指定されたシフト量だけ更新する。
また、デコードの結果、命令が統計情報取得を指示する命令(統計情報取得機能付き命令という)である場合、統計情報取得部102において、統計情報が取得され統計情報格納部105に格納される。ここで、統計情報は、上記で述べたように、(1)非符号となる最上位ビット位置の分布、(2)非符号となる最下位ビット位置の分布、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値、またはこれらの組み合わせである。
図10に、図9のプロセッサ10の回路ブロックを例示する。プロセッサ10は、制御
ユニット11、レジスタファイル12、ベクトルユニット13、スカラユニット14を含む。制御ユニット11は、プログラムカウンタ111とデコーダ112を含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を含
む。ベクトルユニット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。
また、図10の構成例では、複数の統計情報取得部102からの統計情報を集約する統計情報集約部104が追加されている。また、統計情報格納部105はレジスタファイル12の一部となっている。また、命令用メモリ21は、メモリインターフェース(Memory
I/F)を介して制御ユニット11に接続される。また、データ用メモリ22は、メモリインターフェース(Memory I/F)を介してベクトルユニット13およびスカラユニット14に接続される。
図11Aにベクトルユニット13の詳細を例示する。図では、統計情報集約部104も例示されている。ベクトルユニット13は、ベクトル・レジスタVector Reg0、Vector Reg1のデータをベクトル演算用の演算器131−1で演算する。ベクトル演算用の演算器131−1の演算結果は、積和演算用のアキュムレータ132と、ベクトル演算用の演算器131−2に入力される。
積和演算用のアキュムレータ132は、ベクトル演算用の演算器131−1の演算結果をスカラ加算し、スカラ演算用アキュムレータレジスタ(ACC)に格納する。ベクトル演
算用の演算器131−2は、命令によって指定される演算モードに従って、ベクトル演算用の演算器131−1の演算結果、あるいは、ベクトル演算用アキュムレータレジスタ(Vector ACC)のデータ、あるいは、それらを加算した結果を出力する。
セレクタ101は、ベクトル演算用の演算器131−2の出力結果と、データ用メモリ22からの読み出し結果(Read Data 0,…, Read Data 0)のいずれかを選択し、統計情
報取得部102およびデータ変換部103に入力する。統計情報取得部102で取得された統計情報は、統計情報集約部104に入力される。また、データ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される
図11Bにスカラユニット14の構成を例示する。スカラユニット14は、即値(Immediate)オペランドで得られるデータとスカラ・レジスタScalar Reg1からのデータの一方を選択するセレクタ142と、セレクタ142の選択結果とスカラ・レジスタScalar Reg0のデータを演算するスカラ用の演算器141を有する。スカラ用の演算器141の演算
結果は、メモリインターフェース(Memory I/F)を介してデータ用メモリ22のアドレス(例えば、Addr)にストアされる。また、スカラ用の演算器141の演算結果は、セレクタ101を介して、統計情報取得部102およびデータ変換部103に入力される。
セレクタ101は、スカラ用の演算器141の演算結果、スカラ・レジスタScalar Reg2のデータ、スカラ演算用アキュムレータレジスタ(ACC)のデータ、およびメモリインターフェース(Memory I/F)を介して読み出されたデータ(Read Data)の1つを選択する
。セレクタ101は、選択したデータを、統計情報取得部102およびデータ変換部103に入力する。統計情報取得部102は、セレクタ101から入力されたデータから統計情報を取得し、統計情報集約部104に入力する。
以下、統計情報取得部102のうち、非符号となる最上位ビット位置を取得するものを統計情報取得部102Aと呼ぶことにする。また、統計情報取得部102のうち、非符号となる最下位ビット位置を取得するものを統計情報取得部102Bと呼ぶことにする。また、統計情報集約部104のうち、統計情報取得部102によって取得されてビット位置を計数してビット位置に対するビットの分布を取得するものを統計情報集約部104Aと呼ぶことにする。また、統計情報集約部104のうち、ビット位置の最大値と最小値を取得するための前段階として統計情報取得部102によって取得されてビット位置を論理和演算するものを統計情報集約部104Bと呼ぶことにする。
図13Aに、非符号となる最上位ビット位置を取得する統計情報取得部102Aの処理を例示する。図では、統計情報取得部102Aに含まれる非符号最上位ビット検出器による処理が例示されている。非符号最上位ビット検出器は、例えば、図13Bの真理値表で定義される論理回路である。図13Aの例では、符号ビットが0、「非符号となる最上位ビット位置」として示される位置のビットが1、このビットより上位側のビットがすべて0、かつ、このビットより下位側のビットはbの入力データ(in(40bit))が例示されて
いる。ここで、bは0または1のいずれかである。統計情報取得部102Aは、この入力データを処理し、非符号となる最上位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、39bit目に1を、38bit以下に0を出力する。なお、以下の説明では、プロセッサ10の演算回路のデータは40ビットのデータで例示されるが、プロセッサ10の演算回路のデータが40ビットに限定される訳ではない。
図13Bに非符号最上位ビット検出器の真理値表を例示する。図13Bのように、非符号最上位ビット検出器は、正数に対しては、ビットin[38]から下位ビット方向にビットをサーチして、最初に1になったビット位置の番号を2進数のビットパターンで出力する。また、非符号最上位ビット検出器は、負数に対しては、in[38]から下位ビット方向にビットをサーチして、最初に0になったビット位置の番号を2進数のビットパターンで出力する。また、入力データが全ビット0、または、全ビット1の場合は、非符号最上位ビット検出器は、39bit目に1を、38bit以下に0を出力する。
図14に、非符号となる最上位ビット位置を取得する統計情報取得部102Aのハードウェア回路の構成を例示する。この回路では、符号ビットin[39]と他のビット(in[38]からin[0])との排他論理和(EXOR)が実行される。そうすると、符号ビットin[39]と同じ
値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有するビットによる排他論理和値は1となる。
今、仮にin[38]がin[39]と異なる値であった場合、排他論理和によって出力データのout[38]は1となる。一方、出力データのout[37]には、in[39]とin[37]の排他論理和値がANDゲートを介して入力される。このANDゲートの一方の入力には、in[39]とin[38]の排他論理和値を反転したビット値が入力されるため、in[39]とin[38]とが不一致の場合、in[39]とin[37]の排他論理和値によらず、ANDゲートの出力は0となる。
同様に、出力データのout[36]には、in[39]とin[36]の排他論理和値が上記と同様のANDゲートを介して入力される。このANDゲートの一方の入力には、in[39]とin[38]の排他論
理和値と、in[39]とin[37]との排他論理和値という2つの排他論理和値の論理和値(ORゲートの出力)を反転したビット値が入力される。このため、in[39]とin[38]とが不一致の場合、in[39]とin[36]の排他論理和値によらず、ANDゲートの出力は0となる。以下、同
様に、in[39]とin[i](iは37以下)の排他論理和値によらず、ANDゲートの出力は0とな
る。
一方、仮にin[38]がin[39]と同じ値であった場合、in[39]とin[38]の排他論理和値は0となり、出力データのout[38]は0となる。このため、in[39]とin[37]の排他論理和値が入力されるANDゲートは、in[39]とin[37]の排他論理和値に依存して、1または0を出力す
る。以下、同様に、out[i](iは37以下)が出力されるANDゲートの論理否定付き入力は、in[39]とin[j](jはi+1以上、38以下)の排他的論理和が全て0の場合に0となり、in[39]とin[i](iは37以下)の排他論理和値が1になると、out[i]には1が設定される。そのビット
位置(i)より下位のビットでは、out[i]が出力されるANDゲートの論理否定付き入力が1
となるため、out[i]には0が設定される。したがって、図14の回路によって、非符号となる最上位ビット位置に1が設定され、他のビットが0に設定された出力データout(40bit)が取得される。図13、図14の非符号となる最上位ビット位置を取得する統計情報取得部102Aは、命令実行後の固定小数点数データ中の符号ビットと一致しない最上位のビットの位置を取得する回路の一例である。また、非符号となる最上位ビット位置に1が設定され、他のビットが0に設定された出力データout(40bit)は、符号ビットと一致しない最上位のビットの位置を真値(1)で示すビット列の一例である。
図15Aに、非符号となる最下位ビット位置を取得する統計情報取得部102Bの処理を例示する。図では、統計情報取得部102Bに含まれる非符号最下位ビット検出器による処理が例示されている。非符号最下位ビット検出器は、例えば、図15Bの真理値表で定義される論理回路である。図15Aの例でも、正数での処理が例示される。この例では、符号ビットin[39]=0、「非符号となる最下位ビット位置」として示される位置のビットが1、このビットよりより下位側のビットがすべて0、このビットより上位側のビット(符号ビットを除く)はbの入力データが例示されている。ここで、bは0または1のいずれかであり、入力データは、in(40bit)である。統計情報取得部102Bは、この入力デ
ータを処理し非符号となる最下位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、39bit目に1を、38bit以下に0を出力する。
図15Bに非符号最下位ビット検出器の真理値表を例示する。図15Bのように、非符号最下位ビット検出器は、正数に対しては、in[0]から上位ビット方向にビットをサーチ
して、最初に1になったビット位置の番号を2進数のビットパターンで出力する。また、非符号最下位ビット検出器は、負数に対しては、in[0]から上位ビット方向にビットをサ
ーチして、最初に0になったビット位置の番号を2進数のビットパターンで出力する。また、また、入力データが全ビット0、または、全ビット1の場合は、非符号最下位ビット検出器は、39bit目に1を、38bit以下に0を出力する。
図16に、非符号となる最下位ビット位置を取得する統計情報取得部102Bのハードウェア回路の構成を例示する。符号ビットin[39]が0の場合には、統計情報取得部102Bは、最下位ビットin[0]から上位側に向かって、ビットが1であるビット位置を探索す
ればよい。一方、符号ビットin[39]が1の場合には、データは補数となっているので、統
計情報取得部102Bは、最下位ビットin[0]から上位側に向かって、ビットが0である
ビット位置を探索すればよい。
すなわち、この回路では、符号ビットin[39]と他のビット(in[0]からin[38])との排
他論理和(EXOR)が実行される。そうすると、符号ビットin[39]と同じ値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有するビットによる排他論理和値は1となる。
今、仮にin[0]がin[39]と異なる値であった場合、排他論理和によって出力データのout[0]は1となる。一方、出力データのout[1]には、in[39]とin[1]の排他論理和値がANDゲ
ートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和
値を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が1の場
合、in[39]とin[1]の排他論理和値によらず、ANDゲートの出力は0となる。
同様に、出力データのout[2]には、in[39]とin[2]の排他論理和値が上記と同様のANDゲートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和値と、in[39]とin[1]の排他論理和値という2つの排他論理和値の論理和値(ORゲートの
出力)を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が1
の場合、in[39]とin[2]の排他論理和値によらず、出力データのout[2]に値を出力するANDゲートの出力は0となる。以下、同様に、in[39]とin[i](iは1以上)の排他論理和値によらず、出力データのout[i]に値を出力するANDゲートの出力は0となる。
一方、仮にin[0]がin[39]と同じ値であった場合、排他論理和によって出力データのout[0]は0となるため、in[39]とin[1]の排他論理和値が入力されるANDゲートは、in[39]とin[1]の排他論理和値に依存して、1または0を出力する。以下、同様に、out[i](iは1以上)が出力されるANDゲートの論理否定付き入力は、in[39]とin[j](jは0以上、i-1以下)の排他的論理和が全て0の場合に0となり、in[39]とin[i](iは1以上)の排他論理和値が1になると、out[i]には1が設定される。また、そのビットより上位の出力データout[i]には0が設定される。したがって、図16の回路によって、非符号となる最下位ビット位置に1が設定され、他のビットが0の出力データout(40bit)が取得される。図15、図16の非符号となる最下位ビット位置を取得する統計情報取得部102Bは、符号ビットと一致しない最下位のビットの位置を取得する回路の一例である。また、非符号となる最下位ビット位置に1が設定され、他のビットが0に設定された出力データout(40bit)は、符号ビットと一致しない最下位のビットの位置を真値(1)で示すビット列の一例である。
図17は、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aの処理を例示する図である。図では、40ビットのデータが8個並列に処理されるSIMDデータからビットの分布を取得する処理が例示される。図17では、ハードウェア回路である統計情報集約部104Aの処理が、擬似コードで記述されている。
すなわち、入力データは、8(行)×40(ビット)の配列データで例示されている。また、各行の40ビットの入力データは、非符号となる最上位ビット位置(図14の統計情報取得部102Aの出力)または非符号となる最下位ビット位置(図16の統計情報取得部102Bの出力)である。この処理では、40ビットの出力データoutについて、ま
ず、全ビットがクリアされる。次に、入力データの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図13、図15とは異なり、図17の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図17の例では3ビット)の整数である。なお、図17では、SIMDデータ数(並列
処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
図18に、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得(SIMDデータ数−1))がbit population count演算によって、8個の統計情報のiビット目(i=0から39)における1の個数がそれぞれカウントされる。入力データは、統計情報取得部102A(図13、図14)によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部104Aは、統計情報取得部102Aによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上位ビット
位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0から
out39にそれぞれ格納する。
また、入力データは、統計情報取得部102B(図15、図16)による非符号となる最下位ビット位置とすることもできる。統計情報集約部104Aは、統計情報取得部102Bによって取得されたSIMDデータ個数分の非符号となる最下位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最下位ビット位置の発生回数を計数する
。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する
。すなわち、統計情報集約部104Aは、非符号となる最上位ビット位置または非符号となる最下位ビット位置のいずれをも処理可能である。
また、図18でセレクタ(SEL)は、bit population count演算器(Σ)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)に選択されたデータが、出力データout0からout39に出力される。したがって、統計情報取得部102がスカ
ラユニット14で取得したデータは、一回のスカラユニット14の演算においては、加算されることなくそのまま出力データout0からout39に出力される。out0からout39は、統計情報格納部105に引き渡すデータ(図21の105A、図22の105Bの入力データin0からin39参照)である。図17、図18の統計情報集約部104Aは符号ビットと一
致しない最上位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例である。図17、図18の統計情報集約部104Aは符号ビットと一致しない最下位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例でもある。
図19は、統計情報取得部102が取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bの処理を例示する図である。図19においても、図17と同様、40ビットのデータが8個並列に処理されるSIMDデータを処理が例示される。図19では、ハードウェア回路である統計情報集約部104Bの処理が、擬似コードで記述されている。
この処理では、40ビットの出力データout[i](i=0,…,39)には、入力データの配列in[j][i]の各列をすべての行(j=0,…,7)について論理和演算(OR演算)した結果が入力
される。したがって、図19の擬似コードでは、図17とは異なり、出力データ(配列要素)out[i](i=0,…,39)はビット列である。以上の処理の結果、出力データout[i](i=0,…,39)では、out[38]から下位ビット方向に向かって最初に1となるビット位置が最大ビッ
ト位置である。また、out[0]から上位ビット方向に向かって最初に1となるビット位置が最小ビット位置である。
図20に、統計情報取得部102が取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得SIMDデータ数−1)がORゲート(40ビット)によってOR演算される。また、図18でセレクタ(SEL)は、論理和演算(OR)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)されたデータが、出力データoutに出力される。したがって、統計情報取得部102がスカラユニット14で
取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105に引き渡すデータである。
論理和演算によってビット位置を集約する統計情報集約部104Bは、符号ビットと一致しない最上位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する回路の一例である。論理和演算によってビット位置を集約する統計情報集約部104Bは、符号ビットと一致しない最下位のビットの位置を真値で
示すビット列を複数の固定小数点数データについて論理和演算によって累積する回路の一例でもある。
図21に、統計情報格納部105(図10参照)の具体例として、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105Aの構成を例示する。図で、in39からin0は、図18のout39からout0に相当する統計情報集約部104からの統計情報を示す。また、sr39からsr0は、統計情報を格納するレジスタ値である。プロセ
ッサ10は、書き込み命令によってセレクタSELを介して、レジスタsr39からsr0のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロセッサ10は、デコーダからのリセット信号によってレジスタsr39からsr0をリセットしても良い。プロセッサ10は、
統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。統計情報集約部104A(図17、図18)と、統計情報集約部
104Aからの統計情報を専用レジスタに格納する統計情報格納部105A(図21)の組み合わせは符号ビットと一致しない最上位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例である。統計情報集約部104A(図17、図18)と、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105A(図21)の組み合わせは符号ビットと一致しない最下位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例でもある。また、プロセッサ10は、レジスタ(sr39からsr0)のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
図22は、統計情報集約部104の変形例であり、統計情報の格納先がデコーダ112からのインデックスで指定される回路の構成例である。図では、例えば、sr[j][i](j=0,
…,k, i=0,…,39)の領域が確保され、indexによって、レジスタファイルの行jが指定される。
プロセッサ10は、書き込み命令によってセレクタSELを介して、indexによって指定されるレジスタファイルの行jの1つあるいは複数のレジスタに初期値を書き込む。ただし、プロセッサ10はデコーダ112からの制御信号により、indexによって指定されるレジ
スタファイルの行jをリセットしても良い。そして、プロセッサ10は、in39からin0の統計情報を加算器で蓄積し、indexによって指定されるレジスタファイルの行jに格納する。また、プロセッサ10は、デコーダ112からの制御信号により、indexによって指定さ
れるレジスタファイルの行jから統計情報を読み出す。また、プロセッサ10は、indexによって指定されるレジスタファイルの行jのいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
図23は、図19、図20で例示した統計情報集約部104Bによって論理和演算されたビット位置の統計情報を蓄積するとともに蓄積された統計情報のビット位置の最大値を読み出す統計情報格納部105Cのハードウェア回路の構成を例示する図である。統計情報格納部105Cは、統計情報集約部104Bによって論理和演算されたビット位置の統計情報を蓄積するレジスタ(sr)を有している。プロセッサ10は、書き込み命令(write)によってセレクタ(SEL)を介してレジスタ(sr)に初期値を書き込み可能である
。ただし、プロセッサ10は、リセット信号によってレジスタ(sr)をリセットできるようにしてもよい。
また、統計情報格納部105Cは、統計情報集約部104Bの論理和演算結果(in)と、すでにレジスタ(sr)に蓄積された統計情報の論理和演算を実行し、セレクタ(SEL)を介してレジスタ(sr)に論理和演算の結果を蓄積する。
また、プロセッサ10は、読み出し命令によってセレクタ(SEL)を介してレジスタ(sr)の値を読み出し、読み出し命令で指定されたデータ用メモリあるいは読み出し命令で指定された汎用レジスタに保存する。また、統計情報格納部105Cは、Priority Encoder(MSB優先)を有してもよい。Priority Encoder(MSB優先)は、レジスタ(sr)に蓄積されたビット列中の最上位のビット1の位置(−1から38)を2進数で出力する。例えば、入力データinとして全ビット0が入力されると、Priority Encoder(MSB優先)は、”111111”(−1)を出力する。また、入力データinとしてin0=1、他のビットがすべて0のデータが入力されると、Priority Encoder(MSB優先)は、”000000”(0)を出力する。ま
た、入力データinとしてin0=x(0または1)、in1=1、他のビットがすべて0のデータが入力されると、Priority Encoder(MSB優先)は、”000001”(1)を出力する。同様に、入
力データinとしてin0〜in37がx(0または1)、in38=1のデータが入力されると、Priority
Encoder(MSB優先)は、”100110”(38)を出力する。プロセッサ10は、Priority Encoder(MSB優先)を介して、統計情報集約部104Bによって論理和演算されたビット位置の統計情報からビット位置の最大値を2進数値で取得できる。図19、図20の論理和演算によってビット位置を集約する統計情報集約部104B(図19、図20)と統計情報格納部105Cの組み合わせは、符号ビットと一致しない最上位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積し、累積したビット列中の最上位の真値の位置を取得する回路の一例である。
図24は、図19、図20で例示した統計情報集約部104Bによって論理和演算されたビット位置の統計情報を蓄積するとともに蓄積された統計情報のビット位置の最小値を読み出す統計情報格納部105Dのハードウェア回路の構成を例示する図である。統計情報格納部105Dは、統計情報格納部105CのPriority Encoder(MSB優先)に代えてPriority Encoder(LSB優先)を有している。Priority Encoder(LSB優先)以外の統計情報格納
部105Dの構成は、統計情報格納部105Cと同様であるから説明を省略する。
Priority Encoder(MSB優先)は、レジスタ(sr)に蓄積されたビット列中の最下位のビ
ット1の位置(−1から38)を2進数で出力する。例えば、入力データinとして全ビット0が入力されると、Priority Encoder(LSB優先)は、”111111”(−1)を出力する。
また、入力データinとしてin0=1、他のビットがx(0または1)のデータが入力されると、Priority Encoder(LSB優先)は、”000000”(0)を出力する。また、入力データinとし
てin0=0、in1=1、他のビット(in2からin38)がx(0または1)のデータが入力されると、Priority Encoder(LSB優先)は、”000001”(1)を出力する。同様に、入力データinと
してin0〜in37が0、in38=1のデータが入力されると、Priority Encoder(LSB優先)は、”100110”(38)を出力する。プロセッサ10は、Priority Encoder(LSB優先)を介して、統計情報集約部104Bによって論理和演算されたビット位置の統計情報からビット位置の最小値を2進数値で取得できる。論理和演算によってビット位置を集約する統計情報集約部104B(図19、図20)と統計情報格納部105D(図24)の組み合わせは、符号ビットと一致しない最下位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積し、累積したビット列中の最下位の真値の位置を取得する回路の一例である。
図25は、図23の統計情報格納部105Cのレジスタ(sr)をレジスタファイルとした変形例の統計情報格納部105Eの構成を例示する図である。また、図26は、図24の統計情報格納部105Dのレジスタ(sr)をレジスタファイルとする変形例の統計情報格納部105Fの構成を例示する図である。図25、図26では、例えば、sr0,sr1,…,srj,…の領域が確保され、indexによって、レジスタファイルの行jが指定される。プロセ
ッサ10は、デコーダ112からの制御信号により、あるいは、indexによって指定され
るレジスタファイルの行jへの初期値の設定、統計情報(入力データin)の蓄積、行jから
の統計情報の読み出し等を実行する。
<統計情報取得機能付き命令>
以下、統計情報取得機能付き命令の構成を例示する。ここでは、命令の構成方法として、方法1、方法2を例示する。
(方法1)方法1では、プロセッサ10の命令セットに、統計情報を取得する演算命令
、ロード命令などが個別に追加される。以下の命令の構成は例示であり、プロセッサ10が下記命令に限定される訳ではない。
[vmul_s命令]
命令の構成:vmul_s vs, vt, vd, imm
vmul_s命令は、プロセッサ10がベクトル・レジスタ vs と vt を乗算し imm ビットシ
フトし、丸め・飽和を行なって ベクトル・レジスタvd に格納するための命令である。プロセッサ10は、乗算結果のシフト前の統計情報を取得し、統計情報レジスタに累積する。統計情報レジスタは、例えば、図21のsr0からsr39、図22の統計情報レジスタファ
イルのsrj_i(j=0,1,.., i=0,1,…)、図23、図24のレジスタ(sr)、図25、図26
の統計情報レジスタファイルのレジスタsr0,sr1,…等である。統計情報レジスタについては以下同様である。
なお、プロセッサ10が内部のレジスタとデータ用メモリ22との間で統計情報を授受するためのread / write, load / store 命令も別途用意する。また、プロセッサ10が
内部のレジスタをリセットするためのリセット命令を別途用意してもよい。以下、同様である。
[vld_s命令]
命令の構成:vld_s ss, rt, rd
vld_s命令は、プロセッサ10がアドレス・レジスタ rs とrt を加算したアドレスからベクトルデータをロードして、ベクトル・レジスタ rd に格納するための命令である。プロセッサ10は、ロードしたデータの統計情報を取得し統計情報レジスタに累積する。
[read_acc_s命令]
命令の構成:read_acc_s, rd, imm
read_acc_s命令は、プロセッサ10がアキュムレータ・レジスタ(40bit)のデータに対し
て、imm ビットシフトし、丸め・飽和を行なってスカラ・レジスタ rd に格納するための命令である。プロセッサ10は、アキュムレータレジスタの統計情報を取得し統計情報レジスタに累積する。
(方法1の変形)上記方法1に加え、命令のオペランドに、統計情報を格納するレジス
タ・インデックス(s)を追加し、統計情報の格納先が指定できるようにしてもよい。以
下、命令の構成を例示する。この命令のインデックス(s)は、図22、図25,図26
等の統計情報レジスタファイルのindexを指定する。
vmul_s vs, vt, vd, imm, s
vld_s ss, st, vd, s
read_acc sd, imm, s
(方法2)図27に方法2による命令フォーマットを例示する。命令フォーマットを拡張し、統計情報を取得するか否かを指定するビットを追加するようにしてもよい。例えば、全命令について統計情報取得機能を追加してもよい。図25に、拡張された命令フォーマットを例示する。図のように、FLG=1は、統計情報の取得を指定する。一方、FLG=0は、統計情報の取得を指定せず、従来と同じ命令を示す。
(方法2の変形)図28に方法2の変形による命令フォーマットを例示する。命令フォーマットを拡張し、統計情報を格納するレジスタ・インデックスを指定するようにしてもよい。図でIDXは、レジスタ・インデックス(図22、図25,図26等のindex)を示す。ただし、IDX=000 の場合には、プロセッサ10は統計情報を取得しない。図28の命令フォーマットをデコードし、レジスタ・インデックスIDXを取得する図9のデコーダ11
2は、統計情報の格納先の指定を取得するデコーダの一例である。
情報処理装置1が以上のような統計情報取得機能付き命令を実行するため、統計情報取得機能付き命令を専用サブルーチンで実行するようにすればよい。コンパイラは、専用サブルーチンをコンパイルするときに、統計情報取得機能付き命令を実行形式に組み込めばよい。また、専用サブルーチンは、アセンブリ言語で作成され、統計上取得機能付き命令の実行が指定されるようにしてもよい。情報処理装置1が深層学習を実行するためのコンピュータプログラムにおいて、以上のような専用サブルーチンが呼び出されるようにすればよい。
<実行手順>
図29に、本実施形態の情報処理装置1が深層学習を実行する場合の各層の処理の詳細を例示する。図29の処理を実行する情報処理装置1は1以上の層での演算により深層学習を実行する情報処理装置の一例である。図では、1層目の畳み込み層(Conv_1)、プーリング層(Pool_1)、および全結合層2(fc2)が例示されている。この例でも、比較例の図6
と同様、1層目の畳み込み層(Conv_1)において、入力データini=(x0,...,xn)と、重み(Wij)との間で、畳み込み演算が実行され、z0,...,zj,...等が計算される。また、z0,...,zj,...等に対して、活性化関数が演算され、u0,...,uj,...等が計算される。情報処理装置1は、この1層目の畳み込み層(Conv_1)での変数z0,...,zj,...等での統計
情報を内部の統計情報レジスタまたはレジスタ・インデックスで指定される統計情報レジスタファイルに蓄積する。なお、統計情報レジスタあるいはレジスタファイルが不足する場合は、各層の演算終了後に統計情報をメモリに退避し、次回の演算開始前に統計情報を復帰させる。また、情報処理装置1は、同様に、この1層目の畳み込み層(Conv_1)での変数u0,...,uj,...等での統計情報を内部のレジスタまたはレジスタ・インデックスで指定
される統計情報レジスタファイルに蓄積する。本実施形態の統計情報は、比較例のようなオーバーフロー回数とは異なり、上記で説明した(1)非符号となる最上位ビット位置の分布、(2)非符号となる最下位ビット位置の分布、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値、または、これらのいずれか2以上の組み合わせである。
1層目の畳み込み層(Conv_1)での演算結果は、1層目のプーリング層(Pool_1)から、さらに上位層へ伝播される。このとき、情報処理装置1は、2層目以上の層でも同様の演算と、統計情報の蓄積を実行する。そして、情報処理装置1は、全結合層2(fc2)において
、得られた演算結果と、正解データTiとの差分値からエラーの変数δ0(7),...,δj(7),...を算出する。そして、情報処理装置1は、エラーの変数δ0(7),...,δj(7),...を基に、逆方向の伝播処理を実行する。すなわち、情報処理装置1は、下位の階層(例えば、結合層1(fc1))の出力でのエラーの変数δ0(6)
...,δj(6),...δn(6)と重みの変数Wijの次の重みへの差分値ΔWijを算出する。このとき、情報処理装置1は、エラー変数δ0(7),...,δj(7),...およびエラーの変数δ0(6),...,δj(6),...,δn(6)での統計情報を1層目の畳み込み層(Conv_1)と同様に蓄積する。また、情報処理装置1は、差分値ΔWijでの統計情報も蓄積する。また、情報処理装置1は、重みの変数Wijでの統計情報を蓄積する。
そして、情報処理装置1は、全結合層1(fc1)から1層目の畳み込み層(Conv_1)まで、
エラーを逆方法に伝播させながら、重みの差分を計算する。情報処理装置1は、以上のような順伝播と逆伝播をk組の入力データを用いて、k回繰り返す。情報処理装置1は、このようなk回のミニバッチ終了後、各変数の統計情報を基に、各変数の固定小数点位置を更新する。
図30に、本実施形態の情報処理装置1による学習処理のフローチャートを例示する。この処理では、情報処理装置1は、初期小数点位置を決定する(WE1)。情報処理装置1は、過去の実験値、実績値、あるいは、ユーザ指定により各変数の初期小数点位置を決定すればよい。
そして、情報処理装置1は、回数kを0に初期化する。また、情報処理装置1は、プログラム内の統計情報を格納する変数を初期化する(WE2)。そして、情報処理装置1は学習終了の条件が充足されたか否かを判定する(WE3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下となるか、または、学習回数が規定の最大値に達した場合
である。
学習終了の条件が充足されない場合、情報処理装置1は、次のミニバッチを実行する。このとき、情報処理装置1は、各レイヤの各変数の統計情報を統計情報レジスタあるいは統計情報レジスタファイルに累積する。統計情報を累積は、上記で説明したように、プロセッサ10のハードウェアで実行される。そして、情報処理装置1は、変数kをカウントアップする(WE4)。
そして、情報処理装置1は、回数kが更新間隔に達したか否かを判定する(WE5)。回数kが更新間隔に達していない場合、情報処理装置1は、WE3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置1は、各種の統計情報が蓄積された統計情報を統計情報レジスタあるいは統計情報レジスタファイルあるいは統計情報をメモリに退避した領域から統計情報を読み出す。そして、情報処理装置1は、読み出された統計情報を基に各レイヤの各変数の小数点位置を更新する(WE6)。
このとき、情報処理装置1は、例えば、飽和するデータとアンダーフローするデータの全体のデータ数に対する比率が目標条件を充足するように、小数点位置を決定すればよい。また、情報処理装置1は、飽和するデータの全体のデータに対する比率とアンダーフローするデータの全体のデータに対する比率の両方が目標条件を充足することが困難である場合、一方を優先してもよい。また、情報処理装置1は、飽和が発生しない上限のビット位置と、有効なデータが存在する下限のビット位置の平均を、固定小数点数で表現可能な範囲の中央を位置づけて、小数点位置を設定してもよい。さらに、情報処理装置1は、回数kを0に初期化し、さらに統計情報を格納するレジスタをリセットする。そして、情報処理装置1は、C3の処理に戻る。
WE4で各レイヤの各変数の統計情報を累積することと、WE6で各種の統計情報が蓄積されたレジスタあるいはレジスタファイルから統計情報を読み出すことは、1以上の層の少なくとも1つの層において前記演算の命令を含む命令実行時の固定小数点数データ中のビットの分布についての統計情報を取得することの一例である。また、WE6で、読み出された統計情報を基に各レイヤの各変数の小数点位置を更新することは、ビットの分布についての統計情報に基づいて固定小数点数データの小数点位置を更新することの一例である。
図31に、データが固定小数点数の範囲に収まらない場合の小数点位置更新例を示す。図は、例えば、非符号となる最上位ビット位置の分布である。今、固定小数点数がQ5.
10(整数部5桁、小数点以下10桁)で記述され、飽和される領域A1、表現可能な領域A2、および、アンダーフローが発生する領域A3が形成されているとする。この例では、飽和される領域A1とアンダーフローが発生する領域A3は、白抜きの度数分布で例示されている。また、表現可能な領域は斜線のハッチングパターンで示されている。また、この例では、アンダーフローが発生する領域の度数分布が飽和する領域の度数分布より高く、バランスが悪い。一方、小数点位置を2ビット下側に移動し、Q3.12(整数部3桁、小数点以下12桁)としても、飽和する領域のデータ数を全データ数で除算した値は、目標の基準値未満となる。そこで、情報処理装置1は、小数点位置をQ5.10からQ3.12設定しなおし、深層学習を継続すればよい。
図32および図33に、データが固定小数点数の範囲に収まる場合の小数点位置更新例を示す。図32も図31と同様、例えば、非符号となる最上位ビット位置の分布である。また、図33は非符号となる最下位ビットの分布である。図32では、現在のビット精度(Q3.12フォーマット)で表現可能な範囲に当該変数のデータが収まっている。しかしながら、図33では-1ビット目まで有効な値があり、これらの値が丸められていることがわかる。そこで、情報処理装置1は、最上位ビット位置分布でデータ個数が1以上とな
る最大値の11ビット目と、最下位ビットの分布でデータ個数が1以上となる最小値の-1ビ
ット目までが、表現可能な範囲の中心となるよう、小数点位置をQ3.12からQ1.14設定しなおし、深層学習を継続すればよい。
<実施形態の効果>
情報処理装置1は、深層学習のミニバッチ実行時、各レイヤの各変数の統計情報をレジスタあるいはレジスタファイルに累積する。そして、情報処理装置1は、蓄積された統計情報を基に各レイヤの各変数の小数点位置を更新することができる。すなわち、プロセッサ10が、ビット分布の統計上情報を取得する。ここで、統計情報は、命令実行時の(1)非符号となる最上位ビット位置の分布、(2)非符号となる最下位ビット位置の分布、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値、またはこれらの組み合わせ等である。したがって、情報処理装置1が深層学習実行時に、データの統計情報取得のための深層学習プログラム中のオーバーヘッドがなくなるため、実用的な時間で動的固定小数点演算を実現可能となる。
すなわち、本実施形態では、情報処理装置1のプロセッサ10が統計情報取得機能付き命令を実行するとともに、演算結果をビットシフトし、丸め・飽和を行なってレジスタに格納する命令を実行する。したがって、情報処理装置1はビット分布を示す統計情報を取得するオーバーヘッドを少なくできる。また、ビット分布を示す統計情報から直ちに適正なビットシフト、すなわち、小数点位置を決定できる。つまり、情報処理装置1のように、小数点位置を1ビットずつずらして適正な小数点位置を試行し、次の演算で結果を確認するという手順ではなく、ビット分布を示す統計情報から、直ちに小数点位置を決定できる(図31、図32)。したがって、情報処理装置1は、比較例のような小数点位置が不適切な状態で学習処理が繰り返される恐れがすくない。また、情報処理装置1は、学習結果の精度劣化につながり、深層学習の収束が遅くなる恐れが少ない。
また、情報処理装置1は、深層学習を固定小数点数で精度良く実行できるので、データ転送量や演算器の回路規模が削減できる。その結果として、情報処理装置1は、消費電力を削減できる。削減できる回路規模は以下のように試算できる。例として32bit浮動小数
点数演算を実行する回路を、16bit固定小数点数演算を実行する回路に限定した場合、デ
ータ量( メモリ、および、データ転送量)が半減される。また、演算回路規模としては
、 積和演算での回路規模は約半分となる(FPGAで試算)。
また、プロセッサ10は、統計情報取得部102Aによって命令実行後の固定小数点数
データ中の符号ビットと一致しない最上位のビットの位置を取得できる。また、プロセッサ10は、統計情報集約部104Aによって符号ビットと一致しない最上位のビットの位置を複数の固定小数点数データに対して累積して計数することができる。また、プロセッサ10は、統計情報集約部104Bと、統計情報格納部105C(あるいは105E)によって、符号ビットと一致しない最上位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する。そして、プロセッサ10は、累積したビット列中の最上位の真値の位置を取得することができる。
また、プロセッサ10は、統計情報取得部102Bによって命令実行後の固定小数点数データ中の符号ビットと一致しない最下位のビットの位置を取得できる。また、プロセッサ10は、統計情報集約部104Aによって符号ビットと一致しない最下位のビットの位置を複数の固定小数点数データに対して累積して計数することができる。また、プロセッサ10は、統計情報集約部104Bと、統計情報格納部105D(あるいは105F)によって、符号ビットと一致しない最下位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する。そして、プロセッサ10は、累積したビット列中の最下位の真値の位置を取得することができる。以上のような構成により、プロセッサ10は、上記統計情報を取得できる。
<本実施形態の情報処理装置について>
情報処理装置1は、プロセッサ10、命令用メモリ21、およびデータ用メモリ22を備える。情報処理装置1は、命令用メモリ21に実行可能に展開されたコンピュータプログラムにしたがって深層学習を実行する。プロセッサ10は、Central Processing Unit
(CPU)、Microprocessor(MPU)とも呼ばれる。プロセッサ10は、は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のプロセッサ10がマルチコア構成を有していても良い。深層学習を実行する情報処理装置1の少なくとも一部の処理は、プロセッサ10以外の装置、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit(GPU)、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、深層学習を実行する情報処理装置1の少なくとも一部の処理は、集積回路(IC)、その他のディジタル回路であっても良い。また、深層学習を実行する情報処理装置1の少なくとも一部には、アナログ回路が含まれても良い。集積回路は、LSI,Application Specific Integrated Circuit(ASIC),プログラマブルロジックデバイス(P
LD)を含む。PLDは、例えば、Field-Programmable Gate Array(FPGA)を含む。上記
各部は、プロセッサと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ(MCU)、SoC(System-on-a-chip)、システムLSI、チップセットなどと呼ばれる。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compact Disc(CD)−Read Only Memory(ROM)、CD−Recordable(R)、Digital Versatile Disk(DVD)、ブルーレイディスク、Digital Audio Tape(DAT)、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定され
た記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、Solid State Drive(SSD)は、コンピュータ等から取り外し可能な記録媒体としても
、コンピュータ等に固定された記録媒体としても利用可能である。
1 情報処理装置
10 プロセッサ
11 制御ユニット
12 レジスタファイル
13 ベクトルユニット
14 スカラユニット
21 命令用メモリ
22 データ用メモリ
101 セレクタ
102 統計情報取得部
103 データ変換部
104 統計情報集約部
105 統計情報格納部
111 プログラムカウンタ
112 デコーダ
131 ベクトル演算用の演算器
132 積和演算用のアキュムレータ
141 スカラ用の演算器

Claims (9)

  1. 演算回路と、
    前記演算回路による演算結果である複数の第1固定小数点数データ各々についての非符号となる最上位ビットの位置または非符号となる最下位ビットの位置の分布についての統計情報を取得する取得回路と、
    前記演算回路による演算結果である第2固定小数点数データをレジスタに格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定する特定回路と、を備える演算処理装置。
  2. 前記特定回路は、前記統計情報に基づいて、前記複数の第1固定小数点数データの数に対する前記複数の第1固定小数点数データのうち前記ビットレンジから外れる前記非符号となる最上位ビットまたは前記非符号となる最下位ビットを有するデータの数の割合を求め、前記割合が閾値未満になるように前記ビットレンジを特定する、請求項1に記載の演算処理装置。
  3. 前記統計情報は、前記非符号となる最上位ビットの前記位置の前記分布を示す情報であり、
    前記特定回路は、前記統計情報に基づいて、前記非符号となる最上位ビットの前記位置の前記分布の最大値と前記非符号となる最上位ビットの前記位置の前記分布の最小値との中心に前記ビットレンジの中心が一致するように前記ビットレンジを特定する、請求項1に記載の演算処理装置。
  4. 前記取得回路は、前記非符号となる最上位ビットの前記位置を真値で示すビット列を前記複数の第1固定小数点数データについて論理和演算によって累積し、累積したビット列中の最上位の真値の位置を取得することを特徴とする請求項1から3のいずれか1項に記載の演算処理装置。
  5. 前記取得回路は、前記非符号となる最下位ビットの前記位置を真値で示すビット列を前記複数の第1固定小数点数データについて論理和演算によって累積し、累積したビット列中の最下位の真値の位置を取得することを特徴とする請求項1から3のいずれか1項に記
    載の演算処理装置。
  6. 前記演算回路に対する演算命令から、前記第2固定小数点数データを前記レジスタに格納する際にビット幅を制限するために前記統計情報に基づいて特定された前記ビットレンジを指定するための情報を取得するデコーダをさらに備える請求項1から5のいずれか1項に記載の演算処理装置。
  7. 前記演算処理装置は、ニューラルネットワークの複数の層の演算を行い、
    前記取得回路は、前記複数の層のうち指定された特定の層に対し、選択的に前記統計情報を取得することを特徴とする請求項1から6のいずれか1項に記載の演算処理装置。
  8. 深層学習を実行するコンピュータが、
    所定の演算の結果である複数の第1固定小数点数データ各々についての非符号となる最上位ビットの位置または非符号となる最下位ビットの位置の分布についての統計情報を取得することと、
    前記所定の演算の結果である第2固定小数点数データをレジスタに格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定することと、を実行する情報処理方法。
  9. 深層学習をコンピュータに実行させるためのプログラムであって、
    所定の演算の結果である複数の第1固定小数点数データ各々についての非符号となる最上位ビットの位置または非符号となる最下位ビットの位置の分布についての統計情報を取得することと、
    前記演算の結果である第2固定小数点数データをレジスタに格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定することと、を実行させるためのプログラム。
JP2017014780A 2017-01-30 2017-01-30 演算処理装置、方法、およびプログラム Active JP6540725B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017014780A JP6540725B2 (ja) 2017-01-30 2017-01-30 演算処理装置、方法、およびプログラム
PCT/JP2018/000988 WO2018139266A1 (ja) 2017-01-30 2018-01-16 演算処理装置、情報処理装置、方法、およびプログラム
EP18744586.1A EP3575952B1 (en) 2017-01-30 2018-01-16 Arithmetic processing device, information processing device, method and program
US16/515,110 US11137981B2 (en) 2017-01-30 2019-07-18 Operation processing device, information processing device, and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017014780A JP6540725B2 (ja) 2017-01-30 2017-01-30 演算処理装置、方法、およびプログラム

Publications (3)

Publication Number Publication Date
JP2018124681A JP2018124681A (ja) 2018-08-09
JP2018124681A5 JP2018124681A5 (ja) 2019-01-31
JP6540725B2 true JP6540725B2 (ja) 2019-07-10

Family

ID=62979297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017014780A Active JP6540725B2 (ja) 2017-01-30 2017-01-30 演算処理装置、方法、およびプログラム

Country Status (4)

Country Link
US (1) US11137981B2 (ja)
EP (1) EP3575952B1 (ja)
JP (1) JP6540725B2 (ja)
WO (1) WO2018139266A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2022003855A1 (ja) * 2020-07-01 2022-01-06

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3617959B1 (en) * 2018-02-13 2021-08-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP6540841B1 (ja) * 2018-02-27 2019-07-10 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US11636319B2 (en) * 2018-08-22 2023-04-25 Intel Corporation Iterative normalization for machine learning applications
CN112740233B (zh) * 2018-09-27 2024-08-23 株式会社索思未来 网络量化方法、推理方法以及网络量化装置
KR20200043169A (ko) * 2018-10-17 2020-04-27 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 방법 및 장치
WO2020084723A1 (ja) * 2018-10-24 2020-04-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7137067B2 (ja) * 2018-10-25 2022-09-14 富士通株式会社 演算処理装置、学習プログラム及び学習方法
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置
JP2020098469A (ja) 2018-12-18 2020-06-25 富士通株式会社 演算処理装置および演算処理装置の制御方法
KR20200086581A (ko) 2019-01-09 2020-07-17 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치
JP2020135549A (ja) 2019-02-21 2020-08-31 富士通株式会社 演算処理装置、情報処理装置および演算処理方法
JP7255234B2 (ja) * 2019-02-26 2023-04-11 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP7188237B2 (ja) * 2019-03-29 2022-12-13 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
CN113924610B (zh) * 2019-06-07 2024-02-20 日本电信电话株式会社 秘密共轭梯度法计算系统及方法、秘密计算装置、共轭梯度法计算装置及方法、以及记录介质
JP7272121B2 (ja) 2019-06-07 2023-05-12 富士通株式会社 演算処理装置、制御方法、及び制御プログラム
JP7243498B2 (ja) 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
JP2021044783A (ja) 2019-09-13 2021-03-18 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
JP7354736B2 (ja) 2019-09-30 2023-10-03 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
US20210150306A1 (en) * 2019-11-14 2021-05-20 Qualcomm Incorporated Phase selective convolution with dynamic weight selection
JP7371499B2 (ja) 2020-01-07 2023-10-31 富士通株式会社 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
JP2021111081A (ja) 2020-01-09 2021-08-02 富士通株式会社 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法
GB2591106B (en) * 2020-01-15 2022-02-23 Graphcore Ltd Control of data transfer between processors
JP2021124849A (ja) 2020-02-04 2021-08-30 富士通株式会社 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
JP7367595B2 (ja) * 2020-04-07 2023-10-24 富士通株式会社 情報処理装置及び情報処理方法
JP7524667B2 (ja) 2020-08-19 2024-07-30 富士通株式会社 情報処理装置、機械学習方法及び機械学習プログラム
JP2022094508A (ja) 2020-12-15 2022-06-27 富士通株式会社 演算処理装置、演算処理方法および演算処理プログラム
WO2022145016A1 (ja) * 2020-12-28 2022-07-07 日本電信電話株式会社 データ処理装置、データ処理方法、及びデータ処理プログラム
WO2022249316A1 (ja) * 2021-05-26 2022-12-01 日本電信電話株式会社 物体検出装置、物体検出方法、及び物体検出プログラム
JP2023003333A (ja) 2021-06-23 2023-01-11 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置
WO2024004221A1 (ja) * 2022-07-01 2024-01-04 日本電信電話株式会社 演算処理装置、演算処理方法、及び演算処理プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784975A (ja) * 1993-09-10 1995-03-31 Hitachi Ltd 情報処理装置および学習演算処理方法
JP3252954B2 (ja) * 1997-04-01 2002-02-04 松下電器産業株式会社 乗算方法および乗算回路
JP2006048590A (ja) * 2004-08-09 2006-02-16 Matsushita Electric Ind Co Ltd 正規化処理装置及び正規化処理方法
JP2006155102A (ja) * 2004-11-26 2006-06-15 Asahi Kasei Microsystems Kk 演算処理装置
JP2010112878A (ja) 2008-11-07 2010-05-20 Mitsui Eng & Shipbuild Co Ltd 非揮発性有機ハロゲン化合物の検出方法
JP2012203566A (ja) 2011-03-24 2012-10-22 Seiko Epson Corp 状態推定装置、電子機器及びプログラム
US20150120627A1 (en) * 2013-10-29 2015-04-30 Qualcomm Incorporated Causal saliency time inference
JP6381344B2 (ja) 2014-07-31 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
JP2016062404A (ja) 2014-09-19 2016-04-25 サンケン電気株式会社 演算処理方法及び演算処理装置
US20170061279A1 (en) * 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US20180107451A1 (en) * 2016-10-14 2018-04-19 International Business Machines Corporation Automatic scaling for fixed point implementation of deep neural networks
CN107688849B (zh) * 2017-07-28 2021-04-13 赛灵思电子科技(北京)有限公司 一种动态策略定点化训练方法及装置
KR20190044878A (ko) * 2017-10-23 2019-05-02 삼성전자주식회사 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20200043169A (ko) * 2018-10-17 2020-04-27 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 방법 및 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2022003855A1 (ja) * 2020-07-01 2022-01-06
WO2022003855A1 (ja) * 2020-07-01 2022-01-06 日本電信電話株式会社 データ処理装置およびデータ処理方法
JP7491379B2 (ja) 2020-07-01 2024-05-28 日本電信電話株式会社 データ処理装置およびデータ処理方法

Also Published As

Publication number Publication date
EP3575952B1 (en) 2021-05-26
EP3575952A1 (en) 2019-12-04
WO2018139266A1 (ja) 2018-08-02
EP3575952A4 (en) 2020-01-08
US11137981B2 (en) 2021-10-05
US20190339939A1 (en) 2019-11-07
JP2018124681A (ja) 2018-08-09

Similar Documents

Publication Publication Date Title
JP6540725B2 (ja) 演算処理装置、方法、およびプログラム
US11043962B2 (en) Information processing apparatus, information processing method, and recording medium
JP6540770B2 (ja) 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
CN108133270B (zh) 卷积神经网络加速方法及装置
JP6540841B1 (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
US11222254B2 (en) Optimized neuron circuit, and architecture and method for executing neural networks
US11003736B2 (en) Reduced dot product computation circuit
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US20190095175A1 (en) Arithmetic processing device and arithmetic processing method
JPH0863353A (ja) 掛け算累算命令を使用したデータ処理
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
US11341400B1 (en) Systems and methods for high-throughput computations in a deep neural network
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
JP7354736B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム
US11551087B2 (en) Information processor, information processing method, and storage medium
US11593071B2 (en) Arithmetic processing apparatus, control method of arithmetic processing apparatus, and non-transitory computer-readable storage medium for storing program
US11604973B1 (en) Replication of neural network layers
JP2020067897A (ja) 演算処理装置、学習プログラム及び学習方法
JP7243498B2 (ja) 演算処理装置、制御プログラム、及び制御方法
CN111723917B (zh) 运算方法、装置及相关产品
WO2019127480A1 (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
JP7120320B2 (ja) 演算処理装置および演算処理装置の制御方法
CN110097181B (zh) 用于执行人工神经网络正向运算的装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181206

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190329

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540725

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150