ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデル参照のシミュレーション ターゲット

シミュレーション ターゲット

"シミュレーション ターゲット"、別名 "SIM ターゲット" は、アクセラレータ モードで実行される参照モデルを実装する MEX ファイルです。Simulink® はシミュレーション中に必要に応じて参照モデルの動作と出力を計算するためにシミュレーション ターゲットを呼び出します。Simulink は、参照階層内の任意の場所にある特定の参照モデルのアクセラレータ モード インスタンスすべてに対して、同じシミュレーション ターゲットを使用します。

Simulink Coder™ ライセンスがある場合は、参照モデルのシミュレーション ターゲットを次のような他のタイプのターゲットと混同しないように注意してください。

  • ハードウェア ターゲット — Simulink Coder がコードを生成する対象プラットフォーム

  • システム ターゲット — 目的に応じたコード生成の方法を Simulink Coder に指示するファイル

  • ラピッド シミュレーション ターゲット (RSim) — Simulink Coder が供給するシステム ターゲット ファイル

  • モデル参照ターゲット — 参照モデルの Simulink Coder コードを含むライブラリ モジュール

Simulink がシミュレーション ターゲットを作成するのは、参照階層内にアクセラレータ モードのインスタンスを 1 つ以上含む参照モデルに対してのみです。ノーマル モードでしか実行されない参照モデルは常にインタープリターで実行されるので、シミュレーション ターゲットは使用されません。ノーマル モードで実行されるインスタンスとアクセラレータ モードで実行されるインスタンスがそれぞれ 1 つ以上ある参照モデルの場合、次のようになります。

  • Simulink ではアクセラレータ モード インスタンスのためにシミュレーション ターゲットが作成されます。

  • ノーマル モードのインスタンスはこのシミュレーション ターゲットを使用しません。

アクセラレータ モードではコードを生成する必要があるので、ノーマル モードにはない、いくつかの要件と制限が適用されます。それらの制約を除けば、アクセラレータ モードで参照モデルを実行するときに、シミュレーション ターゲットとその詳細について考慮する必要は通常ありません。詳細については、シミュレーションの要件と制限を参照してください。

シミュレーション ターゲットのビルド

既定の設定では、Simulink は次の場合に参照モデルから必要なシミュレーション ターゲットを生成します。

  • シミュレーションの開始時にシミュレーション ターゲットが存在しない場合

  • 親モデルのダイアグラムを更新した場合

シミュレーション ターゲットが存在する場合、既定の設定では、最後にターゲットが生成されてから参照モデルに構造的な変更があったかどうかを、Simulink がチェックします。変更があった場合、Simulink はシミュレーション ターゲットを再生成してモデル内の変更を反映します。モデル参照ターゲットをリビルドするかどうかを Simulink で検出する方法の詳細は、リビルド パラメーターのドキュメンテーションを参照してください。

この既定の動作は、Simulink が必ずリビルドする、または決してリビルドしないようにリビルドの条件を指定して変更できます。詳細については、リビルドを参照してください。

アクセラレータ モードの参照モデルのシミュレーション ターゲットを対話型で生成するには、次のいずれかの手順を実行します。

  • アクセラレータ モードのモデルを直接的または間接的に参照するモデルのブロック線図を更新する。

  • MATLAB® コマンド ラインで、slbuild コマンドを適切な引数を付けて実行する。

シミュレーション ターゲットの生成中に、Simulink は MATLAB コマンド ラインにステータス メッセージを表示するので、生成過程を監視できます。ターゲットの生成では、コードの生成とコンパイルが行われ、コンパイルされたターゲット コードが標準コード ライブラリにあるコンパイルされたコードにリンクされ、実行可能ファイルが作成されます。

変更チェック時間の短縮

Simulink がリビルドを必要とするシミュレーション ターゲットがあるかどうかをチェックするために費やす時間を短縮するには、コンフィギュレーション パラメーターの値を次のように設定します。

  • 階層全体のすべての参照モデル内で、[信号の関連付け] コンフィギュレーション パラメーターを [明示的のみ] または [なし] に設定します (信号の関連付けを参照)。

  • 変更の検出時間を最小限に抑えるために、最上位モデルの [リビルド オプション] コンフィギュレーション パラメーターを [既知の依存関係で任意の変更が検出された場合] に設定することを検討してください。リビルドを参照してください。

