2011年7月27日水曜日

mex での高速化の続き

昨日に続いて、SNL 計算の Matlabプログラムを一部 mex に切り替えてた。
mex で高速化できそうなところは一通り行ったが、これによって、
105.8秒かかっていた計算が 40.8秒まで短縮された。

mex にするのも単純に行えばいいわけではなく、アルゴリズムとデータ構造を検討する必要がある。
たとえば、同じ計算を行うにしても
[A] 2重ループだけど、読み込むメモリ空間が連続している
[B] 1重ループだけど、連続していないメモリ空間を読むことがある
の場合、実際に動かしてみないと優劣は判断しづらい。(特に [B] は、「どれだけ連続していないか」に依存しやすいため。)
このあたりのバランスが難しい。
今日のプログラムでは [B] のほうが速く、理由としては[A]の内部ループが比較的短いループだったことによるようだ。

今日の作業内容:mex 高速化 4h 論文読み込み 2h
今日のランチ: つかさ カンパチまかない丼
明日の予測作業時間: 5h

0 件のコメント:

コメントを投稿