Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

マルチスレッド コシミュレーション

この例では、コシミュレーションを複数のスレッドで実行する方法を示します。

Simulink は、ローカル ソルバーを含むコンポーネントやシミュレーション ツールを使用するコンポーネントの間のコシミュレーションをサポートする統合プラットフォームです。たとえば、S-Function を Simulink とサードパーティ製のツールやカスタム コードの間のコシミュレーションのゲートウェイとして含めることができます。また、コシミュレーション モードで Simulink にインポートされる FMU を含めることもできます。

Simulink の既定の設定では、すべてのモデルについて複数のスレッドで実行するように MultiThreadCoSim パラメーターが設定されます。

この例では、3 つのコンポーネント (2 つは C-MEX S-Function で実装、1 つは FMU Co-Simulation v2.0 を使用して実装) のマルチスレッド コシミュレーションを実行する方法を示します。これらのコンポーネントは素数の計算を行い、与えられた入力以下の最大の素数を求めます。

マルチスレッド コシミュレーションは、コンポーネントが疎結合で計算量が多いモデルに最適です。この例では、各コンポーネントで力まかせ探索を使用して素数を計算します。計算の強度は与えられた範囲に正比例します。これはブロック入力で試すことができます。また、コンポーネントの通信時に、与えられた範囲内の最大の素数であるスカラー信号が交換されます。

試しに MultithreadedSim パラメーターを切り替え、実経過時間を測定してみます。

open_system('slexCoSimPrimeExample')
sim('slexCoSimPrimeExample');

参考

関連するトピック