アカウント名:
パスワード:
現状、精度は低くていいが大量に計算したいときはSSE等、ビット数が少ないものを集めて一回で計算するような仕組みがあるようですがそれより有望なんですかね?素人考えだと誤差有り倍精度を2倍周波数で演算するよりは誤差無し単精度を通常クロック(但し1クロックに2個計算できる)で計算した方が計算結果に安心感があるのですが詳しい人解説お願いします。
MPEG2あたりのまでの動画形式だと丸め誤差の積み重ねで画がおかしくなることがあったっけ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
ビット長 (スコア:0)
現状、精度は低くていいが大量に計算したいときはSSE等、ビット数が少ないものを集めて一回で計算するような
仕組みがあるようですがそれより有望なんですかね?
素人考えだと誤差有り倍精度を2倍周波数で演算するよりは誤差無し単精度を通常クロック(但し1クロックに2個計算できる)で計算した方が計算結果に安心感があるのですが詳しい人解説お願いします。
MPEG2あたりのまでの動画形式だと丸め誤差の積み重ねで画がおかしくなることがあったっけ。
Re: (スコア:2)
実際、演算精度がそれほど必要でないシーンでは重宝します。
が、プログラミングする側が演算精度に神経を尖らせる必要があります。
Re: (スコア:0)
もともとはパイプラインを有効に使うためのものでした。
AltiVecのように本当にビット数が半分(12ビット)だったら良かったのですが、
実際は11ビットなので、近似値から精度を上げていくような
精度はそのままでパイプラインを有効活用するという高速化手法には役に立たない代物。
設計者は頭悪すぎると言わざるを得ません。
2の冪乗の値の逆数で余計なビットが立たないことを仮定したり、
端数がないことを仮定して式に組み込み、最後にfloor取ったりすると悲惨な結果に。
Re:ビット長 (スコア:1)
> もともとはパイプラインを有効に使うためのものでした。
一応、SSE でもそう言う思想の命令だったかとは思いますが、rcpps(半分精度の逆数)を使って近似計算を行うステップの合計クロックがdivps(除算)と同じになる(上に当然精度も劣る)ので、私は(私も?)基本的にはdivpsを出来るだけ効率よく使う(データを4つ詰め込んで使う)方向で最適化することにしています。
なので rcpps は高速な逆数命令として使う以外は、divps ほどは精度は要求しないけれど rcpps 単体よりは欲しい、そして実行リソースが余っている、と言うような激レアケースでのみ rcpps で近似の精度を上げる計算を行っています(^^;