これらのパラメーター値は、個々の Model ブロック内ではなく、参照モデルのコンフィギュレーション セット内にあります。どちらの値も参照モデルのいずれかのインスタンスに設定すれば、そのモデルのすべてのインスタンスに設定されます。

シミュレーション ターゲット出力ファイルの制御

Simulink はシミュレーション ターゲットを作業フォルダーの slprj サブフォルダーに作成します。Simulink は、slprj が存在しなければ、作成します。

メモ

Simulink Coder のコード生成では slprj フォルダーも使用します。slprj 内のサブフォルダーには、シミュレーション コード、Simulink Coder のコードおよびその他のファイルが分離されて保管されます。詳細については、ビルド プロセスのフォルダーの管理 (Simulink Coder)を参照してください。

既定の設定では、Simulink のブロック線図の更新とモデル ビルドによって生成されたファイルは、ビルド フォルダーに配置されます。これは、現在の作業フォルダー (pwd) のルートです。生成ファイルは、現在の作業フォルダー以外のルート フォルダーに保存できます。このオプションでは、以下を実行できます。

  • 生成ファイルを生成するために使用するモデルおよびその他のソースを生成ファイルとは別に保管する。

  • 現在の作業フォルダーを以前の作業フォルダーに設定し直さずに、以前ビルドしたシミュレーション ターゲットを再利用または共有する。

生成されたシミュレーション アーティファクトを生成された量産コードと分離することができます。

ブロック線図の更新とモデル ビルドによって生成されたファイルの出力場所を制御するには、これらのファイルのビルド フォルダーを個別に指定します。シミュレーション キャッシュ フォルダー は、シミュレーションに使用するアーティファクトを配置するルート フォルダーです。

シミュレーション キャッシュ フォルダーを指定するには、次の "いずれかの" 方法を使用します。

  • CacheFolder MATLAB セッション パラメーターを使用します。

  • [Simulink 設定][一般] ダイアログ ボックスの [シミュレーション キャッシュ フォルダー] 設定を使用します。この設定は MATLAB セッション パラメーターの初期既定値を指定します。

モデルのシミュレーションにおけるビルド アーティファクトの出力場所の制御

Simulink ブロック線図の更新によって生成されるファイルの出力場所を制御するには、[Simulink 設定][一般] ダイアログ ボックスの [シミュレーション キャッシュ フォルダー] 設定を使用します。Simulink ブロック線図更新によって生成されたファイルのルート フォルダーの場所を指定するには、フォルダー パスを入力または参照して設定値を設定します。次に例を示します。

指定したフォルダー パスは、MATLAB セッション パラメーター CacheFolder の初期の既定の設定になります。Simulink ブロック線図更新を開始すると、生成されたファイルは、現在の作業フォルダー (pwd) ではなく、CacheFolder によって指定されたルートの場所にあるビルド フォルダーに配置されます。

たとえば、32 ビットの (Windows 商標) ホスト プラットフォームを使用して、[シミュレーション キャッシュ フォルダー]'C:\Work\mymodelsimcache' に設定し、モデル rtwdemo_capi のシミュレーションを行った場合、次に示すように、ファイルは指定されたフォルダーに生成されます。

Simulink 設定を使用して [シミュレーション キャッシュ フォルダー] を設定する以外にも、get_paramset_param を使用して、コマンド ラインから設定値を取得および設定できます。たとえば、次のようにします。

>> get_param(0, 'CacheFolder')

ans =

     ''

>> set_param(0, 'CacheFolder', fullfile('C:','Work','mymodelsimcache'))
>> get_param(0, 'CacheFolder')

ans =

C:\Work\mymodelsimcache

また、現在の MATLAB セッションの [シミュレーション キャッシュ フォルダー] の設定値をオーバーライドすることもできます。

ビルド フォルダー設定のオーバーライド

