Dual processorなG5を使っているにも関わらず、ボクが使っているモノの中で一番CPU powerを必要とするMatlabがDual processorに対応していない為、いささか宝の持ち腐れ気味。
なんとなく、Mac版のMatlabはJavaで動いているせいじゃないか、って思っていたけど、ひょっとしたら本当にそうなのかもしれない…
実は、GUI版のMatlabを使うのが一般的だけれども、Terminal.appからcommand lineでMatlabを起動させることが出来る。
% cd /Applications/MATLAB_SV701/bin
% export DISPLAY=: 0.0
% ./matlab -nojvm
こんな感じで。(ちなみに、%はcommand prompt)データをplotするのとかもX11を使って出来るけど、Javaを使っているArray editorとかは使えない。
で、とりあえず1から1000まで表示させて、それをさらに1000回繰り返す単純なプログラムを書いて実行速度を比較してみた。グラフまで作って比較しようと思ってたけど、あまりにも結果が明らかだったので、消してしまって手元にないけれども、Terminal.appから起動した方のMatlabの方が断トツに早かった。
処理中のCPU usageを見てみて分かったことは、このような単純なプログラムの場合、Terminal.appで起動したJava無しのMatlabは二つのCPUをフルに使っているということ。それに対して、普通のGUI版のMatlabはいつも通り、平均して一つ分(もちろん2つのCPUを使っているけれども、両方のCPU usageが同時に100%になることはなく、足して100%をちょっと越えるくらい)しか使っていない。
この結果に喜んで、.bash_profileをいじって、PATHの追加とexport DISPLAY=: 0.0とかいちいち起動の度にタイプしなくてもいい様にしてみたものの、肝心のoptimizationが関連してくるプログラムではTerminal.app版のMatlabでも、GUI版と似たような結果になってしまった。
残念。
やっぱり、Mathworksがアナウンスしているように、MatlabはJavaとかそういう表層的な部分ではなく、もうちょっと深いところでDual processorに対応してない気がする…
噂では、Intel Mac用にUniversal Binaryな(?)新しいMatlabが開発中らしいので、出来るコトならば、Intel Macだけじゃなくて、G5とかでも恩恵にあずかれるといいんだけど…Mac Proはむっちゃ速いらしいけど、さすがにそんなのを買う余裕は無いし。
自分用のメモ:
.bash_profileに
PATH=$PATH:/Applications/MATLAB_SV701/bin
export DISPLAY=:0.0
alias matlab=’matlab -nojvm -nosplash’
と書いておくとTerminal.appからの起動が楽。