2013年1月29日火曜日

Matlab でのシングルスレッド起動

SeDuMi での数値実験の際に、大きく時間が変動するとおもっていたが、どうやら Matlab がスレッド数をコントロールできていないのが原因のようである。
OpenBLAS 同様に OMP_NUM_THREADS で Intel MKL の呼び出しだけでも制限できるかと思っていたが、どうやらこれも違うらしい。

変動を制御できないと、数値実験の計算時間に大きな幅ができてしまうため、今回はやむなく Matlab のスレッドを完全にシングルにすることにした。
これには、Matlab に
$ matlab -singleCompThread
として起動することになる。

詳しくは、
http://www.mathworks.co.jp/support/solutions/ja/data/1-DXFUST/?solution=1-DXFUST
に書いてあって、スレッド数をコントロールできない理由も明記されている。
(内部から mex などの利用でスレッドを増加させることができてしまうため、この部分を MATLAB 側からは制御できないことに起因している。)

SeDuMi の計算時間自体は遅くなってしまったが、とりあえずこれでだいたいのO(n^3)に近い計算時間が得られて、計算時間の整合性が保てるようになってきた。

短期目標:Burer の論文を今週中に読む
今日の作業内容:論文読み 1h
今日のランチ:弁当 鶏ブロッコリー炒め
明日の予測作業時間:3h



0 件のコメント:

コメントを投稿