ドキュメンテーション

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

動画処理システムのマルチコア シミュレーション

この例では、入力ビデオに含まれるオブジェクトのカウントを実装した動画処理システムの方法を説明します。ここでは、Simulink® のデータフロー領域を使用して動画処理システムのデータ処理部分を複数のスレッドに自動的に分割し、デスクトップの複数のコア上で実行することでシミュレーションのパフォーマンスを向上します。

はじめに

データフロー実行領域により、計算量の多いシステムの設計で複数のコアを使用できます。この例では、サブシステムの実行領域としてのデータフローでモデルのシミュレーション パフォーマンスを改善する方法を説明します。データフローと、複数のスレッドを使用して Simulink モデルを実行する詳細については、Multicore Execution using Dataflow Domain (DSP System Toolbox)を参照してください。

ビデオ内のオブジェクトのカウント

この例では、基本的なモルフォロジー演算子を使ってビデオ ストリームから情報を抽出する方法を説明します。ここでは、モデルによって各ビデオ フレームにあるホチキスの針の数をカウントします。このモデルは Top-hat ブロックを使用して不均一な明るさを排除してから、Autothreshold ブロックを使用してバイナリ イメージに変換します。その後 Blob Analysis ブロックを使用して、針の数をカウントしてそれぞれの針の重心を計算します。Draw Markers ブロックと Insert Text ブロックを使用して針をマークし、ビデオ フレームで検出された針の数を書き込みます。

Dataflow Subsystem の設定

この例では、Simulink でデータフロー領域を使用し、デスクトップ上の複数のコアを利用してシミュレーション パフォーマンスを向上させます。このモデルの Dataflow Subsystem の [領域] パラメーターは [データフロー] として設定されます。表示するには、サブシステムを選択して [ツール表示]、[プロパティ インスペクター] を選択します。データフロー領域は、モデルを自動的に分割し、シミュレーション パフォーマンスを良くするために複数のスレッドを使用してシステムをシミュレートします。[領域] パラメーターを [データフロー] に設定すると、Dataflow Simulation Assistant を使用してモデルを解析し、パフォーマンスを向上させることができます。プロパティ インスペクターで [フレーム サイズの自動計算] パラメーターの下にある [データフロー アシスタント] ボタンをクリックして、Dataflow Simulation Assistant を開くことができます。

Dataflow Subsystem の同時実行の解析

Dataflow Simulation Assistant で、[Analyze] ボタンをクリックして、シミュレーション パフォーマンスのデータフロー領域の解析を開始します。解析の終了後、Dataflow Simulation Assistant は Dataflow Subsystem がシミュレーション中に使用するスレッド数を表示します。

モデルを解析した後は、モデル内のブロック間のデータ依存関係によってブロックが同時に実行されないため、アシスタントには 1 つのスレッドが表示されます。データ依存のブロックをパイプライン化することによって、Dataflow Subsystem は、データ スループットを上げるために同時実行を増やすことができます。Dataflow Simulation Assistant には、推奨されるパイプライン遅延の数が推奨レイテンシとして示されます。推奨レイテンシの値は最高のパフォーマンスを得られるように計算されます。

次の図に、Dataflow Subsystem がレイテンシ値 0 を現在指定し、システムの推奨レイテンシが 2 である Dataflow Simulation Assistant を示しています。

Dataflow Simulation Assistant で [Suggested Latency] の横にある [Accept] ボタンをクリックして、Dataflow Subsystem に対して推奨レイテンシを使用します。この値は、"レイテンシ" パラメーターとしてプロパティ インスペクターで直接入力することもできます。Simulink では、Dataflow Subsystem の出力端子で タグを使用してレイテンシ パラメーターの値が表示されます。

現在の Dataflow Simulation Assistant ではスレッドの数が 2 と表示されており、Dataflow Subsystem 内部のブロックが 2 つのスレッドを使用してシミュレーションを並列実行していることを意味します。

マルチコア シミュレーションのパフォーマンス

データフローを使用する場合と使用しない場合でモデル実行にかかる実行時間を比較して、データフロー領域の使用によるパフォーマンスの改善を測定します。実行時間は sim コマンドを使用して測定されます。これによりモデルのシミュレーション実行時間が返されます。実行時間の測定中、主として Dataflow Subsystem にかかる時間を測定するために、Video Viewer ブロックはコメント化されています。これらの数字と解析は、Intel® Xeon® CPU E5-1650 v3 @ 3.5 GHz、6 コア、12 スレッドのプロセッサを使用する Windows デスクトップで得られたものです。

Simulation execution time for multithreaded model = 8.34s
Simulation execution time for single-threaded model = 13.52s
Actual speedup with dataflow: 1.6x

まとめ

この例では、データフロー領域を使用するマルチスレッドによって、デスクトップで複数のコアを使用して動画処理モデルのパフォーマンスを向上できる方法を示します。