数値PDEでの高精度浮動小数点演算


9

非常に異なるリソースや研究との話し合いから、数値偏微分方程式の高精度計算に対する需要が高まっているという印象があります。ここで、高精度とは、標準の64ビット倍精度よりも高い精度を意味します。

このトピックの最新技術について知りたいです。比較として、数値PDEにはコミュニタイトがあり、特にマルチコアメソッド、大規模並列化、GPUコンピューティングなどを対象としています。同様のコミュニティが存在するのか、数値PDEの高精度な方法で成長しているのかと思います。特に、高精度の紹介または調査論文に興味があります(これが問題の実際のポイントです)。トピックの実際の関連性の。

回答:


16

連続体PDEの離散化は、通常、有限精度よりもはるかに多くのエラーをコミットします。より高い精度を要求する人々の約90%が問題の定式化に怠惰であり、不十分なスケーリング、不適切な離散化、または不適切な連続体モデリングを使用して問題を解決しようとしていることがわかりました。残りの10%は、精度の向上が本当に理にかなっている正当に悪条件のシステムを持っている可能性があります。これらの場合でも、ほとんどの場合、デバッグツールとして(特に、有限差分フレシェ微分を使用する方法と組み合わせて、「偽の」数値ヌルスペースの原因を調査するために)またはローカルでではなく非常に敏感な操作のためにローカルで4倍精度を使用します生産のための大規模。

GCCは__float128バージョン4.6以降で提供されているため、簡単に試すことができます。(以前の実装は、一般にはるかに煩わしく、移植性が低くなっていました。)PETScは--with-precision=__float128バージョン3.2以降でサポートされているため、再コンパイルするだけです。


正しい。また、Fortranにはreal(dp)があり、dp = 16(gfortranの場合)を設定して4倍の精度を得ることができるため、簡単に試すことができます。
オンドレジ・セティク

9

FEMソフトウェアをdeal.IIプロジェクト(http://www.dealii.org/)の形式で提供してから15年、PDEを解決するための真の要求があったことはないと思います倍精度より高い精度。その理由は、Jedが他の回答で示唆しているとおりです。PDEを離散化するときに発生するエラーは、倍精度浮動小数点演算から得られる16桁の精度よりもはるかに大きくなります。したがって、全体的なエラーに影響を与えるために演算の精度を高める必要があるポイントに到達するには、非常に細かいメッシュが必要です。

私は実際には逆だと思います。たとえば、単精度を使用して行列または前提条件子の要素を格納すると、人々は何が起こるかを考えています(そして取り組んでいます)。一般に、これによって精度が大幅に低下することはありませんが、メモリからプロセッサへのデータ量を半分にするだけでよいため、パフォーマンスが約2倍になります。

つまり、4倍精度(またはそれ以上)は、ODEソルバーコミュニティに関連している可能性があるが、PDEコミュニティには関連していない可能性があるということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.