1

最近の投稿で、並列ツールボックスが警告を処理する方法と通常のmatlabが警告を解除する方法には違いがあると言われました。ポスターの手がどういうわけか私の質問に答えるのに行ったと感じたので、私はそれを回答済みとしてマークしました。しかし、私はまだいくつかの追加の質問があります(これが二重投稿を構成しないことを願っています)。

エラーは、parforを使用しない場合にのみトリガーされますか?

誰かがこれらの違いが何であるかを私に説明できるかどうか疑問に思いましたか?また、parforがサンドボックス化されるとはどういう意味ですか?

パラレルツールボックスでtrycatchタイプの構造を使用したり、同じものをチェーンするために他のメカニズムを使用したりすることはまだ可能ですか?

parforを使用して実行すると、matixが悪条件であるという警告メッセージが引き続き生成されますが、行を追加してもエラーとして検出されていないようです。

warnState(1) = warning('error', 'MATLAB:singularMatrix'); 
warnState(2) = warning('error', 'MATLAB:illConditionedMatrix'); 

ただし、通常のforループを使用して実行すると、エラーとして検出されます。

したがって、並列ツールボックスは警告を正しく生成し、上記のコードを介して警告をエラーに変換しないため、trycatch構造で使用できます。

敬具

ヒュー

4

1 に答える 1

2

元のコードの問題は、MATLABクライアントでのみ警告をエラーに変更したことだと思います。労働者にその変更を加えるには、次のことを行う必要があります

spmd
    warnState(1) = warning('error', 'MATLAB:singularMatrix'); 
    warnState(2) = warning('error', 'MATLAB:illConditionedMatrix'); 
end

あらゆる場所で物事を実行するためのpctRunOnAll関数もあります。

また、OPがmatlabpoolワーカーが「サンドボックス化」されることについて何を意味するのかわかりません。MATLABクライアントとワーカーの違いは次のとおりです。

  1. ワーカーは常にシングルスレッドモードで実行されます。と
  2. ワーカーはディスプレイなしで実行されます(ただし、画面外のグラフィックを作成してファイルに保存することはできます)
于 2012-11-13T19:08:13.410 に答える