毎度のことながら,予算だのカリキュラムだのの話し合いは面倒なことこの上ない。結局,次年度以降はネットワーク関連の講義からは全面撤退となる。旧カリキュラムの一講義が残るが,これも次回限りである。実験講座も数値計算がらみのものに再編成し,きれいさっぱり。
それはいいのだけれど,具体的に何をするかは全くの未定である。いくら何でもゴリゴリの数値計算は無理なので,グラフィックスやらPthreadやらと関連づけた応用指向の内容になるだろうな。またテキストを書き下ろさないと・・・面倒だが楽しみでもある。定番のMandelbrotやらJuliaやらを描いて,なるべくならOpenGLともからめて・・・なんて,考えるだけなら簡単なんだがなぁ。ま,これからは業績にもならない仕事は引き受けないことにしよっと。
つらつらと,M$のHPC Toolkitなるものを眺めてみると,えらい豪華バージョンなのは驚く。最もEvaluationが殆どで,短期間しか使用できそうもないところがみみっちい。送料だけで入手が出来るとのことなので,早速注文する。正月明けには届くかな?
前々から気になっていたので,ARPRECとMPFRの四則演算速度を比較してみた。この2者は実装方針がまるで違っていて,前者の多倍長浮動小数点はIEEE754浮動小数点をつなぎ合わせて実装しているのに対し,後者は整数演算をベースに下から積み上げて実装されている。どーも,浮動小数点数に限っては,前者の方が高速ではないかと感じていたので,ちみっと簡単なベンチマークプログラムをでっち上げてみた。環境は次の通り。
コンパイル条件:GCC, G++ 3.2.2, オプション: -O3 -funroll-all-loops
ハードウェア: Intel Pentium III 800MHz,OS: RedHat9
ショボくてすまん。んで,結果は次の通り。
1024 bits(308 decimal digits)の場合(単位はMFLOPS)
ADD 3.333333e-01(ARPREC), 1.58025e+00(MPFR)
MUL 2.222222e-01(ARPREC), 1.04235e-01(MPFR)
DIV 7.207207e-02(ARPREC), 6.99597e-02(MPFR)
2048 bits(616 decimal digits)の場合(単位はMFLOPS)
ADD 3.478261e-01(ARPREC), 1.03226e+00(MPFR)
MUL 2.222222e-01(ARPREC), 3.40426e-02(MPFR)
DIV 4.266667e-02(ARPREC), 2.25989e-02(MPFR)
4096 bits(1233 decimal digits)の場合(単位はMFLOPS)
ADD 3.478261e-01(ARPREC), 7.03297e-01(MPFR)
MUL 2.162162e-01(ARPREC), 1.11732e-02(MPFR)
DIV 2.308802e-02(ARPREC), 6.86695e-03(MPFR)
8192 bits(2466 decimal digits)の場合(単位はMFLOPS)
ADD 1.403509e-01(ARPREC), 4.26667e-01(MPFR)
MUL 1.066667e-01(ARPREC), 3.70199e-03(MPFR)
DIV 1.218583e-02(ARPREC), 2.11640e-03(MPFR)
うーん,確かに桁数が増えると,ARPRECの方が,特にMUL,DIVで高速になっている。しかし,1024bits(308 dec.digits)では危惧していたほど差は出ていなかった。8192bits(2466 dec.digits)が「実用的」な桁数かどうかは議論の分かれるところだろうが,おおむね,「んなに計算してどないすんねん」レベルと見ていいだろう。つーことで,Piやeの世界記録を狙いたいという向きはARPRECを使えばよろしい。関数機能も豊富なのでお勧めする。
で,わしはと言えば,今のところGMP+MPFRから乗り換えるつもりはない。もちっと原因を調べてからでも遅くはないと考えている。64bit addressingになってしまえば改善するものなのかどーか,cacheのhit率を上げることで改善できるものなのか,HTやSMP環境でPthread並列化すればどーか,等,調べることはいっぱいあるし。ARPREC使うなら,Template使ってBNCpack++を作った方がよろしかろうて。
それよりも,ARPRECは1024bits以下の桁数にしてもこれ以上の速度改良がみられないのが問題なのである。この場合,MPFRの方がずっと高速になる。これ以上は研究上のし・み・つ(という程,大層なものではないけど)。
ベンチマークにうつつを抜かして,翻訳は2行のみ。早くも暗雲立ちこめる状況に突入。大丈夫か,大丈夫か>ヲレ