Main Content

スケーラブルなコンパイルについて

スケーラブルなコンパイルとは

大規模モデルは、多くの場合にコンパイルとシミュレーションに長い時間がかかります。"スケーラブルなコンパイル" は、繰り返しコンポーネントのパターンで構成されるモデルについて、繰り返しコンポーネントを 1 回コンパイルしてから、同じコンポーネントの他のインスタンスにこれらのコンパイルを再利用するため、コンパイル時間の短縮に役立ちます。スケーラブルなコンパイルはコンパイルのパフォーマンスを向上させます。モデルのシミュレーション時間は短縮しません。

スケーラブルなコンパイルは、次のタイプの "再利用可能なコンポーネント" をサポートしています。

  • 参照サブシステム — サブシステム参照を使用するサブシステム インスタンスであり、サブシステムの内容を別のファイルに保存し、Subsystem Reference ブロックを使用してそれを参照します。同じサブシステム ファイルを参照する複数のインスタンスを作成できます。詳細については、サブシステム参照を参照してください。

  • リンクされたサブシステム — ソースにリンクされた Simulink® ライブラリの Subsystem ブロックから作成されたサブシステム インスタンス。LinkStatusnone に設定して Subsystem からコピーを作成した場合、リンクされたサブシステムにはならないことに注意してください。

  • simscape.reuse.getConfigon を返す個々のブロック。詳細については、Reuse Compilation Artifacts of Individual Simscape Blocksを参照してください。

  • CompileReuse 属性が true に設定されたテキスト コンポーネント。詳細については、Reuse Compilation Artifacts of Textual Componentsを参照してください。

メモ

simscape.reuse.getConfigon を返すローカル サブシステムは、コピーと貼り付けを使用して作成した場合など、それらの内容が同じであればスケーラブルなコンパイルで再利用されます。ただし、ローカル サブシステムのインスタンスがモデルに複数含まれる場合は、サブシステムの内容が必ず同一のままになるように、それらを参照サブシステムまたはリンク付きサブシステムに変換することを推奨します。

モデルのコンパイルに時間がかかる場合は、次を確認してスケーラブルなコンパイルのメリットが得られるかどうかを判断します。

  • モデルは、伝送線路やバッテリー パックなど、繰り返しコンポーネントのパターンで構成されているか?これらのコンポーネントを参照サブシステムやリンクされたサブシステムなどの再利用可能なコンポーネントに容易に変換できるか?

  • モデルの Simscape™ の部分は、モデルの総コンパイル時間の中でどの程度の割合を占めているか?一部のモデルには、長いコンパイル時間を要する複雑なコントローラーがあります。このような場合、スケーラブルなコンパイルがモデルの Simscape の部分のコンパイル時間を大幅に短縮したとしても、モデル全体に対する影響はそれほど顕著でない可能性があります。

  • モデルは、サポートされていないパターン、最適化、またはシミュレーション モードを使用しているか?たとえば、スケーラブルなコンパイルは、非線形の指数減少や分割ローカル ソルバーをサポートしていません。詳細については、スケーラブルなコンパイルの制限を参照してください。

アドバイザリ ツールは、モデル内にある未サポートのパターンやワークフローに関する情報や、サブシステムの再利用性やコンパイル統計に関するガイダンスを提供できます。詳細については、アドバイザリ ツールを使用したモデルの解析を参照してください。

繰り返しコンポーネントの複雑度は、スケーラブルなコンパイルの結果に大きく影響します。モデルを繰り返しコンポーネントで再構成するさまざまな方法を試して、最適なコンフィギュレーションを特定できます。詳細については、再利用可能なコンポーネントに最適な複雑度の特定を参照してください。

スケーラブルなコンパイルのワークフロー

フローチャートはスケーラブルなコンパイルのワークフローを表します。

モデルのコンパイルに時間がかかる場合:

  1. モデルが、スケーラブルなコンパイルの対象として適切であるかどうかを判断します。Simscape ブロックで構成されるコンポーネントの繰り返しパターンがありますか™?

  2. ある場合、モデルを繰り返しコンポーネントで再構成する方法を特定します。モデルの中には、既に繰り返しサブシステムのパターンで構成されているために、再構成が不要なものがあります。その他のモデルは、繰り返しサブシステムへの再構成が必要なことがあります。この時点で参照サブシステムまたはリンク付きサブシステムを作成する必要はありません。アドバイザリ ツールでは、既に再利用可能なコンポーネントが含まれているものとして、モデルを解析できます。

  3. アドバイザリ ツールを使用してモデルを解析し、結果を確認します。

    スケーラブルなコンパイルからのパフォーマンス向上が十分でない場合は、モデルを再構成する他の方法を検討してください。繰り返しコンポーネントの複雑度は、スケーラブルなコンパイルの結果に大きく影響します。モデルを繰り返しコンポーネントに再構成するさまざまな方法を試し、アドバイザリ ツールを使用して最適な構成を特定できます。

  4. 結果に満足したら、モデル内の繰り返しコンポーネントを再利用可能なコンポーネントに変換します。たとえば、繰り返しコンポーネントのいずれかを参照サブシステムに変換してから、モデル内にあるこのコンポーネントのすべてのインスタンスを Subsystem Reference ブロックに置き換えます。詳細については、サブシステム参照を参照してください。

スケーラブルなコンパイルの制限

スケーラブルなコンパイルは、繰り返しコンポーネントを 1 回コンパイルしてから、同じコンポーネントの他のインスタンスにこれらのコンパイル アーティファクトを再利用することで、繰り返しコンポーネントのパターンで構成されるモデルのコンパイル時間を短縮します。スケーラブルなコンパイルでサポートされるのは、個々の Simscape ブロックおよびテキスト コンポーネント以外では、参照サブシステムとリンク付きサブシステムの 2 つのタイプの再利用可能なコンポーネントのみです。スケーラブルなコンパイルを利用するには、他のタイプのグラフィカル サブシステムをこれらのタイプのいずれかに変換する必要があります。

システム マスクを使用することで、再利用可能なサブシステムの異なるインスタンスごとに異なるパラメーター値を指定できます。詳細については、モデルでのサブシステム ファイルの参照を参照してください。また、再利用可能なサブシステム内で変数初期化のターゲット値をパラメーター化して、マスク パラメーターやベース ワークスペースなどから、さまざまな初期化のターゲット値をさまざまなサブシステム インスタンスに渡すこともできます。ただし、初期化の優先順位やノミナル値など、変数の他のプロパティは、再利用可能なサブシステムのすべてのインスタンスで同一である必要があります。

さらに、スケーラブルなコンパイルは、次のシミュレーション ツールおよびワークフローをサポートしていません。

  • 分割ローカル ソルバー

  • 非線形の指数減少 (非線形高次方程式の求解に使用されるグローバル変換)

アドバイザリ ツールは、モデル内にある未サポートのパターンやワークフローに関する情報を提供できます。サポートされていないパターン、ワークフロー、または最適化がモデルに含まれていた場合、アドバイザリ ツールは適用される制限を一覧表示し、スケーラブルなコンパイルを有効にしないことを推奨します。

関連するトピック