< 目次

アノテーション・タイプのサマリー

並列サイト、タスク、ロック、または特殊な操作を行う場所をマークするため、インテル® Advisor の各種アノテーションを使用できます。次のようなアノテーションがあります。

並列サイトが少なくとも 1 つのタスクを含む場合に効果があります。並列タスク内のコードは、それ自身のほかのインスタンスや、ほかの並列タスクに関係なく複数のスレッドで実行できます。多くのタスクはループ内のコードか、反復操作を行う単一文です。プログラムが時間を費やす場所を特定するため、サーベイツールやその他のプロファイル・ツールを使用すると、2 つのタイプの並列コード領域 (並列サイト) を見つけることができます。

2 つのタスク・アノテーション・タイプには、同じ並列サイト・アノテーションを使用します。次の表は、C/C++ 、Fortran、および C# 言語向けの構文を含む、属性タイプ別のアノテーションを示します。それぞれに詳しい説明へのリンクがあります。

インテル® Advisor 2021.1 以降では C# と .NET のサポートが非推奨となりました。

オプションの引数は、 annotation([int expr]) のように角かっこで示します。

アノテーションの追加を支援するため、[Survey (サーベイ)] ウィンドウや [No Data (データなし)] メッセージでインテル® Advisor のアノテーション・アシスタントを使用してコードのスニペットをコピーして追加できます。Microsoft Visual Studio* コードエディターでは、アノテーション・ウィザードが使用できます (アノテーション・ウィザードを使用してアノテーションを挿入を参照)。アノテーション定義ファイルへの参照も追加する必要があります。

説明

名前

単一タスクのループを含む並列サイト向けのサイトとタスク・アノテーション:

ループに単一のタスクを含む並列サイトを開始します。

C/C++:

ANNOTATE_SITE_BEGIN(sitename);

Fortran:

call annotate_site_begin(sitename)

C#:

Annotate.SiteBegin(sitename);

ループ内の反復並列タスクをマークします。並列サイトの実行内で、ループ本体の始まり近辺にこのアノテーションを配置します。

C/C++:

ANNOTATE_ITERATION_TASK(taskname);

Fortran:

call annotate_iteration_task(taskname)

C#:

Annotate.IterationTask(taskname);

並列サイトを終了します。並列サイトは、サイト内で開始されたすべてのタスクが完了した後にのみ終了します。

C/C++:

ANNOTATE_SITE_END([sitename]);//sitename はオプションです

Fortran:

call annotate_site_end

C#:

Annotate.SiteEnd();

複数のタスクを含む並列サイトコード向けのサイトとタスク・アノテーション (その他すべての状況):

複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトを開始します。

C/C++:

ANNOTATE_SITE_BEGIN(sitename);

Fortran:

call annotate_site_begin(sitename)

C#:

Annotate.SiteBegin(sitename);

並列タスクを開始します。複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトで実行する必要があります。

C/C++:

ANNOTATE_TASK_BEGIN(taskname);

Fortran:

call annotate_task_begin(taskname)

C#:

Annotate.TaskBegin(taskname);

並列タスクを終了します。複数のタスク、または非ループコードや複雑なループコード内のタスクを含む並列サイトで実行する必要があります。

C/C++:

ANNOTATE_TASK_END([taskname]);//taskname はオプションです

Fortran:

call annotate_task_end

C#:

Annotate.TaskEnd();

並列サイトを終了します。並列サイトは、サイト内で開始されたすべてのタスクが完了した後にのみ終了します。

C/C++:

ANNOTATE_SITE_END([sitename]);//sitename はオプションです

Fortran:

call annotate_site_end

C#:

Annotate.SiteEnd();

ロック・アノテーション: 同期の場所を示します。

ロックを取得します (0 は有効なアドレス)。並列サイト内で発生しなければなりません。

C/C++:

ANNOTATE_LOCK_ACQUIRE(pointer-expression);

Fortran:

call annotate_lock_acquire(address)

C#:

Annotate.LockAcquire([int expr]);

// この C# 引数はオプションです

ロックを解放します。並列サイト内で発生しなければなりません。

C/C++:

ANNOTATE_LOCK_RELEASE(pointer-expression);

Fortran:

call annotate_lock_release(address)

C#:

Annotate.LockRelease([int expr]);

// この C# 引数はオプションです

収集のポーズと収集の再開アノテーション: 注目しないコードをスキップするためデータ収集をポーズします。

収集のポーズ: ターゲットプログラムは実行を続けます。

C/C++:

ANNOTATE_DISABLE_COLLECTION_PUSH;

Fortran:

call annotate_disable_collection_push()

C#:

Annotate.DisableCollectionPush();

収集のポーズ・アノテーションで停止されている収集を再開します。

C/C++:

ANNOTATE_DISABLE_COLLECTION_POP;

Fortran:

call annotate_disable_collection_push()

C#:

Annotate.DisableCollectionPop();

特殊なアノテーション: 競合が誤検出されないように特定のメモリー割り当てを示したり、問題や解析のレポートを無効にしたり、またはメモリーアクセスのさらに詳しいレポートを有効にします。これらは依存関係ツールにのみ適用されます。構文に関しては、「特殊なアノテーション」のヘルプを参照してください。

関連情報