浮動小数点エラーの軽減とは、実数が一般に固定空間で正確に表現できないという事実によって生じるエラーを最小限に抑えることです。定義上、浮動小数点エラーは排除できず、せいぜい管理することしかできません。
ヒューベルト・M・シエラは1956年の特許「計算機用浮動小数点演算制御手段」の中で次のように述べています。[1]
したがって、状況によっては、重要なデータ桁の大部分がレジスタの容量を超える可能性があります。したがって、得られる結果は、完全に誤りではないにしても、ほとんど意味を持たない可能性があります。
1936年にコンラート・ツーゼが開発したZ1は、浮動小数点演算を備えた最初のコンピュータであったため、浮動小数点エラーの影響を受けやすかった。しかし、演算時間がミリ秒単位だった初期のコンピュータは、大規模で複雑な問題を解くことができず[2]、浮動小数点エラーに悩まされることはめったになかった。しかし、今日では、スーパーコンピュータシステムの性能はペタフロップスで測定され、浮動小数点エラーは計算問題の解決者にとって大きな懸念事項となっている。
次のセクションでは、浮動小数点エラーを軽減するさまざまな手段の長所と短所について説明します。
数値誤差解析
数値解析の主な焦点ではないが、[3] [4] : 5 浮動小数点丸め誤差の解析と最小化のための 数値誤差解析が存在する。
モンテカルロ演算
モンテカルロ演算によるエラー分析は、アルゴリズムのデータ値に小さなエラーを繰り返し注入し、結果への相対的な影響を判断することによって実行されます。
精度の拡張
精度の拡張とは、当初考えていたよりも大きな実数値の表現を使用することです。IEEE 754標準では、精度は実数値を表すために使用できる桁数として定義されています。プログラミング言語には、単精度(32 ビット)、倍精度(64 ビット)、および4 倍精度(128 ビット) を含めることができます。精度の拡張により、エラーの影響は少なくなるか、またはそれほど重要ではなくなりますが、結果の真の精度は依然として不明です。
可変長演算
可変長演算は、利用可能なメモリによってのみ制限される可変長の数字の文字列として数値を表します。可変長演算は、固定長形式の浮動小数点命令よりも大幅に遅くなります。高いパフォーマンスは必要ではないが、高い精度が必要な場合は、結果の実際の精度がわからない場合でも、可変長演算が役立ちます。
浮動小数点演算の誤差項の使用
KnuthとMøllerによるTwoSum [5]または2Sumとして知られる浮動小数点アルゴリズム、およびより単純だが制限のあるバージョンであるFastTwoSumまたはFast2Sum(6つの操作の代わりに3つの操作)を使用すると、最も近い値に丸められた浮動小数点加算の(正確な)誤差項を得ることができます。また、融合乗算加算(FMA)を使用すると2つの操作で、またはFMAが利用できない場合は17つの操作(Dekkerによるアルゴリズムを使用)で、最も近い値に丸められた浮動小数点乗算の(正確な)誤差項を取得することもできます。これらの誤差項は、たとえば浮動小数点拡張や補正アルゴリズムなどのアルゴリズムで最終結果の精度を向上させるために使用できます。
浮動小数点加算または乗算の結果をその誤差項で最も近い値に丸める演算 (ただし、上記のアルゴリズムとは少し異なります) は、IEEE 754-2019 標準で標準化され、推奨されています。
異なる基数の選択
特に 2 進数から 10 進数への基数の変更は、エラーを減らし、金融アプリケーションなどの一部のアプリケーションでの丸めをより適切に制御するのに役立ちます。
区間演算
区間演算は、数学的計算における丸め誤差や測定誤差に限界を設けるために使用される数学的手法である。値は区間であり、次のようにさまざまな方法で表現できる。[6]
- inf-sup: 真の値の下限と上限。
- mid-rad: 近似値と誤差範囲(区間の中点と半径と呼ばれる)
- 三重項: 誤差の近似値、下限値、上限値。
「調査中の数学モデル内の実変数の値の近似値として単一の浮動小数点数を使用する代わりに、区間演算では、変数に可能な値として実数の集合を関連付けることで、精度の限界を認識します。保存と計算を容易にするため、これらの集合は区間に制限されています。」[7]
区間演算式の評価では、大きな範囲の値が得られる可能性があり[7]、真の誤差境界を大幅に過大評価する可能性があります。[8] : 8
グスタフソンのユニム
Unums (「ユニバーサルナンバー」)は、ジョン・ガスタフソンによって提案された可変長演算の拡張です。[9] Unumsには、指数部と仮数部の長さのための可変長フィールドがあり、エラー情報は、仮数部の最下位ビット(ULP)のエラーの可能性を表すubitという1つのビットで運ばれます。[9] : 4
ウィリアム・カハンはウヌムの有効性に疑問を呈している。[8]
制限付き浮動小数点数
制限付き浮動小数点数は、アラン・ジョーゲンセンが提案し特許を取得した手法です。[10]データ構造には、標準のIEEE 754データ構造と解釈、および表現された実際の値と浮動小数点表現によって格納された値との間の誤差に関する情報が含まれています。[11]
有界浮動小数点数は、グスタフソンの単数形と区間演算に関する研究から派生したものであると批判されてきた。[10] [12]
参考文献
- ^ 「計算機用浮動小数点演算制御手段:米国特許3037701」。FreePatentsOnline.com 。 1962年6月5日。 2022年1月21日閲覧。
- ^ 「コンピュータ開発の歴史とコンピュータの世代」WikiEducator 2014年9月。 2018年2月17日閲覧。
- ^ Trefethen, Lloyd N. (1992). 「数値解析の定義」(PDF) . SIAM . 2018年2月16日閲覧。
- ^ Higham, Nicholas John (2002). 数値アルゴリズムの精度と安定性 (第2版). Society for Industrial and Applied Mathematics (SIAM). ISBN 978-0-89871-521-7。
- ^ Richard Shewchuk, Jonathan (1997 年 10 月). 「適応型精度浮動小数点演算と高速で堅牢な幾何学述語」(PDF) .離散幾何学と計算幾何学. 18 (3): 305–363. doi :10.1007/PL00009321. S2CID 189937041 . 2022 年 11 月 14 日に閲覧。
- ^ 「IEEE 区間演算標準」IEEE STD 1788-2015 : 1–97. 2015-06-30. doi :10.1109/IEEESTD.2015.7140721. ISBN 978-0-7381-9720-3。
- ^ ab Hickey, T.; Ju, Q.; van Emden, MH (2001 年 9 月). 「区間演算: 原理から実装まで」(PDF) . Journal of the ACM . 48 (5): 1038–1068. CiteSeerX 10.1.1.43.8001 . doi :10.1145/502102.502106. S2CID 15105694 . 2018 年 2 月 16 日閲覧。
- ^ ab Kahan, William (2016年7月). 「John L. GustafsonのTHE END of ERROR — Unum Computationと彼のA Radical Approach to Computation with Real Numbersに対する批評」(PDF) 。2018年2月17日閲覧。
- ^ ab Gustafson, John Leroy (2016-02-04) [2015-02-05]. The End of Error: Unum Computing. Chapman & Hall / CRC Computational Science . Vol. 24 (第2版訂正版、第1版). CRC Press . ISBN 978-1-4822-3986-7. 2016年5月30日閲覧。[1] [2]
- ^ ab Trader, Tiffany (2018-01-17). 「発明者、浮動小数点エラー問題を解決したと主張」HPCwire . 2022年3月1日閲覧。
- ^ 米国特許 11023230B2、Jorgensen、Alan A.、「浮動小数点演算中の誤差の境界を計算して保持する装置およびその方法」、2021-06-01 発行
- ^ 「数十年にわたる浮動小数点エラー問題は解決されたか?」insideHPC 2018年1月17日2022年3月1日閲覧。
