2

MATLAB 2012b の Simbiology ツールボックスと組み合わせて並列計算ツールボックス (PCT) を使用しています。ワーカーのローカル プールではなくリモート プールのワーカーでスクリプトを実行すると、断続的なエラー メッセージが表示されます。

キャッチされたstd::exception例外メッセージは次のとおりです。

vector::_M_range_check

Error using parallel_function (line 589)
Error in remote execution of remoteParallelFunction : RUNTIME_ERROR

Error in PSOFit (line 486)
                        parfor ns = 1:r.NumSwp

Error in PSOopt_driver (line 209)
        PSOFit(ObjFuncName,LB,UB,PSOopts);

関数 sbiosimulate (モデル評価用の SimBiology 関数) の呼び出しをコメント アウトすると、エラーは発生しません。

私にはいくつかのアイデアがあります:

  • モデル変数へのアクセスに問題を引き起こすある種の競合状態を導入しました (これは MATLAB で可能ですか?)
  • シンバイオロジーにおけるモデルのコンパイルは、PCT と互換性がある場合もありますが、常にそうであるとは限りません。
  • sbiosimulate はコンパイルされた C++ コードを評価するため、入力によってはソースに例外を生成するバグがある可能性があります。

私はこれを認識しています。

4

1 に答える 1

1

私は SimBiology の開発者です。これは、R2012a リリースで SimBiology の C++ コードに導入されたバグだと思います。シミュレーション結果が生成されずにシミュレーションが終了すると、バグがトリガーされます。これは、モデルが (OutputTimes オプションを使用して) 特定の時間のみを報告するように構成されており、シミュレーションが特定の時間の経過後に終了するように構成されている (MaximumWallClock オプションを使用) 場合に発生することがあります。基本的に、シミュレーションは、最初の出力時間を記録する前に「タイムアウト」します。

この問題を回避する 1 つの方法は、OutputTimes に常に時刻 0 を含めることです。この時間は、MaximumWallClock 基準を評価する前に常にログに記録され、バグがトリガーされるのを防ぎます。また、このユーザーに直接連絡しており、今後のリリースでバグを修正する予定です。

于 2013-02-03T14:11:07.440 に答える