インテル® Advisor ユーザーガイド

タスクのチャンク化

チャンク化は、並列フレームワークがいくつかのタスクを 1 つのタスクにマージして、オーバーヘッドを軽減または排除することを意味します。例えば、タスクがループ反復である場合、重いタスク制御を実行する前にチャンク化によっていくつかの反復が同時に (チャンクとして) 実行されます。

チャンク化は一般に、並列フレームワークに変更する際に実装されます。

また、チャンク化を有効にするためコードを再構成することもできます。これは、単一のループに新たに外部ループを作成して、2 つのループが同じ反復空間を処理するように変更することで達成できます。ストリップマイニングと呼ばれる手法により、内部ループは小さなチャンクでベクトル操作を活用できます。ループのベクトル化により、ハードウェアは配列データの操作など小さなユニット (通常 64 バイト) で、データを独立して処理することが可能となります。

2 つのループが存在する場合、タスク開始と終了アノテーションで内部ループを囲むように内部ループをタスク・アノテーション内に移動します。外部ループは一定のチャンクサイズでストライドし、内部ループはそれぞれのチャンクをシーケンシャルに繰り返します。

CPU 時間と経過時間がほぼ同じである場合、[Runtime impact for this site][Suitability Report] で、タスクのチャンク化を有効にすることを推奨します。

[Scalability of Maximum Site Gain] グラフの右にあるチェックボックス (例えば、[Enable Task Chunking]) をオンにすると、その値が [Site Gain] と場合によっては [Maximum Site Gain for All Sites] にも追加されます。

関連情報