Simulink 設定 ([シミュレーション キャッシュ フォルダー][コード生成フォルダー]) は、MATLAB セッション パラメーター CacheFolderCodeGenFolder の初期値を制御します。これらは、Simulink ブロック線図更新とモデル ビルドによって生成されたファイルが配置される場所を決定します。しかし、関数 Simulink.fileGenControl を使用して、現在の MATLAB セッション中にこれらのビルド フォルダーの設定をオーバーライドできます。この関数を使用すると、MATLAB セッション パラメーターを直接操作できます (初期既定値のオーバーライドや復元など)。Simulink.fileGenControl を使用して設定した値は、現在の MATLAB セッションが終了すると無効になります。

参照モデルの更新時間の短縮

大きなモデル参照階層の並列ビルド

並列計算環境で、条件が満たされるときはいつでもアクセラレータ モードで構成される参照モデルを並列にビルドすることで、大きなモデル参照階層を含むモデルのブロック線図の更新速度を向上させることができます。たとえば、Parallel Computing Toolbox™ ソフトウェアがインストールされていると、各参照モデルの更新をマルチコア ホスト コンピューターのコアに分散できます。また、MATLAB Parallel Server™ ソフトウェアがインストールされている場合は、各参照モデルの更新を MATLAB Parallel Server 構成内のリモート ワーカーに分散できます。

参照モデルの更新に並列ビルドを使用して実現されるパフォーマンスの向上は、以下を含む複数の要因によって異なります。

  • そのモデル参照階層で並列ビルドできるモデルの数

  • 参照モデルのサイズ

  • 利用可能なローカル ワーカーとリモート ワーカーの数やローカル マシンとリモート マシンのハードウェア属性 (RAM の容量、コア数など) の並列計算リソース

並列計算環境に適用される構成要件については、並列ビルド構成要件を参照してください。

条件が満たされるときはいつでも参照モデルをパラレル ビルドする一般的なワークフローに関する説明は、並列計算環境でのモデルの更新を参照してください。

並列ビルド構成要件

モデル参照階層の更新に並列ビルドを使用する場合には、次の要件が適用されます。

  • ローカル プールの場合、ホスト マシンには、使用するローカル ワーカーの数をサポートするために利用できる適切な RAM 容量 (MATLAB セッション) が必要です。たとえば、parpool(4) を使用して 4 個のワーカーをもつ並列プールを作成すると、マシンでは MATLAB セッションが 5 個になり、それぞれ起動時に約 120 MB のメモリを使用します。

  • 並列ビルドに参加する MATLAB Parallel Server のリモート ワーカーは、共通のプラットフォームとコンパイラを使用しなければなりません。

  • 各 MATLAB ワーカー セッションと MATLAB クライアント セッションで MATLAB 環境が同じになるように設定します。たとえば、共有ベース ワークスペース変数や MATLAB パスの設定などを同じにします。1 つの手段として最上位モデルの PreLoadFcn コールバックを使用します。各 MATLAB ワーカー セッションで最上位モデルを読み込むようにモデルを設定している場合は、そのプリロード関数を任意の MATLAB ワーカー セッション セットアップに使用できます。

並列計算環境でのモデルの更新

