[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:1147

From: "miura" <m-72 tf6.so-net.ne.jp>
Date: Sat, 24 Nov 2007 12:56:26 +0900
Subject: [yarv-dev:1147] Re: 考えている案

三浦です

単精度の浮動小数点をRVALUEに埋め込むpoor man's versionを作り
始めました。
今のところp 1.0 + 1.0をすると2.0と表示されます。それ以上難しいことす
るとうまく動きません。

作っていって気が付いたのですが、正式な高速化開発に当たって次の
ような問題があるんじゃないかなと思います。

  Float関係のテストパターンがいっぱい欲しい
      開発していて、Floatのテストパターンがいっぱいいるなと思いました。
   ある値だとうまくいくけど、別の値だとだめになるというのが良くあります。
   テストパターンのランダム生成も検討した方がいいかもしれないです。
   poor man's versionを作ったときのテストパターンも積極的に公開したい
   と思います。

 Floatの標準ベンチマークが欲しい
      せっかく高速化しても自作のベンチマークだけで効果が出ても悲しい
   ので標準ベンチマークが欲しいなと思いました。そのベンチマークの候補と
   して大域環境光レンダラのminilight(http://www.hxa7241.org/minilight/minilight.html)
   を推したいと思います。
   ただ、多分このプログラムは精度が要求されないと思う(確かめていない
   ですけど)ので、精度が要求されるプログラムなんかもあるといいのでは
   ないかなと思いますが、その手の話は全然分からないです。

実装の詳細

(3)の指数部を削る方式で、fixnumに泣いてもらってfixnumの領域に押し込
むようにしました。fixnumは30bitを越えるとbignumになってしまいます。
フォーマットは
   xxxxxxxxxxxxxxxxxxxxxxxxxxxx11   FIXNUM
   xxxxxxxxxxxxxxxxxxxxxxxxxxxx01   FIXFLOAT
となります。FIXFLOATは矛盾に満ちた名前なのですが、個人的に
しっくり来るので使っています。何かいい名前があったら教えて
ください。

後は、ほとんどのFLOATはRFLAOT(var)->valueでアクセスしている様ですが、
これをRFLOAT_VALUE(var)で置き換えます。RFLOAT_VALUE(var)は次のような
定義です。
#define RFLOAT_VALUE(obj)  \
   ((FIXFLOAT_P(obj)) ? rb_value2float(obj) : (RFLOAT(obj)->value))

後は、insns.defなどをFIXFLOATの分岐を追加したりしています。

GCとかmarshalとか問題になりそうですが、まだ何も考えていません。


----- Original Message ----- 
From: "SASADA Koichi" <ko1 atdot.net>
To: <yarv-dev quickml.atdot.net>
Sent: Tuesday, November 20, 2007 7:08 PM
Subject: [yarv-dev:1122] 考えている案


>  ささだです.
>
>  Float の高速化ですが,いくつか案があり,それぞれ得失があります.
> で,とりあえず 64bit 前提に考えています.
>
>  高速化は,主に Float の「埋め込み」によって行おうと考えています.
> 要するに,Fixnum と Bignum の関係です.Fixnum はヒープ上にメモリをア
> ロケートしていません.Float はヒープ上にメモリをアロケートしているの
> で,たくさん数値計算をすると GC が発生します.
>
>
> (1) 単精度にする
>
>  一番安易な解決方法です.64bit CPU なら 32 bit まるまる使っても安心.
>
> (2) 1bit,精度を犠牲にする
>
>  一番現実的かな,と思っています.数値計算にどれくらい影響を与える
> か,わかりません.この辺の評価ってどうすればいいんでしょうか.
>
> (3) 頑張って精度を保証する
>
>  IEEE754 の規格に則って,exp をやりくりして,1 bit 〜 3 bit 捻出す
> る方法です.細々とした計算が必要になるため,オーバヘッドは大きいです
> が,精度が保証できるため難しい検証やらは不要です(今まで通り,で終わ
> り).
>
>
>  例えば,(2) ってどれくらい「やばい」んでしょうか.
>
> -- 
> // SASADA Koichi at atdot dot net
>
> --
> ML: yarv-dev quickml.atdot.net
> Info: http://www.atdot.net/~ko1/quickml 



--
ML: yarv-dev quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

      1122 2007-11-20 19:08 [ko1 atdot.net       ] 考えている案                            
      1123 2007-11-20 19:25 ┣[horinout rish.kyoto-]                                       
      1124 2007-11-20 19:33 ┃┣[ko1 atdot.net       ]                                     
      1127 2007-11-20 19:52 ┃┣[horinout rish.kyoto-]                                     
      1129 2007-11-20 20:05 ┃┃┗[ko1 atdot.net       ]                                   
      1130 2007-11-20 20:21 ┃┃ ┗[horinout rish.kyoto-]                                 
      1131 2007-11-20 20:24 ┃┃  ┗[ko1 atdot.net       ]                               
      1132 2007-11-20 20:32 ┃┗[2008 shudo.net      ]                                     
      1133 2007-11-20 20:53 ┃ ┗[horinout rish.kyoto-]                                   
      1137 2007-11-20 21:15 ┃  ┗[2008 shudo.net      ]                                 
      1125 2007-11-20 19:39 ┣[m-72 tf6.so-net.ne.j]                                       
      1126 2007-11-20 19:46 ┃┗[ko1 atdot.net       ]                                     
      1128 2007-11-20 19:58 ┃ ┣[m-72 tf6.so-net.ne.j]                                   
      1135 2007-11-20 20:59 ┃ ┗[m-72 tf6.so-net.ne.j]                                   
      1145 2007-11-21 19:44 ┃  ┗[ko1 atdot.net       ]                                 
      1146 2007-11-21 20:34 ┃   ┗[m-72 tf6.so-net.ne.j]                               
      1134 2007-11-20 20:54 ┣[2008 shudo.net      ]                                       
      1144 2007-11-21 08:39 ┃┗[ko1 atdot.net       ]                                     
      1140 2007-11-21 03:52 ┣[t_nissie yahoo.co.jp] 富豪的 VALUE 型( Re: 考えている案)  
      1141 2007-11-21 04:57 ┃┗[ko1 atdot.net       ]                                     
      1142 2007-11-21 05:29 ┃ ┗[t_nissie yahoo.co.jp]                                   
      1143 2007-11-21 06:02 ┃  ┗[ko1 atdot.net       ]                                 
->    1147 2007-11-24 12:56 ┗[m-72 tf6.so-net.ne.j]                                       
      1148 2007-11-24 13:10  ┣[ko1 atdot.net       ]                                     
      1152 2007-11-25 08:51  ┃┗[m-72 tf6.so-net.ne.j]                                   
      1149 2007-11-24 13:18  ┣[ko1 atdot.net       ]                                     
      1150 2007-11-24 13:21  ┗[ko1 atdot.net       ]                                     
      1151 2007-11-24 13:39   ┗[m-72 tf6.so-net.ne.j]