1

ある程度の経験があるのだろうか、(高速) アクセラレータ モードでモデルを実行するよりも、Simulink Coder を使用してモデルを生成することで、どの程度のパフォーマンスが得られるのでしょうか?

たとえば、高速化されていないモデルから高速化されたモデルへの非常に劇的な改善と比較してどうですか?

これは漠然としたものであり、おそらくモデルの詳細に依存することはわかっていますが、例の数値に満足しています.

4

1 に答える 1

2

結果は独自の実装に大きく依存するため、実際に速度改善の逸話が役立つかどうかはわかりません。

とはいえ、アクセラレーション モードのしくみに関する次のリファレンスは役に立つかもしれません。

このリンクで説明されているように...

アクセラレータ モードは、コードを生成して C-MEX S-Function にリンクします。Simulink は、このアクセラレーション ターゲット コードを使用してシミュレーションを実行します...

...モデル メソッドは Simulink ソフトウェアとは別のものであり、アクセラレーション ターゲット コードの一部です。C-MEX S-Function API は Simulink ソフトウェアと通信し、MEX API は MATLAB と通信します。ターゲット コードは、MATLAB および Simulink と同じプロセスで実行されます。

リンクは、Rapid Acceleration について説明しています。

ラピッド アクセラレータ モードは、モデルからラピッド アクセラレータのスタンドアロン実行可能ファイルを作成します。この実行可能ファイルにはソルバーとモデル メソッドが含まれていますが、MATLAB と Simulink の外部に存在します。エクスターナル モード (ホスト/ターゲット通信を参照) を使用して Simulink と通信します。

(実際のリンクには、このアーキテクチャを説明するのに役立つ素敵な図がいくつかあることに注意してください)。

これらの説明から、いくつかの重要なことが読み取れると思います。まず、アクセラレータ モードでは、コードはモデル メソッドに対してのみ生成されます。ただし、ラピッド アクセラレータ モードでは、ソルバー用のコードも生成されます。いずれの場合も、生成されたコードと Simulink の間の通信によるオーバーヘッドが発生します (ただし、一般に、非ラピッド アクセラレータ モードではオーバーヘッドが大きくなります)。

ここで、これらのアクセラレーション モードと完全なコード生成の間に大きな違いがあるかどうかは、生成されたコードをどのように使用するかによって決まります。あなたのアプリケーションは、本質的に simulink モデルの出力を分析/視覚化することを目的としていると述べていました。アプリケーション自体を Simulink モデルにするつもりですか? もしそうなら、あなたのワークフローは、「プラグイン」モデルのコードを生成し、これを「親」モデルに s-function として組み込むことになると思います。上記の説明に基づくと、私の直感では、アクセラレータ モードと比較してパフォーマンスの向上はあまり見られないということです。

ただし、アプリケーションを Simulink の外部で実装する場合は、コード生成が間違いなく適しています。この場合、Simulink との通信のオーバーヘッドを完全に排除しました。このワークフローでは、たとえば、「プラグイン」モデルからスタンドアロンの実行可能ファイルを生成し、そのモデルを実行して出力を取得し、分析と視覚化のためにそれらの出力をアプリケーションにロードするだけです。アプリケーションは、任意の言語で作成できます。実際、MATLAB でアプリケーションを作成することもできますが、重要な点は、スタンドアロンの実行可能ファイル (「プラグイン」モデルから生成されたもの) の実行が完了すると、アプリケーションが実行されるということです

于 2013-08-12T20:14:32.680 に答える