中田真秀(なかたまほ)のブログ

研究について、日常について、その他。

いわゆる四倍精度(binary128)は今ハードウェアサポートはないそうだ

2010-04-27 08:52:25 | 日記
私は高精度版BLAS, LAPACKの開発を行っているので、高精度演算のハードウェアの存在にも興味を持っている。しかし四倍精度の規格が定められたのもごく最近、つまり2008年754-2008
IEEE Standard for Floating-Point Arithmetic
であって、まだハードウェアで四倍精度を実現しているプロセッサはない。このことを調査中である。

IEEE 754Rなどとして呼ばれていた2008年正式版のドラフトにもあったようであるのでハードウェアサポートはあるのではと思っていたが。特に理研次世代スパコンには、CPUとしてはSparc64の拡張が採用されて、また、Sparc64には既にインストラクションレベルで、binary128をサポートしているのだが(リンク先のp.10を参照)、ハードウェア実装ではないようだ。

後藤さんからも既にご指摘いただいたが、

> 命令レベルでのサポートで、実際にはカーネルによるソフトウェアエミュ
> レーションではないかと思います。この処理は極端に性能が悪いので、
> double- doubleによる処理も用意したのではないでしょうか?

ということだった。一応クロスチェックしてみると...

他の調査でも今もbinary128のハードウェア実装をサポートしている
プロセッサはないようである。
Handbook of Floating-Point Arithmeticのp.105によると、

As we write this book, no processors have full hardware support for binary128 format(註:いわゆる四倍精度). Some instruction sets (SPARC, POWER) have instructions operating on binary128 data, but on, current hardware these instruction trap to software emulation.

ということであった。トラップしてとなるとそりゃ時間かかるからdouble-double入れてるのだろう...

IA-64 (Itanium)は、実はサポートさえしてない(1976年にW. Kahan教授がIntelのコンサルとして雇用されていたのを思うと、ショックである)。しかしIEEE 754 2008ではなくなってしまった、80bitの拡張倍精度はサポートするという倒錯ぶり...

やっぱり高価なのかなぁ。30年前って倍精度は高価で、みんなfloatを使っていたことを考えると、またあと10-20年したらむしろ四倍精度が普通になるのかもしれない。