モデル参照階層の並列ビルドを利用するには、次の手順を実行します。

  1. 並列計算環境にローカルまたはリモート MATLAB ワーカーのプールを設定する。

    1. Parallel Computing Toolbox ソフトウェアの使用が認められインストールされていることを確認します。

    2. リモート ワーカーを使用するには、MATLAB Parallel Server ソフトウェアの使用が認められインストールされていることを確認します。

    3. parpool(4) のような、ワーカー プールを設定する MATLAB コマンドを発行します。

  2. モデル参照階層の最上位モデルから、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[モデル参照] ペインに移動し、[並列モデルの参照ビルドを有効化] オプションを選択します。このオプションを選択するとパラメーター [ビルドに対する MATLAB ワーカー初期化] が有効になります。

    [ビルドに対する MATLAB ワーカー初期化] で、次のいずれかの値を選択します。

    • [なし] – 特別なワーカー初期化を実行しない場合。モデル参照階層内の子モデルが、ベース ワークスペースで明示的にセットアップ (モデル読み込み関数をもつなど) された範囲を超えて依存するものがないときには、この値を指定します。

    • [ベース ワークスペースをコピー] – ベース ワークスペースを各ワーカーにコピーする場合。使用する複数のモデルにベース ワークスペースを用意するためにセットアップ スクリプトを使用するときには、この値を指定します。

    • [最上位モデルの読み込み] – 各ワーカーに最上位モデルを読み込む場合。モデル参照階層内の最上位モデルがすべてのベース ワークスペース セットアップを扱う (モデル読み込み関数をもつなど) ときには、この値を指定します。

    メモ

    [並列モデルの参照ビルドを有効化] は、適用するモデル参照階層の最上位モデルでのみ設定します。

  3. オプションで、シミュレーション ビルドの詳細なメッセージを有効にします。詳細なビルドを選択した場合、ビルド メッセージは、モデル名とともに、各並列ビルドの進行状況を報告します。

    シミュレーション ターゲット ビルドの詳細なメッセージを有効にするには、[コンフィギュレーション パラメーター] ダイアログ ボックスに移動し、[詳細なアクセラレータのビルド] を選択します。

    [詳細なアクセラレータのビルド] オプションは、MATLAB コマンド ウィンドウと並列ビルド ログ ファイルの両方におけるビルド メッセージの詳細度を制御します。

  4. オプションで、モデルの依存関係に基づき、モデル参照階層を調べて並列に作成するモデルを特定します。たとえば、Simulink の [解析][モデルの依存関係] メニューから、モデル依存関係ビューアーを使用できます。

  5. モデルを更新します。MATLAB コマンド ウィンドウのメッセージが、パラレル ビルドまたはシリアル ビルドの開始および終了時刻を記録します。

    ビルドが失敗した場合など、並列ビルドの詳細は、並列ビルド ログの保存場所を参照してください。

並列ビルド ログの保存場所

参照モデルをパラレル ビルドするモデルを更新する際、詳細なビルドが有効な場合は、MATLAB コマンド ウィンドウのメッセージが各パラレル ビルドまたはシリアル ビルドの開始および終了時刻を記録します。たとえば、以下のようにします。

### Initializing parallel workers for parallel model reference build.
### Parallel worker initialization complete.
### Starting parallel model reference SIM build for 'bot_model001'
### Starting parallel model reference SIM build for 'bot_model002'
### Starting parallel model reference SIM build for 'bot_model003'
### Starting parallel model reference SIM build for 'bot_model004'
### Finished parallel model reference SIM build for 'bot_model001'
### Finished parallel model reference SIM build for 'bot_model002'
### Finished parallel model reference SIM build for 'bot_model003'
### Finished parallel model reference SIM build for 'bot_model004'

並列ビルドについての詳細情報を取得するには、並列ビルド ログを調べることができます。パラレル ビルドされた個々の参照モデルに対して、ビルド プロセスは model_buildlog.txt という形式の名前をもつファイルを生成します。ここで、model は参照モデルの名前になります。このファイルにはそのモデルの完全なビルド ログが含まれています。

並列ビルドが完了すると、参照モデルに対応するビルド サブフォルダー内にビルド ログ ファイルが作成されます。たとえば、参照モデル bot_model004 のビルドの場合は、参照モデル サブフォルダー build_folder/slprj/sim/bot_model004 でビルド ログ ファイル bot_model004_buildlog.txt を調べます。

並列ビルドが失敗した場合、次のような出力が表示されることがあります。

### Initializing parallel workers for parallel model reference build.
### Parallel worker initialization complete.
### Starting parallel model reference SIM build for 'bot_model002'
### Starting parallel model reference SIM build for 'bot_model003'
### Finished parallel model reference SIM build for 'bot_model002'
### Finished parallel model reference SIM build for 'bot_model003'
### Starting parallel model reference SIM build for 'bot_model001'
### Starting parallel model reference SIM build for 'bot_model004'
### Finished parallel model reference SIM build for 'bot_model004'
### The following error occurred during the parallel model reference SIM build for
'bot_model001':

Error(s) encountered while building model "bot_model001"

### Cleaning up parallel workers.

並列ビルドが失敗した場合、ビルド サブフォルダー /par_mdl_ref/model の下にある参照モデル サブフォルダーにビルド ログ ファイルがあります。たとえば、モデル bot_model001 の並列ビルドが失敗した場合は、サブフォルダー build_folder/par_mdl_ref/bot_model001/slprj/sim/bot_model001 でビルド ログ ファイル bot_model001_buildlog.txt を調べます。

関連するトピック