JP2019074951A - 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 - Google Patents

演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 Download PDF

Info

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
Application number
JP2017200898A
Other languages
English (en)
Other versions
JP6540770B2 (ja
Inventor
勝洋 依田
Katsuhiro Yoda
勝洋 依田
真紀子 伊藤
Makiko Ito
真紀子 伊藤
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 JP2017200898A priority Critical patent/JP6540770B2/ja
Priority to US16/158,380 priority patent/US10891109B2/en
Priority to EP18200350.9A priority patent/EP3474132B1/en
Publication of JP2019074951A publication Critical patent/JP2019074951A/ja
Application granted granted Critical
Publication of JP6540770B2 publication Critical patent/JP6540770B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/57Arithmetic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3452Performance evaluation by statistical analysis
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

【課題】固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を実現する。【解決手段】演算処理装置の複数の演算処理回路の各々は、固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、統計情報取得部を有する。統計情報取得部は、演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲にフラグビットを設定することで得られるビットパターンをビット位置ごとに累積する。または、統計情報取得部は、符号ビットの位置から、符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲にフラグビットを設定することで得られるビットパターンをビット位置ごとに累積する。【選択図】図37

Description

本発明は、演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法に関する。
今日、人工知能を用いた機械学習のうち、特に深層学習(DL)へのニーズが高まっている。深層学習は、多層ニューラルネットワーク(DNN)を用いた機械学習の手法ということができる。図1は、ニューラルネットワークの構成を例示する図である。ニューラルネットワークは、神経細胞(ニューロン)をコンピュータ上にモデル化したものである。神経細胞は、細胞体と、他の細胞体から入力される信号を受ける樹状突起と、他の細胞体に信号を出力する軸索とを有する。また、信号を出力する軸索の末端と信号を受ける樹状突起との間にはシナプスと呼ばれる信号の伝達構造が形成されている。ニューラルネットワークでは、神経細胞間でのシナプスを介した情報伝達がモデル化されている。
さらに、ニューラルネットワークが多層化された多層ニューラルネットワークでは、深層学習が実行される。そして、深層学習が実行される多層ニューラルネットワークの認識性能を高めるため、多層ニューラルネットワークが大規模化される傾向にある。例えば、多層ニューラルネットワークで処理されるパラメータ数は、数百万から1億数千万にも及ぶ。多層ニューラルネットワークが人の脳に近づくためには、究極的に、パラメータ数は1千数百億にも及ぶと考えられる。したがって、今後、深層学習における学習データは増加し、多層ニューラルネットワークにおける計算負荷、メモリ負荷が増大することが予想される。そのため、増え続ける学習データに対して、認識性能と学習効率の改善が望まれている。認識性能と学習効率を改善し、負荷を軽減するため、多層ニューラルネットワークが軽量化されることが望ましい。
ところで、深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。ただし、深層学習では、個々の演算精度への要求は、通常の演算処理ほど厳密ではない。例えば、通常の演算処理等では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。深層学習では、複数の入力データを畳み込み演算するときの係数(重み)の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和された値も、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数の調整に反映できるようになるためである。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力効率の向上等を図るため、浮動小数点数を用いないで、固定小数点数による演算を用いることが考えられる。浮動小数点数演算よりも固定小数点演算の方が回路構成を簡素にできるからである。
図2にデータ表現に用いるビットの構成を例示する。32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数のように、深層学習で処理するデータ(重みとパラメータ)のデータ表現に用いるビット幅を縮小することで、多層ニューラルネットワークで扱うデータ量を削減できる。扱うデータ量が削減されることで、深層学習の処理量が削減され、学習時間が短縮されることが期待できる。
しかしながら、固定小数点数は、取りうる値のダイナミックレンジが狭いので、浮動小
数点数より演算精度が劣化する場合がある。図3に、32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する。図では、「固定小数点数」が「整数」と記述されている。固定小数点数が整数に限定される訳ではない。固定小数点数は2進整数とも理解できるので、本明細書中では、固定小数点数を整数という場合がある。図のように、ビット幅を削減すると演算精度が低下することが予測される。演算精度が低下すると、深層学習がうまく実施できない場合もあり得る。すなわち、深層学習では、フォーワッド方向およびバックワード方向に積和演算が多数回繰り返され、演算結果が固定小数点数のダイナミックレンジを超えてしまうこともあるからである。そこで、演算精度を改善する技術により、ビット幅を削減することに起因する上記課題を克服することが望まれる。
ビット幅を削減することに起因する課題を考察するため、まず、深層学習の手順を説明する。図4に、通常の深層学習における処理手順を例示する。また、図5に、図4の処理手順のうち、Conv_1の順方向処理とFC2の逆方向処理を詳細化したものを例示する。深層学習の処理の流れは図4のとおりである。深層学習の処理では、それぞれの入力データに対応した正解データが存在する。深層学習を実行するネットワークの構成は人が決定する。
ネットワークは、入力データを左から入力し、各層の処理結果を右方向へ伝播させ(順伝播)、正解データと結果を比較し、結果の差分を左方向へ伝播させる(逆伝播)。例えば、図5の例では、入力パラメータxjに、係数Wijの積和演算を実行することで、Conv_1層の畳み込み演算が実行される。各階層は係数(Wij)を持っており、多層ニューラルネットワークの最上位の層(図4で、FC2)まで演算がなされると、演算結果が正解データと比較され、比較結果を基に各層の係数が更新される。この係数の変化(ΔWij)によりネットワークが最適化される。なお、多層ニューラルネットワークは、1データごとに上記の係数の更新を行ってもよい。あるいは多層ニューラルネットワークは、複数データ(例えば256データ)について並列に同時に計算を行い、256通りの係数の更新情報を平均した結果を元に重みを更新しても良い。このとき、重み更新に用いる複数データの集合をミニバッチという。複数データの集合を並列に処理して重み更新が行われる場合、並列同時処理されるデータの集合をミニバッチということもできる。
図6に、深層学習におけるパラメータと重みのビット幅を縮小することによる課題を例示する。ビット幅を縮小することでデータ量は削減可能である。しかし深層学習では、図4に例示した処理を多数回繰り返す。例えば入力データが100,000枚の画像データであり
、重み係数の最適化のため図4のネットワークを1入力データ(1枚の画像データ)あたり100回通したとするとデータが10,000,000回多層ニューラルネットワークを通過する。
さらに、図5に例示したように、各階層で重みとパラメータとの内積(積和演算)が実行されるためさらに数万倍の演算が行われる。このような場合のデータの桁位置が図6に例示されている。深層学習が初期、中盤、終盤と進行するにしたがって、データの桁位置がずれていく。したがって、固定小数点で単純に深層学習を継続すると、有効桁少なくなり、究極的には、計算が破綻してしまうことが予想される。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
例えば、Mixed Fixed Pointによる処理では、プログラム全体として統一した小数点位
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。例えば、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 の場合は、DSPは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数での下位ビットを削除する。
ブロック・カウント・リーディング・サイン(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の位置)がレジスタに記録される。
図7は、深層学習において、単精度浮動小数点数(Single Precision Floating Point
)、半精度浮動小数点数(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は、深層学習に用いられたデータセットを示す。
特開2012−203566号公報 特開2009−271598号公報
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日
上述のように、従来の技術において、固定小数点演算の演算精度劣化を低減するための工夫が提案されている。しかしながら、従来の技術では、演算を実行する演算処理装置が、固定小数点演算の演算精度劣化を低減するための判断材料を効率よく取得できていない
。このため、固定小数点数演算の精度の向上が効率的に実施できないおそれがある。本発明の1つの側面である実施の形態は、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能として、固定小数点数演算の精度を効率的に向上できる演算処理装置等を提供することを目的とする。
本発明の一側面は、主記憶装置に接続されるとともに、複数の演算処理回路を有する演算処理装置によって例示される。この複数の演算処理回路の各々は、固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、統計情報取得部を有する。統計情報取得部は、前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンをビット位置ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンをビット位置ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する。
本実施形態によれば、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能として、固定小数点数演算の精度を効率的に向上できる演算処理装置等を提供できる。
ニューラルネットワークの構成を例示する図である。 データ表現に用いるビットの構成を例示する図である。 32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する図である。 通常の深層学習における処理手順を例示する図である。 図4の順方向処理と逆方向処理を詳細化して例示する図である。 深層学習におけるパラメータと重みのビット幅を縮小することによる課題を例示する図である。 認識エラー率を例示する図である。 比較例に係る深層学習の手順を例示する図である。 比較例に係る深層学習の手順を例示する図である。 図9における各層の処理の詳細を例示する図である。 比較例の情報処理装置による学習処理のフローチャートを例示する図である。 非符号となる最上位ビット位置の分布データを例示する図である。 比較例の情報処理装置のプロセッサの構成を例示する図である。 比較例のプロセッサの回路ブロックを例示する図である ベクトルユニットの詳細を例示する図である。 スカラユニットの構成を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部の処理を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。 比較例の統計情報集約部の処理を例示する図である。 比較例の統計情報集約部のハードウェア回路の構成を例示する図である。 論理和演算によってビット位置を集約する統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報集約部からの統計情報を専用レジスタに格納する統計情報格納部の構成を例示する図である。 統計情報集約部の変形例である。 命令フォーマットを例示する図である。 命令フォーマットを例示する図である。 比較例の情報処理装置による学習処理のフローチャートを例示する図である。 実施形態1に係るサーバの構成を例示する図である。 実施形態1に係る他のサーバの構成を例示する図である。 比較例に例示した統計情報に基づく処理をサーバに適用した場合の課題を例示する図である。 比較例に例示した統計情報に基づく処理をサーバに適用した場合の課題を例示する図である。 比較例および実施形態1に係る課題を例示する図である。 実施形態1の演算処理装置における解決手段を例示する図である。 累積分布として非符号となるビット値を持つ最下位のビット位置の分布を求める処理例である。 実施形態1に係る演算コアの構成を例示する図である。 実施形態1に係る他の演算コアの構成を例示する図である。 制御コアの構成を例示する図である。 実施形態1に係る統計情報取得部の構成を例示する図である。 RTLの擬似コードによって演算部の処理を例示する図である。 演算部のハードウェア回路を例示する図である。 実施形態1に係る統計情報集約部の構成を例示する図である。 カウンタの動作を例示するRTLの擬似コードである。 統計情報集約部の各要素の動作を例示するタイムチャートである。 終了処理部の構成と作用を例示する図である。 終了処理部の各構成の動作を例示するタイミングチャートである。 演算コアの処理を例示するフローチャートである。 制御コアの動作を例示するフローチャートである。 実施形態2に係る桁位置探索部の詳細構成を例示する図である。 結果保持1部の動作をRTLの擬似コードで例示する図である。 桁位置探索部の各部の動作を例示するタイムチャートである。 実施形態2に係る統計情報集約部の集約部の構成を例示する図である。 実施形態2に係る統計情報集約部の各部の動作を例示するタイムチャートである。 実施形態3に係る桁位置探索部の詳細構成を例示する。 カウンタの動作を例示するRTLの擬似コードである。 実施形態3の桁位置探索部の各部の動作を例示するタイミングチャートである。 実施形態3に係る統計情報集約部の集約部の構成を例示する図である。 実施形態3の桁位置探索部および集約部の各部の動作を例示するタイムチャートである。 実施形態4に係る統計情報集約部の構成を例示する図である。 実施形態4に係る統計情報集約部の制御部の動作を例示するタイムチャートである。 実施形態4に係る統計情報集約部の各部の動作を例示するタイムチャートである。 実施形態5に係る制御コアに設けられる小数点位置決定回路の構成を例示する図である。 実施形態5に係るデコーダの真理値表を例示する図である。 実施形態5に係る最大値位置検出回路の詳細構成を例示する図である。 実施形態5に係る比較部の具体的構成を例示する図である。
以下、図面を参照して一実施形態に係るについて説明する。
[比較例]
図8から図26を参照して、比較例に係る情報処理装置での深層学習について説明する。図8および図9は、比較例に係る深層学習の手順を例示する図である。比較例の情報処理装置は、コンピュータプログラムにしたがって深層学習を実行する。比較例の情報処理装置は、Dynamic Fixed Point数の処理を実行可能なプロセッサを有している。すなわち
、比較例の情報処理装置は、深層学習の学習中に統計情報を取得して、学習に用いる変数の固定小数点位置を自動調整する。
手順(1):浮動小数点数による試行(ミニバッチ1回など)や、ユーザ指定により各変数
の初期小数点位置を決定する(図示しない)。
手順(2):K回のミニバッチを学習中に、各層の変数ごとにオーバーフローの回数を統計情報として保存する。
手順(3):ミニバッチを学習中にオーバーフローが発生した場合は、飽和処理を行ない、学習を続行する。
手順(4):K回のミニバッチ終了後、統計情報から固定小数点数の小数点位置を調整する。
手順(5):手順(2)に戻り、学習を進める
図9のように、比較例の深層学習は、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の処理に戻り、学習を進める。
図10は、図9における各層の処理の詳細を例示する図である。図では、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回のミニバッチ終了後、各変数に対応するカウンタ変数のオーバーフロー回数を基に、各変数の固定小数点位置を更新する。
図11に、比較例の情報処理装置による学習処理のフローチャートを例示する。この処理では、情報処理装置は、初期小数点位置を決定する(C1)。そして、情報処理装置は、回数kを値0で初期化する。そして、情報処理装置は学習終了の条件が充足されたか否
かを判定する(C3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下と
なるか、または、学習回数が規定の最大値に達した場合である。
学習終了の条件が充足されない場合、情報処理装置は、次のミニバッチを実行し、変数kをカウントアップする(C4)。そして、情報処理装置は、統計情報としてオーバーフロー回数を各カウンタ変数に蓄積する(C5)。すなわち、情報処理装置は、各層において、オーバーフローした変数の個数、2倍するとオーバーフローする変数の個数を累積する。
そして、情報処理装置は、回数kが更新間隔(例えば、K)に達したか否かを判定する
(C6)。回数kが更新間隔に達していない場合、情報処理装置は、C3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置は、変数のオーバーフロー回数にしたがって、小数点位置を更新する。例えば、情報処理装置は、非特許文献1と同様、オーバーフロー回数を演算の実行回数で除算したオーバーフロー率を求めればよい。そして、オーバーフロー率が規定値を超えた場合に、情報処理装置は、該当する変数の小数点位置を1つ下げ、整数部を1ビット拡張すればよい。また、オーバーフロー率の2倍の値が規定値以下の場合、情報処理装置は、小数点位置を1つ上げ、整数部を1ビット削減すればよい。そして、情報処理装置は、C3の処理に戻る。
なお、非特許文献1によるDynamic Fixed Point数による処理では、演算または変数の
代入ごとに、オーバーフローの有無を記録し、オーバーフロー率(全演算回数に対するオーバーフローした演算の回数、全代入回数に対するオーバーフローした代入回数等)が算出される。そして、この処理では、所定の期間ごとに、各変数の小数点位置を以下の手順1、2で変更する。
(手順1)オーバーフロー率が規定値(rmax)より大きい場合、小数点位置を1つ下げる。
(手順2)オーバーフロー率の2倍の値が規定値(rmax)以下の場合、小数点位置を1つ上げる。
しかし、以上の処理は、各層の演算ごとにオーバーフロー回数を累積し、オーバーフロー率が既定値を越えた場合、および、オーバーフロー率の2倍の値が既定値未満となった場合に固定小数点位置を1ビットずらす処理である。この処理は、オーバーフロー回数あるいはオーバーフロー率に基づく固定小数点位置の更新処理である。情報処理装置は、オーバーフロー回数あるいはオーバーフロー率からは、適正な小数点位置がどこであるかを判断することが困難である。
したがって、比較例の処理は、固定小数点位置の更新時、小数点位置を1つ下げる、あるいは上げる等の処理で、適正な位置を試行し、その結果からさらに判断を重ねていくという手順となる。このため、情報処理装置が適正な小数点位置を決定するまでに、小数点位置が複数回更新されることになる。例えば、上記のように、情報処理装置がK回のミニバッチごとにオーバーフロー率を判定し、1ビットずつ小数点位置を更新する場合には、小数点位置をNビットずらすために、N*K回(*は乗算)分のミニバッチが実行される。このため、小数点位置が不適切な状態で学習処理が繰り返される。つまり、学習中に、望ましくないレベルで固定小数点数データの飽和、あるいは、アンダーフローが発生し、学習結果の精度劣化につながり、収束が遅くなる恐れがある。
また、比較例の情報処理装置は、単にオーバーフロー回数を取得し、蓄積する処理を深層学習のプログラム中で実行するため、学習時間が増大する可能性がある。つまり、情報処理装置は、適正な小数点位置を決定するための情報をプログラムに提供する機能がないため、プログラムにオーバーフロー回数を累積するコードが組み込まれ、処理時間が増加する恐れがある。
<統計情報>
そこで、次の比較例では、情報処理装置のプロセッサが統計情報を取得することで、統計情報取得のためのプログラム中のオーバーヘッドが削減される。ここで、プロセッサが取得する統計情報は、例えば、以下のいずれか、または、これらの組み合わせをいう。情報処理装置が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理にしたがってプロセッサは、Dynamic Fixed Point演算のための命令を実行する。
(1)非符号となる最上位ビット位置の分布
図12に、非符号となる最上位ビット位置の分布データを例示する。図12は演算の途中結果が40bitで、固定小数点数の桁あわせのために14bit右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位置の分
布が得られると、絶対値としての値の分布範囲が把握可能となる。
図12で、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は最上位のビットの位置 Count Leading Sign(CLS)である。図12では、ビット0の右側に小
数点があると仮定する。比較例では、情報処理装置のプロセッサの演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置のプロセッサの演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトし、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタの
ビット幅を越えるデータ(ビット15を越えるデータ)は、飽和処理される。
また、図12の横軸に付与された数値は、固定小数点で表現可能な数値を示す。例えば、情報処理装置がこの固定小数点数を−2ビットだけシフト(右方向に2ビットシフト)すると、最上位ビットが14の位置にシフトし、飽和される領域が2ビット拡張され、アンダーフローが発生して0となる領域が2ビット減少する。すなわち、情報処理装置が小
数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
情報処理装置は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、Dynamic Fixed Point演算における適正なシフト量、つまり、適切な固定小数点位置を
直ちに決定できる。例えば、情報処理装置は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
非符号となる最上位ビット位置の分布は、情報処理装置のプロセッサ10(図13参照)内の所定のレジスタ(統計情報レジスタともいう)内に積算される。プロセッサ10は、当該統計情報レジスタからの分布データの読み出し、書き込み、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までに命令実行の対象となった1以上の固定小数点数についての分布データが蓄積される。蓄積された分布データは、読み出し命令によってメモリに読み出される。なお、プロセッサ10は、クリア命令に代えて、統計情報レジスタへのロード命令の実行を可能とし、値0を統計情報レジスタにロードできるようにしてもよい。
(2)非符号となる最下位ビット位置の分布
非符号となる最下位ビット位置の分布とは、ビットが符号と異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビット
であるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデ
ックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、有効な
データが含まれる最下位ビットが把握される。
(3)非符号となる最上位ビット位置の最大値
非符号となる最上位ビット位置の最大値は、前回クリア命令が実行されたときから現在に至るまでに、命令実行の対象となった1以上の固定小数点数について符号ビットの値と異なる値となる最上位のビット位置のうちの最大値である。情報処理装置は、非符号となる最上位のビット位置の最大値をDynamic Fixed Point演算における適正なシフト量、つ
まり、適切な小数点位置の決定に利用できる。
プロセッサ10は、上記統計情報レジスタからの上記最大値の読み出し、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの最大値が蓄積され、読み出し命令によって最大値がメモリに読み出される。
(4)非符号となる最下位ビット位置の最小値
非符号となる最下位ビット位置の最小値は、前回クリア命令が実行されたときから現在に至るまでの1以上の固定小数点数について符号と異なる値となる最下位のビット位置のうちの最小値である。情報処理装置は、非符号となる最下位ビット位置の最小値をDynamic Fixed Point演算における適正なシフト量、つまり、適切な小数点位置の決定に利用
できる。
プロセッサ10は、統計情報レジスタからの上記最小値の読み出し、クリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの上記最小値が蓄積され、読み出し命令によってメモリに読み出される。
<構成>
図13に、情報処理装置のプロセッサ10の構成を例示する。図13では、プロセッサ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と呼ぶ。
さらに、プロセッサ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に供給される。
データ変換部103は、ベクトル演算の結果、スカラ演算の結果、アキュムレータ132の演算結果、あるいは、データ用メモリ22からの読み出し結果等で得られる固定小数点数データを、指定されたシフト量Sだけシフトする。また、データ変換部103は、シ
フトとともに、上位ビットの飽和処理および下位ビットの丸めを実行する。データ変換部103は、例えば入力を40ビットの演算結果とし、下位Sビットを小数部として丸めを
行な丸め処理部と、シフト量Sだけ算術シフトを実行するシフタと飽和処理を行なう飽和処理部を有する。
丸め処理部は、下位S bitを小数部として丸めを行なう。Sが負の場合には、丸め処理部は、何も行なわない。丸めとしては、最近接丸め、0への丸め、正の無限大への丸め、
負の無限大への丸め、乱数丸めなどが例示される。シフト量Sは、例えば、図13に例示されるように、デコーダが命令から取得するシフト量である。
シフト部は、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)非符号となる最下位ビット位置の最小値、またはこれらの組み合わせである。
図14に、図13のプロセッサ10の回路ブロックを例示する。プロセッサ10は、制御ユニット11、レジスタファイル12、ベクトルユニット13、スカラユニット14を含む。制御ユニット11は、プログラムカウンタ111とデコーダ112を含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を
含む。ベクトルユニット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。
また、図14の構成例では、複数の統計情報取得部102からの統計情報を集約する統計情報集約部104が追加されている。また、統計情報格納部105はレジスタファイル12の一部となっている。また、命令用メモリ21は、メモリインターフェース(Memory
I/F)を介して制御ユニット11に接続される。また、データ用メモリ22は、メモリインターフェース(Memory I/F)を介してベクトルユニット13およびスカラユニット14に接続される。
図15にベクトルユニット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)に保持される
図16にスカラユニット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と呼ぶことにする。
図17に、非符号となる最上位ビット位置を取得する統計情報取得部102Aの処理を例示する。図では、統計情報取得部102Aに含まれる非符号最上位ビット検出器による処理が例示されている。図17の例では、符号ビットが0、「非符号となる最上位ビット位置」として示される位置のビットが1、このビットより上位側のビットがすべて0、かつ、このビットより下位側のビットはbの入力データ(in(40bit))が例示されている。
ここで、bは0または1のいずれかである。統計情報取得部102Aは、この入力データを処理し、非符号となる最上位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、39bit目に1を、38bit以下に0を出力する。なお、以下の説明では、プロセッサ10の演算回路のデータは40ビットのデータで例示されるが、プロセッサ10の演算回路のデータが40ビットに限定される訳ではない。
非符号最上位ビット検出器は、正数に対しては、ビットin[38]から下位ビット方向にビットをサーチして、最初に1になったビット位置の番号を2進数のビットパターンで出力する。また、非符号最上位ビット検出器は、負数に対しては、in[38]から下位ビット方向にビットをサーチして、最初に0になったビット位置の番号を2進数のビットパターンで出力する。また、入力データが全ビット0、または、全ビット1の場合は、非符号最上位ビット検出器は、39bit目に1を、38bit以下に0を出力する。
図18に、非符号となる最上位ビット位置を取得する統計情報取得部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が設定される。したがって、図18の回路によって、非符号となる最上位ビット位置に1が設定され、他のビットが0に設定された出力データout(40bit)が取得される。
図19は、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aの処理を例示する図である。図では、40ビットのデータが8個並列に処理されるSIMDデータからビットの分布を取得する処理が例示される。図19では、ハードウェア回路である統計情報集約部104Aの処理が、擬似コードで記述されている。
すなわち、入力データは、8(行)×40(ビット)の配列データで例示されている。また、各行の40ビットの入力データは、非符号となる最上位ビット位置(図18の統計情報取得部102Aの出力)または非符号となる最下位ビット位置である。この処理では、40ビットの出力データoutについて、まず、全ビットがクリアされる。次に、入力デ
ータの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図17とは異なり、図19の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図19の例では3ビット)の整数である。なお、
図19では、SIMDデータ数(並列処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
図20に、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得(SIMDデータ数−1))がbit population count演算によって、8個の統計情報のiビット目(i=0から39)における1の個数がそれ
ぞれカウントされる。入力データは、統計情報取得部102A(図17、図18)によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部104Aは、統計情報取得部102Aによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上位ビット
位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。
また、入力データは、統計情報取得部102Bによる非符号となる最下位ビット位置とすることもできる。統計情報集約部104Aは、統計情報取得部102Bによって取得されたSIMDデータ個数分の非符号となる最下位ビット位置に対して、各ビットの’1’の発
生回数をカウントすることで最下位ビット位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。すなわち、統計情
報集約部104Aは、非符号となる最上位ビット位置または非符号となる最下位ビット位置のいずれをも処理可能である。
また、図20でセレクタ(SEL)は、bit population count演算器(Σ)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)によって選択されたデータが、出力データout0からout39に出力される。したがって、統計情報取得部102
がスカラユニット14で取得したデータは、一回のスカラユニット14の演算においては、加算されることなくそのまま出力データout0からout39に出力される。out0からout39は、統計情報格納部105に引き渡すデータ(図22の105A、図23の105Bの入力データin0からin39参照)である。
図21に、統計情報取得部102が取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得SIMDデータ数−1)がORゲート(40ビット)によってOR演算される。また、図21でセレクタ(SEL)は、論理和演算(OR)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)によって選択されたデータが、出力データoutに出力される。したがって、統計情報取得部102がスカラユ
ニット14で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105に引き渡すデータである。
図22に、統計情報格納部105(図14参照)の具体例として、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105Aの構成を例示する。図で、in39からin0は、図20のout39からout0に相当する統計情報集約部104からの統計情報を示す。また、sr39からsr0は、統計情報を格納するレジスタ値である。プロセ
ッサ10は、書き込み命令によって図示しないセレクタを介して、レジスタsr39からsr0
のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロセッサ10は、デコーダからのリセット信号によってレジスタsr39からsr0をリセットしても良い。プロ
セッサ10は、統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。また、プロセッサ10は、レジスタ(sr39からsr0)のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メ
モリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
図23は、統計情報集約部104の変形例であり、統計情報の格納先がデコーダ112からのインデックスで指定される回路の構成例である。図では、例えば、sr[j][i](j=0,
…,k, i=0,…,39)の領域が確保され、indexによって、レジスタファイルの行jが指定される。
プロセッサ10は、書き込み命令によって図示しないセレクタを介して、indexによっ
て指定されるレジスタファイルの行jの1つあるいは複数のレジスタに初期値を書き込む。ただし、プロセッサ10はデコーダ112からの制御信号により、indexによって指定さ
れるレジスタファイルの行jをリセットしても良い。そして、プロセッサ10は、in39か
らin0の統計情報を加算器で蓄積し、indexによって指定されるレジスタファイルの行jに
格納する。また、プロセッサ10は、デコーダ112からの制御信号により、indexによ
って指定されるレジスタファイルの行jから統計情報を読み出す。また、プロセッサ10
は、indexによって指定されるレジスタファイルの行jのいずれかの1つあるいは複数の値
を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
<統計情報取得機能付き命令>
以下、統計情報取得機能付き命令の構成を例示する。ここでは、命令の構成方法として、方法1、方法2を例示する。
(方法1)方法1では、プロセッサ10の命令セットに、統計情報を取得する演算命令
、ロード命令などが個別に追加される。以下の命令の構成は例示であり、プロセッサ10での統計情報取得機能付き命令が下記命令に限定される訳ではない。
[vmul_s命令]
命令の構成:vmul_s vs, vt, vd, imm
vmul_s命令は、プロセッサ10がベクトル・レジスタ vs と vt を乗算し imm ビットシ
フトし、丸め・飽和を行なって ベクトル・レジスタvd に格納するための命令である。プロセッサ10は、乗算結果のシフト前の統計情報を取得し、統計情報レジスタに累積する。統計情報レジスタは、例えば、図22のsr0からsr39、図23の統計情報レジスタファ
イルのsrj_i(j=0,1,.., i=0,1,…)等である。統計情報レジスタについては以下同様で
ある。
なお、プロセッサ10が内部のレジスタとデータ用メモリ22との間で統計情報を授受するためのread / write, load / store 命令も別途用意する。また、プロセッサ10が
内部のレジスタをリセットするためのリセット命令を別途用意してもよい。以下、同様である。
[vld_s命令]
命令の構成:vld_s ss, st, rd
vld_s命令は、プロセッサ10がアドレス・レジスタ ss とst を加算したアドレスからベクトルデータをロードして、ベクトル・レジスタ rd に格納するための命令である。プロセッサ10は、ロードしたデータの統計情報を取得し統計情報レジスタに累積する。
[read_acc_s命令]
命令の構成:read_acc_s, rd, imm
read_acc_s命令は、プロセッサ10がアキュムレータ・レジスタ(40bit)のデータに対し
て、imm ビットシフトし、丸め・飽和を行なってスカラ・レジスタ rd に格納するための命令である。プロセッサ10は、アキュムレータレジスタの統計情報を取得し統計情報レジスタに累積する。
(方法1の変形)上記方法1に加え、命令のオペランドに、統計情報を格納するレジス
タ・インデックス(s)を追加し、統計情報の格納先が指定できるようにしてもよい。以
下、命令の構成を例示する。この命令のインデックス(s)は、図23等の統計情報レジ
スタファイルのindexを指定する。
vmul_s vs, vt, vd, imm, s
vld_s ss, st, vd, s
read_acc_s, rd, imm, s
(方法2)図24に方法2による命令フォーマットを例示する。命令フォーマットを拡張し、統計情報を取得するか否かを指定するビットを追加するようにしてもよい。例えば、全命令について統計情報取得機能を追加してもよい。図24に、拡張された命令フォーマットを例示する。図のように、FLG=1は、統計情報の取得を指定する。一方、FLG=0は、統計情報の取得を指定せず、従来と同じ命令を示す。
(方法2の変形)図25に方法2の変形による命令フォーマットを例示する。命令フォーマットを拡張し、統計情報を格納するレジスタ・インデックスを指定するようにしてもよい。図でIDXは、レジスタ・インデックス(図23のindex)を示す。ただし、IDX=000 の場合には、プロセッサ10は統計情報を取得しない。デコーダ112は、図25の命令フォーマットをデコードし、レジスタ・インデックスIDXを取得する。
情報処理装置が以上のような統計情報取得機能付き命令を実行するため、統計情報取得機能付き命令を専用サブルーチンで実行するようにすればよい。コンパイラは、専用サブルーチンをコンパイルするときに、統計情報取得機能付き命令を実行形式に組み込めばよい。また、専用サブルーチンは、アセンブリ言語で作成され、統計上取得機能付き命令の実行が指定されるようにしてもよい。情報処理装置が深層学習を実行するためのコンピュータプログラムにおいて、以上のような専用サブルーチンが呼び出されるようにすればよい。
<実行手順>
図26に、比較例の情報処理装置による学習処理のフローチャートを例示する。この処理では、情報処理装置は、初期小数点位置を決定する(WE1)。情報処理装置は、過去の実験値、実績値、あるいは、ユーザ指定により各変数の初期小数点位置を決定すればよい。
そして、情報処理装置は、回数kを0に初期化する。また、情報処理装置は、プログラム内の統計情報を格納する変数を初期化する(WE2)。そして、情報処理装置は学習終了の条件が充足されたか否かを判定する(WE3)。学習が終了するのは、全結合層(fc2)
でのエラーが基準値以下となるか、または、学習回数が規定の最大値に達した場合
である。
学習終了の条件が充足されない場合、情報処理装置は、次のミニバッチを実行する。このとき、情報処理装置は、各レイヤの各変数の統計情報を統計情報レジスタあるいは統計情報レジスタファイルに累積する。統計情報の累積は、上記で説明したように、プロセッサ10のハードウェアで実行される。そして、情報処理装置は、変数kをカウントアップする(WE4)。
そして、情報処理装置は、回数kが更新間隔に達したか否かを判定する(WE5)。回数kが更新間隔に達していない場合、情報処理装置は、WE3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置は、各種の統計情報が蓄積された統計情報を統計情報レジスタあるいは統計情報レジスタファイルあるいは統計情報をメモリに退避した領域から統計情報を読み出す。そして、情報処理装置は、読み出された統計情報を基に各レイヤの各変数の小数点位置を更新する(WE6)。
このとき、情報処理装置は、例えば、飽和するデータとアンダーフローするデータの全
体のデータ数に対する比率が目標条件を充足するように、小数点位置を決定すればよい。また、情報処理装置は、飽和するデータの全体のデータに対する比率とアンダーフローするデータの全体のデータに対する比率の両方が目標条件を充足することが困難である場合、一方を優先してもよい。また、情報処理装置は、飽和が発生しない上限のビット位置と、有効なデータが存在する下限のビット位置の平均を、固定小数点数で表現可能な範囲の中央を位置づけて、小数点位置を設定してもよい。さらに、情報処理装置は、回数kを0に初期化し、さらに統計情報を格納するレジスタをリセットする。そして、情報処理装置は、C3の処理に戻る。
[実施形態1]
以下、図27から図46により、実施形態1のサーバ3、演算処理装置30、演算コア300およびその制御方法を説明する。図27は、実施形態1に係るサーバ3Aの構成を例示する図である。サーバ3Aは、Central Processing Unit(CPU)31と、メモリ
32と、演算処理装置30Aと、演算処理装置用メモリ33とをPeripheral Component Interconnect(PCI) Express(PCIe)等のバス34で接続した構成を有する。CPU31は、処理装置の一例である。メモリ32は、主記憶装置の一例である。
演算処理装置30Aは、専用の演算処理装置用メモリ33に接続され、演算処理装置用メモリ33を使って演算を実行する。演算処理装置30AはSIMD(Single Instruction Multiple data)命令を基本とした演算コア300を複数有する。複数の演算コア300は、個別には、演算コア300−1から300−16のように枝番(k=1から16)で区別する。ただし、演算コア300の数が16個に限定される訳ではない。演算コア300は演算処理回路の一例である。
各演算コア300は、データバス35を介して相互に通信可能である。また、各演算コア300は、データバス35およびPCIeインターフェース等の上位側とのバスインターフェース36を介して、バス34に接続されたCPU31等と接続される。また、各演算コア300は、データバス35およびメモリインターフェース37を介して、演算処理装置用メモリ33に接続される。
したがって、演算処理装置30Aは、バス34、バスインターフェース36およびデータバス35経由でCPU31の指示を受け、複数の演算コア300により並列に演算を実行する。一方、CPU31は、メモリ32に実行可能に展開されたプログラムにしたがって、演算処理装置30A内の複数の演算コア300を制御する。
図28は、実施形態1に係るサーバ3Bの構成を例示する図である。サーバ3Bは、サーバ3Aと同様、CPU31と、メモリ32と、演算処理装置30Bと、演算処理装置用メモリ33とをバス34で接続した構成を有する。サーバ3Aとサーバ3Bとの相違点は、演算処理装置30Aと演算処理装置30Bとの相違にある。演算処理装置30Bは、制御コア38を有する点で、制御コア38を有しない演算処理装置30Aと相違する。
すなわち、制御コア38は、CPU31に代って、演算処理装置30B内の複数の演算コア300を制御する。演算処理装置30B内の複数の演算コア300は、制御コア38の制御にしたがって並列に演算を実行する。したがって、演算処理装置30Aと演算処理装置30Bとの相違点は、演算コア300の制御をCPU31が実行するか、制御コア38が実行するかにあり、この相違点以外に、演算処理装置30Aと演算処理装置30Bに相違はない。そこで、演算処理装置30Aと演算処理装置30Bとを総称して、演算処理装置30ともいう。なお、サーバ3Aとサーバ3Bを総称して、サーバ3ともいう。また、演算処理装置30Bのデータバス35、バスインターフェース36、メモリインターフェース37の構成および作用は、演算処理装置30Aと同様であるので、その説明を省略
する。演算処理装置30A、30B、30等は演算処理装置の一例である。サーバ3A、3B、3等は情報処理装置の一例である。
図29および図30により、比較例に例示した統計情報に基づく処理をサーバ3Bに適用した場合の課題を例示する。図29、図30はサーバ3Bを例示するが、サーバ3Aについても、サーバ3Bと同様の課題が生じる。例えば、各演算コア300で取得された統計情報は、データバス35およびPCIe等のバスインターフェース36を介してメモリ32に格納される。あるいは、各演算コア300で取得された統計情報は、データバス35およびメモリインターフェース37を介して演算処理装置用メモリ33に格納される(図29)。制御コア38は、演算処理装置用メモリ33に格納された統計情報を集約する(図30)。
図29では、複数のセグメントに分かれたデータバス35が線上の連結部分35Cで連結されている。多数の演算コア300がデータバス35に接続されると、データバス35の連結部分35C上ではバスインターフェース36に近い位置ほど、転送される統計情報が大きな帯域を占有する。その結果、連結部分35C上のバスインターフェース36に近い位置ほど、転送データ量が大きくなる。また、バスインターフェース36の負荷が大きくなる。
統計情報は、比較例で説明したように、演算器内部のビット数(例えば、40ビット)について、それぞれ非符号となる最上位のビット位置(または最下位のビット位置)の発生回数を蓄積したものである。したがって、データバス35およびバスインターフェース36の帯域は、統計情報のデータ量と演算コア数との積にしたがって増大する。例えば、演算処理装置30B内の演算コア300の数を128個とすると、単一の演算コア300と比較して、128倍のデータ量がデータバス35とバスインターフェース36を転送される。
図31に、比較例および実施形態1に係る課題を例示する。比較例で統計情報を取得し、集約し、外部のレジスタ等に出力したのは、図31に例示する課題を解決するためである。なお、図31では、表示および理解を容易にするため、データが10進数で記載されているが、実際に演算処理装置30内で処理されるのは2進数のデータである。
例えば、仮に、演算処理装置30で、演算コア300が出力する固定小数点データを10進数8桁とし、11桁目から18桁目を表現するものとして、固定小数点位置を設定したとする。回路規模および消費電力削減のため、固定小数点データのビット数を削減すると、表現できる桁数が減少する。その結果、固定小数点位置が固定の場合には、学習等の処理の繰り返しにより、データの有効桁数が次第に減少する。図のように、例えば、処理の中盤には10進数で有効桁数が4桁となり、処理の終盤では、例えば、有効桁数が0となる場合が生じ得る。
そこで、上記比較例の処理をそのまま実施形態1に適用した場合には、演算後に、統計情報を取得し、CPU31等で実行するプログラムが有効な桁の範囲を調整するように、演算処理装置30に指示する。すると、図31の下側に例示したように、固定小数点データの範囲を数値の減少に追従させることができる。すなわち、処理の中盤から終盤にかけて、統計情報が示すデータの桁の範囲の分布に応じて、CPU31で実行されるアプリケーションプログラムが、演算処理装置30に固定小数点位置を指示する。このような調整によって、サーバ3は、演算結果後の固定小数点データの桁の範囲の分布に応じて、適切に固定小数点データの小数点位置、すなわち、有効な桁の範囲を設定できる。その結果、少ない有効桁数で、深層学習(DL)等の処理が可能となる。このような固定小数点データの小数点位置をアプリケーションプログラムが調整可能とするため、例えば、図12に
例示するように、比較例では、非符号となる最上位ビットの位置の分布を取得して、集約したのである。
すなわち、図12で「表現可能な領域」で示される範囲に、極力多くのデータが入るように固定小数点データの桁の範囲を調整したいとの課題がある。そこで、比較例では、プロセッサ10は、深層学習の各変数を十分なビット数(例えば40ビット)のアキュムレータ等で演算することで、演算中の桁落ちを抑制している。そして、各変数での計算結果から、「非符号となる最上位の桁位置(あるいは、非符号となる最下位の桁位置)」の頻度情報を取得している。そして、例えば、サーバ3のアプリケーションプログラムは、上位A%(特異データデータの可能性がある)を除いて、飽和が発生しない最大の桁位置を求める。そして、比較例のプロセッサ10のアプリケーションプログラムは、求めた桁位置が最上位桁となるように、固定小数点データの桁位置を変更する命令をプロセッサ10に実行させ、桁位置を変更する。すると、変更された桁位置の範囲に対して、最大の桁位置よりも大きなデータは飽和され、最小の桁位置よりも小さなデータは丸められる。したがって、図27あるいは図28のような実施形態1の構成において、比較例の手法をそのまま適用することで効果がない訳ではない。しかしながら、図29、図30に例示したようなデータ転送の負荷、データ転送を処理する回路規模、および消費電力等が増加する可能性が高くなるという問題が生じる。
図32は、実施形態1の演算処理装置30における解決手段を例示する図である。図32では、比較例での解決手段が上段に記載され、上段に対する改善方法として、下段に実施形態1の解決手段が対比される形式で例示されている。上段の比較例では上位A%(特異データのオーバーフロー率)等を求めるために全桁(40ビット)について統計情報が収集された。
実施形態1では各演算コア300で取得する統計情報を頻度分布から累積分布に変更する。ここで、累積分布とは、演算結果である複数の固定小数点数データに関し、非符号となるビット値を持つ最上位のビット位置から最下位ビット(LSB)までフラグを設定することで得られるビットパターンを累積した情報(以下、第1の統計情報)をいう。例えば、演算結果である40ビット(ビット0からビット39)について、LSBはビット0である。ビット39は符号ビット(MSB)である。ビット39の値と異なる値のビット位置のうち、ビットkが最も上位の(符号ビットに近い)ビットであるとする。すると、実施形態1の演算処理装置30は、ビットkからビット0(LSB)に対応する範囲でフラグビット(=1)を設定し、ビットk+1からビット39(MSB)に対応する範囲でビット0を設定したビットパターンを生成する。
そして、演算処理装置30は、例えば、ベクトル演算の実行ごとに、ベクトル演算器に含まれるそれぞれの演算器からビットパターンを収集し、累積し、累積分布を生成する。以上の手順によれば、累積分布の各桁の数値は、当該桁以上で非符号となるビット値が存在したことを示すサンプル数ということができる。
累積分布の各桁が表すサンプル数は、最上位桁(MSB)からその桁までの累積サンプル数であるため、累積分布のA%を超えた桁位置のサンプル数が、比較例の「A%を超えるまでの全桁のサンプル数」に相当する。このため、演算処理装置30は、一桁分のサンプル数情報とその桁位置情報を転送するだけで比較例と同様、所定の閾値を越えた桁位置を特定する情報を得ることが可能である。
なお、累積分布全体に対する所定の閾値を越えた桁位置以上の分布の割合(A%)を算出するためには、分母となる累積分布全体の総サンプル数が要求される。しかしながら、累積分布全体の総サンプル数は、回路構成から既知となる。例えば、演算コア300内で
1回のベクトル演算では、ベクトル演算器の並列数だけ演算が実行される。したがって、1回のベクトル演算当りの総サンプル数は、ベクトル演算器の並列数となる。仮に、累積分布全体のサンプル数に、スカラ演算も含める場合には、累積分布の集計対象である各演算器の回数分だけ積算すればよい。
図33は、統計情報として非符号となるビット値を持つ最下位のビット位置の分布を求める処理例である。図33でも、比較例での解決手段が上段に記載され、上段に対する改善方法として、下段に実施形態1の解決手段が対比される形式で例示されている。すなわち、演算処理装置30は、累積分布として非符号となるビット値を持つ最下位のビット位置から最上位ビット(MSB)までフラグビットを設定することで得られるビットパターンを累積した情報(第2の統計情報)を求めてもよい。例えば、演算処理装置30は、ビット39の値と異なる値のビット位置のうち、ビットkが最も下位の(ビット0に近い)ビットであるとする。すると、実施形態1の演算処理装置30は、ビットkからビット39(MSB)に対応する範囲にフラグビット(=1)を設定し、ビットk−1からビット0(LSB)に対応する範囲にビット0を設定したビットパターンを生成する。
そして、演算処理装置30は、例えば、ベクトル演算の実行ごとに、ベクトル演算器に含まれるそれぞれの演算器からビットパターンを収集し、累積し、累積分布を生成する。非符号となるビット値を持つ最下位のビット位置の分布による判断は、データ分布上のごく小さい異常データを排除する場合に効果的である。
<構成>
図34、図35に、実施形態1に係る演算コア300の構成を例示する。図34では、演算コア300とともに、データバスインターフェース301、データバス35、PCIe等のバスインターフェース36、およびメモリインターフェース37も記載されている。なお、データバスインターフェース301は、演算コア300に含まれてもよい。また、図35では、データバス35には、制御コア38が接続されている。一方、図34は、制御コアのない演算処理装置30Aに含まれる演算コア300を例示する。また、図35は、制御コアのある演算処理装置30Bに含まれる演算コア300を例示する。ただし、図34においてにおいて演算コア300がCPU31により制御され、図35において演算コア300が制御コア38により制御される点を除いて、図34と図35の演算コア300の構成および作用は同様である。
演算コア300は、比較例のプロセッサ10(図13)と同様、PC111、デコーダ(Decoder)112、レジスタファイル12、ベクトル演算用の演算器131、スカラ演
算用のALU141、およびベクトル演算用の演算器131の結果を加算するアキュムレータ132を有している。また、演算コア300は、ベクトル演算用の演算器131、スカラ演算用の演算器141、アキュムレータ132等の演算結果、および、データ用メモリ22からの読み出し結果を選択する複数のセレクタ101を有している。なお、図では、複数のセレクタを総称してセレクタ101と呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器131と呼ぶ。
さらに、演算コア300は、セレクタ101によって選択されたデータからの統計情報を取得する統計情報取得部102C、および統計情報取得部102Cによって取得された統計情報を集約する統計情報集約部104Cを有している。なお、図では、複数の統計情報取得部102Cを総称して統計情報取得部102Cと呼ぶ。さらに、プロセッサ10は、セレクタ101によって選択されたデータの固定小数点位置を変更するデータ変換部103を有している。また、図では、複数のデータ変換部を総称してデータ変換部103と呼ぶ。
演算コア300は、統計情報取得部102Cおよび統計情報集約部104Cを有する点で、統計情報取得部102(102A、102B)、統計情報集約部104(104A,104B)、および統計情報格納部105(105A)を有する比較例のプロセッサ10と相違する。実施形態1では、統計情報取得部102Cは、図32(また図33)に例示したフラグの累積分布を取得する点で、比較例と相違する。すなわち、実施形態1では、統計情報取得部102Cは、比較例の非符号となる最上位のビットの分布情報(または非符号となる最下位のビットの分布情報)を取得する統計情報取得部102(102A、102B)と相違する。統計情報取得部102Cは統計情報取得部の一例である。ベクトル演算用の演算器131、スカラ演算用のALU141等は、それぞれ実行した演算結果である複数の固定小数点数データに関し統計情報取得部102Cにより統計情報を取得されるので、固定小数点数データに対する演算命令を実行する演算部の一例である。
また、統計情報集約部104Cは、図32(また図33)に例示したフラグビットのビットパターンの累積分布を格納する点で、非符号となる最上位のビットの分布情報(または非符号となる最下位のビットの分布情報)を集約する比較例の統計情報集約部104(104A)と相違する。以上のような、統計情報取得部102Cと統計情報集約部104Cの組み合わせは、統計情報取得部の一例でもある。
また、演算コア300は、データバスインターフェース301を介してデータバス35に接続され、さらに、バスインターフェース36を介してPCIe等のバス34、さらにはCPU31に接続される。また、演算コア300は、データバス35からメモリインターフェース37を介して、演算処理装置用メモリ33に接続される(図27、図28参照)。
各演算コア300は、統計情報取得部102Cで取得したビットパターンを累積分布として取得する。以下、本実施形態では、統計情報取得部102Cで取得したビットパターンの累積分布を統計情報と呼ぶ。各演算コア300には、統計情報(累積分布)から取得する桁位置が設定される。ここで、桁位置とは、例えば固定小数点データの演算がなされたときに、固定小数点データの各ビット位置に対応して設けられる桁位置であって、統計情報(累積分布)が累積される桁位置をいう。
桁位置はユーザがハイパーパラメータとして任意に指定してもよい。統計情報集約部104Cは、統計情報取得部102Cが取得した累積分布のうちの指定された桁の累積分布データ(サンプル数ともいう)を出力する。より具体的には、各演算コア300の統計情報集約部104Cは、指定された桁位置の前後−L〜+M桁(L、Mは整数)の区間の統計情報のサンプル数情報を抽出する。各演算コア300は抽出したサンプル情報を制御コア38またはCPU31へ転送する。なお、比較例の統計情報格納部105に相当する構成は、実施形態1においては、統計情報取得部102C内の例えば、図示しないレジスタとして設けられる。
図36に、制御コア38の構成を例示する。制御コア38は、例えば、Reduced Instruction Set Computer(RISC)、あるいはDigital Signal Processor (DSP)を用
いる。制御コア38は、制御部381と、レジスタ382と、命令メモリ383を有する。制御コア38は、PCIe等のバスインターフェース36経由でバス34上のメモリ32(図28参照)またはメモリインターフェース37で制御コア38に接続される演算処理装置用メモリ33に命令コードの本体を保持する。
制御コア38の制御部381は、例えば、PCIe等のバスインターフェース36経由で命令コードを命令メモリ383へ格納する。そして、CPU31は、PCIe等のバスインターフェース36経由の制御信号により、制御コア38を起動する。制御コア38の
制御部381は命令メモリ383のコードを順次、フェッチ、デコードし、演算等の命令を実行する。また、制御コア38の制御部381はデータバス35を介して演算コア300あるいは演算処理装置用メモリ33にアクセスし、レジスタ382との間でデータを授受する。なお、制御部381がメモリ32のデータをレジスタ382に書き込むことをライトバックという。
図34、図35で例示した演算コア300は、演算処理装置30内に複数設けられ、データバス35を介して相互に接続され、並列に演算を実行する。ただし、演算コア300の構成のうち、統計情報取得部102Cおよび統計情報集約部104C以外については、上述のように、比較例のプロセッサ10と同様である。そこで、以下の実施形態1では、統計情報取得部102Cおよび統計情報集約部104Cについて詳述する。
図37に、実施形態1に係る統計情報取得部102Cの構成を例示する。図では、統計情報取得部102Cによる統計情報取得の対象であるaccumulator AC0からAC7、演算部A−0からA−7、バンク0のレジスタR0からR7、バンク1のレジスタR0からR7、およびデコーダ112も記載されている。なお、accumulator AC0からAC7、演算部A−0からA−7、バンク0のレジスタR0からR7、バンク1のレジスタR0からR7は、Single Instruction/Multiple Data(SIMD)プロセッサの一部である。また、演算部A−0からA−7が、図34、図35に例示したベクトル演算用の演算器131の例である。
統計情報取得部102Cは、演算部B−0からB−7と、加算器AB0からAB39と、桁#レジスタAR0からAR39を有する。ここで、#は、演算中のデータの各桁(0から39)に対応する数字である。
上述のように、実施形態1の統計情報取得部102Cは、SIMDプロセッサを前提としている。SIMDプロセッサはレジスタをSIMD並列幅分有する(レジスタbank0,レ
ジスタ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にも送出する。
演算部B−0からB−7は非符号となる最上位ビット以下LSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理を行う。非符号となる最上位ビットとは
、符号ビットの値と異なるビット値を有するビットのうち、符号ビット(Most Significant Bit(MSB))に最も近い位置のビットをいう。演算部B−0からB−7の処理により、最下位ビット位置(Least Significant Bit(LSB))から、符号ビットと異なるビッ
ト値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンの一例が生成される。
なお、演算部B−0からB−7は非符号となる最下位ビット以上MSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理を行うものであってもよい。非符
号となる最下位ビットとは、符号ビットの値と異なるビット値を有するビットのうち、符号ビットから最も遠い位置(LSBに最も近い位置)のビットをいう。演算部B−0からB−7の処理により、符号ビット(MSB)の位置から、符号ビットと異なるビット値を
持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンの一例が生成される。
さらに統計情報取得部102Cには、加算器AB0からAB39が40器設けられている。加算器AB0からAB39は、accumulator AC0からAC7のそれぞれのビット幅と同じビット幅を有し、演算部B−0からB−7の結果の桁ごとの加算を行う。加算器AB0からAB39は、演算部B−0からB−7の演算結果の桁ごとの加算結果と、桁#レジスタAR0からAR39に保存した各桁の値と加算して桁#レジスタAR0からAR39を更新する。桁#レジスタAR0からAR39は、桁ごとの統計情報格納部と呼ばれる。加算器AB0からAB39と桁#レジスタAR0からAR39との処理によって、フラグビットを設定することで得られるビットパターンをビット位置ごとに累積した第1の統計情報の一例が生成される。以上の構成によって、演算部A−0からA−7は、演算結果である複数の固定小数点数データに関し、統計情報取得部102Cによって統計情報を収集される。このため、演算部A−0からA−7は、演算部の一例であると言える。また、桁#レジスタAR0からAR39は、保持部の一例である。
また、演算部B−0からB−7は非符号となる最下位ビット以上MSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理を行うものである場合、加算器A
B0からAB39と桁#レジスタAR0からAR39との処理によって、第2の統計情報が生成される。したがって、統計情報取得部102C、あるいは加算器AB0からAB39と桁#レジスタAR0からAR39とは、第1の統計情報と第2の統計情報の少なくとも一方の統計情報を取得する統計情報取得部の一例ということができる。
図38に、C言語の擬似コードによって演算部B−0からB−7の処理を例示する。以
下演算部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”を設定する処理
が実行される。
なお、図38において、ビット38からビット0までをサーチする処理(for(i=38;i>=0;i--))をビット0からビット38までをサーチする処理(for(i=0;i<=38;i++))に変更してもよい。この変更により、非符号となる最下位ビット以上MSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理が実行される。
図39に、演算部Bのハードウェア回路を例示する。図のように、演算部Bは、符号ビット(bit[39])と、ビット38(bit[38])からビット0(bit[0])の排他論理和を実行する39桁分の排他論理和回路(XOR)と、ビット37(bit[37])以下のビットについて
、上位ビットとの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”を設定する処理がハードウェアで実行される。
なお、図39において、OR回路(or)をbit[38]とbit[37]から順次下位ビット方向に演算する代わりに、bit[0]とbit[1]から順次上位方向に演算するように接続してもよい。この構成によって、非符号となる最下位ビット以上MSBまでの範囲に対応するビット位置にフラグビット”1”を設定する処理がハードウェアによって実行される。
図40に、統計情報集約部104Cの構成を例示する。また、図41は、図40に例示するカウンタ1043の動作を例示するRTLの擬似コードである。また、図42は、統計情報集約部104Cの各要素の動作を例示するタイムチャートである。図43は、終了処理部1047の構成と作用を例示する図である。図44は、終了処理部1047の各構成の動作を例示するタイミングチャートである。
図40では、統計情報集約部104Cとともに、桁ごとの統計情報格納部である桁#レジスタAR0からAR39も記載されている。統計情報集約部104Cは、桁#レジスタAR0からAR39から「桁位置設定値」を基準位置(原点位置)として+Mの桁位置か
ら−Lの桁位置までの範囲の値を順次選択し出力する。なお、図40では省略されている
が、統計情報集約部104Cの各部はクロック信号に同期して動作する。桁ごとの統計情報格納部である桁#レジスタAR0からAR39は、統計情報の各桁に累積した情報を保持する保持部の一例である。
ここで、桁位置設定値は、例えば、CPU31が実行するアプリケーションプログラムによって、桁位置設定命令等を通じて、CPU31に引き渡される値である。CPU31は、例えば、桁位置設定値を受け付け、演算処理装置30、演算コア300または制御コア38のレジスタに閾値を設定する命令を実装すればよい。+Mの桁位置および−Lの桁位置は、例えば、ユーザが指定したシステムパラメータを介してOSからCPU31に引き渡される。サーバ3は、ハイパーパラメータ、すなわち事前設定値として、+Mの桁位置
および−Lの桁位置を保持すればよい。ただし、CPU31が実行するアプリケーション
プログラムから指定を受け、桁位置設定命令等を通じて、+Mの桁位置および−Lの桁位置を演算コア300に設定してもよい。例えば、+M桁指定値および−L桁指定値は、CPU31から演算処理装置30への命令によって、メモリ32から演算処理装置30、または制御コア38のレジスタにロードされるようにすればよい。
図40のように、統計情報集約部104Cは、桁位置セレクタ1040と、制御部1041と、制御用カウンタ1042と、カウンタ1043と、デコーダ1044と、桁位置出力用のANDゲート1045と、指定範囲の統計情報出力用のANDゲート1046と、終了処理部1047と、カウント数出力用の加算器(ADD)G1と、桁の上限位置出力用の加算器G2と、桁の下限位置出力用の減算器(SUB)G3とを有する。
カウント数出力用の加算器(ADD)G1は、+M設定値と−L設定値の加算によってカウント数を生成する。桁の上限位置出力用の加算器G2は、桁位置設定値と+Mの設定値を加算することで、カウンタ初期値である桁の上限位置を算出する。また、桁の下限位置出力用の減算器(SUB)G3は、桁位置設定値から−Lの設定値を減算することで、カウンタ最終値である桁の下限位置を算出する。
桁位置セレクタ1040は、デコーダ1044に指定された番号の位置に対応する桁#レジスタAR0からAR39のいずれかに保持された値(以下、桁の値という)を選択するセレクタである。桁位置セレクタ1040が選択した桁の値(例えば、32ビット)は、ANDゲート1046を介して出力される。桁の値は、統計情報の各桁のサンプル数ということもできる。
制御部1041は、統計情報集約部104Cの各部を制御する。制御部1041は、ステートマシンを実装するハードウェア回路である。ただし、制御部1041は、ROMに格納されたファームウェアによって動作するプロセッサを内蔵してもよい。制御部1041には、開始イネーブルとカウント数とカウンタ初期値とカウンタ最終値が入力される。
制御部1041は、開始イネーブルによって動作を開始し、制御用カウンタ1042のイネーブルをON(真、1)にし、制御用カウンタ1042にしたがって動作する。すなわち、制御部1041は、制御用カウンタ1042の値が0からカウント数まで計数する範囲で統計情報集約部104Cの各部を制御する。制御部1041は、カウンタ1043にカウント初期値(桁の上限位置)を設定した後、カウンタの制御信号によりカウンタのイネーブルをONとし、動作を開始させるとともに、ANDゲート1046への出力イネーブルをONにする。
カウンタ1043は、統計情報が出力される桁位置を計数する。カウンタ1043は、制御部1041からのカウンタの制御信号によりイネーブルをOFFにされるまでカウンタ初期値から計数を継続する。カウンタ1043の計数値は、デコーダ1044および桁位置出力用のANDゲート1045に出力される。なお、桁#レジスタAR0からAR39に、非符号となる最上位ビットのサンプル値が累積されている場合には、カウンタ1043は、上位桁(桁位置設定値+M)から下位桁(桁位置設定値−L)に向けて計数すればよい。また、桁#レジスタAR0からAR39に、非符号となる最下位ビットのサンプル値が累積されている場合には、カウンタ1043は、下位桁(桁位置設定値−L)から上位桁(桁位置設定値+M)に向けて計数すればよい。
デコーダ1044は一般的なデコーダであり、例えば、6bit2進数を40bitのone-hot-vector(1つのビットだけが1で残りが0のビットパターン)に変換する。デコーダ1044による40bitのone-hot-vectorは、桁位置セレクタ1040に入力される。
桁位置セレクタ1040は40bitのデコードされた桁位置セレクタセレクト信号が”1”となっているビットに対応する桁の値(桁#レジスタAR0からAR39のいずれか)32bitを出力する。デコーダ1044から出力されるone-hot-vectorは、保持部が保持する統
計情報のうちの特定の桁を指定する制御信号の一例である。
ANDゲート1045は、制御部1041からの出力イネーブルがONのとき、カウンタ1043からの桁位置信号を出力する。ANDゲート1046は、制御部1041からの出力イネーブルがONのとき、桁#レジスタAR0からAR39のうち桁位置セレクタ1040で選択された桁の値、すなわち、統計情報の当該桁のサンプル値を出力する。したがって、桁位置セレクタ1040、制御部1041、カウンタ1043、デコーダ1044、ANDゲート1045、およびANDゲート1045は第1の選択部の一例である。終了処理部1047は、制御部1041からの出力イネーブルがOFFになったときに、統計情報集約部104Cの各部をリセットする信号を生成する。
図41は、カウンタ1043の動作を例示するRTLの擬似コードである。図の擬似コードで、input wireは、入力データ信号を示し、output regは、出力データ信号、および、保持される信号を示す。図41のように、カウンタは、入力信号ck,rst,set,en,およびdataをそれぞれ入力される。入力データ信号dataは6ビットの信号である。入力信号rst
は、リセット信号であり、入力信号rstに1が入力されると、カウンタ1043は、計数
値q(例えば、6ビット)を0クリアする。入力信号setは計数値の初期設定信号であり
、入力信号rstが0で、入力信号setに1が入力されると、カウンタ1043は、計数値qに入力信号data(例えば、6ビット)を設定する。
信号enはイネーブル信号であり、入力信号rstおよび入力信号setがともに0で、入力信号enに1が入力された状態になると、カウンタ1043は動作を開始する。カウンタ1043は計数値qが0になるまで、所定のクロック周期で計数値qをデクレメントする。
図42は、統計情報集約部104Cの各部の動作を例示するタイムチャートである。図は、非符号となる最上位ビットの累積値を集約する場合のタイムチャートである。したがって、カウンタ1042は計数方向が上位桁から下位桁にデクレメントする方向となっている。なお、非符号となる最下位ビットの累積値を集約する場合のタイムチャートでは、カウンタ1042は計数方向が下位桁から上位桁にインクレメントする方向となればよい。以下、統計情報集約部104Cの動作を図42のタイムチャートとあわせて説明する。図42のように、統計情報集約部104Cの各部はクロック信号CLKに同期して動作する。
上述のように、制御部1041は開始イネーブルが”1”となることで動作を開始する
。制御部1041は、動作開始時に制御用カウンタ1042のイネーブルをON(真、1)にし、制御用カウンタ1042を起動する。制御用カウンタ1042は0からカウントアップを始める。
制御部1041は制御用カウンタ1042の値を読み、制御用カウンタ1042の値が”0”であるときに、制御部1041に入力されたカウンタ初期値を読み取り、カウンタ1043へ初期値(図では値36)を設定する。カウンタ1043は初期値設定機能を有する。制御部1041はset信号を”1”にすることでカウンタ1043の初期値設定信
号線を使ってカウンタ初期値を設定する。さらに、制御部1041は次のサイクルでカウンタ1043のイネーブル信号enをONにする。制御部1041はカウンタ1043のイネーブル信号enをONにするとともに、出力イネーブルを”ALL1”にする。ここで、出力イネーブルは、桁位置を出力するANDゲート1045の一方の入力(1ビット)と、桁位置に対応する統計情報のサンプル値を出力するANDゲート1046(例えば32ビット分)の一方の入力(32ビット)の合計33ビットの信号である。
デコーダ1044はカウンタ1043の計数値である6bit2進数を40bitのone-hot-vectorに変換する。桁位置セレクタ1040は40bitのデコードされた桁位置セレクタセレク
ト信号が”1”となっている桁32bitを出力する。制御部1041は制御用カウンタ1042がカウント数になるまでカウンタイネーブルおよび出力イネーブルを”1”にして継続
する。制御用カウンタ1042の値がカウント数まで到達したら、制御部1041は、カウンタイネーブルおよび出力イネーブルを”0”にし、カウンタ1043およびANDゲート1045、1046による出力を停止する。
したがって、出力イネーブルに1が入力されている間、カウンタ1043の計数値にしたがって、桁36から桁31までの範囲で、統計情報の各桁のサンプル値15、33、100、125、400、500がANDゲート1046から出力される。ANDゲート1046から出力された統計情報のサンプル値は、統計情報集約部104Cで集約され、例えば、レジスタファイル12内のレジスタに出力される。そして、出力された統計情報のサンプル値はCPU31で実行されるアプリケーションプログラムに引き渡される。
終了処理部1047は、次回統計データ取得のため、カウンタ1043等の内部のフリップフロップ等、状態を有する論理回路を初期化する。終了処理部1047は、出力イネーブルが”1”から”0”に立ち下がったことを検出することで、一連の統計データ取得
処理が終了したことを検出する。終了処理部1047は、立ち下がり検出信号の反転論理を統計情報集約部104Cの各フリップフロップ等のリセット信号に接続することで初期化を実行する。
図43のように、終了処理部1047は、フリップフロップ(FF)と、ANDゲート(AND1)と、インバータIV1とを有する。フリップフロップ(FF)は、前回のクロックで入力された出力イネーブルを保持する。一方、ANDゲート(AND1)は、フリップフロップ(FF)の信号と現在の出力イネーブルの反転信号のANDを実行する。したがって、図44のように、出力イネーブルが前回1(真)で、今回0(偽)となる場合に、終了処理部1047は、フリップフロップ(FF)とANDゲート(AND1)とによって1(真)を出力する。
さらに、次のクロックでは、フリップフロップ(FF)は、出力イネーブルの今回の値0(偽)を受けて、0(偽)を出力するので、ANDゲート(AND1)の出力は、出力イネーブルが0(偽)になった後、次のクロックまでの間1(真)となるパルス信号を発生する。そして、インバータIV1によって信号が反転されるので、終了処理部1047は、出力イネーブルが1(真)から0(偽)になったときに、1(真)から0(偽)となるパルス信号を発生する。
図45は、各演算コア300の処理を例示するフローチャートである。図45では、制御コア38の処理も併せて記載されている。処理開始前、例えば、ユーザ操作にしたがい、CPU31が実行するアプリケーションプログラムは、初期値となる桁位置を決定する。初期値とは固定小数点データの桁数の値である。CPU31および演算処理装置30は、設定後深層学習の処理を開始する。
深層学習の処理を開始後、各演算コア300は、決定済みの初期値となる桁位置を所定のレジスタに設定する。また、また、ユーザ(またはCPU31が実行するアプリケーションプログラム)からのパラメータを基に、各演算コア300は、「更新間隔」というパラメータを設定する(S1)。「更新間隔」は学習処理が何回行われる毎に桁位置を更新するかを判断する値で、例えば、サーバ3のユーザが所望の値を設定可能である。各演算コア300は、さらに学習の前に、学習回数の変数kおよび統計情報の初期化を行う。ここで、統計情報の初期化は前述の桁ごとの統計情報格納部の値を”0”にクリアする処理
である(S2)。
初期化後、各演算コア300は、桁ごとの統計情報格納部(桁#レジスタAR0からAR39)を更新しながらの深層学習を実行する(S3、S4)。なお、図45の例では、各演算コア300は、まず、分岐1で学習終了を判定する(S3)。学習の終了とは、例えば、学習対象の入力データと正解データのペアに対して、エラーが許容値の範囲となる場合である。また、学習が最後のミニバッチを終了した場合も、各演算コア300は、学習を終了する。
S3でNOの場合、学習の進行とともに、学習回数kが更新間隔回数となるまで統計情報は累積する(S4)。そして、各演算コア300は、まず、分岐2で学習回数kが更新間隔の回数に達したか否かを判定する(S5)。分岐2で学習回数kが更新間隔の回数に達した場合、CPU31は制御コア38に累積された統計情報(指定の桁位置+Mから−Lとなる範囲の桁位置のデータ)を転送し(S6)、転送した統計情報の集計を指示する。
制御コア38は各演算コア300の閾値+M〜閾値−Lとなる桁位置のサンプル数の転送完了を待つ。転送完了後、制御コア38は、転送された演算コア300からの統計情報を積算し、演算処理装置30全体での統計情報を集計する。そして、制御コア38は、集計された統計情報を所定のレジスタまたはメモリ32の所定のアドレスに出力する。
さらに、制御コア38は、更新間隔を数える変数kと累積された統計情報を初期化し、分岐1の学習終了判定(S3)に処理を進める。そして、各演算コア300は学習が最後のミニバッチであるか、エラーが所定の許容範囲となった場合(分岐1)、学習を終了する。なお、図45のS6では、統計情報が制御コア38に転送され、制御コア38がS7の処理を実行している。しかし、制御コア38がない図34の構成では、各演算コア300は、S6で統計情報をCPU31に転送し、CPU31がS7の処理を実行してもよい。
図46は、制御コア38の動作を例示するフローチャートである。ただし、制御コア38の代りにCPU31が図46の処理を実行してもよい。制御コア38は、CPU31の指示を待ち(S70、S71)、その指示を受けて動作する。例えば、制御コア38は、図45の更新間隔、学習終了を判定するための情報等を独自には保持していない。このため、制御コア38は、更新間隔、学習終了を判定するための情報等をCPU31から受け取る。
制御コア38は、CPU31からの指示を受信し(S71でYES)、各演算コア300を起動し処理を行わせる(S72)。制御コア38は、各演算コア300での演算の終了を待つ(S73)。演算の終了とは、例えば、演算コア300での1回の演算の終了でもよいし、図45の更新間隔分の演算の終了でもよい。各演算コア300の演算が終了すると(S74でYES)、制御コア38は、演算を終了した演算コア300に統計情報の集約を指示する(S75)。この指示により、演算を終了した演算コア300は、図40に例示した回路により、統計情報を制御コア38に出力する。
そして、制御コア38は、各演算コア300で集約された統計情報を取得すると、取得した統計情報を集計していく(S76)。そして、制御コア38がすべての演算コア300で集約された統計情報を集計すると(S77でYES)、集計した統計情報をメモリ32に転送する(S78)。
なお、制御コア38では、データバス35に接続される演算コア300の数および当該演算で使用される演算器(図37の演算部Aの並列数)が既知である。したがって、制御コア38がすべての演算コア300で集約された統計情報を集計すると、総サンプル数に対する集計された桁のサンプル数の比率を算出できる。S78では、制御コア38は、集計された桁の総サンプル数に対する当該桁以上のサンプル数の比率を転送すればよい。そして、制御コア38は、統計情報をクリアし(S79)、処理の完了をCPU31に通知する(S80)。なお、制御コア38が演算処理装置30Aを有するサーバ3A(図27参照)では、CPU31が図46のS72からS80の処理を実行すればよい。
<実施形態1の効果>
以上述べたように、実施形態1では、各演算コア300の統計情報集約部104Cは、統計情報を図32、図33に例示した累積分布の形式で取得し、桁位置設定値によって指定されたビット位置を基準に、+M桁から−L桁の範囲(最低限1桁の範囲)で集約し、取得できる。CPU31または制御コア38は、各演算コア300で集約された統計情報の所定桁数(+M〜―L)をデータバス35とメモリインターフェース37、あるいはデータバス35、バスインターフェース36、およびバス34を通じた伝送路で収集すればよい。すでに述べたように、最低限1桁の統計情報があれば、アプリケーションプログラムを実行するCPU31、あるいは、CPU31に制御される制御コア38は、当該桁以上でのサンプル数の総サンプル数に対する比率を各演算コア300から収集できる。この比率は、集計対象の演算におけるオーバーフロー率あるいはアンダーフロー率ということができる。したがって、CPU31、あるいは、制御コア38は、集計対象の演算でのオーバーフロー率あるいはアンダーフロー率を判定できる。
したがって、実施形態1の演算処理装置30は、比較例のように、演算途中の演算回路内の全ビット(例えば、40ビット相当)の統計情報を収集し、集約し、格納する必要がない。つまり、実施形態1の演算処理装置30および演算コア300では、統計情報を収集し、集約し、格納する構成要素および各要素間で統計情報を転送するための伝送路の帯域を低減できる。したがって、実施形態1では、回路規模および消費電力を低減した上で、統計情報の指定された桁のサンプル数をアプリケーションプログラムに引き渡すことができる。したがって、深層学習等のアプリケーションプログラムを実行するサーバ3は、回路規模および消費電力を低減した上で、少ないオーバーヘッドで統計情報を取得することができ、早期に固定小数点データの小数点位置を決定できる。すなわち、サーバ3は、アプリケーションプログラム内の変数の有効桁数の範囲を適切な範囲に効率的に決定できる。
[実施形態2]
図47から図51により、実施形態2における演算処理装置30の演算コア300を説明する。上記実施形態1では、演算コア300は統計情報取得部102Cにより、統計情報の累積分布を取得するとともに、統計情報集約部104Cに指定された桁位置を基準に+M桁から−L桁の範囲で統計情報のサンプル数を抽出して出力した。実施形態2でも、実施形態1と同様、演算コア300は統計情報取得部102Cにより、統計情報の累積分布を取得する。ただし、実施形態2では、演算コア300は、統計情報取得の基準となる桁位置の指定を受ける代りに、オーバーフロー率(または、オーバーフロー回数、アンダーフロー率、アンダーフロー回数等)等に該当する閾値の指定を受ける。そして、実施形態2では、統計情報集約部104Cに代えて、統計情報集約部104Dが指定を受けた閾値に対応する桁位置を決定する。
そして、実施形態2の演算コア300は、統計情報集約部104Dによって決定された桁位置を基準に+M桁から−L桁の範囲で統計情報のサンプル数を抽出して出力する。実施形態2において、以上のような統計情報集約部104Dに関連する演算コア300の構成および作用以外の点は、実施形態1と同様である。そこで、実施形態1の構成要素のうち、実施形態1と同一の構成要素については、同一の符合を付してその説明を省略する。
すなわち、実施形態2においても、実施形態1と同様、サーバ3として、図27のサーバ3Aまたは図28のサーバ3Bの構成が例示できる。また、サーバ3Bの制御コア38としては、図36の構成が例示される。そして、演算コア300としては、図34、図35中で、統計情報集約部104Cを統計情報集約部104Dに置き換えた構成が例示される。
したがって、実施形態2でも、実施形態1と同様、各演算コア300は取得したデータを累積分布として保存する。一方、制御コア38(またはCPU31)は、各演算コア300に事前に閾値を設定する。閾値は、例えば、ユーザが所望の値を指定可能とする。サーバ3は、ハイパーパラメータ、すなわち事前設定値として、閾値を保持すればよい。閾値は、例えば、演算処理装置30への命令によって、メモリ32から演算処理装置30のレジスタにロードされる。
そして、各演算コア300は、閾値を超えた最初の桁位置の前後−L〜+Mの区間のサンプル数情報を抽出する。すなわち、各演算コア300は、
{閾値<(累積分布の桁位置のサンプル数/総サンプル数)}
となる桁位置を計算する。各演算コア300は抽出したサンプル数と、サンプル数/総サンプル数が閾値を超えた桁位置情報を制御コア38へ転送すればよい。
ここで、累積分布が第1の情報である場合には、累積分布の各桁位置のサンプル数は、
非符号となるビット値を持つ最上位のビット位置についてのサンプル数であって、各桁位置以上のサンプル数を示す。したがって、ある桁が固定小数点数の有効桁の最上位桁である場合、累積分布の当該桁位置のサンプル数/総サンプル数は、オーバーフロー率に該当する値となる。また、累積分布の当該桁位置のサンプル数はオーバーフロー回数を示す。総サンプル数は、例えば、1個の演算コア300における1回のベクトル演算においては、並列に実行される演算器の数(並列に実行されるベクトルの次元数)となり、既知である。
また、総サンプル数は、例えば、複数回の演算を累積する場合は、上記の1個の演算コア300の総サンプル数に演算回数を積算したものとなる。例えば、ベクトル演算器N個をK1回、スカラ演算器M個をK2回実行した場合には演算回数の積算値はN×K1+M×K2となる。深層学習のレイヤごとのパラメータ(変数ベクトル)と重みベクトルとが定まると、各レイヤにおける演算回数の積算値は既知となる。さらに、CPU31あるいは制御コア38が複数レイヤ分の演算回数を累積してもよい。また、CPU31あるいは制御コア38が全レイヤで複数回の深層学習処理(認識(フォーワッド方向)および学習(バックワード方向))の演算回数を累積してもよい。さらに、CPU31あるいは制御コア38が学習時の小数点位置の更新間隔分(図26)の演算回数を累積して総サンプル数を求めてもよい。
したがって、ユーザが閾値を指定する場合、オーバーフロー率を指定してもよいし、オーバーフロー回数を指定してもよい。オーバーフロー回数は、ある処理単位あたり、つまり、並列に演算を実行するベクトル演算器1組による1回の演算、1つの演算処理装置30内の演算コア300の総数による1回の演算当りのオーバーフロー回数であること等の条件が特定されればよい。また、オーバーフロー回数は、1つのレイヤにおける1組の入力データに対する認識と学習、全レイヤにおける1組の入力データに対する認識と学習、または小数点位置の更新間隔あたりのオーバーフロー回数であること等の条件が特定されればよい。そこで、以下の説明では、閾値はオーバーフロー率あるいはオーバーフロー回数のいずれであってもよいこととする。
閾値は、例えば、深層学習等のアプリケーションプログラム実行時の実行時パラメータ、あるいは、OS等のシステムパラメータとして設定できるようにすればよい。例えば、閾値としてオーバーフロー率が指定されるとする。CPU31は、アプリケーションプログラム実行時に、実行時パラメータあるいはシステムパラメータをメモリ32等から取得し、演算コア300内で並列に実行されるベクトル演算器の数を基に、統計情報の累積値と比較するための閾値に変換すればよい。そして、CPU31は、算出した閾値を制御コア38あるいは演算コア300の統計情報集約部104D等に引き渡せばよい。CPU31は、例えばオーバーフロー率で閾値を指定され、演算コア300内の1回の演算のあたりのオーバーフロー回数に換算して、制御コア38あるいは演算コア300の統計情報集約部104D等に引き渡せばよい。
以上は、オーバーフロー回数とオーバーフロー率を例に説明した。しかし、閾値がアンダーフロー率で指定されても同様である。すなわち、累積分布が第2の情報である場合には、累積分布の各桁位置のサンプル数は、非符号となるビット値を持つ最下位のビット位置についてのサンプル数であって、各桁位置以下のサンプル数を示す。したがって、ある桁が固定小数点数の有効桁の最下位桁である場合、累積分布の当該桁位置のサンプル数/総サンプル数は、アンダーフロー率に該当する値となる。また、累積分布の当該桁位置のサンプル数はアンダーフロー回数を示す。CPU31は、アンダーフロー率を指定される場合には、指定されたアンダーフロー率を演算コア300内で並列に実行されるベクトル演算器の数を基に、統計情報の累積値と比較するための閾値に変換すればよい。
実施形態2では、統計情報集約部104Dは、桁位置探索部104D1と集約部104D2に分かれる。図47に、桁位置探索部104D1の詳細構成を例示する。なお、図47では、集約部104D2も例示されている。桁位置探索部104D1は、実施形態1の統計情報集約部104Cと同様、桁位置セレクタD140と、制御部D141と、制御用カウンタD142と、カウンタD143と、デコーダD144を有する。以下、桁位置探索部104D1の制御部D141を桁位置制御部ともいう。さらに、桁位置探索部104D1は、桁位置セレクタD140からの各桁の統計情報のサンプル数と閾値とを比較する比較器D145と、比較器D145による比較結果を保持する結果保持1部D146とを有する。このうち、桁位置セレクタD140、制御部D141、制御用カウンタD142、カウンタD143、およびデコーダD144の動作は、それぞれ、実施形態1の桁位置セレクタ1040、制御部1041、制御用カウンタ1042、カウンタ1043、およびデコーダ1044の動作と同様である。すなわち、桁位置セレクタD140は、デコーダD144に指定された番号の位置に対応する桁#レジスタAR0からAR39のいずれかに保持されたサンプル数を選択する。
制御部D141は、桁位置探索部104D1の各部を制御する。制御部D141は、ステートマシンを実装するハードウェア回路である。ただし、制御部D141は、ROMに格納されたファームウェアによって動作するプロセッサを内蔵してもよい。制御部D141には、開始イネーブルとカウント数と比較器D145で生成され、結果保持1部D146に保持される比較結果保持信号が入力される。
制御部D141は、開始イネーブルによって動作を開始し、制御用カウンタD142のイネーブルをONにし、制御用カウンタD142にしたがって動作する。制御部D141は、カウンタD143にカウント初期値として最上位桁(例えば、39)を設定した後、カウンタの制御信号によりカウンタD143のイネーブルをONとし、動作を開始させる。
カウンタD143は、統計情報が出力される桁位置を計数する。カウンタD143は、制御部D141からのカウンタD143への制御信号によりイネーブルをOFFにされるまでカウンタ初期値(最上位桁)から計数を継続する。カウンタD143の計数値は、デコーダD144に出力されるとともに、桁位置保持信号として集約部104D2に出力される。
デコーダD144は実施形態1のデコーダ1044と同様、一般的なデコーダであり、例えば、6bit2進数を40bitのone-hot-vectorに変換する。デコーダD144による40bit
のone-hot-vectorは、桁位置セレクタD140に出力される。桁位置セレクタD140は40bitのデコードされた桁位置セレクタセレクト信号が”1”となっているビットに対応する桁の値(桁#レジスタAR0からAR39のいずれかのサンプル数)32bitを出力する
比較器D145は、図示しないレジスタに保持された閾値と桁位置セレクタD140からの各桁のサンプル数を比較する。比較器D145は、桁位置セレクタD140からの各桁のサンプル数が閾値以下のとき、0(偽)を出力し、サンプル数が閾値を越えると1(真)を出力する。比較器D145は、統計情報の各ビット位置に累積した情報と閾値とを比較する比較部の一例である。
結果保持1部D146は、比較結果保持信号として初期値として0(偽)を保持し、一旦、1(真)が入力されると、図示しないリセット信号が入力されるまで、比較結果保持信号として1(真)を保持する。結果保持1部D146は、比較結果保持信号を制御部D141と集約部104D2に供給する。
制御部D141は、結果保持信号が1(真)になると、カウンタD143のイネーブルを偽(0)に設定し、停止させる。なお、実施形態2では、結果保持信号が1(真)になっても、制御用カウンタD142は動作を継続し、計数値の制御部D141への供給を継続する。制御部D141、制御用カウンタD142、カウンタD143、デコーダD144は、統計情報の各ビット位置のうち選択されるビット位置を指定する制御部の一例である。桁位置セレクタD140は、指定されたビット位置に累積した情報を選択する第2の選択部の一例である。
図48は、結果保持1部D146の動作をRTLの擬似コードで例示する。結果保持1部D146は、リセット信号rstが1(真)のとき、値qをクリアする。また、結果保持
1部D146は、リセット信号rstが0(偽)で、かつ、入力データの信号(d)が正の
パルス(1)のとき、出力データ信号qを1に設定する。また、入力データの信号(d)が正のパルス(1)以外のとき、出力データ信号qをそのまま維持する。
図49は、桁位置探索部104D1の各部の動作を例示するタイムチャートである。以下、図47の桁位置探索部104D1の動作を図49のタイムチャートと併せて説明する。実施形態1と同様、まず開始イネーブルが1(真)となることで制御部D141が動作を開始する。そして、制御部D141が制御用カウンタD142のイネーブル信号を”1
”にすることで制御用カウンタD142が動作を開始する。制御用カウンタD142の計数が1(真)になったら制御部D141はカウンタD143へ初期値”39”を設定し、イネーブルを1(真)にすることでカウンタD143を起動する。
デコーダD144および桁位置セレクタD140の動作は実施の形態1と同様である。
上述のように、閾値は例えばユーザが設定した設定値である。比較器D145は桁位置セレクタD140を経由して順次出力される各桁のサンプル数と閾値を比較し、サンプル数が閾値を超えたら1(真)を出力する。また、サンプル数が閾値以下のとき、比較器D145は0(偽)を出力する。
結果保持1部D146は、図48のように一度比較器D145の出力が1(真)になっ
たらその結果を保持する。結果保持1部D146の出力が1(真)になったら制御部D1
41はカウンタD143のイネーブルを0(偽)としてカウンタD143を停止する。以上の結果として桁位置保持信号は、比較器D145によってサンプル数が閾値以上であると判断されたときのカウンタ値(桁位置情報)を保持し続ける。なお、図49で、+M桁指定値および−L桁指定値は、例えば、CPU31から演算処理装置30への命令によって、メモリ32から演算処理装置30のレジスタにロードされる。
図50は、実施形態2に係る統計情報集約部104Dの集約部104D2の構成を例示する図である。なお、図50では、桁位置探索部104D1も例示されている。上述のように、実施形態2では、桁位置探索部104D1が、実施形態1の桁位置指定値に相当する桁位置保持信号を生成する。また、桁位置探索部104D1は、比較結果保持信号を開始イネーブル信号として制御部D241に入力する。なお、集約部104D2の制御部D241を出力制御部ともいう。
ここで、実施形態2の集約部104D2の動作は実施の形態1の統計情報集約部104
Cとほぼ同様である。すなわち、桁位置探索部104D1によって、桁位置指定値に相当する桁位置保持信号が生成され、開始イネーブル信号となる比較結果保持信号が生成される。すなわち、桁の上限位置出力用の加算器G2は、桁位置設定値である桁位置保持信号と+Mの設定値を加算することで、カウンタ初期値である桁の上限位置を算出する。また、桁の下限位置出力用の減算器(SUB)G3は、桁位置設定値である桁位置保持信号か
ら−Lの設定値を減算することで、カウンタ最終値である桁の下限位置を算出する。以上の点以外の実施形態2の演算コア300の構成は、実施形態1の演算コア300の構成と同様である。すなわち、制御部D241は、比較結果保持信号をイネーブル信号として動作を開始し、カウント数、カウンタ初期値、およびカウンタ終了値により、カウンタD243を制御する。その結果、桁位置設定値である桁位置保持信号を基準に、+M桁から−L桁の範囲で、桁位置セレクタD240から統計情報のサンプル数が抽出される。
そこで、実施形態2において演算コア300の構成要素のうち、桁位置探索部104D1に関係する構成要素以外については、実施形態1の構成がそのまま適用されるものとしてその説明を省略する。また、終了処理部D247については実施の形態1の終了処理部1047と同様であるためその説明を省略する。
図51は、実施形態2の統計情報集約部104Dの各部の動作を例示するタイムチャートである。すなわち、図51は、桁位置探索部104D1と集約部104D2の動作を含む。なお、実施形態2の集約部104D2の動作は実施の形態1の統計情報集約部104
Cとほぼ同様であるため差分を説明する。すなわち、桁位置探索部104D1が出力する桁位置保持信号が実施の形態1の桁位置設定値に相当し、比較結果保持信号が1(真)に
なったら制御部D241(桁位置制御部)が動作を開始する。桁位置探索部104D1と合わせたタイムチャートのうち、比較結果保持信号が1(真)となる桁位置探索終了後の信号の変化は、実施の形態1と同様である。なお、図51で、桁位置制御部は、図47の
桁位置探索部104D1の制御部D141の動作を示し、出力制御部は、図50の集約部104D2の制御部D241の動作を示す。
図51のように、比較結果保持信号が1(真)になると、桁位置保持信号が固定(図では値36)される。桁位置セレクタD240は、桁位置保持信号の桁位置(36)に対して、+M設定値(Mは図49の2)から−L(Lは図49の値3)の範囲を選択する。すなわち、制御部D241は、桁位置38から桁位置33の範囲でカウンタD243を計数させ、桁位置セレクタD240は、計数値に対応する出力信号(サンプル数)を出力する。
なお、図49および図51では、閾値および統計情報としてオーバーフロー率およびオーバーフロー回数を想定している。このため、カウンタD143、カウンタD243等が上位桁39から下位桁に向けて計数する。しかし、閾値および統計情報としてアンダーフロー率およびアンダーフロー回数を想定する場合には、カウンタD143、カウンタD243等が下位桁0から上位桁に向けて非符号となる最下位のビット位置の統計情報を取得すればよい。
<実施形態2の効果>
実施形態2の統計情報集約部104Dは、例えば、ユーザが指定する閾値と、統計情報の累積分布(サンプル数/総サンプル数)の各桁を上位桁から順次比較し、サンプル数/総サンプル数が閾値を越える桁を識別する。そして、統計情報集約部104Dは、サンプル数/総サンプル数が閾値を越える桁位置の番号を桁位置保持信号として保持し、実施形態1の桁位置設定値の代わりに用いる。その結果、実施形態2のサーバ3では、ユーザは統計情報のサンプル数を収集する桁位置を指定する代わりに、オーバーフロー率等の閾値を指定すればよい。
実施形態2でも実施形態1と同様、総サンプル数は、例えば、1個の演算コア内の1回のベクトル演算を対象とする場合には、ベクトル演算器の並列演算が実行される演算器数で特定できる。したがって、各桁のサンプル数は、当該桁を固定小数点データの最上位の有効桁とした場合のオーバーフロー回数に対応する。また、総サンプル数に対する各桁の
サンプル数の比率は、当該桁を固定小数点データの最上位の有効桁として場合のオーバーフロー率を示す。
したがって、ユーザが指定したオーバーフロー率を基に、閾値を決定することで、CPU31あるいは制御コア38は、オーバーフロー率がユーザの所望範囲に近い部分の統計情報のサンプル数を取得できる。すなわち、サーバ3で深層学習等のアプリケーションプログラムを実行するユーザは、オーバーフロー率を望ましい範囲に納めるための判断に有効な桁位置付近の統計情報の累積分布を取得できる。
以上は、オーバーフロー率を例に説明したが、ユーザがアンダーフロー率と指定する場合も同様である。閾値および統計情報としてアンダーフロー率およびアンダーフロー回数を想定する場合には、カウンタD143、カウンタD243等が下位桁0から上位桁に向けて非符号となる最下位のビット位置の統計情報を取得すればよい。したがって、実施形態3では、例えば、ユーザあるいはアプリケーションプログラムは、実施形態1よりも適格に、オーバーフロー率あるいはアンダーフロー率を望ましい範囲に納めるための小数点位置の設定をすることが可能となる。
[実施形態3]
図52から図56により、実施形態3の演算処理装置30の演算コア300を説明する。上記実施形態2では、統計情報集約部104Dの桁位置探索部104D1は、非符号となる最上位のビット位置の統計情報を取得する場合には、統計情報の累積分布における各桁のサンプル数を上位桁から順に取得し、サンプル数/総サンプル数をユーザ等によって指定可能な閾値と比較した。そして、サンプル数/総サンプル数が閾値を越える桁を特定した。なお、実施形態2において、桁位置探索部104D1は、非符号となる最下位のビット位置の統計情報を取得する場合には、統計情報の累積分布における各桁のサンプル数を下位桁から順に取得すればよい。そして、桁位置探索部104D1は、サンプル数が閾値を超える桁を特定すればよい。
本実施形態では、非符号となる最上位のビット位置の統計情報を取得する場合には、桁位置探索部104E1は、統計情報の累積分布における各桁のサンプル数を下位桁から順に取得し、ユーザ等によって指定可能な閾値と比較する。そして、桁位置探索部104E1は、サンプル数が閾値以下となる桁を特定する。なお、桁位置探索部104E1は、非符号となる最下位のビット位置の統計情報を取得する場合には、統計情報の累積分布における各桁のサンプル数を上位桁から順に閾値と比較すればよい。そして、桁位置探索部104E1は、サンプル数が閾値以下となる桁を特定すればよい。すなわち、実施形態3では、実施形態2と異なり、桁位置探索部104E1は、サンプル数が閾値以下となる桁を特定する。
実施形態3の他の構成および作用は、実施形態2と同様である。そこで、実施形態3の構成要素のうち、実施形態1、実施形態2と同一の構成要素については、実施形態1、2と同一の符合を付してその説明を省略する。
すなわち、実施形態3においても、実施形態1、2と同様、サーバ3として、図27のサーバ3Aまたは図28のサーバ3Bの構成が例示できる。また、サーバ3Bの制御コア38としては、図36の構成が例示される。そして、演算コア300としては、図34、図35中で、統計情報集約部104Cを統計情報集約部104Eに置き換えた構成が例示される。
したがって、実施形態3でも、実施形態1、2と同様、各演算コア300は取得したデータを累積分布として保存する。一方、制御コア38(またはCPU31)は、各演算コ
ア300に事前に閾値を設定する。閾値は、例えば、ユーザが所望の値を指定可能とする。サーバ3は、ハイパーパラメータとして、閾値を保持すればよい。
そして、各演算コア300は、下位桁から順に、累積分布の各サンプル数を取得し、閾値と比較する。そして、各演算コア300は、閾値を以下となる最後の桁位置の前後−L〜+Mの区間のサンプル数情報を抽出する。すなわち、各演算コア300は、
{閾値>=(累積分布の桁位置のサンプル数/総サンプル数)}
となる位置を計算する。各演算コア300は抽出したサンプル数と閾値以下となる位置情報を制御コア38へ転送すればよい。閾値については、実施形態2の閾値と同様であるので、その説明を省略する。
実施形態3でも、統計情報集約部104Eは、桁位置探索部104E1と集約部104E2に分かれる。図52に桁位置探索部104E1の詳細構成を例示する。なお、図52では、集約部104E2も例示されている。桁位置探索部104E1は、実施形態1の統計情報集約部104C、実施形態2の桁位置探索部104D1と同様、桁位置セレクタE140と、制御部E141と、制御用カウンタE142と、カウンタE143と、デコーダE144を有する。さらに、桁位置探索部104E1は、桁位置セレクタE140からのサンプル数と閾値とを比較する比較器E145と、比較器E145による比較結果を保持する結果保持1部E146とを有する。このうち、桁位置セレクタE140、制御部E141、制御用カウンタE142、カウンタE143、およびデコーダE144の動作は、それぞれ、実施形態2の桁位置セレクタD140、制御部D141、制御用カウンタD142、カウンタD143、およびデコーダD144の動作と同様である。比較器E145は、統計情報の各ビット位置に累積した情報と閾値とを比較する比較部の一例である。制御部E141、制御用カウンタE142、カウンタE143、デコーダE144は、統計情報の各ビット位置のうち選択されるビット位置を指定する制御部の一例である。桁位置セレクタE140は、指定されたビット位置に累積した情報を選択する第2の選択部の一例である。
ただし、すでに述べたように、実施形態3では、カウンタE143は、初期値(桁0)から最終値(桁38)に向けてインクレメントしていく。したがって、比較器E145は、桁位置セレクタE140のカウンタ初期値に対応する下位桁からカウンタ最終値に対応する上位桁に向かって各桁のサンプル数を取得し、閾値と比較する。桁位置探索部104E1の他の構成および作用は実施形態2の桁位置探索部104D1と同様であるのでその説明を省略する。
図53は、図52に例示するカウンタE143(および図53に例示するカウンタE243)の動作を例示するRTLの擬似コードである。実施形態1の図41では、カウンタ1043は、計数値qをデクレメントしていたのに対して、実施形態3の図53では、矩形枠で明示されるように、カウンタE143は、計数値qが39に達するまで、計数値qをインクレメントする。
図54は、実施形態3の桁位置探索部104E1の各部の動作を例示するタイミングチャートである。実施形態3の桁位置探索部104E1の動作は、カウンタE143が下位桁から上位桁に向けてインクレメントされる点以外は、実施形態2の桁位置探索部104D1の動作と同様である。
図55は、実施形態3に係る統計情報集約部104Eの集約部104E2の構成を例示する図である。集約部104E2は、実施形態2の集約部104D2と比較して、実施形態2のカウンタD243がカウンタE243に変更される。実施形態1のカウンタ1043、実施形態2のカウンタD143は、計数値を上位桁に相当する値(桁位置保持信号+
Mの位置)から下位桁(桁位置保持信号―Lの位置)に向けてデクレメントした。一方、実施形態3では、カウンタE143は、計数値を下位桁(桁位置保持信号―Lの位置)から上位桁に相当する値(桁位置保持信号+Mの位置)に向けてインクレメントしていく。
したがって、カウンタ初期値は、減算器(SUB)G3により、桁位置保持信号―Lの値に設定される。また、カウンタ最終値は、加算器(ADD)G2により、桁位置保持信号+Mの値に設定される。統計情報集約部104Eの他の構成および作用は実施形態2の統計情報集約部104Dと同様であるので、その説明を省略する。
また、図56は、実施形態3の桁位置探索部104E1および集約部104E2の各部の動作を例示するタイムチャートである。実施形態3の集約部104E2の動作は、カウンタE143およびE243が下位桁から上位桁に向けてインクレメントされる点以外は、実施形態2の集約部104D2の動作と同様である。
<実施形態3の効果>
実施形態3では、桁位置探索部104E1のカウンタE143および集約部104E2のカウンタE243は、下位桁から上位桁に向けてインクレメントする。そして、桁位置探索部104E1は、カウンタ初期値を桁位置保持信号―Lの位置とし、カウンタ最終値を桁位置保持信号+Mの位置とすることで、統計情報のサンプル数/総サンプル数(すなわち、オーバーフロー率)がユーザ指定の閾値を以下となる桁を求めることができる。
なお、逆に、桁位置探索部104E1は、アンダーフロー率がユーザ指定の閾値を以下となる桁を求める場合には、桁位置探索部104E1は、非符号となる最下位のビット位置の統計情報を取得すればよい。その場合に、桁位置探索部104E1のカウンタE143および集約部104E2のカウンタE243は、上位桁から下位桁に向けてデクレメントする。そして、桁位置探索部104E1は、カウンタ初期値を桁位置保持信号+Mの位置とし、カウンタ最終値を桁位置保持信号−Lの位置とすることで、アンダーフロー率がユーザ指定の閾値を以下となる桁を求めることができる。
[実施形態4]
上記実施形態2では、桁位置探索部104D1が統計情報の上位桁から下位桁に向けて、閾値とサンプル数を比較し、非符号となるビット値を持つ最上位のビット位置についてのサンプル数がユーザ指定の閾値を越える桁を求めた。また、上記実施形態3では、桁位置探索部104E1が統計情報の下位桁から上位桁に向けて、閾値とサンプル数を比較し、非符号となるビット値を持つ最上位のビット位置についてのサンプル数がユーザ指定の閾値以下となる桁を求めた。
実施形態4では、演算処理装置30の各演算コア300は、実施形態2および実施形態3を併せて利用し特定の範囲のサンプル数を抽出する。実施形態4の他の構成および作用は実施形態1から3と同様である。そこで、同一の構成要素については、実施形態1から3と同一の符合を付してその説明を省略する。
すなわち、実施形態4においても、実施形態1から3と同様、サーバ3として、図27のサーバ3Aまたは図28のサーバ3Bの構成が例示できる。また、サーバ3Bの制御コア38としては、図36の構成が例示される。また、演算コア300としては、実施形態1の図34、図35を例示できる。
したがって、実施形態4でも、実施形態1と同様、各演算コア300は取得したデータを累積分布として保存する。一方、制御コア38(またはCPU31)は、各演算コア300に事前に閾値を2つ(例えば、閾値1>閾値2)設定する。閾値は、例えば、ユーザ
が所望の値を指定可能とする。サーバ3は、ハイパーパラメータ、すなわち事前設定値として、閾値を保持すればよい。
そして、各演算コア300は、閾値2を越え、かつ、閾値1以下の範囲に対応するサンプル数情報を抽出する。すなわち、各演算コア300は、
{閾値2<(累積分布の桁位置のサンプル数/総サンプル数)=<閾値1}
となる統計情報の桁位置の範囲を計算する。各演算コア300は計算した桁位置の範囲でサンプル数と位置情報を抽出して、制御コア38へ転送すればよい。
図57は実施形態4に係る統計情報集約部104Fの構成を例示する。図57では、統計情報集約部104Fとともに、桁ごとの統計情報格納部である桁#レジスタAR0からAR39も記載されている。また、図57では、2つの桁位置探索部104D1、104E1が統計情報集約部104Fに含めて記載されている。すなわち、図のように、統計情報集約部104Fは、第2実施形態で説明した桁位置探索部104D1および集約部104D2と、第3実施形態で説明した桁位置探索部104E1と、カウンタ値生成部F49と、制御部F41と、制御用カウンタF42を有している。すなわち、実施形態4の統計情報集約部104Fは、実施形態2の特徴と実施形態3の特徴を併せて利用し、桁#レジスタAR0からAR39の特定の範囲のサンプル数を抽出する。なお、統計情報集約部104F内の桁位置探索部104D1、集約部104D2および桁位置探索部104E1は、それぞれ、制御部F41、制御用カウンタF42等と同様の構成を有する(図47、図50、および図52参照)。
制御部F41は、実施形態1から3と同様、開始イネーブル信号により処理を開始、制御用カウンタF42を起動し、制御用カウンタF42の計数値にしたがって動作する。制御部F41は、以下の3つの条件のときに、桁位置探索部104D1をイネーブルにする。
(条件D1)制御部F41への開始イネーブルがONである。
(条件D2)制御用カウンタF42が計数動作を開始した(計数値が1以上である)。
(条件D3)桁位置探索部104D1の比較結果保持信号が、1(真)になっていない。つまり、桁位置探索部104D1において、現在桁のサンプル数が閾値条件に達していない。
制御部F41は、以下の3つの条件のときに、桁位置探索部104E1をイネーブルにする。
(条件E1)制御部F41への開始イネーブルがONである。
(条件E2)制御用カウンタF42が計数動作を開始した(計数値が1以上である)。
(条件E3)桁位置探索部104E1の比較結果保持信号が、1(真)になっていない。つまり、桁位置探索部104E1において、現在桁のサンプル数が閾値条件に達していない。
桁位置探索部104D1の構成および作用は、実施形態2と同様である。桁位置探索部104D1の構成は実施形態2で説明済みであるのでその詳細は省略する。桁位置探索部104D1は、上位桁から順次、桁ごとの統計情報格納部である桁#レジスタAR0からAR39のサンプル数を読み出し、閾値2と比較する。そして、サンプル数/総サンプル数が閾値2を越えると、桁位置探索部104D1は、桁位置K2の桁位置保持信号をカウンタ値生成部F49に出力するとともに、比較結果保持信号を1(真)にして制御部F41に入力する。
桁位置探索部104D1が上位桁から順次、桁ごとの統計情報格納部である桁#レジスタAR0からAR39のサンプル数を読み出し、閾値2と比較することは、保持部が保持
した統計情報の最上位桁から最下位桁に向かって順次各桁に累積した情報を第1の閾値と比較することの一例である。サンプル数/総サンプル数が閾値2を越えるときの桁位置K2は比較結果に基づき指定される第1の桁の一例である。したがって、桁位置探索部104D1は、第1の探索部の一例である。
また、桁位置探索部104E1の構成および動作は、実施形態3と同様である。桁位置探索部104E1の構成は実施形態2で説明済みであるのでその詳細は省略する。桁位置探索部104E1は、下位桁から順次、桁ごとの統計情報格納部である桁#レジスタAR0からAR39のサンプル数を読み出し、閾値1と比較する。そして、サンプル数/総サンプル数が閾値1以下になると、桁位置探索部104E1は、桁位置K3の桁位置保持信号をカウンタ値生成部F49に出力するとともに、比較結果保持信号を1(真)にして制御部F41に入力する。
桁位置探索部104E1が下位桁から順次、桁ごとの統計情報格納部である桁#レジスタAR0からAR39のサンプル数を読み出し、閾値1と比較することは、保持部が保持した統計情報の最下位桁から最上位桁に向かって順次各桁に累積した情報を第2の閾値と比較することの一例である。サンプル数/総サンプル数が閾値1以下になるときの桁位置K3は比較結果に基づき指定される第2の桁の一例である。したがって、桁位置探索部104E1は、第2の探索部の一例である。
制御部F41は、桁位置探索部104D1からの比較結果保持信号が1(真)になると、桁位置探索部104D1のイネーブルをOFFにする。また、制御部F41は、桁位置探索部104E1からの比較結果保持信号が1(真)になると、桁位置探索部104E1のイネーブルをOFFにする。さらに、制御部F41は、桁位置探索部104D1からの比較結果保持信号と桁位置探索部104E1からの比較結果保持信号の両方が1(真)になると、集約部イネーブル信号を1(真)とし、カウンタ値生成部F49と集約部104D2を動作可能とさせる。
カウンタ値生成部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)
集約部104D2の構成および作用は、実施形態2の集約部104D2の構成および作用と同様であるので、その構成の説明を省略する。集約部104D2は、実施形態2の集約部104D2と同様、カウンタ初期値からカウンタ終了値までの桁位置に対応する桁#レジスタAR0からAR39のサンプル数を出力する。カウンタ値生成部F49と集約部104D2は、第1の桁と前記第2の桁とによって指定される範囲のそれぞれの桁に累積した情報を選択する第3の選択部の一例である。
図58は、制御部F41の動作を例示するタイムチャートである。図59は、統計情報集約部104Fの各部の動作を例示するタイムチャートである。制御部F41の動作は、実施形態1の制御部1041等と同様、開始イネーブルによって開始する。開始イネーブルが”1”となると制御部F41は制御用カウンタF42を起動する。そして、制御部F
41は、上述の条件D1からD3が充足されると桁位置探索部104D1のイネーブルを1(真)にする。また、制御部1041は、条件E1からE3が充足されると、桁位置探索部104E1のイネーブルを1(真)にする。
すでに、実施形態2で述べたように、桁位置探索部104D1は、桁ごとの統計情報格納部である桁#レジスタAR0からAR39の値(サンプル数)/総サンプル数を最上位桁から順に閾値2と比較する。そして、桁位置探索部104D1は、桁#レジスタAR0からAR39の値(サンプル数)/総サンプル数が閾値2を越えた桁位置K2を桁位置保持信号として保持するとともに比較結果保持信号を1(真)にする。
また、実施形態3で述べたように、桁位置探索部104E1は、桁ごとの統計情報格納部である桁#レジスタAR0からAR39の値(サンプル数)/総サンプル数を最下位桁から順に閾値1と比較する。そして、桁位置探索部104E1は、桁#レジスタAR0からAR39の値(サンプル数)/総サンプル数が閾値1以下となる桁位置K3を桁位置保持信号として保持するとともに比較結果保持信号を1(真)にする。
制御部F41は、桁位置探索部104D1からの比較結果保持信号が”1”となったこ
とをトリガに桁位置探索部104D1へのイネーブル信号を”0”に落とす。また、制御
部F41は、桁位置探索部104E1からの比較結果保持信号が”1”となったことをト
リガに桁位置探索部104E1へのイネーブル信号を”0”に落とす。さらに、制御部F
41は、両方の比較結果保持信号が”1”となったことをトリガにカウンタ値生成部F4
9および第2の実施形態の集約部104D2へのイネーブル信号を”1”とする。
カウンタ値生成部F49はカウンタ値生成部論理(上記(式1)(式2)および(式4))に従って桁位置探索部104D1および桁位置探索部104E1の桁位置保持信号の桁位置K2おおよびK3からカウンタ初期値および終了値を生成し、カウント数とともに集約部104D2へ送信する。集約部104D2は前述の通り出力データと、その桁位置情報と、出力イネーブルを出力する。集約部104D2はカウンタ初期値および終了値までの各桁位置の統計情報を出力すると、出力イネーブル信号を”0”に落とす。出力イネ
ーブル信号の立ち下がりをトリガとして実施形態1と同様、終了処理部1047(図43参照)が動作を開始し初期化処理が行われる。
<実施形態4の効果>
実施形態4では、統計情報集約部104Fは、閾値1と閾値2の指定を受け、閾値2を越え、かつ、閾値1以内となるサンプル数/総サンプル数の範囲で、統計情報を取得する。したがって、したがって、例えば、ユーザあるいはアプリケーションプログラムは、実施形態1よりも簡易で的確に、オーバーフロー率を望ましい範囲に納めるための統計情報の取得が可能となり、適切に小数点位置の設定をすることが可能となる。
なお、上記実施形態4では、統計情報の各桁が非符号となるビット値を持つ最上位のビット位置についてのサンプル数である場合について説明した。しかし、統計情報の各桁が非符号となるビット値を持つ最下位のビット位置についてのサンプル数である場合にも、図57に例示した統計情報集約部104Fによる処理が可能である。
各演算コア300は、統計情報の各桁が非符号となるビット値を持つ最上位のビット位置についてのサンプル数である場合と同様に、閾値1、閾値2による判定を実行する。すなわち、各演算コア300は、
{閾値2<(累積分布の桁位置のサンプル数/総サンプル数)=<閾値1}
となる位置を計算する。各演算コア300は抽出したサンプル数と位置情報を制御コア38へ転送すればよい。
この場合、桁位置探索部104E1は上位桁から下位桁に向けて統計情報の各桁と閾値1とを比較して、サンプル数/総サンプル数が閾値1以下となる統計情報の桁位置K3を求めればよい。また、桁位置探索部104D1は下位桁から上位桁に向けて統計情報の各桁と閾値2とを比較して、サンプル数/総サンプル数が閾値2を越える桁位置K2を求めればよい。桁位置K2、K3に対するカウンタ値生成部F49および集約部104D2の処理は、上記実施形態4と同様である。
[実施形態5]
上記実施形態1から4では、例えばベクトル演算用の演算器131(図34、図35参照)の演算結果から統計情報の累積情報を収集し、演算処理装置30内のレジスタ、あるいはメモリ32等に出力する演算処理装置30を含むサーバ3について説明した。このような統計情報により、ユーザ、あるいは、CPU31で実行されるアプリケーションプログラムは、次のアプリケーションプログラムの処理ステップ、例えば、深層学習における学習処理実行時の固定小数点データの小数点位置(有効桁の範囲)を設定できる。
しかし、アプリケーションプログラムが固定小数点位置を指定する処理を実行する代わりに、演算処理装置30等のハードウェアが取得された統計情報に基づき固定小数点位置を指定してもよい。例えば、演算処理装置30の内部、あるいは、サーバ3の内部に取得された統計情報を基に固定小数点データの小数点位置を決定する回路が設けられてもよい。
そこで、実施形態5では、小数点位置決定回路384を有する制御コア38について説明する。制御コア38が小数点位置決定回路384を持つこと、および小数点位置決定回路384によって決定された小数点位置を制御コア38が各演算コア300に設定すること以外の実施形態4における演算処理装置30の構成および作用は実施形態1から4と同様である。そこで、実施形態4の構成要素のうち、実施形態1から4と同一の構成要素については同一の符号を付してその説明を省略する。
すなわち、実施形態5においても、実施形態1から4と同様、サーバ3として、図27のサーバ3Aまたは図28のサーバ3Bの構成が例示できる。また、サーバ3Bの制御コア38としては、図36の構成が例示される。また、演算コア300としては、実施形態1の図34、図35を例示できる。
図60は、制御コア38に設けられる小数点位置決定回路384の構成を例示する。制御コア38の構成は、図28、図35に記載された通りであり、制御コア38は制御処理回路の一例である。実施形態5では、実施形態2、3、または4の統計情報集約部104D、104Eまたは104Fと同様の統計情報集約部104からデータバス35を介して統計情報が取得されるとする。なお、実施形態5では、統計情報集約部104D、104E、104Fを総称して単に統計情報集約部104という。図のように、統計情報集約部104は、各演算コア300に設けられている。より具体的には、例えば、各演算コア300は、実施形態2と同様の統計情報集約部104Dを有するものとする。また、実施形態5では、小数点位置決定回路384は、決定した小数点位置を各演算コア300に設けられたデータ変換部103に設定し、次回演算において、固定小数点数の小数点位置として利用される。
ユーザは、サーバ3でのアプリケーションプログラムの実行において、閾値に相当する値として、望ましいオーバーフロー率Rを設定する。実施形態5の各演算コア300は、指定されたオーバーフロー率Rを閾値S0とし、統計情報のサンプル数/総サンプル数と比較する。そして、各演算コア300は、閾値S0を越えるサンプル数/総サンプル数が
累積されている桁の桁位置と、その閾値を越えるサンプル数を収集する。
ここで、閾値S0は、S0=Rであり、サンプル数/総サンプル数が閾値S0を越える桁位置が決定される。また、総サンプル数は、例えば、1つの演算コア300内のベクトル演算器での並列演算可能な演算数である。
小数点位置決定回路384は、データバス35(図27、図29、図34、図35)を介して各演算コア300の統計情報(決定された桁位置と、当該桁のサンプル数)を取得し、桁位置毎にサンプル数を累積加算する。したがって小数点位置決定回路384は、複数の演算コア300の統計情報のサンプル数を集め、桁位置毎に累積加算し、閾値越えが検出された回数が最大となる桁位置を次の演算の小数点位置に決定する。すなわち、いわば、演算コア300の多数決で、次回の小数点位置が決定される。
ここで、実施形態5の小数点位置決定回路384は、桁位置毎にサンプル数を累積加算するので、各演算コア300から得られる閾値越えが検出された桁位置の回数は、演算コア300の多数決を示すというよりも、桁位置毎にサンプル数で重み付けされた多数決となっている。ただし、小数点位置決定回路384は、サンプル数で重み付けする代わりに、単純に、閾値越えが検出された桁位置について、演算コア300ごとに重み1で累積加算してもよい。重み1の累積加算の場合には、各演算コア300から得られる閾値越えが検出された桁位置の回数は、各演算コア300の単純な多数決を示すことになる。決定された小数点位置は、データバス35を介して各演算コア300のデータ変換部103に設定される。その結果、次回以降の演算において、オーバーフロー率が閾値未満となることが期待できる。
各演算コア300は、複数の演算処理回路の一例といえる。したがって、小数点位置決定回路384は、複数の演算処理回路のそれぞれにおいて選択される桁について、それぞれの桁を選択した前記複数の演算処理回路に対応する値を計数し、演算処理回路の多数決の処理を実行していると言える。ここで複数の演算処理回路に対応する値とは、サンプル数で重み付けされた値または重み1の値である。小数点位置決定回路384は、複数の演算部が次に実行する演算命令の演算結果となる固定小数点数データの小数点位置を指定する小数点位置指定部の一例ということができる。
図60のように、小数点位置決定回路384は、桁位置と、桁位置に対応する統計情報と、イネーブル信号を入力され、上記多数決で出力桁位置を選択して出力する。なお、図60では、小数点位置決定回路384には、制御コア38に接続される複数の演算コア300から順次、各演算コアで取得された桁位置と、その桁位置に対応する統計情報が入力されるものとする。
小数点位置決定回路384は、デコーダ3841と、マスク回路3842−0から3842−39と、加算器3843−0から3843−39と、桁#レジスタ3844−0から3844−39と最大値位置検出回路3845を有している。
デコーダ3841は、イネーブルが1(真)のとき、桁位置を指定する入力信号(例えば6ビットの信号、0から38の値)に対応して、マスク回路3842−0から3842−39のいずれかをONにする。マスク回路3842−0から3842−39には、桁位置に対応する統計情報のサンプル数が入力される。
また、各桁のサンプル数で重み付けした多数決が実行される場合には、入力される桁位置に対応する統計情報は、例えば、実施形態2の統計情報集約部104Dから出力される各桁位置の統計情報(例えば、32ビット)の1桁分(+M=−L=0の場合)である。
ただし、入力される桁位置に対応する統計情報は、実施形態3の統計情報集約部104Eから出力される各桁位置の統計情報の1桁分(+M=−L=0の場合)であってもよい。ただし、重み1で多数決が実行される場合には、各演算コア300から複数桁(+Mから−Lまでの範囲)が入力されてもよい。また、重み1で多数決が実行される場合には、入力される桁位置に対応する統計情報は、実施形態4の統計情報集約部104Fから出力される各桁位置の統計情報であってもよい。最大値位置検出回路3845は、桁#レジスタ3844−0から3844−39のうち、最大の値を保持する桁位置を検出して、出力桁位置として出力する(例えば6ビット、0から39の値)。
加算器3843−0から3843−39は、マスク回路3842−0から3842−39のうち、デコーダ3841によってONとなっている1つの回路の出力を桁#レジスタ3844−0から3844−39に積算する。積算された値は、閾値を超えた桁ごとに、当該桁で閾値を超えた各演算コア300の数を集計したものであり、多数決を判定する回路と言える。ただし、図60の回路では、統計情報の桁の値が積算されるので、図60は、統計情報のサンプル値を重みとして、多数決を決定する回路ということができる。ただし、上述のように、1桁あたり32ビットの統計情報の代わりに、1桁あたり1ビット(重み1)が入力されるようにしてもよい。1桁あたり1ビット(重み1)が入力される場合には、小数点位置決定回路384は、複数の演算コア300の単純多数決によって出力桁位置を選択して出力することになる。
図61は、デコーダ3841の真理値表を例示する。図のように、イネーブルがONのときに、桁位置を指定する入力情報6ビットの値に対応するビット位置をONで出力し、他のビットを0で出力する。
図62は、最大値位置検出回路3845の詳細構成を例示する図である。図のように、最大値位置検出回路3845は、比較部385をバイナリツリー状に接続した構成を有する。比較部385は、桁位置と桁位置のレジスタ値を組みした2組について、レジスタ値の大小関係を判定し、値が大きい桁位置とレジスタ値を出力する。すなわち、バイナリツリーの1層目は、桁#レジスタ3844−0から3844−39を1対ずつ組にして、各組について大小関係を判定し、レジスタ値が大きい桁位置とレジスタ値を出力する。このようにして、桁#レジスタ3844−0と桁#レジスタ3844−1のうち、レジスタ値の大きい方の桁位置とレジスタ値が出力される。桁#レジスタ3844−1と桁#レジスタ3844−2についても同様である。また、桁#レジスタ3844−2kと桁#レジスタ3844−2k+1(k=2,...,19)についても同様である。このようにして、1層目の比較部385に入力される40桁分の桁位置とレジスタ値のうち、20桁分の桁位置とレジスタ値が選択することが可能である。ただし、実施形態5では、40桁から、まず、トーナメント方式で、まず、32桁分を選択するようにすればよい。
最大値位置検出回路3845は、比較部385をバイナリツリー状に接続されているので、同様に、第2層目で32桁分の桁位置とレジスタ値から16桁分の桁位置とレジスタ値を選択すればよい。さらに、最大値位置検出回路3845は、バイナリツリーの3層目で、16桁分の桁位置とレジスタ値から、8桁分の桁位置とレジスタ値を選択すればよい。以上のような処理を繰り返し、最大値位置検出回路3845は、レジスタ値が最大の桁位置を決定し、出力する。
図63は、比較部385の具体的構成を例示する。図のように、比較部385は、減算部3851と、判定部3852と、選択部3853を有する。減算部3851には、第1の入力桁のレジスタ値と第2の入力桁のレジスタ値が入力され、減算(第1の入力桁のレジスタ値−第2の入力桁のレジスタ値)を実行する。判定部3852は、減算結果が正か否かを判定し、判定結果が正の場合に、選択部3853に、第1の入力桁の桁位置を出力
する選択信号を出力する。選択部3853は、判定結果にしたがって、第1の入力桁の桁位置または第2の入力桁の桁位置を出力する。
<実施形態5の効果>
実施形態5の演算処理装置30では、制御コア38は、ユーザが指定した閾値に対応する統計情報の桁位置を複数の演算コア300の多数決で決定できる。したがって、演算処理装置30は、多数決で決定された桁位置を例えば、図34、図35に例示したデータ変換部103に設定し、次回演算の固定小数点位置とする。このような処理によって、複数の演算コア300のうち最も多数の演算コア300が閾値を充足する可能性の高い桁位置に小数点位置を決定し、次回演算で利用できる。したがって、実施形態5の演算処理装置30を含むサーバ3は、ユーザが指定した閾値に相当するオーバーフロー率、アンダーフロー率等を充足する小数点位置を演算処理装置30のハードウェア回路で設定できる。
上記実施形態では、制御コア38は多数決を決定するときに、図60のように、閾値超えが検出された桁の統計情報(32ビット)が積算される。したがって、図60では、閾値超えを検出した桁を演算コア300の多数決で決するときに、閾値超えが検出された桁の統計情報(32ビット)で重みづけされた多数決が実行されるといえる。統計情報の桁の値で重み付けすると、閾値の前後で統計情報の累積値が不連続で変化する場合に、重みが有効に作用する。すなわち、閾値の前後で統計情報の累積値が不連続で変化する場合に、急激に統計情報の累積値が増加した桁が優先して決定されることになり、適切にオーバーフロー回数、あるいは、アンダーフロー回数を閾値の範囲に抑制するように小数点位置を決定できる。
なお、図60のように、「桁位置に対応する統計情報」を積算する代わりに、「桁位置に対応する1ビットの値1」を積算するようにしてもよい。このようにすることで、重みを均一の値1として、閾値超えが検出された桁を決定できる。
[その他の変形例]
また、上記実施形態1から5では、総サンプル数の例として、ベクトル演算器である図37の演算部A−0からA−7を例に、1回のベクトル演算で並列に処理される固定小数点データの個数を用いた。しかし、本実施形態の演算処理装置30の処理はこのような処理に限定される訳ではない。すなわち、ベクトル演算器に限定されず、スカラ演算器も含めて、所定の演算で実行される固定小数点データ数を総サンプル数とすればよい。例えば、制御コア38からの指示で演算コア300が起動される場合には、1回の起動で、ベクトルデータN個、スカラーデータがM個処理される場合、ベクトル演算の並列数が8の場合には、総サンプル数=8*N+M;のように算出できる。
上記実施形態1から5では、各演算コアで取得された統計情報が制御コア38またはCPU31等に転送され、アプリケーションプログラム等に引き渡されることを想定して説明がされている。そのため、図29および図30のような統計情報の転送に伴う課題が提示された。しかし、本実施形態1から5の演算処理装置30、演算コア300等の処理は、統計情報が制御コア38またはCPU31等に転送されるものに限定される訳ではない。すなわち、図32または図33に例示したような統計情報の累積分布の1桁分(または桁位置設定値+Mから−L分)を演算コア300内で処理するアプリケーションプログラムの実行においても、実施形態1から5の構成は適用可能である。すなわち、統計データの取得および集約をそれぞれの演算コア300で行い、それぞれの演算コア300が取得された統計情報の桁位置と、その桁位置のサンプル数から次の演算での固定小数点位置を決定してもよい。
3、3A、3B サーバ
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. 主記憶装置に接続されるとともに、複数の演算処理回路を有する演算処理装置において、
    前記複数の演算処理回路の各々は、
    固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
    前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する演算処理装置。
  2. 前記統計情報取得部は、
    前記取得された統計情報の各桁に累積した情報を保持する保持部と、
    前記保持部が保持する統計情報のうちの特定の桁の情報を、前記特定の桁を指定する制御信号にしたがって選択する第1の選択部と、を有する請求項1記載の演算処理装置。
  3. 前記保持部が保持する統計情報の各桁に累積した情報と閾値とを比較する比較部と、
    前記比較部の比較結果に基づいて、前記統計情報の各桁のうち選択される桁を指定する制御部を有する請求項2に記載の演算処理装置。
  4. 前記指定された桁に累積した情報を選択する第2の選択部をさらに有する請求項3に記載の演算処理装置。
  5. 前記保持部が保持した統計情報の最上位桁から最下位桁に向かって順次各桁に累積した情報を第1の閾値と比較し、前記比較結果に基づき第1の桁を指定する第1の探索部と、
    前記保持部が保持した統計情報の最下位桁から最上位桁に向かって順次各桁に累積した情報を第2の閾値と比較し、前記比較結果に基づき第2の桁を指定する第2の探索部と、
    前記第1の桁と前記第2の桁とによって指定される範囲のそれぞれの桁に累積した情報を選択する第3の選択部と、を有する請求項2に記載の演算処理装置。
  6. 制御処理回路をさらに備え、
    前記制御処理回路は、前記複数の演算処理回路のそれぞれにおいて選択される桁に累積した情報について、それぞれの桁を選択した前記複数の演算処理回路に対応する値を計数し、前記計数された値が最も大きい桁を基に、前記複数の演算部が次に実行する演算命令の演算結果となる固定小数点数データの小数点位置を指定する小数点位置指定部をさらに有する請求項4に記載の演算処理装置。
  7. 固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
    前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第
    2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する演算処理回路。
  8. 主記憶装置と、
    前記主記憶装置に接続される処理装置と、
    前記主記憶装置および前記処理装置に接続されるとともに、複数の演算処理回路を有する演算処理装置と、を備える情報処理装置において、
    前記複数の演算処理回路の各々は、
    固定小数点数データに対する演算命令をそれぞれ実行する複数の演算部と、
    前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する統計情報取得部と、を有する情報処理装置。
  9. 主記憶装置に接続するとともに、複数の演算処理回路を有する演算処理装置の制御方法において、
    前記複数の演算処理回路の各々に含まれる複数の演算部に固定小数点数データに対する演算命令をそれぞれ実行させ、
    前記複数の演算部がそれぞれ実行した演算結果である複数の固定小数点数データに関し、最下位ビット位置から、符号ビットと異なるビット値を持つビット位置のうちの最上位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第1の統計情報、または、前記符号ビットの位置から、前記符号ビットと異なるビット値を持つビット位置のうちの最下位のビット位置までの範囲に対応するそれぞれのビット位置にフラグビットを設定することで得られるビットパターンを各ビット位置に対応する桁ごとに累積した第2の統計情報、の少なくとも一方の統計情報を取得する、演算処理装置の制御方法。
JP2017200898A 2017-10-17 2017-10-17 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 Active JP6540770B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* 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 情報処理装置および学習演算処理方法
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* 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 情報処理装置および学習演算処理方法
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)

* Cited by examiner, † Cited by third party
Title
桑高 克直: "汎用並列ニューロコンピュータを用いたニューラルネットワーク演算", 電子情報通信学会技術研究報告, vol. 第96巻,第430号, JPN6019002082, 14 December 1996 (1996-12-14), JP, pages 79 - 86, ISSN: 0003962352 *

Cited By (8)

* Cited by examiner, † Cited by third party
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