並列ビルドを使用した参照モデルのビルド時間の短縮
大きなモデル参照階層を含むモデルの場合は、参照モデルを並列にビルドしてコード生成とコンパイルにかかる時間を短縮できます。Parallel Computing Toolbox™ ソフトウェアを使用して、MATLAB® ワーカーの並列プールに参照モデルのコード生成とコンパイルを分散できます。MATLAB Parallel Server™ ソフトウェアもインストールされている場合、コード生成とコンパイルを MATLAB Parallel Server 構成内のリモート ワーカーに分散できます。
参照モデルの並列ビルド
参照モデルを並列ビルドするには、次のようにします。
モデルの階層構造の最上位モデルで [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。
[並列モデルの参照ビルドを有効化] チェック ボックスをオンにします。
MATLAB ワーカーごとに、クライアントの MATLAB 環境と一貫性のある MATLAB 環境を設定できます。[ビルドに対する MATLAB ワーカー初期化] ドロップダウン リストで、次のいずれかの値を選択します。
なし
–– Simulink® は、ワーカーを初期化しません。ベース ワークスペースをコピー
– Simulink は、ベース ワークスペースを各 MATLAB ワーカーにコピーします。最上位モデルの読み込み
–– Simulink は、各 MATLAB ワーカーに最上位モデルを読み込みます。
コマンド ラインまたは Simulink エディターのコード パースペクティブからモデルをビルドします。
コマンド ライン –– たとえば、
slbuild
を使用します。ビルド プロセスにより、コマンド ウィンドウにビルド ログ メッセージが表示されます。Simulink エディターのコード パースペクティブ –– [ビルド] ボタンをクリックします。ビルド プロセスでは、診断ビューアーにビルド ログ メッセージが表示されます。
Parallel Computing Toolbox の並列基本設定 [並列プールを自動的に作成する] が選択されている場合、MATLAB ワーカーの並列プールが自動的に起動します。詳細については、並列基本設定の指定 (Parallel Computing Toolbox)を参照してください。
モデルをビルドするときに、MATLAB ワーカーの並列プールが実行されていない場合、MATLAB では、既定のクラスター プロファイルを使用してワーカーの並列プールが自動的に開きます。ワーカー クラスターの既定の動作を変更するには、クラスター プロファイルのプロパティを変更できます。並列の基本設定を変更していない場合、既定のプロファイルは
local
です。並列の基本設定を使用して、クラスターへのスケール アップ、プールの自動作成、推奨されるワーカー数などの並列動作を制御します。詳細については、クラスターの検出とクラスター プロファイルの使用 (Parallel Computing Toolbox)を参照してください。並列計算の一般情報の詳細については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
参照モデルの並列ビルドのモニター
[ビルドのステータス] ウィンドウで、次の操作を実行できます。
モデルの階層構造の全体的なビルドの進行状況の表示。
モデルの階層構造内の個々のモデルのビルド ステータスの表示。
並列ビルド プロセスのキャンセル。
メモ
[ビルド ステータス] ウィンドウは、モデルの階層構造の並列ビルドのみサポートします。シリアル ビルドに [ビルド ステータス] ウィンドウを使用しないでください。
[ビルド ステータス] ウィンドウを開くには、次のライン コマンドのいずれかを使用します。
coder.buildstatus.open('
model
')slbuild('
model
', ... 'OpenBuildStatusAutomatically',true)slbuild('
model
','StandaloneCoderTarget', ... 'OpenBuildStatusAutomatically',true)
この例は、モデルの階層構造のビルド プロセスの監視方法を示しています。階層で、rtwdemo_parabuild_a_1
は、rtwdemo_parabuild_b_1
、 rtwdemo_parabuild_b_2
、および rtwdemo_parabuild_b_3
を参照します。
次の手順に従って、モデル ファイルをローカル フォルダーにコピーします。
src_dir = ... fullfile(matlabroot,'toolbox','rtw','rtwdemos'); if exist(fullfile('.','myTempFolder'),'dir') rmdir('myTempFolder','s') end mkdir myTempFolder copyfile(fullfile(src_dir,'rtwdemo_parabuild_a_1.slx'), ... 'myTempFolder'); copyfile(fullfile(src_dir,'rtwdemo_parabuild_b_1.slx'), ... 'myTempFolder'); copyfile(fullfile(src_dir,'rtwdemo_parabuild_b_2.slx'), ... 'myTempFolder'); copyfile(fullfile(src_dir,'rtwdemo_parabuild_b_3.slx'), ... 'myTempFolder'); cd myTempFolder
最上位モデルを開きます。
open_system('rtwdemo_parabuild_a_1')
モデルの依存関係をモデル依存関係アナライザーで表示します。
[モデル化] タブで下矢印をクリックして、[設計] ギャラリーを展開します。[依存関係] の下で、[依存関係アナライザー] をクリックします。
モデルの階層構造の並列ビルドを開始し、[ビルド ステータス] ウィンドウを開きます。
slbuild('rtwdemo_parabuild_a_1','OpenBuildStatusAutomatically',true)
[ビルド ステータス] ウィンドウには、コード ジェネレーターがモデルの階層構造を通じて動作するときに、モデルのビルドの進行状況全体とビルド ステータスが表示されます。
次の表で、[ステータス] 列の値について説明します。
ステータス | 説明 |
---|---|
ブロック済み | ビルドが依存関係によってブロックされているため、コード ジェネレーターはモデルのビルドをスケジュールできません。たとえば、子モデルのビルドは完了しません。 |
スケジュール済み | 並列ビルドで、コード ジェネレーターは、ビルドが依存関係にブロックされていないときにモデルのビルドをスケジュールします。モデルのビルドのステータスは、並列プール ワーカーが使用可能になるまで |
ビルド中 | モデルはワーカーでビルド中です。 |
完了 | モデルがエラーなしでビルドされると、ステータスは |
エラー | モデルのビルドが失敗すると、ステータスは |
最新 | 現在生成されているコードは最新であるため、モデルのコード生成は不要です。 |
キャンセル中 | [ビルドのキャンセル] ボタンをクリックすると、ビルド プロセスは未完成のビルドのステータスを |
キャンセル済み | キャンセル処理は完了しました。 |
[経過時間] 列には、階層内のモデルのビルド時間が示されます。合計のビルド時間を短縮するには、モデルの依存関係と共に参照モデルのビルド時間を解析します。たとえば、次を検討します。
参照モデルの階層構造の再構成。
並列プール内のワーカー数の増加。
参考
slbuild
| coder.buildstatus.open
| coder.buildstatus.close