並列サイト、タスク、ロック、または特殊な操作を行う場所をマークするため、インテル® Advisor の各種アノテーションを使用できます。次のようなアノテーションがあります。
並列サイトのアノテーション
並列タスクのアノテーション
並列ロックのアノテーション
データ収集をポーズおよび再開するアノテーション
特殊なアノテーション
並列サイトが少なくとも 1 つのタスクを含む場合に効果があります。並列タスク内のコードは、それ自身のほかのインスタンスや、ほかの並列タスクに関係なく複数のスレッドで実行できます。多くのタスクはループ内のコードか、反復操作を行う単一文です。プログラムが時間を費やす場所を特定するため、サーベイツールやその他のプロファイル・ツールを使用すると、2 つのタイプの並列コード領域 (並列サイト) を見つけることができます。
単一タスクのみを必要とするループ。サーベイツールが、アプリケーションの CPU 時間のほとんどを反復に費やし、ループ本体全体がタスクである単純なループ構造を特定した場合、並列サイト内には単一タスクのみが必要である可能性があります。時間を費やすコードがループではない、または複雑なループにタスクがある場合を除いて、この簡単な形式で開始します。ループ周辺の並列サイトの始まりと終わりをマークするためアノテーションを追加し、ループ本体の始まりにタスク反復アノテーションを挿入します。このアノテーション形式は、並列コードへの変換が最も容易です。
複数のタスクを必要とする特性を持つコード。アプリケーションのコード特性に応じて、複数のタスクが必要になることがあります。例えば、スケーラビリティーの要件を満たすため複数のタスクが必要な場合、それぞれの文を個別のタスク、複雑なまたは入れ子のループ構造にすることができます。この場合、並列サイト領域の始まりと終わりをマークするアノテーションの追加と同様に、それぞれのタスクの始まりと終わりをマークするアノテーションも必要です。
2 つのタスク・アノテーション・タイプには、同じ並列サイト・アノテーションを使用します。次の表は、C/C++ 、Fortran、および C# 言語向けの構文を含む、属性タイプ別のアノテーションを示します。それぞれに詳しい説明へのリンクがあります。
オプションの引数は、 annotation([int expr]) のように角かっこで示します。
アノテーションの追加を支援するため、[Survey (サーベイ)] ウィンドウや [No Data (データなし)] メッセージでインテル® Advisor のアノテーション・アシスタントを使用してコードのスニペットをコピーして追加できます。Microsoft Visual Studio* コードエディターでは、アノテーション・ウィザードが使用できます (アノテーション・ウィザードを使用してアノテーションを挿入を参照)。アノテーション定義ファイルへの参照も追加する必要があります。
説明 |
名前 |
||||||
---|---|---|---|---|---|---|---|
ループに単一のタスクを含む並列サイトを開始します。 |
|
||||||
ループ内の反復並列タスクをマークします。並列サイトの実行内で、ループ本体の始まり近辺にこのアノテーションを配置します。 |
|
||||||
並列サイトを終了します。並列サイトは、サイト内で開始されたすべてのタスクが完了した後にのみ終了します。 |
|
||||||
複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトを開始します。 |
|
||||||
並列タスクを開始します。複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトで実行する必要があります。 |
|
||||||
並列タスクを終了します。複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトで実行する必要があります。 |
|
||||||
並列サイトを終了します。並列サイトは、サイト内で開始されたすべてのタスクが完了した後にのみ終了します。 |
|
||||||
ロック・アノテーション: 同期の場所を示します。 |
|||||||
ロックを取得します (0 は有効なアドレス)。並列サイト内で発生しなければなりません。 |
|
||||||
ロックを解放します。並列サイト内で発生しなければなりません。 |
|
||||||
収集のポーズと収集の再開アノテーション: 注目しないコードをスキップするためデータ収集をポーズします。 |
|||||||
収集のポーズ: ターゲットプログラムは実行を続けます。 |
|
||||||
収集のポーズ・アノテーションで停止されている収集を再開します。 |
|
||||||
特殊なアノテーション: 競合が誤検出されないように特定のメモリー割り当てを示したり、問題や解析のレポートを無効にしたり、またはメモリーアクセスのさらに詳しいレポートを有効にします。これらは依存関係ツールにのみ適用されます。構文に関しては、「特殊なアノテーション」のヘルプを参照してください。 |