ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

マルチコア プログラミング向けのコアに対するタスクの割り当て

この例では、グラフィカルな分割によって、マルチコア プロセッサ上でコード実行を利用する方法を示します。この例では、マルチスレッド コードを生成するために Simulink Coder™ が必要です。

はじめに

マルチコア プログラミングでは、最新マルチコア プロセッサの処理能力を利用して、高性能のアプリケーションを作成できます。Simulink™ では、アルゴリズムをグラフィカルに分割したり、分割から生成されたコードをマルチコア プロセッサ上の並列スレッドに割り当てたりすることによって、マルチコア プログラミングを活用できます。

並列スレッドは通常、オペレーティング システムによってスケジューリングされ、スレッドがコアに動的に割り当てられます。これにより、スケジューラはコアを有効に活用できるだけでなく、公平性という概念を取り入れることができます。ただし、多くのアプリケーションでは、たとえば確定性を改善するために、コアの使用方法をさらに制御する必要がある場合や、いくつかのコアを特定のロジック専用にする場合があります。このレベルでの制御はグラフィカルな分割によって達成可能です。これについては次の例で説明します。

例を試す

マルチコアの典型的な状況として、高速レート用のコードをあるコアに割り当て、低速レート用のコードを別のコアに割り当てる場合のマルチレートのモデルがあります。これにより、さらに多くのロジックをより早いレートに追加したり、確定性を向上させたりすることができます。より一般的に言えば、リソースに対する需要が最も大きいアプリケーション ロジックに対して、コアを専有させる場合があります。最初に、マルチコア プロジェクトを開きます。

slexMulticoreExample

マルチスレッド コードの生成

このアプリケーション モデルは、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインからアクセスできる [同時実行] ダイアログで 4 つの同時実行タスクにあらかじめ分割されています。このダイアログを使用してロジック、タスクおよびコア割り当てを指定します。この例では、アプリケーション ロジックを次のように分割します。

[Generate Code and Profile Report] ボタンをダブルクリックしてマルチスレッド コードを生成し、実行をプロファイリングします。このアクションによって、生成される実行可能ファイルが実行およびインストルメント化され、プロファイリング結果とコア占有マップの両方が生成されます。後者を以下に示します。次の図は、コアが実行の各タイム ステップでどのように使用されたかを示します。この例では、最初のコアは速いレート (Task1 および Task2) で使用され、2 番目のコアは遅いレート (Task3 および Task4) で使用されました。

[同時実行] ダイアログに戻り、別のコア割り当てを試してください。特に、Affinity プロパティを '[]' にしておくことでコアの関係を指定しないようにしてみてください。これが既定の設定であり、Simulink™ がマルチコア プロセッサ上での動的なスケジューリングに適したマルチスレッド コードを生成できるようにします。