parpool 開始時には、各 MATLAB ワーカーに対して、同じ MATLAB パス内にある startup.m が呼び出されます。ただし、ここでの MATLAB セッションは、通常の MATLAB デスクトップ環境とは異なり、Figure などのグラフィックスは表示することができません。
そのため、表示されない Figure の画面が終了されるまで待機の状態が続くため、parpool が開始できません。
これは、matlabrc.m にコマンドを追記してる場合も同様の問題が発生する可能性があります。特に、サードパーティ製品の初期化コマンドなどが含まれている場合、ご注意ください。
回避方法:
startup.m (または matlabrc.m) にて、下記のいずれかの構文を追加します。
構文内には、通常の MATLAB 起動時のみ実行したい内容を記述します。
if (~java.awt.GraphicsEnvironment.isHeadless())
<code that we only want to happen on client>
end
Or:
if (usejava('desktop'))
<code that we only want to happen on client>
end