JP2021082221A - 演算装置、及び演算方法 - Google Patents
演算装置、及び演算方法 Download PDFInfo
- Publication number
- JP2021082221A JP2021082221A JP2019211774A JP2019211774A JP2021082221A JP 2021082221 A JP2021082221 A JP 2021082221A JP 2019211774 A JP2019211774 A JP 2019211774A JP 2019211774 A JP2019211774 A JP 2019211774A JP 2021082221 A JP2021082221 A JP 2021082221A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- bit
- arithmetic
- significant bit
- calculation
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 212
- 238000000034 method Methods 0.000 claims description 34
- 238000012546 transfer Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 25
- 230000004044 response Effects 0.000 description 24
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000002922 simulated annealing Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 208000003580 polydactyly Diseases 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012421 spiking Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
Description
しかし、パフォーマンス要求の高まりが計算機資源の増加を上回っており、このままでは十分なサービスを維持することが困難な状況である。これを解決する手段として、概略計算(AC; Approximate Computing)が注目されている。ACは、計算誤差を許容できるアプリケーションに対し、精度と速度やエネルギーのトレードオフを取ることが可能な計算方式である。すなわち、計算精度を落とすことで高速化や、低消費電力化する手法である。
ACは大別してソフトウェア(アルゴリズム)・アプローチと、ハードウェア・アプローチとの2種類がある。ソフトウェアで行う方法は、従来から近似計算、近似アルゴリズムとして確立していたが。近年、さらに発展している。一方、ハードウェア・アプローチは、演算器の高速化、特に低レイテンシ化を目指した研究が盛んである。
本発明の一実施形態は、前述の演算装置において、前記受付部は、演算結果に要求される誤差情報を受け付け、前記演算装置は、前記受付部が受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定する設定部を備え、前記演算部は、前記設定部が設定した前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定部が設定した前記桁数まで、前記受付部が前記最上位ビットからKビット毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行う。
本発明の一実施形態は、前述の演算装置において、前記設定部は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部から、前記受付部が受け付けた前記誤差情報に基づいて、複数の前記入力値の各々の最上位ビットからの桁数を取得する。
本発明の一実施形態は、前述の演算装置において、前記演算部は、前記最上位ビットの加算結果が、閾値以上である場合に、加算を中止する。
なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
また、本願でいう「XXに基づく」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また、「XXに基づく」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば、任意の情報)である。
[全体構成]
図1は、実施形態に係る演算装置を含む演算システムの構成図である。実施形態の演算システム1は、演算装置100と、一以上利用者Uにより使用される端末装置200とを備える。
演算装置100と、端末装置200とは、ネットワークNWを介して互いに通信可能である。ネットワークNWは、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)、公衆回線、プロバイダ装置、専用回線、無線基地局などを含む。
ユーザーUは、演算サービスウェブサイトの表示にしたがって、端末装置200に対して、複数の入力値を入力する操作を行う。
端末装置200は、ユーザーUが入力した複数の入力値を取得し、取得した複数の入力値を含み、演算装置100を宛先とする演算要求を作成する。端末装置200は、作成した演算要求を、演算装置100へ送信する。
演算装置100は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を、シリアル転送のビット数Kに基づいて、最上位ビットからKビット(Kは、K>0の整数)毎に行う。つまり、最上位ビットから、一又は複数の桁数より下位のビットは零として扱われる。演算装置100は、演算結果を、加算時の遅延クロック数Lに基づいて、L(Lは、L>0の整数)クロック後から、Kビット毎に出力する。例えば、演算装置100は、演算結果を、最上位ビットから、Kビット毎に出力する。演算装置100は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、端末装置200へ送信する。
端末装置200は、演算装置100が送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
以下、演算システム1に含まれる演算装置100と、端末装置200とについて順次説明する。
演算システム1に含まれる演算装置100は、パーソナルコンピュータ、サーバー、又は産業用コンピュータ等の装置によって実現される。演算装置100は、例えば、通信部110と、受付部120と、演算部130と、出力部140と、記憶部150とを備える。
通信部110は、通信モジュールによって実現される。具体的には、通信部110は、有線通信を行うデバイスによって構成される。また、通信部110は、LTE、無線LAN等の無線通信技術で無線通信を行う無線デバイスによって構成されてもよい。通信部110は、ネットワークNWを介して、端末装置200との間で通信する。
具体的には、通信部110は、端末装置200が送信した演算要求を受信する。通信部110は、出力部140が出力した演算応答を取得し、取得した演算応答を、端末装置200へ送信する。
プログラムは、予めHDD(Hard Disk Drive)やフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD−ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
演算部130は、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130は、記憶部150に記憶されている演算桁数情報152を取得し、取得した演算桁数情報152に基づいて、取得した複数の入力値の各々の最上位ビットから、演算桁数情報152によって示される一又は複数の桁数に該当する値まで、最上位ビットからKビット毎に取得する。
演算部130は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。演算部130は、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。演算部130は、最上位ビットから、一又は複数の桁数に該当する値より下位ビットは0として処理してもよい。
図2において、(a)は従来の演算方法を示し、(b)は本実施形態に係る演算装置100による演算方法を示す。また、図2においては、一例として、入力Aが「a7a6a5a4a3a2a1a0」であり、入力Bが「b7b6b5b4b3b2b1b0」である場合に、入力Aと入力Bとを加算する場合について説明する。ここで、「a7」、「a6」、「a5」、「a4」、「a3」、「a2」、「a1」、「a0」と、「b7」、「b6」、「b5」、「b4」、「b3」、「b2」、「b1」、「b0」との各々は、入力値を示しており、「a7」と「b7」とが最上位ビットであり、「a0」と「b0」とが最下位ビット(LSB:Least significant Bit)である。
演算結果は、入力Aの最下位ビットである「a0」と入力Bの最下位ビットである「b0」とが入力されてから2クロック後に出力される。下位ビットが出力されることによって、下位ビットが出力される前と比較して、演算精度が上がっていく。つまり、本実施形態に係る演算装置100による演算方法では、最上位ビットから演算結果が出力されるため、最下位ビットまで演算することなく、演算結果の概略を得ることができる。
10進数で表した146、及び150は、それそれ、2進数で表した場合に、(10010010)2、及び(10010110)2である。10進数で表した146と、150とを加算する場合には、10進数で表した296(2進数で表した場合には(100101000)2)が正確な演算結果である。
従来の演算方法によれば、シリアル加算器を使用した場合には、最下位ビットから、演算処理が行われるので、(□□□□0010)2と(□□□□0110)2(□は、演算に使用されていないビット)との加算が行われ、演算結果として、(□□□□1000)2が得られる。これは、10進数で表した場合には8であり、正確な演算結果から、かけ離れた値になる。
さらに、4ビットの演算が行われた場合には、(10010010)2のうち、最上位ビットから4ビットと(10010110)2のうち、最上位ビットから4ビットとの加算が行われ、演算結果として、(100101000)2が得られる。これは、10進数で表した場合には296であり、正確な演算結果となる。つまり、従来の演算方法では、最上位ビットまで計算することで、正確な演算結果を得ることができる。
さらに、4ビットの演算が行われた場合には、(10010010)2のうち、最下位ビットから4ビットと(10010110)2のうち、最下位ビットから4ビットとの加算が行われ、演算結果として、(100101100)2が得られる。これは、10進数で表した場合には300であり、正確な演算結果に対して誤差を含んだ結果となる。
端末装置200は、例えば、スマートフォンやタブレット端末、パーソナルコンピュータなどである。端末装置200では、演算システムを利用するためのアプリケーションプログラム、或いはブラウザなどが起動し、前述したサービスをサポートする。端末装置200の一例はスマートフォンであり、アプリケーションプログラム(演算処理アプリ)が起動していることを前提とする。
演算処理アプリは、利用者Uの操作に応じて演算装置100と通信し、演算装置100が提供する演算サービスウェブサイトへアクセスする。端末装置200は、演算装置100へ演算要求を送信し、演算装置100から受信した演算応答に基づく処理を行う。
図3は、実施形態に係る演算システムの動作の一例を示すシーケンスチャートである。
図3に示される例では、ユーザーUが、端末装置200を操作することによって、端末装置200は、演算装置100と接続し、演算装置100が提供している演算サービスウェブサイトにアクセスしていることを前提とする。
(ステップS1)
ユーザーUが、端末装置200に対して、複数の入力値を入力する操作を行うことによって、端末装置200は、入力された複数の入力値を含み、演算装置100を宛先とする演算要求を作成する。
(ステップS2)
端末装置200は、作成した演算要求を、演算装置100へ送信する。
(ステップS3)
演算装置100において、通信部110は、端末装置200が送信した演算要求を受信する。
(ステップS4)
演算装置100において、受付部120は、通信部110が受信した演算要求を取得し、取得した演算要求に含まれる複数の入力値を受け付ける。受付部120は、必要に応じて、複数の入力値の各々の桁合わせを行う。受付部120は、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130へ出力する。
演算装置100において、演算部130は、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130は、記憶部150の演算桁数情報152を取得する。演算部130は、取得した演算桁数情報152に基づいて、取得した複数の入力値の各々の最上位ビットから、一又は複数の桁数に該当する値まで、最上位ビットからKビット毎に取得する。
(ステップS6)
演算装置100において、演算部130は、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。演算部130は、最上位ビットから、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。出力部140は、演算部130による演算結果を、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。
(ステップS7)
演算装置100において、出力部140は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、通信部110へ出力する。
(ステップS8)
演算装置100において、通信部110は、出力部140が出力した演算応答を取得し、取得した演算結果を、端末装置200へ送信する。
その後、端末装置200は、演算装置100が送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
図4は、従来の演算方法の一例を示す図である。図4(a)と図4(b)とはパラレルの概略加算器の一例を示し、図4(c)はシリアル加算器の一例を示す。
図4(a)は、ESA(Equal Segmentation Adder)を示す。
図4(a)に示される例では、ESAは、bn−1からbn−kとan−1からan−kとが入力されることによってSn−1からSn−kを出力するk−bit Adderと、bn−k−1からbn−2kとan−kからan−2kとが入力されることによってSn−k−1からSn−2kを出力するk−bit Adderと、・・・、bk−1からb0とak−1からa0とが入力されることによってSk−1からS0を出力するk−bit Adderとを備える。ESAは、クリティカルパスになるキャリーの伝搬を切って、セグメント化することで正確性を犠牲にしても高速化を実現する加算器である。
図4(b)に示される例では、LOAは、bn−1からbkとan−1からakとが入力されることによってSn−1からSkを出力する(n−k)−bit Adderと、bk−1からb0とak−1からa0とが入力されることによってSk−1からS0を出力するk−bit ORとを備える。LOAは、加算結果の下位ビットの方は全体の誤差に対して影響度が低いことを利用して、下位ビットの方を加算の代わりにORゲートにする。
このようにすることで、ESAと同じ効果を得る。ESAとLOAとは、どちらも精度と演算速度とのトレードオフを諮る方式である。ESAと、LOAとの両方に対して、実施形態に係る演算装置の演算方法は、シリアル演算で、概略計算を行う点で異なる。
図4(c)に示される例では、シリアル加算器は、ai(i=0...n)が入力されるフリップフロップ(FF:flip−flop)と、biが入力されるフリップフロップと、aiが入力されるフリップフロップの出力と、biが入力されるフリップフロップの出力とが入力されるFull Adderとを備える。さらに、シリアル加算器は、Full Adderの出力が入力される2個のフリップフロップを備える。2個のフリップフロップの各々の出力うち、一方の出力は、Siとされ、もう一方の出力は、Full Adderへ入力される。
図4(c)に示されるシリアル加算器による演算過程では、上位ビットがわからない。このため、図4(c)に示されるシリアル加算器では、全てのビットが出力されるまで、最終的な加算結果がわからない。これに対して、実施形態に係る演算装置は、上位ビットから演算を行い、最初のビットを出力することによって、演算結果の概略値を出力できる。さらに、誤差を含むが、出力されるビット数が増加するにしたがって、演算結果が、正確な演算結果に近づいていく。
図6は、実施形態に係る演算装置の演算方法と、従来の演算方法との比較結果の例2を示す図である。
図6では、一般化して、入力値のビット数をMとし、入力値の数をNとして、総和を導出したときの演算時間を算出した。図6では、一例として、Mを、8、16、32、64とし、Nを、16、32、64、128とした場合について示す。また、演算時間は、クロック数で表した。
図6によれは、シリアル加算器を使用した場合には、M+2log2Nクロックで演算が完了する。パラレル加算器を使用した場合には、仮に、格段の計算は1クロックで計算できるとした場合に、M+log2Nクロックで演算が完了する。これらに対して、実施形態に係る演算装置の演算方法によれば、演算結果の最初のビットが出力されるまで、最短で、log2Nクロックである。また、実施形態に係る演算装置の演算方法によれば、M+2log2Nクロックで演算が完了する。
以上から、本実施形態に係る演算装置の演算方法では、前述した従来の演算方法と比較して、少ないクロック数で概算計算を実行できる。
図7は、本実施形態に係る演算装置による演算結果の絶対誤差の一例を示す図である。図7において、横軸は絶対誤差値であり、縦軸は度数である。図7に示される例では、入力値の数を2個とし、2個の入力値の各々を、8ビットとした。2進数で表される8ビットの入力値は、0から255までの数を表現できるため、2個の入力値の加算結果は、0から510の範囲に含まれる。図7は、絶対誤差値が0から510の各々について、いくつ出現したかを示す数である度数をグラフ化した。
図7によれば、絶対誤差値が0の場合は度数が1800個程度であり、絶対誤差値が大きくなるにしたがって、度数が小さくなる。絶対誤差値が128より大きくなった場合は、度数が0となる。本実施形態に係る演算装置による演算方法によれば、絶対誤差値は、128以下に分布していることが分かる。このため、入力値の数を2個とし、2個の入力値の各々を、8ビットとし、絶対誤差値が128以下であることを許容できる場合には、本実施形態に係る演算装置による演算方法を使用しても問題ないことが分かる。
図8は、実施形態に係る演算装置の演算部の一例を示す図である。図8は、前述した演算部130を、ハードウェアによって構成した場合の一例を示す。
演算部130は、フリップフロップ11と、フリップフロップ12と、ORゲート13と、XORゲート14と、ANDゲート15と、マルチプレクサ16と、フリップフロップ17と、NOTゲート18と、フリップフロップ19とを含んで構成される。
フリップフロップ11の出力は分岐され、一方はORゲート13へ入力され、他方はXORゲート14へ出力される。
フリップフロップ12の出力は分岐され、一方はORゲート13へ入力され、他方はXORゲート14へ出力される。
ORゲート13は、フリップフロップ11の出力と、フリップフロップ12の出力との論理和を導出し、論理和の導出結果を、ANDゲート15へ出力する。
XORゲート14は、フリップフロップ11の出力と、フリップフロップ12の出力との排他的論理和を導出し、排他的論理和の導出結果を、マルチプレクサ16へ出力する。
NOTゲート18は、フリップフロップ12の出力の論理否定を導出し、論理否定の導出結果を、ANDゲート15へ出力する。
ANDゲート15は、ORゲート13の出力と、NOTゲート18の出力との論理積を導出し、論理積の導出結果を、フリップフロップ19へ出力する。
フリップフロップ19は、演算結果Siを、Lクロック後から、Kビット毎に出力する。
このように構成することによって、桁上げなどを反映できるため、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合よりも、正確な演算結果に近い値を得ることができる。
前述した実施形態では、シリアル転送のビットKと、加算時の遅延クロック数Lとが、演算装置100に設定されている場合について説明したが、この例に限られない。例えば、ユーザーUが、端末装置200に対して、シリアル転送のビットKと、加算時の遅延クロック数Lとを入力する操作を行うことによって、端末装置200は、入力されたシリアル転送のビットKを示す情報と、加算時の遅延クロック数Lを示す情報とを含み、演算装置100を宛先とする演算要求を作成するようにしてもよい。
前述した実施形態では、演算装置100において、演算部130が、シリアル転送のビットKに基づいて、取得した複数の入力値の各々を、一又は複数の桁数に該当する値のうち、最上位ビットから、Kビット毎に、一又は複数の桁数に該当する値まで、複数の入力値の各々の加算を行う。そして、出力部140が、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に出力する場合について説明したが、この例に限られない。例えば、演算部130は、最上位ビットから、Kビット毎の加算結果が、閾値以上である場合に、演算を中止してもよい。仮に、演算結果が、閾値以上であるか否かを判定する場合に、演算結果が閾値以上であることが判明した後に、演算を継続しても、その演算は不要であるためである。このように構成することによって、不要な演算を削減できる。
このように構成することによって、演算装置100は、複数のビットシリアルデータなどの入力値を、上位ビットからKビット毎に受け取り、入力値の全ビットを受け取る前に、Kビット毎に加算し、加算によって得られる演算結果を、Lクロック後から、Kビット毎に出力できるため、概略計算結果を出力できる。このとき,演算結果には誤差が含まれるが、本実施形態では,その誤差の範囲が確定できるため、許容誤差範囲であれば、短いレイテンシで結果を得ることができる。
また、桁上げなどを反映できるため、最上位ビットから1ビット毎に加算を行う場合よりも、正確な演算結果に近い値を得ることができる。
さらに、演算部130は、最上位ビットの加算結果が、閾値以上である場合に、加算を中止する。このように構成することによって、不要な演算を削減できる。
特に、組合せ最適化問題の近似解法の一つであるシミュレーティッド・アニーリング(SA)、遺伝的アルゴリズム(GA)、粒子最適化法(PSO)などは大量の計算を実行するが、個々の計算の正確性はさほど結果に影響しない。したがって、この様な汎用的な解法に適用することによって、応用範囲をさらに拡大できる。同様に、ディープニューラルネットワークの処理を、特にスパイキング・ニューラルネットワークのような構造に応用することによって小型化・低消費電力化を図ることができる。
[全体構成]
図9は、実施形態の変形例に係る演算装置を含む演算システムの構成図である。実施形態の変形例の演算システム1aは、演算装置100aと、一以上利用者Uにより使用される端末装置200とを備える。
演算装置100aと、端末装置200とは、ネットワークNWを介して互いに通信可能である。
ユーザーUは、演算サービスウェブサイトの表示にしたがって、端末装置200に対して、複数の入力値に加え、誤差情報を入力する操作を行う。
端末装置200は、ユーザーUが入力した複数の入力値と誤差情報とを取得し、取得した複数の入力値と誤差情報とを含み、演算装置100aを宛先とする演算要求を作成する。端末装置200は、作成した演算要求を、演算装置100aへ送信する。
端末装置200は、演算装置100aが送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
以下、演算システム1aに含まれる演算装置100aと、端末装置200とのうち、実施形態とは異なる演算装置100aについて説明する。
演算システム1aに含まれる演算装置100aは、パーソナルコンピュータ、サーバー、又は産業用コンピュータ等の装置によって実現される。演算装置100aは、例えば、通信部110と、受付部120aと、演算部130aと、出力部140と、記憶部150と、設定部160とを備える。
記憶部150aは、HDDやフラッシュメモリ、RAM、ROMなどにより実現される。記憶部150aは、誤差情報桁数関連テーブル154が記憶される。
誤差情報桁数関連テーブル154は、誤差情報と、演算に使用する最上位ビットからの桁数を示す情報とを関連付けたテーブル形式の情報である。誤差情報桁数関連テーブル154には、誤差情報の値が小さくなるほど、演算に使用する最上位ビットからの桁数の値は大きくなり、誤差情報の値が小さくなるほど、演算桁数情報152の値は小さくなるように、誤差情報と、桁数を示す情報とが記憶される。誤差情報の値が小さくなるほど、演算結果に要求される精度が高くなり、誤差情報の値が大きくなるほど、演算結果に要求される精度が低くなるためである。
プログラムは、予めHDDやフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD−ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
設定部160は、受付部120aが受け付けた誤差情報を取得する。設定部160は、記憶部150aに記憶されている誤差情報桁数関連テーブル154から、取得した誤差情報に関連付けて記憶されている桁数を示す情報を取得し、取得した桁数を示す情報を設定する。
演算部130aは、受付部120aが受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130aは、設定部160が設定した桁数を示す情報を取得する。演算部130aは、取得した桁数を示す情報に基づいて、取得した複数の入力値の各々の最上位ビットから、桁数を示す情報に該当する値まで、最上位ビットからKビット毎に取得する。
演算部130aは、取得した一又は複数の桁数に該当する値のうち、最上位ビットから、桁数を示す情報に該当する値まで、複数の入力値の各々の加算を行う。演算部130aは、最上位ビットから、桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。演算部130aは、最上位ビットから、桁数を示す情報に該当する値より下位ビットは0として処理する。
図10は、実施形態の変形例に係る演算システムの動作の一例を示すシーケンスチャートである。
図10に示される例では、ユーザーUが、端末装置200を操作することによって、端末装置200は、演算装置100aと接続し、演算装置100aが提供している演算サービスウェブサイトにアクセスしていることを前提とする。
(ステップS11)
ユーザーUが、端末装置200に対して、複数の入力値と、誤差情報とを入力する操作を行うことによって、端末装置200は、入力された複数の入力値と、誤差情報とを含み、演算装置100aを宛先とする演算要求を作成する。
(ステップS12)
端末装置200は、作成した演算要求を、演算装置100aへ送信する。
(ステップS13)
演算装置100aにおいて、通信部110は、端末装置200が送信した演算要求を受信する。
(ステップS14)
演算装置100aにおいて、受付部120aは、通信部110が受信した演算要求を取得し、取得した演算要求に含まれる複数の入力値と、誤差情報とを受け付ける。受付部120aは、必要に応じて、複数の入力値の各々の桁合わせを行う。受付部120aは、複数の入力値の各々を、シリアル転送のビットKに基づいて、最上位ビットからKビット毎に、演算部130aへ出力する。
演算装置100aにおいて、設定部160は、受付部120aが受け付けた誤差情報を取得し、取得した誤差情報に関連付けて記憶されている桁数を示す情報を、記憶部150aの誤差情報桁数関連テーブル154から取得する。設定部160は、取得した桁数を示す情報を設定する。
(ステップS16)
演算装置100aにおいて、演算部130aは、受付部120が受け付けた複数の入力値の各々を、最上位ビットからKビット毎に取得する。演算部130aは、設定部160が設定した桁数を示す情報を取得する。演算部130aは、取得した桁数を示す情報に基づいて、取得した複数の入力値の各々の最上位ビットから、桁数を示す情報に該当する値まで、最上位ビットからKビット毎に取得する。
(ステップS17)
演算装置100aにおいて、演算部130aは、取得した桁数を示す情報に該当する値のうち、最上位ビットから、桁数を示す情報に該当する値まで、複数の入力値の各々の加算を行う。演算部130aは、最上位ビットから、桁数に該当する値まで、複数の入力値の各々の加算を行った結果を、最上位ビットからKビット毎に出力部140へ出力する。出力部140は、演算部130aによる演算結果を、加算時の遅延クロック数Lに基づいて、Lクロック後から、Kビット毎に最上位ビットから出力する。
(ステップS18)
演算装置100aにおいて、出力部140は、演算結果を含み、端末装置200を宛先とする演算応答を作成し、作成した演算応答を、通信部110へ出力する。
(ステップS19)
演算装置100aにおいて、通信部110は、出力部140が出力した演算応答を取得し、取得した演算結果を、端末装置200へ送信する。
その後、端末装置200は、演算装置100aが送信した演算応答を受信し、受信した演算応答に含まれる演算結果を取得する。端末装置200は、取得した演算結果を出力する。
前述した実施形態の変形例では、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合について説明したが、この例に限られない。演算部130aは、シリアル転送のビットKに基づいて、最上位ビットからKビット(Kは、桁数を示す情報の値≧K>0の整数)毎に加算を行うようにしてもよい。この場合、出力部は、加算時の遅延クロック数Lに基づいて、L(Lは、L>複数の入力値の数)クロック後から、Kビット毎に最上位ビットから加算された結果を出力する。
このように構成することによって、桁上げなどを反映できるため、シリアル転送のビットKが1、加算時の遅延クロック数Lが1である場合よりも、正確な演算結果に近い値を得ることができる。
前述した実施形態の変形例では、シリアル転送のビットKと、加算時の遅延クロック数Lとが、演算装置100aに設定されている場合について説明したが、この例に限られない。例えば、ユーザーUが、端末装置200に対して、シリアル転送のビットKと、加算時の遅延クロック数Lとを入力する操作を行うことによって、端末装置200は、入力されたシリアル転送のビットKを示す情報と、加算時の遅延クロック数Lを示す情報とを含み、演算装置100aを宛先とする演算要求を作成するようにしてもよい。
前述した実施形態の変形例では、演算装置100aは、誤差情報を受け付け、受け付けた誤差情報に関連付けて記憶されている桁を示す情報を、記憶部150aの誤差情報桁数関連テーブル154から取得する場合について説明したが、この例に限られない。例えば、記憶部150aに、誤差情報から、桁数を導出する演算式を記憶してもよい。この場合、演算部130aは、演算式に基づいて桁数を導出して設定してもよい。
このように構成することによって、演算装置100aは、複数のビットシリアルデータなどの入力値を、上位ビットからKビット毎に受け取り、入力値の全ビットを受け取る前に、Kビット毎に加算し、加算によって得られる演算結果を、Lクロック後から、Kビット毎に出力できるため、概略計算結果を出力できる。このとき,演算結果には誤差が含まれるが、本実施形態では,その誤差の範囲が確定できるため、許容誤差範囲であれば、短いレイテンシで結果を得ることができる。
このように構成することによって、演算結果に要求される誤差情報に基づいて、加算に使用する複数の入力値の各々の最上位ビットからの桁数を設定できるため、演算の柔軟性を向上できる。
さらに、設定部160は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部150aから、受付部120aが受け付けた誤差情報に基づいて、複数の入力値の各々の最上位ビットからの桁数を取得する。
このように構成することによって、記憶部150aに記憶されている演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けた情報から、受け付けた誤差情報に基づいて、複数の入力値の各々の最上位ビットからの桁数を取得できるため、演算によって、複数の入力値の各々の最上位ビットからの桁数を導出するよりも、処理を簡略化できる。
なお、前述の演算装置100、端末装置200、演算装置100aは内部にコンピュータを有している。そして、前述した各装置の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリなどをいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
Claims (5)
- 複数の入力値を受け付ける受付部と、
演算結果に許容される誤差に基づいて設定されている最上位ビットからの桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記桁数まで、前記受付部が前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行う演算部と、
前記演算部による加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力する出力部と
を備える演算装置。 - 前記受付部は、演算結果に要求される誤差情報を受け付け、
前記演算装置は、
前記受付部が受け付けた前記誤差情報に基づいて、加算に使用する複数の前記入力値の各々の最上位ビットからの桁数を設定する設定部
を備え、
前記演算部は、前記設定部が設定した前記桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記設定部が設定した前記桁数まで、前記受付部が前記最上位ビットからKビット毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行う、請求項1に記載の演算装置。 - 前記設定部は、演算結果に要求される誤差情報と、複数の入力値の各々の最上位ビットからの桁数とを関連付けて記憶する記憶部から、前記受付部が受け付けた前記誤差情報に基づいて、複数の前記入力値の各々の最上位ビットからの桁数を取得する、請求項2に記載の演算装置。
- 前記演算部は、前記最上位ビットの加算結果が、閾値以上である場合に、加算を中止する、請求項1から請求項3のいずれか一項に記載の演算装置。
- 複数の入力値を受け付けるステップと、
演算結果に許容される誤差に基づいて設定されている最上位ビットからの桁数に基づいて、複数の前記入力値の各々の最上位ビットから前記桁数まで、前記最上位ビットからKビット(Kは、K>0の整数)毎に出力した複数の前記入力値の各々の加算を、前記最上位ビットからKビット毎に行うステップと、
前記加算を行うステップによる加算結果を、L(Lは、L>0の整数)クロック後から、Kビット毎に最上位ビットから出力するステップと
を有する演算装置が実行する演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019211774A JP7437593B2 (ja) | 2019-11-22 | 2019-11-22 | 演算装置、及び演算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019211774A JP7437593B2 (ja) | 2019-11-22 | 2019-11-22 | 演算装置、及び演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021082221A true JP2021082221A (ja) | 2021-05-27 |
JP7437593B2 JP7437593B2 (ja) | 2024-02-26 |
Family
ID=75965389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019211774A Active JP7437593B2 (ja) | 2019-11-22 | 2019-11-22 | 演算装置、及び演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7437593B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5884343A (ja) * | 1981-11-16 | 1983-05-20 | Toshiba Corp | シリアル加算回路 |
JPH1031573A (ja) * | 1996-07-16 | 1998-02-03 | Hitachi Ltd | 情報処理装置 |
US20140059105A1 (en) * | 2012-08-27 | 2014-02-27 | The Regents Of The University Of California | Accuracy configurable adders and methods |
-
2019
- 2019-11-22 JP JP2019211774A patent/JP7437593B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5884343A (ja) * | 1981-11-16 | 1983-05-20 | Toshiba Corp | シリアル加算回路 |
JPH1031573A (ja) * | 1996-07-16 | 1998-02-03 | Hitachi Ltd | 情報処理装置 |
US20140059105A1 (en) * | 2012-08-27 | 2014-02-27 | The Regents Of The University Of California | Accuracy configurable adders and methods |
Also Published As
Publication number | Publication date |
---|---|
JP7437593B2 (ja) | 2024-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778410B2 (en) | Homomorphic data encryption method and apparatus for implementing privacy protection | |
US20210182721A1 (en) | Method and apparatus for constructing quantum machine learning framework, quantum computer and computer storage medium | |
TW201915839A (zh) | 對人工神經網路及浮點神經網路進行量化的方法及裝置 | |
US20170134157A1 (en) | Homomorphic Encryption with Optimized Encoding | |
US11093578B2 (en) | Optimization device and method of controlling optimization device | |
US11334320B2 (en) | Generating randomness in neural networks | |
JP6874219B2 (ja) | 情報処理装置、演算装置、及び情報処理方法 | |
JP7137064B2 (ja) | 最適化装置及び最適化装置の制御方法 | |
CN113723589A (zh) | 混合精度神经网络 | |
US11620105B2 (en) | Hybrid floating point representation for deep learning acceleration | |
Immareddy et al. | A survey paper on design and implementation of multipliers for digital system applications | |
CN110335165B (zh) | 一种链路预测方法和装置 | |
US8977663B2 (en) | Converting binary values into binary-coded-centimal values | |
CN110009101B (zh) | 用于生成量化神经网络的方法和装置 | |
CN111126557B (zh) | 神经网络量化、应用方法、装置和计算设备 | |
US10229145B2 (en) | Building of a hash table | |
CN112655005B (zh) | 动态小批量大小 | |
CN116127925B (zh) | 基于对文本进行破坏处理的文本数据增强方法及装置 | |
JP2021082221A (ja) | 演算装置、及び演算方法 | |
US11080365B2 (en) | Solving lattice problems using annealing | |
CN116108810A (zh) | 文本数据增强方法及装置 | |
US11275713B2 (en) | Bit-serial linear algebra processor | |
US11175957B1 (en) | Hardware accelerator for executing a computation task | |
Poltoratski | Bernstein’s problem on weighted polynomial approximation | |
US11507371B2 (en) | Column data driven arithmetic expression evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221025 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230704 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230830 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231031 |
|
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: 20240109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240117 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7437593 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |