インテル® Advisor は次のような状況で役立ちます。
プログラムが時間を費やしている位置を特定することで、並列処理を追加する場所を見つけます。並列サイトとタスクにアノテーションを追加して、並列コード領域の候補を提案します。
提案した並列コード領域で達成可能なパフォーマンスを予測します。
また、提案した並列コード領域で発生する可能性のあるデータ共有問題を予測します。
インテル® Advisor はすべての問題を検出できません。また、並列処理が正しく実装されているかどうか保証できません。並列プログラムをリリースする前に、依存関係とパフォーマンスを検証する必要があります。これを行うため、インテル® oneAPI ベース・ツールキット、およびインテル® oneAPI HPC ツールキットに含まれる解析ツールを使用できます。
インテル® Inspector (英語) で提供されるスレッドエラー解析は、インテル® Advisor の依存関係ツールと同様のテクノロジーを使用しています。インテル® Inspector には、並列コードで発生するデータ競合とデッドロックの検出機能も含まれます。インテル® Advisor の依存関係ツールで解析されるアノテーション付きのシリアルコードではなく、実際の並列コードを使用するためさらに多くのエラーを検出できます。インテル® Inspector は、メモリーリーク、解放されたストレージの参照、初期化されていないメモリーの参照など、メモリーの問題も検出できます。メモリー・チェック・ツールは、シリアルと並列コードで動作します。
同様に、インテル® Advisor のサーベイとスータビリティー・ツールは、インテル® VTune™ プロファイラーで見られるような機能を提供します。サーベイツールはプログラムのホットスポットを検出するためプロファイルを行い、スータビリティー・ツールは、インテル® Advisor のアノテーションをベースとするオーバーヘッド・コストを含む並列パフォーマンスの概算を予測します。並列プログラムの動作を確認したら、インテル® VTune™ プロファイラーを使用して並列パフォーマンス・ゲインとコアの使用率を測定し、並列フレームワークのオーバーヘッドが許容範囲内かどうかチェックすべきです。
並列コードが実装されたら、次を行います。
スピードアップを測定。
ロックが過度の遅延を引き起こしている場合、またはあるタスクの実行時間がほかのタスクよりも長い場合、調整する必要があります。
インテル® VTune™ プロファイラーは、並列コードのパフォーマンスの問題を検出して、解決するのを支援する多くの機能を備えています。以下をチェックするのにも役立ちます。
現在のホットスポットの場所は?
並列処理の可能性を見逃していないか ?
プログラムが待機に時間を費やしていないか ?
以前のバージョンとのパフォーマンスの違いは?
もう一つの手法は、デバッガ―を使用して並列プログラムのシリアルバージョンを、並列構造とは逆の順番でデバッグします (並列プログラムのデバッグを参照)。