多倍長計算手法 平成 年度第 四半期 今回はパラメータ の設定と精度に関してまとめて記述しました ループ積分と呼ばれる数値積分計算では 質量 の光子や質量が非常に小さい事はわかっているが その値は不明なニュートリノに対して赤外発散を防ぐため微小量を与えて計算しています この設定する微少量の値により 結果の精度及び反復に要する時間が大きく作用したり 誤った値を得る事があります ここでは典型的な つのケースで説明します Ir o -vrt g lr
Ir o z z z tz dzdd I l l t t I t t の場合解析近似解 l l t t 最大相対誤差
6 9 7698 l l 6 l l l l l i 6 される精度の結果が得られる事になります形式 倍精度でぎりぎり要求このことから桁落ち等を工夫すればビットとすると有効ビットとすると式を整理するとを解けば良い事になりますこれからなりますで要求される精度の結果が得られる事にとなるが表現できればですからではに対しとしますとまた重みをとなりますの場合かかる重みはではとしますこれをよりが求まりますがとしますするととなりますいま要求される相対誤差をとするとはとなりますでの最小値はでは E d d E d d d d z z d o r 要求する精度の結果を得るのに必要な仮数部のビット数は以下の様にして推定できます
t します 計算は iとして複素数計算として実行します 結果の精度は解析近似式を複素数計算して得られたものと比較します 式から虚数部分の値はに依存しない事がわかります また一般に演算に必要な精度はに依存します 演算に必要な仮数部のビット数はlog 要求精度の進桁数 例えば要求精度を進 6桁とするとlog 6 6となリます 実数部の計算には 倍精度演算が必要で 虚数部の計算はに依存しないので倍精度演算でも可能ですまた iで計算すると虚数部の値は非常に収束性の良い列がえられますが の初期値の取り方により つの異なる値が得られます の計算を行うと 反復の最初の値をとします 正しい値は 事になってしまいます : 6777976-9 7 - : 76898679-8 66 - : 777897-8 8-9 の場合ですが 結局 倍精度演算が必要という i iとしたのは符号を合わせるためとして を にしますと 倍精度演算で十分な精度が得られます このように 計算の特徴に合わせて計算を行う必要があります 程度
-vrt / / l : : 877 : の場合を考えます計算手法の検討のためになりますの値に依存しない事とではの場合この様に dd urio ltro oo 以降 ページに <= の場合の実行結果を示し その後 = の解析式の導入方法を示します l 誤差も簡単に見積もれる事がわかりますとして計算すると演算量も削減され事を示していますの項がでて発散するように見えるがうまく切り抜けられるの解析式の検討で数学公式に出てくる式からは
S< の場合の結果 = - = 69999999999999999999999999978E-6 = 67899 iz= ki= 9999767Q- :^{-}= rult= 9997678Q- :^{-}= rult= 99976877Q- :^{-}= 6 rult= 99976868Q- :^{-}= 8 rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= 6 rult= 99976869Q- :^{-}= 8 rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= rult= 99976869Q- :^{-}= 6 rult= 99976869Q- :^{-}= 8 rult= 99976869Q- :^{-}= rult= 99976869Q-
S= の場合の結果 = 69999999999999999999999999978E-6 = 67899 iz= ki= 9678Q- :^{-}= rult= 967886Q- :^{-}= rult= 96786Q- :^{-}= 6 rult= 9678Q- :^{-}= 8 rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= 6 rult= 9678Q- :^{-}= 8 rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= rult= 9678Q- :^{-}= 6 rult= 9678Q- :^{-}= 8 rult= 9678Q- :^{-}= rult= 9678Q-
l l l l l l l l l l l l l d d dd I I d I d d dd なら 誤差 解析近似解
6 6 6 6 9 7 877 d d d d d I lr g - の形の計算があるため桁落ちに注意が必要になります
] [ ] [ 6 6 6 計算した方が精度演算量からみて良い事がわかります式の形から定義式どうり計算するより式を変形した形でよりならならよって以上からとおくと式を整理すると下記の様になります
性能モニターでの演算量 g lr 演算量 origi =8 8GFLOP =6 78GFLOP = TFLOP = 86PFLOP tu =8 689GFLOP =6 768GFLOP = 66TFLOP = PFLOP /66=9 演算量は式の変形のみで 倍以上の差があります
計算する前にg lr で 場合で 発散は起きない事 誤差は になる事を確認しました がない g lr で 以下の様に変わります I ddとなります とすると I がない場合の式は SP SP この式からI 967789976766 これを 倍精度 Qで- iの 算法で計算した結果は下記のとうりで 発散は起きていません = 987979867 - : 96777-9677 - 96778-96778 - 96778-96778 - 96778-88 - 96778 - - 8-7 6-6 - -9-8 - 8 - - 7 9-9 - 9-9 - 9-9 - 9 -
に値をいれると 誤差が になる事が以下の結果でわかりました 7-8 - - - 注 : 96-6 - : 967797-9 -6 : 96778-77 -6 : 96778 - - : 96778-9 - 7 : 96778 - - 7 - の許容値を で誤差に変化がないのは プログラムで相対誤差 に設定している事によります このあと BG/Q で必要な分点数を定め 計算は SR6/ で実行したものを採用しています これは 必要な分点数を求めるには演算量が多くなる事と この計算は精度に鋭敏な事によります 分点数 N= BG/Q ノード 87 秒分点数 N= SR6/ 8 ノード 886 秒演算量は分点数の 乗に比例
積分計算は 二重指数関数型積分で行い 変数変換区間は [ ] で実施していますまた 一般にこの種の 積分は の形の式がでますので 桁落ちを考慮して 形式の 倍精度を使用する必要があります また区間幅が結果の精度に影響しますので 分点数を変化させ 必要な分点数を BG/Q でもとめました λ= 結果 分点数 rult= 89866-8 rult= 88696669-9 rult= 687768-6 rult= 97967667- rult= 78767-8 rult= 6887996- rult= 89867-6 rult= 66766678869-768 rult= 67977676-
SR6/ 8 ノードでいくつかの λ の値と λ= の場合の値は以下の様になっています 6 vlu vlu log 6 8 6 Rult=66666