インテル® Advisor
2016.03.11
|
ベクトル化、スレッド化のプロトタイプを作成し、パフォーマンス向上を支援
- コードのベクトル化とスレッド化は、パフォーマンス向上の鍵となります
- 簡単なワークフロー、データ、ヒントで、さらに高速化
- 優先順位付け、プロトタイプ作成、そしてパフォーマンスの向上を予測
|
関連記事
リソース
FAQ
すべて開く
すべて閉じる
よくある問い合わせ
-
インテル® Advisor は、どのように Fortran、C そして C++ (ネイティブ/マネージド) アプリケーションが、今日のプロセッサーのパフォーマンス上の利点を最大限に活用するのを支援してくれますか?
インテル® Advisor 2016 は 2 つのツールを提供します: ベクトル化アドバイザーとスレッド化アドバイザー。ベクトル化アドバイザーは、ベクトル化により恩恵を得られるループを特定し、効率良いベクトル化を妨げる原因を特定し、代替のデータ再構成を探し出し、そしてベクトル化の安全性を高めるツールです。スレッド化アドバイザーは、通常の開発作業を中断することなくスレッドの解析、チューニング、設計のチェックを可能にするスレッドの設計とプロトタイプ化ツールです。
-
インテル® Advisor を開始するには?
さまざまな習得スタイルに対応するため、各種ツールを提供します。
利用可能な解析タイプ、前提条件 (適切なアプリケーションのビルド方法)、環境設定、生産性を高める利用シナリオ、注目すべき場所のヒント、トラブルシューティング情報、そのほかのドキュメント・リソースの詳細については、「インテル® Advisor 導入ガイド」をご覧ください。
各種ビデオ、チュートリアル、オンライン・トレーニングなどについては、サポート/トレーニングタブをご覧ください。
-
インテル® Advisor のサポートとフィードバックはどのように行われますか?
ベクトル化アドバイザー
-
ベクトル化アドバイザーは、シリアルとマルチスレッド・バイナリーの両方を実行できますか?
はい。スレッド化アドバイザーとは異なり、ベクトル化アドバイザーはシリアルとマルチスレッド・バイナリーで任意に動作します。
-
ベクトル化アドバイザーを使用するにはアノテーションは必須ですか?
いいえ。スレッド化アドバイザーとは異なり、ベクトル化アドバイザーはコードを変更することなく解析を行うことができます。サーベイレポート中のチェックボックスを使用して詳しく調査するループを選択します。
注: 最初にアプリケーションのサーベイを行っていない場合、依存性と (もしくは) メモリー・アクセス・パターン (MAP) 解析を実行する場合ソースにアノテーションを追加する必要があります。
-
ベクトル化アドバイザーの実行時間を減らすにはどうしたらいいですか?
サーベイ解析は貫入型ではないため、アプリケーションの実行時間を大きく低下させることはありません。しかし、依存性とメモリー・アクセス・パターン (MAP) 解析ではオーバーヘッドが大きくなります。アプリケーション実行時間の低下に対応するには、いくつかの方法があります。
例えば、ワークロードを減らすのもその 1 つです。アプリケーションにどのように依存するか: 少ないデータを処理する、計算を簡単にするなど。
もしくは、サーベイとほかの解析に異なる Project Properties 設定を使用します。デフォルトでは、サーベイ解析の設定のみで十分ですが、コマンドラインの引数でワークロードを制御する場合、異なる解析タイプごとにコマンドライン設定を準備することができます。
もしくは、詳細な解析向けに選択したループの回数を減らします。
または、解析中に Refinement Reports ウィンドウを見て、VECTORIZATION WORKFLOW の Stop ボタンを押して、対象となるループが終了したら解析を中断できます。
-
ベクトル化アドバイザーは、どのようにサーベイ、ループ回数、そしてメモリー・アクセス・パターン (MAP) 解析の結果をファイルレベルで関連付けるのですか?
ベクトル化アドバイザーは、結果のバージョンを複雑な構造で管理します。すべての解析結果は、experiment フォルダーに保存されます。通常、それは e000 と呼ばれます。基本となる解析タイプはサーベイです。そのほかすべての解析タイプはサーベイ解析の結果に依存しますが、お互いに依存するわけではありません。異なる解析タイプは、ターゲット・アプリケーションのバイナリーアドレスでマッチングされます。
これは、より詳細な解析 (依存性や MAP) 向けにサーベイレポートでループを選択した場合、ループはバイナリーのアドレスで識別されることを意味します。サーベイと依存性/MAP 解析中にバイナリーを変更 (再ビルド) すると、連携が失われ不正な結果を報告します。ループ回数のカウントでも同様です。そのため、バイナリーを変更した場合、ほかの解析タイプを実行する前にサーベイ解析を行ってください。
スレッド化アドバイザー
-
スレッド化アドバイザーは、シリアルとマルチスレッド・バイナリーで実行できますか?
いいえ。シリアルとマルチスレッドの両方のバイナリーで任意に動作するベクトル化アドバイザーとは異なり、スレッド化アドバイザーは、特に Suitability (適合性) 解析といくつかの依存性解析では、シリアルバイナリーでのみ動作します。
注意: OpenMP* バイナリーは、-qopenmp-stubs (Linux*) 、/Qopenmp-stub (Windows*) オプションで再コンパイルすることでマルチスレッド・バイナリーをシリアルに変換できます。
-
スレッド化アドバイザーを使用するにはアノテーションは必須ですか?
一般的に言うと、必要です。アノテーションは、スレッド化アドバイザーにスレッドの設計を伝達する簡潔な方法です。これにより、スレッド化アドバイザーは設計を評価して、パフォーマンスのゲインを予測し、同期の問題を特定できるようになります。
良いニュース: アノテーションをコンパイラーは無視するため、コードの振る舞いを変えることはありません。通常の開発業務とテストを行いながら、いくつかのスレッドの設計を評価する際に、スレッド化のエラーに遭遇したり、テストケースを無駄にしないことを確認できます。
インテル® Advisor (ベクトル化アドバイザーとスレッド化アドバイザーの両方)
-
コマンドラインでインテル® Advisor を実行するにはどうすればいいですか?
コマンドラインと MPI をご覧ください。また、WORKFLOW ペインにある Command Line リンクから、解析タイプとプロジェクト設定向けのコマンドラインを生成できます。
-
インテル® Advisor でMPI アプリケーションを実行するにはどうすればいいですか?
-
インテル® Advisor の結果はどのように保存できますか?
デフォルトでは、インテル® Advisor は最新の結果のみを保存します。つまり、サーベイ解析 (またはほかの解析) を 2 度行った場合、最新の結果のみを表示でき、以前の結果に戻す方法はありません。Snapshot (カメラ) アイコンを使用して、手動でインテル® Advisor の結果を読み込みのみ可能形式で experiment フォルダーに保存でき、いつでも参照できます。新しい Snapshot 機能は以前の Snapshot を上書きしません。Project Navigator を使用して Snapshot にアクセスできます。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。