依存関係の問題とメッセージタイプのリファレンス

インテル® Advisor の依存関係解析は各種データ共有の問題を特定しメッセージを出力します。このリファレンス・セクションでは、これらの問題とメッセージについて説明し、回避方法を示します。

問題タイプ名 重要度と原因

ダングリング・ロック

エラー。タスクが終了する前にロックを解放しないと発生します。

データ通信

エラー。異なるタスクが読み取りを行う値にタスクが書き込みを行った際に発生します。並列コードへの移行前に問題を解決しないと、データ通信の問題はデータ競合を引き起こす可能性があります。

データ通信、子タスク

エラー。別のタスク (子タスク) が読み取りを行う値に、タスクが書き込みを行うと発生します。並列コードへの移行前に問題を解決しないと、データ通信の問題はデータ競合を引き起こす可能性があります。

一貫性のないロックの使用

警告。タスクの実行が、別のロックの制御下でメモリー位置に複数回アクセスすると発生します。

ロック階層違反

警告。2 つのタスク実行が異なる順番で 2 つ以上のロックを取得しようとすると発生します。プログラムが並列実行されるとデッドロックに繋がる可能性があります。

メモリー再利用

エラー。2 つのタスクが同じ共有メモリー位置に書き込みを行うと発生します。タスクは新しい値を変数に書き込みますが、先行するタスクによって書き込まれた値を読み取りません。並列コードへの移行前に問題を解決しないと、メモリー再利用の問題はデータ競合を引き起こす可能性があります。

メモリー再利用、子タスク

エラー。2 つのタスクが共有メモリー位置へ書き込みを行うと発生します。親タスクは、それ以前に実行された同じサイトの子タスクで読み取られた変数に新しい値を上書きします。並列コードへの移行前に問題を解決しないと、この子タスクでのメモリー再利用の問題はデータ競合を引き起こす可能性があります。

メモリー監視

リマーク。タスクがANNOTATE_OBSERVE_USESアノテーションでマークされたメモリーにアクセスすると発生します。この場合、問題は情報を示すだけでありアクションは必要ありません。これは、タスクの実行中に参照されるメモリー位置の使用を特定するのに役立ちます。

終了サイトがありません

エラー。サイト開始アノテーションが実行され、対応するサイト終了アノテーションが実行される前にスレッドやアプリケーションが終了すると発生します。

終了タスクがありません

エラー。タスク開始アノテーションが実行され、対応するタスク終了アノテーションが実行される前にサイト、スレッド、アプリケーションが終了すると発生します。

開始サイトがありません

エラー。サイト終了アノテーションが実行され、アクティブなサイトが存在しないと発生します。

開始タスクがありません

エラー。タスク終了アノテーションが実行されましたが、アクティブなタスクが存在しません。

並列サイトにタスクがありません

警告。並列サイトが実行されましたが、アクティブな並列サイトの動的エクステントでタスク・アノテーションが実行されていません。

並列サイトに 1 つのタスク

警告。並列サイトが実行されましたが、アクティブな並列サイトの動的エクステントで単一のタスク・インスタンスのみのアノテーションが実行されました。これは、予期された動作であるか、アノテーションの配置や並列処理に適していないデータセットに関するエラー示す可能性があります。

親なしタスク

エラー。アクティブな並列サイト外でタスク開始アノテーションが実行されると発生します。

並列サイト情報

リマーク。プログラムの並列サイトの入口で生成されます。これにより、プログラムとそのデータが、依存関係解析の実行中に挿入したアノテーションを実行していることを確認できます。この場合、メッセージは情報を示すだけであり、アクションは必要ありません。

スレッド情報

リマーク。この場合、メッセージは情報を示すだけであり、アクションは必要ありません。

未処理のアプリケーション例外

エラー。アプリケーション・プログラムをクラッシュさせる未処理の例外が検出されると発生します。