2017-11-20

glibcのpowがslowpowを呼んで遅い件について

Slow power computation by 64-bit glibc

x86-64 GNU/Linux環境でのglibcのpowは1.0に近い値を渡すと、768bitのソフトウェア実装された浮動小数点数計算を行い高精度な値を得ようとする。slowpowと命名されているこの実行パスは名前通りとても遅い。

glibcはとても基本的なライブラリなので、例えばRubyとかRustのようなプログラミング言語もこの問題に引っかかる。

手元で試したところ、GCC 7.2, glibc 2.26では、-Oと-ffastmathを指定するとpowにslowpowが呼ばれず高速に計算されるようだ。

これでもだいぶ高速化されたのだとか。

Improving math performance in glibc - RHD Blog

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.