並列ビルドを使用した参照モデルのビルド時間の短縮
大きなモデル参照階層を含むモデルの場合は、参照モデルを並列にビルドしてコード生成とコンパイルにかかる時間を短縮できます。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)
この例は、モデルの階層構造のビルド プロセスの監視方法を示しています。階層で、ParallelBuildA1
は、ParallelBuildB1
、 ParallelBuildB2
、および ParallelBuildB3
を参照します。
最上位モデルを開きます。
open_system('ParallelBuildA1');
モデルの依存関係をモデル依存関係アナライザーで表示します。[モデル化] タブの [設計] セクションで下矢印をクリックして、[設計] ギャラリーを展開します。[依存関係] の下で、[依存関係アナライザー] をクリックします。
モデルの階層構造の並列ビルドを開始し、[ビルド ステータス] ウィンドウを開きます。
slbuild('ParallelBuildA1','OpenBuildStatusAutomatically',true)
### Searching for referenced models in model 'ParallelBuildA1'. ### Found 3 model reference targets to update. Starting parallel pool (parpool) using the 'Processes' profile ... 11-Jul-2024 13:37:06: Job Running. Waiting for parallel pool workers to connect ... Connected to parallel pool with 4 workers. ### Initializing workers for parallel model reference build. ### Parallel worker initialization complete. ### Starting parallel model reference code generation build. ### Successfully updated the model reference code generation target for: ParallelBuildB1 ### Successfully updated the model reference code generation target for: ParallelBuildB2 ### Successfully updated the model reference code generation target for: ParallelBuildB3 ### Starting build procedure for: ParallelBuildA1 ### Successful completion of build procedure for: ParallelBuildA1 Build Summary Model reference code generation targets: Model Build Reason Status Build Duration ======================================================================================================== ParallelBuildB1 Target (ParallelBuildB1.c) did not exist. Code generated and compiled. 0h 1m 0.39414s ParallelBuildB2 Target (ParallelBuildB2.c) did not exist. Code generated and compiled. 0h 1m 0.39286s ParallelBuildB3 Target (ParallelBuildB3.c) did not exist. Code generated and compiled. 0h 1m 0.3926s Top model targets: Model Build Reason Status Build Duration ================================================================================================================== ParallelBuildA1 Information cache folder or artifacts were missing. Code generated and compiled. 0h 1m 2.0132s 4 of 4 models built (0 models already up to date) Build duration: 0h 5m 1.9423s ### Cleaning up parallel workers.
[ビルド ステータス] ウィンドウには、コード ジェネレーターがモデルの階層構造を通じて動作するときに、モデルのビルドの進行状況全体とビルド ステータスが表示されます。
[ステータス] 列に次の値が表示される場合があります。
Blocked
- ビルドが依存関係によってブロックされているため、コード ジェネレーターはモデルのビルドをスケジュールできません。たとえば、子モデルのビルドは完了しません。Scheduled
- 並列ビルドで、コード ジェネレーターは、ビルドが依存関係にブロックされていないときにモデルのビルドをスケジュールします。モデルのビルドのステータスは、並列プール ワーカーが使用可能になるまでScheduled
です。Building
- モデルはワーカーでビルド中です。Completed
- モデルがエラーなしでビルドされると、ステータスはCompleted
に変わります。Error
- モデルのビルドが失敗すると、ステータスはError
に変わります。Up To Date
- 現在生成されているコードは最新であるため、モデルのコード生成は不要です。Canceling
- [ビルドのキャンセル] ボタンをクリックすると、ビルド プロセスは未完成のビルドのステータスをCanceling
に変更します。Canceled
- キャンセル処理は完了しました。
[経過時間] 列には、階層内のモデルのビルド時間が示されます。合計のビルド時間を短縮するには、モデルの依存関係と共に参照モデルのビルド時間を解析します。たとえば、次を検討します。
参照モデルの階層構造の再構成。
並列プール内のワーカー数の増加。
参考
slbuild
| coder.buildstatus.open
| coder.buildstatus.close