モデルの暗黙的な分割と明示的な分割
Simulink® でアプリケーションのマルチコア プログラミングを実装する場合、個々の処理ノードで実行するモデルを分割するには 2 つの方法があります。Simulink でマルチコア プログラミングをはじめて使用する場合、マルチコア プログラミングを実装する最初の反復では、既定 (暗黙的な分割) の設定を使用します。
タスクを作成し、それらを処理ノードにマッピングする自動化された方法は、"暗黙的な分割" と呼ばれます。Simulink はブロックのサンプル時間に基づいてルート レベルでモデルを分割します。モデルの各サンプル時間は各分割に対応し、シングル レートのすべてのブロックまたはサンプル時間は同じ分割に属します。Simulink はこれらの分割をプロセッサで実行するタスクにマッピングします。暗黙的な分割はアーキテクチャを単一のマルチコア CPU と仮定します。CPU タスク スケジューラは分割されたすべてのタスクを処理します。
モデルの分割方法を指定する場合は、"明示的な分割" を使用します。明示的な分割では、参照モデル、MATLAB® System ブロック、MATLAB Function ブロック、Stateflow® チャートおよび Simulink サブシステムを使用してルートレベル モデルで分割を作成します。たとえば、モデルにデータ収集とコントローラーが含まれている場合は、それらのコンポーネントをモデルのルートレベルで 2 つの参照モデルに配置することでモデルを分割します。モデルのブロックの各サンプル時間は分割に対応します。処理ノードで実行するタスクを [同時実行] ダイアログ ボックスに追加し、分割をこれらのタスクに割り当てることができます。一部の分割が割り当てられていない場合、Simulink は自動的にそれらの分割をタスクに割り当てます。
明示的な分割では、独自のアーキテクチャを指定できます。既定のアーキテクチャはマルチコア CPU です。これは、暗黙的な分割で仮定されるアーキテクチャと同じです。明示的な分割には、暗黙的な分割よりもルートレベル モデルでさらに多くの制限があります。詳細については、Simulink でのマルチコア プログラミングの制限事項を参照してください。
分割のガイドライン
Simulink での同時実行用にモデルを分割する方法は複数あります。レート ベースのアプローチおよびモデル ベースのアプローチでは、Simulink ブロックと Stateflow ブロックを使用して表されるシステムの同時実行性を主にグラフィックスで表すことができます。MATLAB System ブロックおよび MATLAB Function ブロックを使用して MATLAB コードを分割できます。また、マルチソルバー方法を使用して物理システムのモデルを分割できます。
各方法にはその他の考慮事項があり、どの方法を使用するか判断する際に役立ちます。
目的 | 有効な分割方法 | 考慮事項 |
---|---|---|
ホスト コンピューターでのシミュレーションのパフォーマンスの向上。 | 分割方法はありません。 | Simulink は使用されているモデル化方法に関係なくホスト コンピューターのパフォーマンスを最適化しようとします。Simulink でのパフォーマンスの向上方法の詳細については、パフォーマンスの最適化を参照してください。 |
マルチコア HIL (ハードウェアインザループ) システムでのプラント シミュレーションのパフォーマンスの向上。 | いずれかの分割方法またはそれらの組み合わせを使用できます。 | HIL システムと組み込み処理システムの処理の特性は非常に異なる場合があります。HIL または組み込みシステム内の処理要素数よりも多くの作業単位にシステムを分割することを検討してください。この原則により、マッピング プロセスの柔軟性が確保されます。 |
マルチコア プロセッシング システムを利用するマルチレート同時実行システムの有効なモデルの作成。 | いずれかの分割方法またはそれらの組み合わせを使用できます。 | 分割によって、同時実行のデータ転送要件を表す信号遅延が生じることがあります。詳細については、同時実行タスク間でのデータ転送設定の構成を参照してください。 |
マルチコアおよび FPGA 処理を利用する異種混合システムの有効なモデルの作成。 |
| きめ細かなハードウェアの並列処理を利用することで軽減可能なボトルネックが計算にある FPGA 処理に対して、分割を検討してください。 |