2

バックグラウンド:

離散イベントシミュレーションMATLABモデルを継承しており、その実行を自動化して高速化したいと考えています。sim(modelName)を呼び出してMATLABにインタープリターされたコードを実行させるのではなく、system('modelName.exe ...')を呼び出すのと同じようなソリューションが必要です。これに対する私の動機は、ほぼ1000%の速度の増加を示唆する初期テストから来ています。RapidSimulationターゲットでReal-TimeWorkshopを使用して、静的メモリ割り当てのあるexeを作成することができました。問題は、モデルに埋め込まれたMATLAB関数ブロックがあり、実行ごとにパラメーターのサイズと形状が異なることです。そして、数千とは言わないまでも数百の実行があります。

MathWorksのドキュメントによると:

組み込みMATLAB関数ブロックではサポートされていない動的メモリ割り当て:

「EmbeddedMATLABFunctionブロックの可変サイズデータに動的メモリ割り当てを使用することはできません。無制限の可変サイズデータの代わりに制限付きを使用してください。」

質問:

この制限の潜在的な回避策は何でしょうか?

考え:

  • 十分に大きい静的変数サイズを使用し、さらにint変数/調整可能なパラメーターを渡して、範囲を超えるデータの部分を明示的にウィンドウ化します。
  • S-関数?
  • 今日実装しているもの:静的コードを動的に生成するために呼び出されるたびに、プログラムでシミュレーションを再コンパイルします。
  • すべてをPythonやC++などの実際の/最新のプログラミング言語に移植します。

キーワード: MATLAB動的メモリ割り当て組み込み離散イベントシミュレーションリアルタイムワークショップSimulinkSimEvents調整可能パラメーター

4

2 に答える 2

2

数年後のフォローアップ...その日に実装した動的静的再コンパイルを1年ほど行った後、別の統計開発者がc++で書き直しました。実行ごとに可能な限り最大のメモリを使用することは、コンピューティングリソースの実行可能な浪費ではありませんでした。

于 2013-10-07T10:09:18.483 に答える
0

このウェビナーをご覧ください:http://www.mathworks.com/company/events/webinars/wbnr43180.html。それはあなたの最初の考えに似た自動解決策を説明します。

于 2011-01-11T12:17:56.767 に答える