JP2013515319A - 分岐なし高速ベクトル除算計算 - Google Patents
分岐なし高速ベクトル除算計算 Download PDFInfo
- Publication number
- JP2013515319A JP2013515319A JP2012545895A JP2012545895A JP2013515319A JP 2013515319 A JP2013515319 A JP 2013515319A JP 2012545895 A JP2012545895 A JP 2012545895A JP 2012545895 A JP2012545895 A JP 2012545895A JP 2013515319 A JP2013515319 A JP 2013515319A
- Authority
- JP
- Japan
- Prior art keywords
- value
- processor
- independent variables
- reciprocal
- generate
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 title abstract description 13
- 238000004364 calculation method Methods 0.000 title abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 27
- 238000010586 diagram Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
Abstract
単一命令複数データ(SIMD)コンピュータプラットフォームにおいて、倍精度除算/逆数計算ベクトル計算を行うための方法及び方法について説明する。一実施形態において、入力独立変数は、指数部と小数部とで現される。小数部は、スケーリングされ、逆数にされ、そして、乗算されて、入力独立変数の逆数表現が生成される。一実施形態において、指数部を逆数にすることは、指数の符号を変更することにより実行されてもよい。その他の実施形態についても説明される。
【選択図】図3
【選択図】図3
Description
本開示は、概して、コンピュータを使用した計算の分野に関する。より詳細には、本発明は概して、分岐なし高速ベクトル除算計算の技術に関する。
その他の単純な算術的オペレーションと比較して、除算オペレーションをハードウェア実装すると、例えば、大きなレイテンシにより、非常に計算が遅くなる。ベクトルの場合には、SIMD(単一命令複数データ)並列処理、スーパースカラー及びアウトオブオーダー実行のような現代のアーキテクチャに存在する様々な並列処理により、スピードアップを図ることができる。例えば、ニュートン・ラフソン反復法を使用した逆数の近似(例えば、http://en.wikipedia.org/wiki/Newton%E2%80%93Raphson_method参照)は、単精度(SP)の場合には概して有効であり、ある実装形態におけるハードウェア除算オペレーションを、最大で2倍の速度で行うことができる。しかしながら、この方法では、現在のSSEアーキテクチャでは、倍精度(DP)の逆数演算が存在しないため、倍精度の利点が大方失われてしまう。その結果、指数フィールドの操作と共に、DPからSPへの及びSPからDPへの変換を実行する必要がある。また、通常、上記のSP及びDP近似では、分母の値が無限(INF)又は0の場合には特別な処理が必要となり、並列処理が低減され、性能利得も少なくなってしまっている。
以下、添付の図面を参照して、詳細な説明が提供される。図面において、参照番号の最も左側の桁は、参照番号が最初に示される図面の番号を表している。異なる複数の図面間で使用されている同じ参照番号は、同様な又は同一のアイテムを示している。
以下の詳細な説明では、本発明を理解するために多くの詳細事項が記される。しかしながら、これら詳細事項がなくとも本発明を実施可能である。また、本発明を不明瞭にしない目的から、周知の方法、手順、構成要素及び回路等の詳細な説明を省略している。更に、本発明の実施形態の様々な側面は、集積半導体回路("ハードウェア")、1以上のプログラムに整理されたコンピュータ可読命令("ソフトウェア")、又は、ハードウェア及びソフトウェアのある組み合わせ等の様々な手段を利用して実装されてもよい。本開示において、"ロジック(logic)"とは、ハードウェア、ソフトウェア、(例えば、プロセッサのオペレーションを制御するマイクロコードを含む)、又は、これらの組み合わせを意味する。
また、本明細書において、本発明の"一実施形態"又は"ある実施形態"とは、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている"一実施形態において"という表現が全て、同一の実施形態を示している場合もあるし、同一の実施形態を示していない場合もある。
以下に記載の説明及び特許請求の範囲において、"連結される(coupled)"及び"接続される(connected)"という言葉、並びにこれらの派生語が使用されることがある。本発明の幾つかの実施形態では、"接続される"は、2つ以上の要素が物理的に又は電気的に直接互いに接触していることを示すのに使用されている。"連結される"も、2つ以上の要素が、物理的に又は電気的に直接互いに接触していることを示すが、"連結される"は、2つ又は2つ以上の要素が、協動又は相互作用しているが、直接接していない場合も示す。
本明細書に記載される実施形態の一部は、例えば、以前は必要であった分岐又は特別な動作を必要とすることなく、倍精度除算/逆ベクトル計算における性能を改善することを提供する。ベクトル除算計算は、SIMDコンピュータプラットフォームで実行されてもよい。一般的に、SIMDは、データレベルの並列処理を達成するのに採用される技術である。特に、複数のデータを、1つの命令に従って、SIMDベクトルプロセッサ(例えば、図4及び図5にそれぞれ示す、プロセッサ402及び502/504)の対応する複数のレーン上で処理してもよい。
ある実相例では、幾つかの逆数に対して、1つの除算オペレーションのみが実行される。例えば、以下に示すような一例が挙げられる(I. I. Zavarzin, V. F. Kuryakin, V. V. Lunev, D.M. Obuvalin, V. G. Ryzhih 等により提案された "Optimizatsiya Vychislenij Vektornyh Funktsyj." VANT. ser. Matematicheskoe modelirovanie fizicheskih protsessov. 1997年. Vol. 4、(ロシア語の文献)。
各独立変数の逆数は、Rと3つのその他の独立変数との3つの乗算を利用して計算してもよく、大きなレイテンシ及び大きなスループット値を伴うハードウェアによる4つの除算よりも、早く計算を行うことができる。具体的には、N個の値が存在する一般的な場合、この方法における、次に得られる最大の性能利得については、次のように計算することができる。ここでDは、除算におけるスループット値であり、Mは、乗算におけるスループット値である。
この方法の弱点は、独立変数の指数が様々であることから、積x1・x2・x3・x4のオーバーフロー又はアンダーフローが発生する確率が高くなり、その場合、4つの独立変数の組全体について不正確な出力となる可能性がある。例えば、x1=0.0であり、x2≠0.0、x3≠0.0、x4≠0.0である場合、R=INFとなり、4つのうちの3つの結果は誤りとなる。
この問題を解決するには、入力する指数の全ての合計が、アンダーフロー又はオーバーフローを引き起こさないことを確かにする必要がある。そのため、計算可能範囲は狭くなり、独立変数の比較が必要になる。また、メインの経路で正しく処理できないような特別な場合について、分岐が発生する可能性がある。一実施形態において、上記の問題は、独立変数のスケーリング及び再構築によって解決されてもよい。
図1には、一実施形態に係る方法100のフロー図が示されている。オペレーション102において、1個以上の独立変数(例えば、x1、x2等)が受信される。独立変数は、
と表してもよく、ここで、s={0,1}、で(−1)sの符号を表すためのsであり、bは基数(例えば、2進数の場合b=2)、nは指数であり、Emax≦n≦Eminで、ここで、Emax及びEminは、ANSI/IEEE規格754−2008に従った対応するデータタイプにおける最小指数及び最大指数である。そして、
(1≦f<2)である。
(1≦f<2)である。
ここで、入力される独立変数が、
であり、(x1,x2,x3,x4)であるとする。オペレーション104において、これら独立変数が、
により、
として、スケーリングされる。オペレーション106において、スケーリングされた独立変数が乗算されて(例えば、M=z1z2z3z4)、乗算された値が、オペレーション108において逆数にされる(例えば、R=1/M)。例えば、
の場合の、
はそれぞれ、次のように計算される。
であり、(x1,x2,x3,x4)であるとする。オペレーション104において、これら独立変数が、
により、
として、スケーリングされる。オペレーション106において、スケーリングされた独立変数が乗算されて(例えば、M=z1z2z3z4)、乗算された値が、オペレーション108において逆数にされる(例えば、R=1/M)。例えば、
の場合の、
はそれぞれ、次のように計算される。
この方法によれば、十分な精度を提供でき、また、メイン経路における電気電子技術者協会(IEEE)の特別値についての処理も提供できる。zi∈[1,2)の範囲では、計算の間にオーバーフロー/アンダーフローは発生しないと考えられ、例えば、zi・zj∈[1,4)のうちの任意の2つの値の積、zi・zj・zk∈[1,8)のうちの任意の3つの値の積、z1・z2・z3・z4∈[1,16)の4つの独立変数全ての積、及び、
等である。
等である。
更に、各乗算は、動作精度で丸めて実行されてもよく、最大0.5ulp(Unit in the Last Place又はUnit of Least Precision、http://en.wikipedia.org/vviki/Ulp、及び、"On the definition of ulp(x)" by Jean-Michel Muller, INRIA 技術報告書 5504を参照)の誤差幅で実行される。したがって、z1・z2・z3・z4の計算誤差は、3・0.5=1.5ulpを超えることはない。
一実施形態において、
を求めるために、別の3つの積を使用してもよく、この場合、更なる誤差、3・0.5=1.5ulpと誤差が存在しない反転が伴う。したがって、この場合に求められる結果の誤差は、(3+3)*0.5=3.0ulp以下となる。最終的な再構築、すなわち、
では、IEEE浮動小数点表現により、更なる誤差は付加されない。このように、3.0ulpの誤差幅は、ICL(インテルコンパイラー)、SVML(ショート・ベクトル・マス・ライブラリ)、MKL(マス・カーネル・ライブラリ)、及び、IPP(インテル・パフォーマンス・プリミティブス)ベクトルマスライブラリLA(低精度)デフォルトフレーバ、の必要条件の範囲内であり、4ulpは、2個の仮数部ビットの間違いに相当することから、大多数のアプリケーションにおいて十分な精度である。
上記では、4つの値の組について説明がされたが、上記で説明した技術は、任意の組のサイズに適用可能である。
図2Aから図2Cには、幾つかの実施形態に係る分岐なし高速ベクトル除算計算を実行する疑似コードが例示されている。より詳細には、図2Aには、独立変数、結果、型変換及びその他の定義が示されている。図2Bには、独立変数をスケーリングし、元の指数値を、例えば、図1を参照して上記で説明したようにスケーリングした独立変数の乗算値と共に保存するための疑似コードが示されている。図2Cには、結果を再構築するための疑似コードが示されている。幾つかの実施形態において、完全な除算のために、r[i]に分子を掛けてもよい。
図3は、一実施形態に係る高速ベクトル除算のブロック図である。図に示すように、浮動小数点302の指数部と小数部(fraction)部分は別々に取り扱われる304。図に示す例では、変数(図では"arg"と示されている)が、示される範囲内に指定されているが、実装形態、プロセッサ、データ経路幅等に応じて、その他の範囲を使用してもよい。また、独立変数の逆数を得るために、指数306の逆数と仮数308の逆数とは別々に計算されて、その積に基づいて最終的な計算結果が求められる。一実施形態において、指数の逆数は、図1から図2Cを参照して上記で説明したように、符号の置換(310及び312)に基づいてもよい。ある実施形態では、これは、精度の損失なく、整数オペレーションを使用して行われてもよい。小数部を逆数にする(314及び316)べく、小数部を指数0の浮動小数点として表す。そして、最後に、318において、小数部の逆数と指数の逆数との積に基づいて、最終的な結果が求められる(少なくとも1つの乗数がゼロ小数部を有することから、正確な結果であると考えられる)。
図4には、コンピュータシステム400の一実施形態のブロック図が例示されている。様々な実施形態において、システム400の1以上の構成要素が、本発明の実施形態を参照して説明されるオペレーションの1以上を実行可能な様々な電子デバイス内に提供されてもよい。例えば、システム400の構成要素の1以上が、図1−3を参照して説明したオペレーションを実行するのに使用されてもよく、例えば、本明細書に記載されるオペレーションに従って、SIMDを利用することにより性能を向上させて、除算/逆数に対応する値を生成してもよい。また、(例えば、図4及び/又は図5を参照して)以下に説明される様々な記憶デバイスは、データ、オペレーション結果の格納に使用されてもよい。一実施形態では、図3の方法300のオペレーションに関するデータは、メモリデバイス(図4のプロセッサ402又は図5のプロセッサ502/604に存在するメモリ412又は1以上のキャッシュ(例えば、一実施形態では、L1キャッシュ))に格納されてもよい。プロセッサは、高速除算/逆数計算のために(図1−図3の1以上のオペレーションのような)上記で説明したオペレーションを適用してもよい。したがって、幾つかの実施形態では、図4のプロセッサ402又は図5のプロセッサ502/604は、SIMDオペレーションをサポート可能なベクトルプロセッサであってもよい。
さらに、コンピュータシステム400は、1以上の中央演算処理装置(CPU)402、又は、相互接続ネットワーク(又は、バス)404を介して通信を行うプロセッサを含んでもよい。プロセッサ402は、(コンピュータネットワーク403上で通信されたデータを処理する(汎用プロセッサ、ネットワークプロセッサ、又は、(縮小命令セットコンピュータ(RISC)プロセッサ、又は、複数命令セットコンピュータ(CISC)を含む)その他の種類のプロセッサを含んでもよい。さらに、プロセッサ402は、シングルコア、又は、複数コア設計であってもよい。複数コア設計のプロセッサ402は、同じ集積回路(IC)ダイ上に、異なる種類のプロセッサコアを集積してもよい。また、複数コア設計を有するプロセッサ402は、対称マルチプロセッサ又は非対称マルチプロセッサとして実装されてもよい。また、プロセッサ402は、SIMDアーキテクチャを利用してもよい。さらに、図1から図3を参照して上記で説明されたオペレーションは、システム400の1以上の構成要素によって実行されてもよい。
チップセット406は、相互接続ネットワーク404と通信を行ってもよい。チップセット406は、メモリ制御ハブ(MCH)408を含んでもよい。MCH408は、メモリ412と通信を行うメモリコントローラ410を含んでもよい。メモリ412は、CPU402又はコンピュータシステム400に含まれるその他のデバイスによって実行される命令のシーケンスを含むデータを格納してもよい。本発明の一実施形態において、メモリ412は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)のような1以上の揮発性記憶(メモリ)デバイス、又は、その他の種類の記憶デバイスを含んでもよい。ハードディスクのような、不揮発性メモリを使用してもよい。複数のCPU及び/又は複数のシステムメモリのような更なるデバイスが、相互接続ネットワーク404を介して通信を行ってもよい。
MCH408はまた、ディスプレイ416と通信を行うグラフィックスインターフェース414を含んでもよい。上記で説明した高速除算/逆数計算に関するオペレーションのユーザー結果を示すのに、ディスプレイ416を使用してもよい。本発明の一実施形態において、グラフィックスインターフェース414は、アクセラレイティッド・グラフィックス・ポート(AGP)を介して、ディスプレイ416と接続されてもよい。本発明の一実施形態において、ディスプレイ416は、例えば、ビデオメモリ又はシステムメモリに格納された画像のデジタル表現を、ディスプレイ416によって変換及び表示される表示信号へと変換する信号変換器を介して、グラフィックスインターフェース414と通信を行うフラットパネルディスプレイであってもよい。インターフェース414によって生成される表示信号は、ディスプレイ416において、変換され実質的に表示される前に、様々な制御デバイスを通過してもよい。
ハブインターフェース418は、MCH408及び入出力制御ハブ(ICH)420が通信を行うことを可能にしてもよい。ICH420は、コンピュータシステム400と通信するI/Oデバイスに対するインターフェースを提供してもよい。ICH420は、ペリフェラル・コンポーネント・インターコネクト(PCI)ブリッジ、ユニバーサルシリアルバス(USB)コントローラのような周辺機器ブリッジ(又はコントローラ)424、又は、その他の種類の周辺機器ブリッジ又はコントローラを介して、バス422と通信を行ってもよい。ブリッジ424は、CPU402と周辺機器との間のデータ経路を提供してもよい。その他の種類のトポロジーを使用してもよい。複数のバスが、例えば、複数のブリッジ又はコントローラを介して、ICH420と接続されてもよい。また、ICH420と通信を行うその他の周辺機器として、本発明の様々な実施形態では、インテグレーティッド・ドライブ・エレクトロニクス(IDE)、又は、スモールコンピュータシステムインターフェース(SCSI)ハードドライブ、USBポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー(登録商標)ディスクドライブ、デジタル出力サポート(例えば、デジタルビデオインターフェース(DVI))、又は、その他のデバイスを含んでもよい。
バス422は、オーディオデバイス426、1以上のディスクドライブ428、及び、コンピュータネットワーク403と接続されてもよいネットワークインターフェースデバイス430と接続されてもよい。一実施形態において、デバイス430は、無線通信可能なNICであってもよい。その他のデバイスが、バス422を介して接続されてもよい。また、本発明のある実施形態では、(例えば、ネットワークインターフェースデバイス430のような)様々な構成要素を、MCH408と接続してもよい。また、プロセッサ402及びMCH408は、1つのチップを形成するべく組み合わせられてもよい。さらに、本発明の別の実施形態では、グラフィックスインターフェース414は、MCH408内に含められていてもよい。
また、コンピュータシステム400は、揮発性及び/又は不揮発性メモリ(又はストレージ)を含んでもよい。例えば、不揮発性メモリは、リードオンリーメモリ(ROM)、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、電子的EPROM(EEPROM)、ディスクドライブ(例えば、428)、フロッピー(登録商標)ディスク、コンパクトディスクROM(CD−ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、光磁気ディスク、又は、電気的データ(例えば、命令を含む)を格納可能なその他の種類の不揮発性機械可読媒体のうち、1以上を含んでもよい。一実施形態において、システム400の構成要素は、図5を参照して説明するように、ポイントツーポイント(PtP)構成に配置されてもよい。例えば、プロセッサ、メモリ及び/又は入出力デバイスは、複数のポイントツーポイントインターフェースによって相互接続されてもよい。
具体的には、図5には、本発明の一実施形態に係るポイントツーポイント(PtP)構成に配置されるコンピュータシステム500が示されている。特に、図5には、プロセッサ、メモリ及び入出力デバイスが、複数のポイントツーポイントインターフェースによって相互接続されているシステムが示されている。図1から図4を参照して上記で説明したオペレーションが、システム500の1以上の構成要素によって実行されてもよい。
図5には、明瞭化のために2つのプロセッサ502及び504しか示されていないが、システム500は、これより多い数のプロセッサを含んでもよい。プロセッサ502及び504は、メモリ510及び512とそれぞれ接続されるローカルメモリ制御ハブ(MCH)506及び508をそれぞれ含んでもよい。メモリ510及び/又は512は、図4のメモリ412を参照し上記で説明したように、様々なデータを格納してもよい。
プロセッサ502及び504は、図4のプロセッサ402を参照して説明したような、任意の好適なプロセッサを含んでもよい。プロセッサ502及び504は、それぞれインターフェース回路516及び518を使用して、ポイントツーポイント(PtP)514を介してデータをやりとりしてもよい。プロセッサ502及び504はそれぞれ、ポイントツーポイントインターフェース回路526、528、530及び532を介して、別個のPtPインターフェース522及び524を介して、チップセット520とデータをやりとりしてもよい。チップセット520はまた、PtPインターフェース回路537を使用して、高性能グラフィックスインターフェース536を介して高性能グラフィックス回路534とデータをやりとりしてもよい。
本発明の少なくとも1つの実施形態が、プロセッサ502及び504を利用することにより提供されてもよい。例えば、プロセッサ502及び/又は504は、図1から図4のオペレーションのうちの1以上を実行してもよい。本発明のその他の実施形態では、図5のシステム500内のその他の回路、論理ユニット又はデバイスに存在してもよい。さらに、本発明のその他の実施形態は、図5内に示された複数の回路、論理回路、又は、デバイスにわたって分配されてもよい。
チップセット520は、PtPインターフェース回路541を使用して、バス540に接続されてもよい。バス540には、1以上のデバイスが接続されてもよく、例えば、バスブリッジ542及びI/Oデバイス543が接続されてもよい。バス544を介して、バスブリッジ543は、キーボード/マウス545、図5を参照して説明したネットワークインターフェースデバイス530(コンピュータネットワーク403と接続されてもよいモデム、ネットワークインターフェースカード(NIC)等)、オーディオI/Oデバイス、及び/又は、データ記憶デバイス548のようなその他のデバイスと接続されてもよい。データ記憶デバイス548は、プロセッサ502及び/又は504によって実行されてもよいコード549を格納してもよい。
本発明の様々な実施形態において、例えば、図1〜図5を参照して説明したオペレーションは、ハードウェア(例えば、論理回路)、ソフトウェア(例えば、図4から図5を参照して説明したプロセッサのようなプロセッサのオペレーションを制御するマイクロコード)、ファームウェア、又は、これらの組み合わせに実装されてもよく、本明細書で説明されたオペレーションを実行するべく、コンピュータ(例えば、プロセッサ又はコンピュータデバイスのその他のロジック)をプログラムするのに使用される命令(又は、ソフトウェアプロセス)を格納する有形機械可読又はコンピュータ可読媒体として提供されてもよい。機械可読媒体は、本明細書で説明したような記憶デバイスを含んでもよい。
さらに、このような有形コンピュータ可読媒体は、リモートコンピュータ(例えば、サーバー)から要求を行うコンピュータ(例えば、クライント)へと、通信リンク(例えば、バス、モデム又はネットワーク接続)を介して有形伝播媒体に実装されるデータ信号の態様で転送されるコンピュータプログラム物品としてダウンロードされてもよい。
このように、本発明の実施形態が、構造的特徴及び/又は方法の動作に絞って説明されたが、特許請求される特徴は、上記で説明された特定の特徴又は動作に限定されないことは理解されるべきである。特定の特徴及び動作は、特許請求される特徴を実装するサンプルの形式として開示されてもよい。
Claims (20)
- 対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第1の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第2の値を生成するべく、前記第1の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の1以上と前記第2の値との乗算に基づいて、複数の結果を再構築する段階と
を備え、
前記複数の結果は、前記複数の独立変数の逆数の表現に対応している方法。 - 前記第1の値を逆数にする段階は、前記第1の値の指数部の符号を変更することにより実行される請求項1に記載の方法。
- 前記複数の独立変数の浮動小数点の表現を、整数値へと変換する段階を更に備える請求項1に記載の方法。
- 前記複数の独立変数をスケーリングする段階は、前記複数の独立変数を1.0でスケーリングすることを含む請求項1に記載の方法。
- 生成された値をメモリに格納する段階を更に備える請求項1に記載の方法。
- SIMD(単一命令複数データ)命令に対応する複数のデータ値を格納するメモリと、
複数のSIMDレーンを有するプロセッサと
を備え、
前記複数のSIMDレーンの各々は、前記SIMD命令に従って、前記メモリに格納された前記複数のデータ値のうちの1つを処理し、
前記プロセッサは、
前記複数のデータ値のうちの第1の値の指数部及び小数部をスケーリングして、それぞれ第2の値及び第3の値を生成し、
前記第2の値及び前記第3の値をそれぞれ逆数にして、第4の値及び第5の値を生成し、
前記第4の値と前記第5の値とを乗算して、前記第1の値の逆数表現を生成し、
前記第2の値は、前記第1の値の前記指数部の符号を変更することにより逆数にされる装置。 - 前記プロセッサは、前記第1の値の指数部と小数部とを決定する請求項6に記載の装置。
- 前記プロセッサは、前記第1の値の前記指数部及び前記小数部を1.0でスケーリングして、前記第2の値及び前記第3の値を生成する請求項6に記載の装置。
- 前記プロセッサは、前記複数のデータ値の浮動小数点表現を、整数値に変換する請求項6に記載の装置。
- 前記メモリは、キャッシュを含む請求項6に記載の装置。
- 前記プロセッサは、1以上のプロセッサコアを含む請求項6に記載の装置。
- 前記プロセッサは、生成された値を前記メモリに記憶させる請求項6に記載の装置。
- 前記第1の値の前記逆数表現を表示させる表示デバイスを更に備える請求項6に記載の装置。
- 1以上の命令を格納するコンピュータ可読媒体であって、前記1以上の命令がプロセッサ上で実行されると、
対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第1の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第2の値を生成するべく、前記第1の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の1以上と前記第2の値との乗算に基づいて、複数の結果を再構築する段階と
を前記プロセッサが実行するコンピュータ可読媒体。 - 前記複数の結果は、前記複数の独立変数の逆数表現に対応している請求項14に記載のコンピュータ可読媒体。
- 前記プロセッサ上で実行されると、前記第1の値の指数部の符号を変更することにより、前記第1の値の逆数にするよう前記プロセッサを設定する1以上の命令を更に格納する請求項14に記載のコンピュータ可読媒体。
- 前記プロセッサ上で実行されると、前記複数の独立変数の浮動小数点表現を、整数値へと変換するように前記プロセッサを設定する1以上の命令を更に格納する請求項14に記載のコンピュータ可読媒体。
- 前記プロセッサ上で実行されると、前記複数の独立変数を1.0でスケーリングするように前記プロセッサを設定する1以上の命令を更に格納する請求項14に記載のコンピュータ可読媒体。
- 前記プロセッサ上で実行されると、生成された値をメモリに格納するよう前記プロセッサを設定する1以上の命令を更に格納する請求項14に記載のコンピュータ可読媒体。
- 前記プロセッサ上で実行されると、前記複数の独立変数の逆数にされた指数部と逆数にされた小数部とを乗算するよう前記プロセッサを設定する1以上の命令を更に格納する請求項14に記載のコンピュータ可読媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2009/000727 WO2011078725A1 (en) | 2009-12-25 | 2009-12-25 | Fast branch-free vector division computation |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013515319A true JP2013515319A (ja) | 2013-05-02 |
Family
ID=42642593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012545895A Pending JP2013515319A (ja) | 2009-12-25 | 2009-12-25 | 分岐なし高速ベクトル除算計算 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20120254585A1 (ja) |
EP (1) | EP2517099B1 (ja) |
JP (1) | JP2013515319A (ja) |
KR (1) | KR101484379B1 (ja) |
AU (1) | AU2009357187B2 (ja) |
RU (1) | RU2531862C2 (ja) |
WO (1) | WO2011078725A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6278629A (ja) * | 1985-10-02 | 1987-04-10 | Hitachi Denshi Ltd | 逆数値演算方式 |
JPH01125626A (ja) * | 1987-10-22 | 1989-05-18 | Sony Tektronix Corp | 逆数計算方法 |
JPH09128218A (ja) * | 1995-11-01 | 1997-05-16 | Hitachi Denshi Ltd | 除算装置 |
JP2006228190A (ja) * | 2005-02-16 | 2006-08-31 | Arm Ltd | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3940542B2 (ja) * | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US7411694B2 (en) * | 2002-01-21 | 2008-08-12 | Ricoh Company, Ltd. | Data conversion apparatus for and method of data conversion for image processing |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
RU2318239C1 (ru) * | 2006-07-05 | 2008-02-27 | Ставропольский военный институт связи ракетных войск | Нейронная сеть для деления чисел, представленных в системе остаточных классов |
-
2009
- 2009-12-25 JP JP2012545895A patent/JP2013515319A/ja active Pending
- 2009-12-25 AU AU2009357187A patent/AU2009357187B2/en not_active Ceased
- 2009-12-25 EP EP09839488.5A patent/EP2517099B1/en not_active Not-in-force
- 2009-12-25 RU RU2012112201/08A patent/RU2531862C2/ru not_active IP Right Cessation
- 2009-12-25 US US13/503,592 patent/US20120254585A1/en not_active Abandoned
- 2009-12-25 KR KR1020127016264A patent/KR101484379B1/ko not_active IP Right Cessation
- 2009-12-25 WO PCT/RU2009/000727 patent/WO2011078725A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6278629A (ja) * | 1985-10-02 | 1987-04-10 | Hitachi Denshi Ltd | 逆数値演算方式 |
JPH01125626A (ja) * | 1987-10-22 | 1989-05-18 | Sony Tektronix Corp | 逆数計算方法 |
JPH09128218A (ja) * | 1995-11-01 | 1997-05-16 | Hitachi Denshi Ltd | 除算装置 |
JP2006228190A (ja) * | 2005-02-16 | 2006-08-31 | Arm Ltd | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 |
Non-Patent Citations (2)
Title |
---|
JPN6013044938; Pfister M.: 'A Fast Division Algorithm for SIMD - Neurocomputers' Neural Networks, 1994. IEEE World Congress on Computational Intelligence., 1994 IEEE International C Volume 4, 19940627, Pages. 2223-2226, IEEE * |
JPN6013044939; IEEE Computer Society: 'IEEE Standard for Floating-Point Arithmetic' IEEE Std 754 - 2008 (Revision of IEEE Std 754-1985) , 20080829, pages.6-14 (3. Floating-point formats), IEEE * |
Also Published As
Publication number | Publication date |
---|---|
RU2531862C2 (ru) | 2014-10-27 |
KR20120096536A (ko) | 2012-08-30 |
CN102713835A (zh) | 2012-10-03 |
RU2012112201A (ru) | 2014-01-27 |
US20120254585A1 (en) | 2012-10-04 |
EP2517099A1 (en) | 2012-10-31 |
WO2011078725A1 (en) | 2011-06-30 |
AU2009357187B2 (en) | 2014-11-20 |
EP2517099B1 (en) | 2017-07-19 |
AU2009357187A1 (en) | 2012-05-03 |
KR101484379B1 (ko) | 2015-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7565998B2 (ja) | コンパクトな演算処理要素を用いたプロセッシング | |
CN107077417B (zh) | 有效性配准 | |
EP3719639B1 (en) | Systems and methods to perform floating-point addition with selected rounding | |
US20160026912A1 (en) | Weight-shifting mechanism for convolutional neural networks | |
JP5731937B2 (ja) | ベクトル浮動小数点引数削減 | |
JP2015505998A (ja) | 大きな浮動小数点値と小さな浮動小数点値の両方を使用した算術演算の実行 | |
US10747501B2 (en) | Providing efficient floating-point operations using matrix processors in processor-based systems | |
JP2020507844A (ja) | 入力オペランド値を処理するための装置及び方法 | |
JP4477959B2 (ja) | ブロードキャスト型並列処理のための演算処理装置 | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 | |
Brand et al. | Anytime floating-point addition and multiplication-concepts and implementations | |
Mora et al. | Mathematical model and implementation of rational processing | |
JP2013515319A (ja) | 分岐なし高速ベクトル除算計算 | |
CN113781217A (zh) | 基于fpga的浮点数处理方法、装置、电子设备及存储介质 | |
US8924447B2 (en) | Double precision approximation of a single precision operation | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
US20230100785A1 (en) | Priority encoder-based techniques for computing the minimum or the maximum of multiple values | |
US20130132452A1 (en) | Method and Apparatus for Fast Computation of Integral and Fractional Parts of a High Precision Floating Point Multiplication Using Integer Arithmetic | |
CN102713835B (zh) | 快速无分支向量除法计算 | |
Farahbakhsh et al. | Rapid Emulation of Approximate DNN Accelerators | |
US9311272B1 (en) | System and method for faster division | |
Feng et al. | Mixed-precision models for calculation of high-order virial coefficients on GPUs | |
JP2003114795A (ja) | 加算に続く予測比較器システム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130910 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140415 |