Main Content

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

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

はじめに

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

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

プロジェクトを開く

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

slexMulticoreExample

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

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

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

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

関連するトピック