startup.m が parpool コマンドの実行に影響するのはなぜですか?

1 view (last 30 days)
MATLAB 起動時に自動実行される startup.m に、作業ディレクトリを指定するためのポップアップウィンドウを表示するよう記述しています。
しかし、この startup.m を使用している環境では、parpool コマンドを実行しても、並列プールがいくら待っても起動されません。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 29 Sep 2020
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

More Answers (0)

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!