[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2278] Re: Mandelbrot
- Subject: [OSASK 2278] Re: Mandelbrot
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Thu, 04 Oct 2001 03:31:49 -0000
こんにちは、川合です。
MITSUNARI shigeo さんは 2001/10/03 22:38:05 の「[OSASK 2274] Re:
Mandelbrot」で書きました:
>Ctrl併用でやってみました。
>>http://homepage1.nifty.com/herumi/soft/mandel1003.zip
すでに小柳さんが感想を述べられていますが、僕も全く同意見で、と
ても使いやすくなったように思います。性能や機能についてはもう不満
はありません。これでCPUを選ばなければ川合秀実推奨を付けたいくら
いです。
>ついでに一部のルーチンをasm化しました。
>Athlon/PIII専用(PIIもいけたっけ?)になっちゃいましたけど(^^;
>#CPU判別してもよかったのですが...
これって、FCOMIP&JNCだけが問題なんですよね?これを、伝統的な
FCOMP ST5 FCOMP ST5
FSTSW AX FSTSW AX
SAHF TEST AH,01H
JNC .exit JZ .exit
のいずれかに置き換えるとそんなに速さが落ちてしまうんでしょうか?
まあ、落ちないわけはないんですが・・・。僕としてはサイズが増える
ことや速度が落ちてしまうことを考慮しても、FPU搭載機種の全てで動
く方がうれしい気がします(一番いいのはおっしゃるとおり、機種判
別するか、2バージョン用意することなのかもしれませんが)。
>最初に書いたら動いたのでその後最適化してないんですがlccよりはずっと
>速いです(というかlcc遅すぎ)。
これを見てしまうと、全く同感です。僕も2倍くらいの体感速度の違
いがあると思いました。
>VC++やgccだとこの程度は生成してくれると思うのでobj2bim0が対応すると
>いいなあと思ってしまいます。
おっしゃる通りでしょう(笑)。ところで、gccはWin32上でも走るバ
ージョンがあるんでしょうか?もしあるなら、COFFで出力できるかどう
かに興味があるのですが・・・。
ところで、アセンブラソースをぼんやり見ていて思ったのですが、せ
っかく指定したアラインが生きていないかもしれません。というのは、
obj2bim0 -fixobj mandela.obj text_align:1 data_align:8 bss_align:8
のところでtext_alignが1になっているからです。16バイトアラインを
なさっているなら、このtext_alignも16にしておいた方がいいと思いま
す。そうでないとこのコードの先頭アドレスが16バイトアラインされる
保証がなくなってしまうので、肝心のループの先頭もアラインされてい
ないかもしれません。
それと、これは僕だけの感想かもしれませんが、このmandelではfloa
tよりもdoubleの方がいいかもしれません。・・・いや、あまりに快適
にマンデルブロー集合の中を探検できるので、かなりの高倍率にまで引
き上げてしまう事があるんです(以前のバージョンでは重たくて、そこ
まで行く前に飽きてしまったのですが)。そうすると、floatの精度限
界が要因ではないかと思われる現象(ドットが荒くなる)に遭遇します
。アセンブラ版の方を見る限り、計算ループはFPUレジスタだけでやっ
ているようですので、floatでもdoubleでも速度は変わらないように思
います。いかがでしょうか?
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/