実験

並列の実験が終わった.LU分解やNQueenを逐次と並列で高速に解こうといった内容.並列の方はMPI等を使わずにpthreadで.(実験ページ)

LUの方はキャッシュミスをどれだけ減らすか,という感じだった.適当にブロック化してoprofileでプロファイルを取るとキャッシュミスが減ったよ!やったねたえちゃん!みたいな.
SIMDイントリンシック命令を加えるのは実験ページに載っていないのでズルい気もしたが,SSEについては言及されているので気にしないことにした.*1.まぁキャッシュミスを減らす方が性能に影響したんだけど.
ソースコードに溢れる_mm_add_pd等の文字列.可読性が落ちて素晴らしい!気持ちいいね!*2


課題はどちらもググれば色々事例が出てくるので,何だかなぁと言った感じ.特にNQueenの方はググって枝刈りの方法見つけちゃったがな.まぁぼちぼち面白かったけど.


ちなみに並列の実験は先週ぐらいに終了して,今はエージェントの実験に移っている.内容は「SVMでオークションの入札を予測して,最適な入札を考える」といったもの.

二次計画問題を解く部分はライブラリに丸投げ.実験のページではQuadProg++を紹介しているのだが,QuadProg++は半正定値行列の扱いが上手くない(?)ようで,ライブラリがサクサク死んでくれる.サークルの先輩からその話を聞いていたので,対角成分に誤差を加えるという投げ遣りな対処で乗り切った.酷い.実験wikiに解決方法が全く載っていないのが何とも.


最後にどうでもいい話だが,どちらの実験でもオプションの解析を手作業でやっている方をちらほら見かけた.悪いとは言わないが,getopt使った方が楽だと思う…….*3

*1:実際私もその記述からググって辿りついたし

*2:よくねえよ

*3:見えた範囲では突っ込みを入れたが;