JP2019074951A - 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 - Google Patents
演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 Download PDFInfo
- Publication number
- JP2019074951A JP2019074951A JP2017200898A JP2017200898A JP2019074951A JP 2019074951 A JP2019074951 A JP 2019074951A JP 2017200898 A JP2017200898 A JP 2017200898A JP 2017200898 A JP2017200898 A JP 2017200898A JP 2019074951 A JP2019074951 A JP 2019074951A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- digit
- statistical information
- unit
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
Description
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力効率の向上等を図るため、浮動小数点数を用いないで、固定小数点数による演算を用いることが考えられる。浮動小数点数演算よりも固定小数点演算の方が回路構成を簡素にできるからである。
数点数より演算精度が劣化する場合がある。図3に、32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する。図では、「固定小数点数」が「整数」と記述されている。固定小数点数が整数に限定される訳ではない。固定小数点数は2進整数とも理解できるので、本明細書中では、固定小数点数を整数という場合がある。図のように、ビット幅を削減すると演算精度が低下することが予測される。演算精度が低下すると、深層学習がうまく実施できない場合もあり得る。すなわち、深層学習では、フォーワッド方向およびバックワード方向に積和演算が多数回繰り返され、演算結果が固定小数点数のダイナミックレンジを超えてしまうこともあるからである。そこで、演算精度を改善する技術により、ビット幅を削減することに起因する上記課題を克服することが望まれる。
、重み係数の最適化のため図4のネットワークを1入力データ(1枚の画像データ)あたり100回通したとするとデータが10,000,000回多層ニューラルネットワークを通過する。
さらに、図5に例示したように、各階層で重みとパラメータとの内積(積和演算)が実行されるためさらに数万倍の演算が行われる。このような場合のデータの桁位置が図6に例示されている。深層学習が初期、中盤、終盤と進行するにしたがって、データの桁位置がずれていく。したがって、固定小数点で単純に深層学習を継続すると、有効桁少なくなり、究極的には、計算が破綻してしまうことが予想される。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。例えば、Q3.12フォーマットは、符号ビット1桁、整数部3桁、小数点以下12桁の16ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり
、整数部の桁数と小数点以下の桁数が異なるものとして処理される。
能である。例えば、DSPがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16bit を残し、上位ビットを
飽和処理する。S ≧0 の場合には、DSPは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、DSPは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数での下位ビットを削除する。
)、半精度浮動小数点数(Half Precision Floating Point)、固定小数点数(Fixed point)、Dynamic Fixed Point数を適用した場合の認識エラー率を例示する(非特許文献1
参照)。なお、図7で、第1行目のデータ(Goodfellow et al.(2013))は、他の論文の
評価結果である。また、図7の表で、Propは、認識(フォーワッド方向)および学習(バックワード方向)おけるデータ伝搬時のビット幅を示す。また、Up.は、重み係数アップ
デート時のビット幅を示す。さらに、PI MNIST、MNIST、CIFAR−10、およびSVHNは、深層学習に用いられたデータセットを示す。
。このため、固定小数点数演算の精度の向上が効率的に実施できないおそれがある。本発明の1つの側面である実施の形態は、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能として、固定小数点数演算の精度を効率的に向上できる演算処理装置等を提供することを目的とする。
[比較例]
、比較例の情報処理装置は、深層学習の学習中に統計情報を取得して、学習に用いる変数の固定小数点位置を自動調整する。
手順(1):浮動小数点数による試行(ミニバッチ1回など)や、ユーザ指定により各変数
の初期小数点位置を決定する(図示しない)。
手順(2):K回のミニバッチを学習中に、各層の変数ごとにオーバーフローの回数を統計情報として保存する。
手順(3):ミニバッチを学習中にオーバーフローが発生した場合は、飽和処理を行ない、学習を続行する。
手順(4):K回のミニバッチ終了後、統計情報から固定小数点数の小数点位置を調整する。
手順(5):手順(2)に戻り、学習を進める
全結合層2(fc2)の処理により実行される。深層学習は、ミニバッチと呼ばれる処理の単
位に区切られて実行される。ここで、ミニバッチとは、学習の対象となる入力データの集合{(Ini,Ti),i=1〜N}を複数組(例えば、K個のデータのM組、N=K*M)に分割したK個のデータの組み合わせをいう。また、ミニバッチは、このような個々の入力データの組(K個のデータ)で実行される学習の処理単位のことをいう。ここで、Iniは、入力データ(ベクトル)、Tiは正解データ(ベクトル)である。比較例の情報処理装置は、以下のように、深層学習中の所定数のミニバッチごとに、各層の各変数のオーバーフロー回数を取得してコンピュータプログラム中の変数に蓄積し、深層学習に用いる変数の固定小数点位置を自動調整する。
ユーザ指定により各変数の初期小数点位置を決定し、学習を開始する(S1)。そして、情報処理装置は、K回のミニバッチを学習中に、各層の各変数のオーバーフローの回数を統計情報として保存する(S2)。このとき、情報処理装置は、学習を実行するプログラム中の各変数に対する演算、代入等がなされる毎に、オーバーフローの有無を判定し、回数を計数し、回数を保持するカウンタ変数に代入する。
)、カウンタ変数に蓄積したオーバーフロー回数からオーバーフロー率を求め、オーバーフロー率を基に、固定小数点数の小数点位置を調整する(S4)。そして、情報処理装置は、S2の処理に戻り、学習を進める。
の例では、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倍するとオーバーフローする変
数の個数が累積される。
エラーδ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に蓄積する。
ラーを逆方法に伝播させながら、重みの差分を計算する。情報処理装置は、以上のような順伝播と逆伝播をK組の入力データを用いて、K回繰り返す。情報処理装置は、このようなK回のミニバッチ終了後、各変数に対応するカウンタ変数のオーバーフロー回数を基に、各変数の固定小数点位置を更新する。
かを判定する(C3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下と
なるか、または、学習回数が規定の最大値に達した場合である。
(C6)。回数kが更新間隔に達していない場合、情報処理装置は、C3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置は、変数のオーバーフロー回数にしたがって、小数点位置を更新する。例えば、情報処理装置は、非特許文献1と同様、オーバーフロー回数を演算の実行回数で除算したオーバーフロー率を求めればよい。そして、オーバーフロー率が規定値を超えた場合に、情報処理装置は、該当する変数の小数点位置を1つ下げ、整数部を1ビット拡張すればよい。また、オーバーフロー率の2倍の値が規定値以下の場合、情報処理装置は、小数点位置を1つ上げ、整数部を1ビット削減すればよい。そして、情報処理装置は、C3の処理に戻る。
代入ごとに、オーバーフローの有無を記録し、オーバーフロー率(全演算回数に対するオーバーフローした演算の回数、全代入回数に対するオーバーフローした代入回数等)が算出される。そして、この処理では、所定の期間ごとに、各変数の小数点位置を以下の手順1、2で変更する。
(手順1)オーバーフロー率が規定値(rmax)より大きい場合、小数点位置を1つ下げる。
(手順2)オーバーフロー率の2倍の値が規定値(rmax)以下の場合、小数点位置を1つ上げる。
<統計情報>
(1)非符号となる最上位ビット位置の分布
布が得られると、絶対値としての値の分布範囲が把握可能となる。
数点があると仮定する。比較例では、情報処理装置のプロセッサの演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置のプロセッサの演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトし、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタの
ビット幅を越えるデータ(ビット15を越えるデータ)は、飽和処理される。
数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
直ちに決定できる。例えば、情報処理装置は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
(2)非符号となる最下位ビット位置の分布
であるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデ
ックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、有効な
データが含まれる最下位ビットが把握される。
(3)非符号となる最上位ビット位置の最大値
まり、適切な小数点位置の決定に利用できる。
(4)非符号となる最下位ビット位置の最小値
できる。
<構成>
、レジスタファイル12、ベクトル演算用の演算器131、スカラ演算用の演算器(Arithmetic Logic Unit(ALU))141、およびベクトル演算用の演算器131の結果を
加算するアキュムレータ132を有している。また、プロセッサ10は、ベクトル演算用の演算器131、スカラ演算用の演算器141、アキュムレータ132等の演算結果、および、データ用メモリ22からの読み出し結果を選択する複数のセレクタ101を有している。なお、図では、複数のセレクタを総称してセレクタ101と呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器131と呼ぶ。
、デコーダ112は、シフト量がデータ変換部103に供給されるように指示する。シフト量は、例えば、命令のオペランド(即値)、オペランドで指定されたレジスタ、オペランドで指定されたアドレス・レジスタの示すアドレスのデータ用メモリ22等から取得され、データ変換部103に供給される。
フトとともに、上位ビットの飽和処理および下位ビットの丸めを実行する。データ変換部103は、例えば入力を40ビットの演算結果とし、下位Sビットを小数部として丸めを
行な丸め処理部と、シフト量Sだけ算術シフトを実行するシフタと飽和処理を行なう飽和処理部を有する。
負の無限大への丸め、乱数丸めなどが例示される。シフト量Sは、例えば、図13に例示されるように、デコーダが命令から取得するシフト量である。
位16bitを出力する。ここで、2E15は、2の15乗を表す。
プログラム実行中に、固定小数点数の小数点位置を指定されたシフト量だけ更新する。
含む。ベクトルユニット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。
I/F)を介して制御ユニット11に接続される。また、データ用メモリ22は、メモリインターフェース(Memory I/F)を介してベクトルユニット13およびスカラユニット14に接続される。
算用の演算器131−2は、命令によって指定される演算モードに従って、ベクトル演算用の演算器131−1の演算結果、あるいは、ベクトル演算用アキュムレータレジスタ(Vector ACC)のデータ、あるいは、それらを加算した結果を出力する。
報取得部102およびデータ変換部103に入力する。統計情報取得部102で取得された統計情報は、統計情報集約部104に入力される。また、データ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される
。
のデータを演算するスカラ用の演算器141を有する。スカラ用の演算器141の演算結果は、メモリインターフェース(Memory I/F)を介してデータ用メモリ22のアドレス(例えば、Addr)にストアされる。また、スカラ用の演算器141の演算結果は、セレクタ101を介して、統計情報取得部102およびデータ変換部103に入力される。
。セレクタ101は、選択したデータを、統計情報取得部102およびデータ変換部103に入力する。統計情報取得部102は、セレクタ101から入力されたデータから統計情報を取得し、統計情報集約部104に入力する。
ここで、bは0または1のいずれかである。統計情報取得部102Aは、この入力データを処理し、非符号となる最上位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、39bit目に1を、38bit以下に0を出力する。なお、以下の説明では、プロセッサ10の演算回路のデータは40ビットのデータで例示されるが、プロセッサ10の演算回路のデータが40ビットに限定される訳ではない。
ウェア回路の構成を例示する。この回路では、符号ビットin[39]と他のビット(in[38]からin[0])との排他論理和(EXOR)が実行される。そうすると、符号ビットin[39]と同じ
値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有するビットによる排他論理和値は1となる。
理和値と、in[39]とin[37]との排他論理和値という2つの排他論理和値の論理和値(ORゲートの出力)を反転したビット値が入力される。このため、in[39]とin[38]とが不一致の場合、in[39]とin[36]の排他論理和値によらず、ANDゲートの出力は0となる。以下、同
様に、in[39]とin[i](iは37以下)の排他論理和値によらず、ANDゲートの出力は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が設定される。したがって、図18の回路によって、非符号となる最上位ビット位置に1が設定され、他のビットが0に設定された出力データout(40bit)が取得される。
ータの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図17とは異なり、図19の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図19の例では3ビット)の整数である。なお、
図19では、SIMDデータ数(並列処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
ぞれカウントされる。入力データは、統計情報取得部102A(図17、図18)によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部104Aは、統計情報取得部102Aによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上位ビット
位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。
生回数をカウントすることで最下位ビット位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。すなわち、統計情
報集約部104Aは、非符号となる最上位ビット位置または非符号となる最下位ビット位置のいずれをも処理可能である。
がスカラユニット14で取得したデータは、一回のスカラユニット14の演算においては、加算されることなくそのまま出力データout0からout39に出力される。out0からout39は、統計情報格納部105に引き渡すデータ(図22の105A、図23の105Bの入力データin0からin39参照)である。
ニット14で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105に引き渡すデータである。
ッサ10は、書き込み命令によって図示しないセレクタを介して、レジスタsr39からsr0
のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロセッサ10は、デコーダからのリセット信号によってレジスタsr39からsr0をリセットしても良い。プロ
セッサ10は、統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。また、プロセッサ10は、レジスタ(sr39からsr0)のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メ
モリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
…,k, i=0,…,39)の領域が確保され、indexによって、レジスタファイルの行jが指定される。
て指定されるレジスタファイルの行jの1つあるいは複数のレジスタに初期値を書き込む。ただし、プロセッサ10はデコーダ112からの制御信号により、indexによって指定さ
れるレジスタファイルの行jをリセットしても良い。そして、プロセッサ10は、in39か
らin0の統計情報を加算器で蓄積し、indexによって指定されるレジスタファイルの行jに
格納する。また、プロセッサ10は、デコーダ112からの制御信号により、indexによ
って指定されるレジスタファイルの行jから統計情報を読み出す。また、プロセッサ10
は、indexによって指定されるレジスタファイルの行jのいずれかの1つあるいは複数の値
を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
<統計情報取得機能付き命令>
以下、統計情報取得機能付き命令の構成を例示する。ここでは、命令の構成方法として、方法1、方法2を例示する。
、ロード命令などが個別に追加される。以下の命令の構成は例示であり、プロセッサ10での統計情報取得機能付き命令が下記命令に限定される訳ではない。
[vmul_s命令]
命令の構成:vmul_s vs, vt, vd, imm
フトし、丸め・飽和を行なって ベクトル・レジスタvd に格納するための命令である。プロセッサ10は、乗算結果のシフト前の統計情報を取得し、統計情報レジスタに累積する。統計情報レジスタは、例えば、図22のsr0からsr39、図23の統計情報レジスタファ
イルのsrj_i(j=0,1,.., i=0,1,…)等である。統計情報レジスタについては以下同様で
ある。
内部のレジスタをリセットするためのリセット命令を別途用意してもよい。以下、同様である。
[vld_s命令]
命令の構成:vld_s ss, st, rd
[read_acc_s命令]
命令の構成:read_acc_s, rd, imm
て、imm ビットシフトし、丸め・飽和を行なってスカラ・レジスタ rd に格納するための命令である。プロセッサ10は、アキュムレータレジスタの統計情報を取得し統計情報レジスタに累積する。
タ・インデックス(s)を追加し、統計情報の格納先が指定できるようにしてもよい。以
下、命令の構成を例示する。この命令のインデックス(s)は、図23等の統計情報レジ
スタファイルのindexを指定する。
vmul_s vs, vt, vd, imm, s
vld_s ss, st, vd, s
read_acc_s, rd, imm, s
<実行手順>
でのエラーが基準値以下となるか、または、学習回数が規定の最大値に達した場合
である。
体のデータ数に対する比率が目標条件を充足するように、小数点位置を決定すればよい。また、情報処理装置は、飽和するデータの全体のデータに対する比率とアンダーフローするデータの全体のデータに対する比率の両方が目標条件を充足することが困難である場合、一方を優先してもよい。また、情報処理装置は、飽和が発生しない上限のビット位置と、有効なデータが存在する下限のビット位置の平均を、固定小数点数で表現可能な範囲の中央を位置づけて、小数点位置を設定してもよい。さらに、情報処理装置は、回数kを0に初期化し、さらに統計情報を格納するレジスタをリセットする。そして、情報処理装置は、C3の処理に戻る。
[実施形態1]
32と、演算処理装置30Aと、演算処理装置用メモリ33とをPeripheral Component Interconnect(PCI) Express(PCIe)等のバス34で接続した構成を有する。CPU31は、処理装置の一例である。メモリ32は、主記憶装置の一例である。
する。演算処理装置30A、30B、30等は演算処理装置の一例である。サーバ3A、3B、3等は情報処理装置の一例である。
例示するように、比較例では、非符号となる最上位ビットの位置の分布を取得して、集約したのである。
1回のベクトル演算では、ベクトル演算器の並列数だけ演算が実行される。したがって、1回のベクトル演算当りの総サンプル数は、ベクトル演算器の並列数となる。仮に、累積分布全体のサンプル数に、スカラ演算も含める場合には、累積分布の集計対象である各演算器の回数分だけ積算すればよい。
<構成>
算用のALU141、およびベクトル演算用の演算器131の結果を加算するアキュムレータ132を有している。また、演算コア300は、ベクトル演算用の演算器131、スカラ演算用の演算器141、アキュムレータ132等の演算結果、および、データ用メモリ22からの読み出し結果を選択する複数のセレクタ101を有している。なお、図では、複数のセレクタを総称してセレクタ101と呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器131と呼ぶ。
いる。制御コア38は、制御部381と、レジスタ382と、命令メモリ383を有する。制御コア38は、PCIe等のバスインターフェース36経由でバス34上のメモリ32(図28参照)またはメモリインターフェース37で制御コア38に接続される演算処理装置用メモリ33に命令コードの本体を保持する。
制御部381は命令メモリ383のコードを順次、フェッチ、デコードし、演算等の命令を実行する。また、制御コア38の制御部381はデータバス35を介して演算コア300あるいは演算処理装置用メモリ33にアクセスし、レジスタ382との間でデータを授受する。なお、制御部381がメモリ32のデータをレジスタ382に書き込むことをライトバックという。
ジスタbank1)。複数の演算部A−0からA−7は各レジスタbank0とbank1から同一のタイミングでデータを取得する。演算部A−0からA−7はデコーダ112で解読された命令に従った演算を並列に実行する。実施形態1では、複数の演算部A−0からA−7が積和命令を実行することを想定する。積和命令はレジスタbank0の値とレジスタbank1の値の積にaccumulator AC0からAC7に蓄積済みの累積和を加算する。そして、複数の演算部A−0からA−7は、演算結果をaccumulator AC0からAC7に格納する。積和命令では、通常複数回の積和が実行され最終回は演算結果がレジスタbank0またはbank1に返される。このときaccumulator AC0からAC7は結果を演算部B−0からB−7にも送出する。
、符号ビットの値と異なるビット値を有するビットのうち、符号ビット(Most Significant Bit(MSB))に最も近い位置のビットをいう。演算部B−0からB−7の処理により、最下位ビット位置(Least Significant Bit(LSB))から、符号ビットと異なるビッ
ト値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンの一例が生成される。
号となる最下位ビットとは、符号ビットの値と異なるビット値を有するビットのうち、符号ビットから最も遠い位置(LSBに最も近い位置)のビットをいう。演算部B−0からB−7の処理により、符号ビット(MSB)の位置から、符号ビットと異なるビット値を
持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンの一例が生成される。
B0からAB39と桁#レジスタAR0からAR39との処理によって、第2の統計情報が生成される。したがって、統計情報取得部102C、あるいは加算器AB0からAB39と桁#レジスタAR0からAR39とは、第1の統計情報と第2の統計情報の少なくとも一方の統計情報を取得する統計情報取得部の一例ということができる。
下演算部B−0からB−7のうちの1つを代表して呼ぶ場合には、単に、演算部Bという。今、例えば、000…01bbbb(ここで、bは、0または1のいずれもよい)というデータが入力されるとする。このデータは、最上位ビット(ビット39)が0、ビット39からビットk+1まで0、ビットkが1のデータである。演算部Bは、符号ビット0と異なる値となっている1のビット位置(ビットk)から最下位ビット(ビット0、LSB)までの範囲に対応するビット位置にフラグビット1を出力し、符号ビット(ビット39)から符号ビット0と異なる値となっている1のビット位置の直上までのビット位置(ビットk+1)までの範囲に対応するビット位置に0を出力する。以上によって、非符号となる最上位ビット以下LSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理
が実行される。
、上位ビットとのOR演算を実行する38桁分のOR回路(or)とを有する。図39の回路により、ビット39からビットk+1までが0で、ビットkにおいて1となるデータについては、出力ビット(output[38]〜output[0])のうち、ビットk+1以上(output[38]
からoutput[k+1])は0が設定され、ビットk以下(output[k]からoutput[0])は1に設
定される。また、図39の回路で、最上位ビットに対応する出力ビットは0固定である。以上によって、非符号となる最上位ビット以下LSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理がハードウェアで実行される。
ら−Lの桁位置までの範囲の値を順次選択し出力する。なお、図40では省略されている
が、統計情報集約部104Cの各部はクロック信号に同期して動作する。桁ごとの統計情報格納部である桁#レジスタAR0からAR39は、統計情報の各桁に累積した情報を保持する保持部の一例である。
および−Lの桁位置を保持すればよい。ただし、CPU31が実行するアプリケーション
プログラムから指定を受け、桁位置設定命令等を通じて、+Mの桁位置および−Lの桁位置を演算コア300に設定してもよい。例えば、+M桁指定値および−L桁指定値は、CPU31から演算処理装置30への命令によって、メモリ32から演算処理装置30、または制御コア38のレジスタにロードされるようにすればよい。
計情報のうちの特定の桁を指定する制御信号の一例である。
は、リセット信号であり、入力信号rstに1が入力されると、カウンタ1043は、計数
値q(例えば、6ビット)を0クリアする。入力信号setは計数値の初期設定信号であり
、入力信号rstが0で、入力信号setに1が入力されると、カウンタ1043は、計数値qに入力信号data(例えば、6ビット)を設定する。
。制御部1041は、動作開始時に制御用カウンタ1042のイネーブルをON(真、1)にし、制御用カウンタ1042を起動する。制御用カウンタ1042は0からカウントアップを始める。
号線を使ってカウンタ初期値を設定する。さらに、制御部1041は次のサイクルでカウンタ1043のイネーブル信号enをONにする。制御部1041はカウンタ1043のイネーブル信号enをONにするとともに、出力イネーブルを”ALL1”にする。ここで、出力イネーブルは、桁位置を出力するANDゲート1045の一方の入力(1ビット)と、桁位置に対応する統計情報のサンプル値を出力するANDゲート1046(例えば32ビット分)の一方の入力(32ビット)の合計33ビットの信号である。
ト信号が”1”となっている桁32bitを出力する。制御部1041は制御用カウンタ1042がカウント数になるまでカウンタイネーブルおよび出力イネーブルを”1”にして継続
する。制御用カウンタ1042の値がカウント数まで到達したら、制御部1041は、カウンタイネーブルおよび出力イネーブルを”0”にし、カウンタ1043およびANDゲート1045、1046による出力を停止する。
処理が終了したことを検出する。終了処理部1047は、立ち下がり検出信号の反転論理を統計情報集約部104Cの各フリップフロップ等のリセット信号に接続することで初期化を実行する。
である(S2)。
<実施形態1の効果>
[実施形態2]
そして、各演算コア300は、閾値を超えた最初の桁位置の前後−L〜+Mの区間のサンプル数情報を抽出する。すなわち、各演算コア300は、
{閾値<(累積分布の桁位置のサンプル数/総サンプル数)}
となる桁位置を計算する。各演算コア300は抽出したサンプル数と、サンプル数/総サンプル数が閾値を超えた桁位置情報を制御コア38へ転送すればよい。
非符号となるビット値を持つ最上位のビット位置についてのサンプル数であって、各桁位置以上のサンプル数を示す。したがって、ある桁が固定小数点数の有効桁の最上位桁である場合、累積分布の当該桁位置のサンプル数/総サンプル数は、オーバーフロー率に該当する値となる。また、累積分布の当該桁位置のサンプル数はオーバーフロー回数を示す。総サンプル数は、例えば、1個の演算コア300における1回のベクトル演算においては、並列に実行される演算器の数(並列に実行されるベクトルの次元数)となり、既知である。
のone-hot-vectorは、桁位置セレクタD140に出力される。桁位置セレクタD140は40bitのデコードされた桁位置セレクタセレクト信号が”1”となっているビットに対応する桁の値(桁#レジスタAR0からAR39のいずれかのサンプル数)32bitを出力する
。
1部D146は、リセット信号rstが0(偽)で、かつ、入力データの信号(d)が正の
パルス(1)のとき、出力データ信号qを1に設定する。また、入力データの信号(d)が正のパルス(1)以外のとき、出力データ信号qをそのまま維持する。
”にすることで制御用カウンタD142が動作を開始する。制御用カウンタD142の計数が1(真)になったら制御部D141はカウンタD143へ初期値”39”を設定し、イネーブルを1(真)にすることでカウンタD143を起動する。
上述のように、閾値は例えばユーザが設定した設定値である。比較器D145は桁位置セレクタD140を経由して順次出力される各桁のサンプル数と閾値を比較し、サンプル数が閾値を超えたら1(真)を出力する。また、サンプル数が閾値以下のとき、比較器D145は0(偽)を出力する。
たらその結果を保持する。結果保持1部D146の出力が1(真)になったら制御部D1
41はカウンタD143のイネーブルを0(偽)としてカウンタD143を停止する。以上の結果として桁位置保持信号は、比較器D145によってサンプル数が閾値以上であると判断されたときのカウンタ値(桁位置情報)を保持し続ける。なお、図49で、+M桁指定値および−L桁指定値は、例えば、CPU31から演算処理装置30への命令によって、メモリ32から演算処理装置30のレジスタにロードされる。
Cとほぼ同様である。すなわち、桁位置探索部104D1によって、桁位置指定値に相当する桁位置保持信号が生成され、開始イネーブル信号となる比較結果保持信号が生成される。すなわち、桁の上限位置出力用の加算器G2は、桁位置設定値である桁位置保持信号と+Mの設定値を加算することで、カウンタ初期値である桁の上限位置を算出する。また、桁の下限位置出力用の減算器(SUB)G3は、桁位置設定値である桁位置保持信号か
ら−Lの設定値を減算することで、カウンタ最終値である桁の下限位置を算出する。以上の点以外の実施形態2の演算コア300の構成は、実施形態1の演算コア300の構成と同様である。すなわち、制御部D241は、比較結果保持信号をイネーブル信号として動作を開始し、カウント数、カウンタ初期値、およびカウンタ終了値により、カウンタD243を制御する。その結果、桁位置設定値である桁位置保持信号を基準に、+M桁から−L桁の範囲で、桁位置セレクタD240から統計情報のサンプル数が抽出される。
Cとほぼ同様であるため差分を説明する。すなわち、桁位置探索部104D1が出力する桁位置保持信号が実施の形態1の桁位置設定値に相当し、比較結果保持信号が1(真)に
なったら制御部D241(桁位置制御部)が動作を開始する。桁位置探索部104D1と合わせたタイムチャートのうち、比較結果保持信号が1(真)となる桁位置探索終了後の信号の変化は、実施の形態1と同様である。なお、図51で、桁位置制御部は、図47の
桁位置探索部104D1の制御部D141の動作を示し、出力制御部は、図50の集約部104D2の制御部D241の動作を示す。
<実施形態2の効果>
サンプル数の比率は、当該桁を固定小数点データの最上位の有効桁として場合のオーバーフロー率を示す。
[実施形態3]
ア300に事前に閾値を設定する。閾値は、例えば、ユーザが所望の値を指定可能とする。サーバ3は、ハイパーパラメータとして、閾値を保持すればよい。
{閾値>=(累積分布の桁位置のサンプル数/総サンプル数)}
となる位置を計算する。各演算コア300は抽出したサンプル数と閾値以下となる位置情報を制御コア38へ転送すればよい。閾値については、実施形態2の閾値と同様であるので、その説明を省略する。
Mの位置)から下位桁(桁位置保持信号―Lの位置)に向けてデクレメントした。一方、実施形態3では、カウンタE143は、計数値を下位桁(桁位置保持信号―Lの位置)から上位桁に相当する値(桁位置保持信号+Mの位置)に向けてインクレメントしていく。
<実施形態3の効果>
[実施形態4]
が所望の値を指定可能とする。サーバ3は、ハイパーパラメータ、すなわち事前設定値として、閾値を保持すればよい。
そして、各演算コア300は、閾値2を越え、かつ、閾値1以下の範囲に対応するサンプル数情報を抽出する。すなわち、各演算コア300は、
{閾値2<(累積分布の桁位置のサンプル数/総サンプル数)=<閾値1}
となる統計情報の桁位置の範囲を計算する。各演算コア300は計算した桁位置の範囲でサンプル数と位置情報を抽出して、制御コア38へ転送すればよい。
(条件D1)制御部F41への開始イネーブルがONである。
(条件D2)制御用カウンタF42が計数動作を開始した(計数値が1以上である)。
制御部F41は、以下の3つの条件のときに、桁位置探索部104E1をイネーブルにする。
(条件E1)制御部F41への開始イネーブルがONである。
(条件E2)制御用カウンタF42が計数動作を開始した(計数値が1以上である)。
した統計情報の最上位桁から最下位桁に向かって順次各桁に累積した情報を第1の閾値と比較することの一例である。サンプル数/総サンプル数が閾値2を越えるときの桁位置K2は比較結果に基づき指定される第1の桁の一例である。したがって、桁位置探索部104D1は、第1の探索部の一例である。
カウンタ値生成部F49は、以下の論理でカウンタ初期値とカウンタ終了値を生成する。
カウンタ初期値=MAX(K2、K3);(式1)
カウンタ終了値=MIN(K2、K3);(式2)
ここで、K2は、桁位置探索部104D1からの桁位置保持信号の値である。また、K3は、桁位置探索部104E1からの桁位置保持信号の値である。
そして、カウンタ値生成部F49は、以下の論理で集約部104D2に出力するパラメータである桁位置設定値とカウント数を算出する。
桁位置設定値=カウンタ初期値=MAX(K2、K3);(式3)
カウント数=カウンタ初期値−カウンタ終了値=MAX(K2、K3)−MIN(K2、K3);(式4)
41は、上述の条件D1からD3が充足されると桁位置探索部104D1のイネーブルを1(真)にする。また、制御部1041は、条件E1からE3が充足されると、桁位置探索部104E1のイネーブルを1(真)にする。
とをトリガに桁位置探索部104D1へのイネーブル信号を”0”に落とす。また、制御
部F41は、桁位置探索部104E1からの比較結果保持信号が”1”となったことをト
リガに桁位置探索部104E1へのイネーブル信号を”0”に落とす。さらに、制御部F
41は、両方の比較結果保持信号が”1”となったことをトリガにカウンタ値生成部F4
9および第2の実施形態の集約部104D2へのイネーブル信号を”1”とする。
ーブル信号の立ち下がりをトリガとして実施形態1と同様、終了処理部1047(図43参照)が動作を開始し初期化処理が行われる。
<実施形態4の効果>
{閾値2<(累積分布の桁位置のサンプル数/総サンプル数)=<閾値1}
となる位置を計算する。各演算コア300は抽出したサンプル数と位置情報を制御コア38へ転送すればよい。
[実施形態5]
累積されている桁の桁位置と、その閾値を越えるサンプル数を収集する。
ただし、入力される桁位置に対応する統計情報は、実施形態3の統計情報集約部104Eから出力される各桁位置の統計情報の1桁分(+M=−L=0の場合)であってもよい。ただし、重み1で多数決が実行される場合には、各演算コア300から複数桁(+Mから−Lまでの範囲)が入力されてもよい。また、重み1で多数決が実行される場合には、入力される桁位置に対応する統計情報は、実施形態4の統計情報集約部104Fから出力される各桁位置の統計情報であってもよい。最大値位置検出回路3845は、桁#レジスタ3844−0から3844−39のうち、最大の値を保持する桁位置を検出して、出力桁位置として出力する(例えば6ビット、0から39の値)。
する選択信号を出力する。選択部3853は、判定結果にしたがって、第1の入力桁の桁位置または第2の入力桁の桁位置を出力する。
<実施形態5の効果>
[その他の変形例]
30、30A、30B 演算処理装置
31 CPU
32 メモリ
33 演算処理装置用メモリ
34 バス
35 データバス
36 バスインターフェース
37 メモリインターフェース
38 制御コア
102、102C 統計情報取得部
104、104C、104D、104E、104F 統計情報集約部
300 演算コア
301 データバスインターフェース
384 小数点位置決定回路
1040 D140、D240、E140、E240 桁位置セレクタ
1041 D141、D241、E141、E241、F41 制御部
1042 D142、D242、E142、E242、F42 制御用カウンタ
1043 D143、D243、E143、E243 カウンタ
1044 D144、D244、E144、E244 デコーダ
1047 終了部
3841 デコーダ
3842 マスク回路
3843 加算器
3844 桁#レジスタ
3845 最大値位置検出回路
AR0−AR39 桁#レジスタ
F49 カウンタ値生成部
Claims (9)
- 主記憶装置に接続されるとともに、複数の演算処理回路を有する演算処理装置において、
前記複数の演算処理回路の各々は、
固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する演算処理装置。 - 前記統計情報取得部は、
前記取得された統計情報の各桁に累積した情報を保持する保持部と、
前記保持部が保持する統計情報のうちの特定の桁の情報を、前記特定の桁を指定する制御信号にしたがって選択する第1の選択部と、を有する請求項1記載の演算処理装置。 - 前記保持部が保持する統計情報の各桁に累積した情報と閾値とを比較する比較部と、
前記比較部の比較結果に基づいて、前記統計情報の各桁のうち選択される桁を指定する制御部を有する請求項2に記載の演算処理装置。 - 前記指定された桁に累積した情報を選択する第2の選択部をさらに有する請求項3に記載の演算処理装置。
- 前記保持部が保持した統計情報の最上位桁から最下位桁に向かって順次各桁に累積した情報を第1の閾値と比較し、前記比較結果に基づき第1の桁を指定する第1の探索部と、
前記保持部が保持した統計情報の最下位桁から最上位桁に向かって順次各桁に累積した情報を第2の閾値と比較し、前記比較結果に基づき第2の桁を指定する第2の探索部と、
前記第1の桁と前記第2の桁とによって指定される範囲のそれぞれの桁に累積した情報を選択する第3の選択部と、を有する請求項2に記載の演算処理装置。 - 制御処理回路をさらに備え、
前記制御処理回路は、前記複数の演算処理回路のそれぞれにおいて選択される桁に累積した情報について、それぞれの桁を選択した前記複数の演算処理回路に対応する値を計数し、前記計数された値が最も大きい桁を基に、前記複数の演算部が次に実行する演算命令の演算結果となる固定小数点数データの小数点位置を指定する小数点位置指定部をさらに有する請求項4に記載の演算処理装置。 - 固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第
2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する演算処理回路。 - 主記憶装置と、
前記主記憶装置に接続される処理装置と、
前記主記憶装置および前記処理装置に接続されるとともに、複数の演算処理回路を有する演算処理装置と、を備える情報処理装置において、
前記複数の演算処理回路の各々は、
固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する情報処理装置。 - 主記憶装置に接続するとともに、複数の演算処理回路を有する演算処理装置の制御方法において、
前記複数の演算処理回路の各々に含まれる複数の演算部に固定小数点数データに対する演算命令をそれぞれ実行させ、
前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する、演算処理装置の制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017200898A JP6540770B2 (ja) | 2017-10-17 | 2017-10-17 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
US16/158,380 US10891109B2 (en) | 2017-10-17 | 2018-10-12 | Arithmetic processor, arithmetic processing apparatus including arithmetic processor, information processing apparatus including arithmetic processing apparatus, and control method for arithmetic processing apparatus |
EP18200350.9A EP3474132B1 (en) | 2017-10-17 | 2018-10-15 | Arithmetic processor, arithmetic processing apparatus including arithmetic processor, information processing apparatus including arithmetic processing apparatus, and control method for arithmetic processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017200898A JP6540770B2 (ja) | 2017-10-17 | 2017-10-17 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019074951A true JP2019074951A (ja) | 2019-05-16 |
JP6540770B2 JP6540770B2 (ja) | 2019-07-10 |
Family
ID=63857792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017200898A Active JP6540770B2 (ja) | 2017-10-17 | 2017-10-17 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10891109B2 (ja) |
EP (1) | EP3474132B1 (ja) |
JP (1) | JP6540770B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020201646A (ja) * | 2019-06-07 | 2020-12-17 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
EP3848791A1 (en) | 2020-01-07 | 2021-07-14 | Fujitsu Limited | Arithmetic processing device, method for controlling arithmetic processing device, and arithmetic processing program |
EP3862932A1 (en) | 2020-02-04 | 2021-08-11 | Fujitsu Limited | Arithmetic processing device, arithmetic processing method, and arithmetic processing program |
JP2021177369A (ja) * | 2019-06-12 | 2021-11-11 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co., Ltd. | ニューラルネットワークにおける量子化パラメータの確定方法および関連製品 |
JPWO2022215173A1 (ja) * | 2021-04-06 | 2022-10-13 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11609760B2 (en) | 2018-02-13 | 2023-03-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11663002B2 (en) | 2018-02-13 | 2023-05-30 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11106598B2 (en) * | 2018-02-13 | 2021-08-31 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
JP7056225B2 (ja) * | 2018-02-26 | 2022-04-19 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
JP6540841B1 (ja) * | 2018-02-27 | 2019-07-10 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
JP7045947B2 (ja) * | 2018-07-05 | 2022-04-01 | 株式会社日立製作所 | ニューラルネットワークの学習装置および学習方法 |
EP3757896B1 (en) | 2018-08-28 | 2023-01-11 | Cambricon Technologies Corporation Limited | Method and device for pre-processing data in a neural network |
WO2020062392A1 (zh) | 2018-09-28 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
JP7137067B2 (ja) * | 2018-10-25 | 2022-09-14 | 富士通株式会社 | 演算処理装置、学習プログラム及び学習方法 |
CN111383637A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN111832738B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US11934940B2 (en) | 2019-04-18 | 2024-03-19 | Cambricon Technologies Corporation Limited | AI processor simulation |
US11676029B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
JP7243498B2 (ja) | 2019-07-11 | 2023-03-22 | 富士通株式会社 | 演算処理装置、制御プログラム、及び制御方法 |
CN111649786B (zh) * | 2020-06-03 | 2022-04-08 | 东莞深证通信息技术有限公司 | 数据累计方法、装置、终端设备及存储介质 |
CN113342346B (zh) * | 2021-05-18 | 2022-03-25 | 北京百度网讯科技有限公司 | 深度学习框架的算子注册方法、装置、设备和存储介质 |
TWI804043B (zh) * | 2021-11-08 | 2023-06-01 | 財團法人工業技術研究院 | 多輸入多輸出的累加器及其執行方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
JPH10333883A (ja) * | 1997-04-01 | 1998-12-18 | Matsushita Electric Ind Co Ltd | 乗算方法および乗算回路 |
JP2006048590A (ja) * | 2004-08-09 | 2006-02-16 | Matsushita Electric Ind Co Ltd | 正規化処理装置及び正規化処理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401107B2 (en) * | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
JP2009271598A (ja) | 2008-04-30 | 2009-11-19 | Toshiba Corp | プロセッサ |
JP2012203566A (ja) | 2011-03-24 | 2012-10-22 | Seiko Epson Corp | 状態推定装置、電子機器及びプログラム |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
-
2017
- 2017-10-17 JP JP2017200898A patent/JP6540770B2/ja active Active
-
2018
- 2018-10-12 US US16/158,380 patent/US10891109B2/en active Active
- 2018-10-15 EP EP18200350.9A patent/EP3474132B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
JPH10333883A (ja) * | 1997-04-01 | 1998-12-18 | Matsushita Electric Ind Co Ltd | 乗算方法および乗算回路 |
JP2006048590A (ja) * | 2004-08-09 | 2006-02-16 | Matsushita Electric Ind Co Ltd | 正規化処理装置及び正規化処理方法 |
Non-Patent Citations (1)
Title |
---|
桑高 克直: "汎用並列ニューロコンピュータを用いたニューラルネットワーク演算", 電子情報通信学会技術研究報告, vol. 第96巻,第430号, JPN6019002082, 14 December 1996 (1996-12-14), JP, pages 79 - 86, ISSN: 0003962352 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020201646A (ja) * | 2019-06-07 | 2020-12-17 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
JP7272121B2 (ja) | 2019-06-07 | 2023-05-12 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
JP2021177369A (ja) * | 2019-06-12 | 2021-11-11 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co., Ltd. | ニューラルネットワークにおける量子化パラメータの確定方法および関連製品 |
JP7166704B2 (ja) | 2019-06-12 | 2022-11-08 | 寒武紀(西安)集成電路有限公司 | ニューラルネットワークにおける量子化パラメータの確定方法および関連製品 |
EP3848791A1 (en) | 2020-01-07 | 2021-07-14 | Fujitsu Limited | Arithmetic processing device, method for controlling arithmetic processing device, and arithmetic processing program |
EP3862932A1 (en) | 2020-02-04 | 2021-08-11 | Fujitsu Limited | Arithmetic processing device, arithmetic processing method, and arithmetic processing program |
JPWO2022215173A1 (ja) * | 2021-04-06 | 2022-10-13 | ||
JP7235171B2 (ja) | 2021-04-06 | 2023-03-08 | 三菱電機株式会社 | 固定小数点演算ビット幅の検証システム及び決定システム |
Also Published As
Publication number | Publication date |
---|---|
US20190114142A1 (en) | 2019-04-18 |
JP6540770B2 (ja) | 2019-07-10 |
EP3474132B1 (en) | 2021-01-06 |
EP3474132A1 (en) | 2019-04-24 |
US10891109B2 (en) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6540770B2 (ja) | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 | |
JP7056225B2 (ja) | 演算処理装置、情報処理装置、情報処理方法、およびプログラム | |
JP6540841B1 (ja) | 演算処理装置、情報処理装置、情報処理方法、およびプログラム | |
EP3575952B1 (en) | Arithmetic processing device, information processing device, method and program | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
US10776109B2 (en) | Microprocessor with dynamically adjustable bit width for processing data | |
KR102331978B1 (ko) | 인공 신경망 정방향 연산 실행용 장치와 방법 | |
US20200143232A1 (en) | Training program, training method, and information processing apparatus | |
JP7174243B2 (ja) | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 | |
US20190095175A1 (en) | Arithmetic processing device and arithmetic processing method | |
US11915141B2 (en) | Apparatus and method for training deep neural network using error propagation, weight gradient updating, and feed-forward processing | |
US11551087B2 (en) | Information processor, information processing method, and storage medium | |
US20210097397A1 (en) | Information processing apparatus and information processing method | |
JP7036224B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP7137067B2 (ja) | 演算処理装置、学習プログラム及び学習方法 | |
JP2021111081A (ja) | 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法 | |
JP7371499B2 (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム | |
EP4345600A1 (en) | Multiplication hardware block with adaptive fidelity control system | |
CN110097181B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
Ueki et al. | Aqss: Accelerator of quantization neural networks with stochastic approach | |
Li | Perceptrons Branch Predictor and some recent developments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181219 |
|
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: 6540770 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |