この資料の対象：ソフトウェア開発者
アプリケーションのパフォーマンス最適化に注目する開発者
 パフォーマンスのエキスパートである必要はなりません しかし、アプリケーション自体のことは熟知していることが前提ですインテル® Xeon Phi™ コード名 Knights Landing プラットフォー
ム向けに開発を行う
インテル® VTune™ Amplifier XE パフォーマンス・アナライザー
を使用する
 ここで紹介するパフォーマンスに関する情報は、他のツール（PTU など）にも適用できますが、ここではインテル® VTune™ Amplifier XE に注目します このガイドの最後のセクションでは、インテル® Advisor に関する情報を含んでいます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

このスライドの使い方
一度スライドを読み通して、データ収集時に再度見てください
パフォーマンス解析は、何度かの繰り返しで達成されることを忘れないでください
ソフトウェアの最適化は、以下を行ってから始めてください： 任意のコンパイラー最適化オプションを適用（/O2、/QxAVX2、/QxMIC-AVX512など）

 適切なワークロードを選択 基準となるパフォーマンスの測定

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® Xeon Phi™
コード名 Knights Landing (KNL) 上で
ソフトウェアをチューニングするため
インテル® VTune™ Amplifier XE を使用する
ソフトウェア & サービスグループ
Ver.1.1

Copyright© 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

内容
 インテル® Xeon Phi™ コード名 Knights Landing (KNL) の概要
 インテル® VTune™ Amplifier XE
 ソフトウェアの最適化ステップ
 リソースの利用状況をプロファイル
 問題のある現象を特定
 問題の場所を特定し、パフォーマンスを改善するため推奨策を試みる

 その他のチューニングの推奨事項
 インテル® Advisor

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Knights Landing の概要• Knights Landing は、Knights Corner に続く次世代インテル・メニー
コア製品です• 最初のセルフブート可能なインテル® Xeon Phi™ プロセッサーは、主要な IA 製品とバイナリー互換です• KNC を上回る劇的なスカラーとベクトル・パフォーマンスを提供します• パッケージ上にメモリーを統合しています: 高帯域幅で高容量の革新的なメモリー・アーキテクチャー• パッケージ上にファブリックを統合できます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Knights Landing の概要 (2)

タイル:
2 VPU
コア

MC
DRAM

MC
DRAM

OPIO

OPIO

D
D
R
4

2 x16
x4
1 x4
PCIE
gen3

D
M
I

1MB
L2

2 VPU
コア

MC
DRAM

MC
DRAM

•

72 コアの新しい Silvermont ベー
スコアと 36 個のタイル

OPIO

OPIO

•

コアあたり 4 つのハイパースレッド•

コアあたり 2 つのベクトル処理ユニット•

最大 386GB の 6 チャンネル
DDR4 2400•

8GB/16GB のパッケージ上のMCDRAM メモリー•36 レーン PCIE Gen 34 レーンの
DMI

D
D
R
4

36 タイル
タイルはメッシュと接続
OPIO

OPIO

OPIO

OPIO

MC
DRAM

MC
DRAM

MC
DRAM

MC
DRAM

パッケージ

CHA

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

6

KNL タイル:

2 VPU
コア

CHA
1MB
L2

2 VPU
コア

コア: KNC から KNL での変更インテル® マイクロアーキテクチャー・コード名
Silvermont (SLM) コアをベースに、多くの改善が行われています
重要なコア機能 2 ワイドコアのアウトオブオーダー: 72 のインフライト μops、4 スレッド / コア スレッドごとのバックツーバックのフェッチと発行
 32KB 命令キャッシュ、32KB データキャッシュ。データキャッシュの 2 x 64B ロード
ポート。SLM よりも大きな TLB
 L1 プリフェッチャー (IPP) と L2 プリフェッチャー。
 非アライメントとキャッシュライン分割の高速サポート。高速ギャザーとスキャッ
ターのサポート SLM に比べデータキャッシュと L2 間の 2 x BW: サイクルごとに 1 ラインリードと1/2 ラインのライト

2 VPU: 2x 512b ベクトル。32SP と 16DP。X87、SSE および EMU のサポート

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE
インテル® VTune™ Amplifier XE の機能：
 複数の収集タイプ
 ホットスポット 帯域幅

 イベント・ベース・サンプリング 全ての解析タイプを
タイムライン表示へ統合
 ソースとアセンブリー表示
 C/C++、Fortran、Java、
アセンブリー、.NET との互換性
 Visual Studio* への統合、コマンドラインでの利用、もしくはWindows® と Linux* 向けスタンドアロン・インターフェイスを利用

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

コマンドラインからのインテル® VTune™ Amplifier XE を実行
セルフブートする KNL マシン上に、amplxe-cl コマンドがインストールされていることを確認。詳細は、“amplxe-cl –help” コマンドで確認してください。
収集を行うには:ホットスポット:

amplxe-cl –collect advanced-hotspots –- myapp.out
General Exploration:
amplxe-cl –collect general-exploration –- myapp.out
メモリーアクセス:
amplxe-cl –collect memory-access –- myapp.out

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Advanced Hotspots 解析• OpenMP* 解析をサポート• スタックのサンプリングが有効化されています。しかし、呼び出しカウント(call count) とトリップカウント (trip count) はサポートされていません

インテル® Xeon Phi™ 製品では、トータ
ル・スレッド・カウントが非常に大きくなります。スレッド化はパフォーマンスには不可欠です

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Advanced Hotspots 解析
高度な OpenMP パ
フォーマンス解析

ホットな関数のリスト

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Advanced Hotspots 解析
粒度を変えるた
めグループ分けを調整します上位関数

100 個のOpenMP ス
レッドが確認できます
KNL ではオーバーヘッドは非常に重要ですCopyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

リソースの利用状況をプロファイル
Advanced Hotspots > Summary タブ

手動で Poor/OK/Good の分類を調整できます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ベクトル化の使用率
General Exploration > Summary タブ

VPU 利用率は、パックドとスカラー SIMD 命令を示します

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ベクトル化の使用率

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ホットスポットの特定
ホットスポットとは： アプリケーションが多くの時間を費やしている
コード中の場所

なぜ重要なのか： そこに最適化の労力を費やすべきです！
 アプリケーションの実行時間の 2% にしか満たない関数を改善する必要があるか？

どのように検出するか： インテル® VTune™ Amplifier XE の、"Advanced Hotspots" 解析タイプを利用 通常ホットスポットは、CPU_UNHALTED.THREAD イベント（別名"clockticks"）で定義されます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 1: リタイアしたパイプライン・スロットの比率（％）
なぜ重要なのか： アプリケーションがプロセッサーを使用する効率を理解するのに役立ちます

どのように検出するか： General Exploration プロファイルの測定基準：

Retiring

何を行うか：
 特定のホットスポットの場合：
 10 % 以上のパイプライン・
スロットがリタイアしている
場合、 チューニングオプションのその他の 3 つの上位レベルの測定基準を調査します

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率法 2: 命令あたりのサイクル数（CPI）の変化
なぜ重要なのか： 2 つのデータセットを比較する際に役立つ、もう一つの効率の尺度
 アプリケーションのワークロードの 1 部を実行する命令の平均クロックを表示します

どのように検出するか： General Exploration プロファイルの測定基準：

CPI Rate

何を行うか：
 CPI は、アプリケーションとプラットフォームに依存し大きく変化します コードサイズが変わらない
なら、最適化では CPI を減らすことに注目すべきです

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

主なボトルネックを特定
コードが非効率であるかどうかを調べるため、方法の 1 もしくは 2 を適用している場合、最初に主要なボトルネックを見つけます
General Exploration で実装されるトップダウンの階層は、アプリケー
ションの利用率を CPU コアの 4 つのカテゴリーに分類します：
 フロントエンド依存 バックエンド依存 投機の問題 リタイア

主要なボトルネックは、パイプラインの断片化が高く、最初に調査しなければいけません
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

問題の分類
パイプライン・スロットは、抽象的なコンセプトであり、1 つのマイクロオペレー
ションを操作するために必要なハードウェアのリソースを表します
このプロセッサーでは、各コアごとに各サイクルで 2 つのパイプライン・スロッ
トがありますアプリケーションやホットスポットで利用可能な各パイプライン・スロットで何が起こっているかに応じて、パフォーマンスは分類されます
μop は割り当てら
れたか?

Yes

No
バックエンドμop はリタイ

はストールし

アしたか?

Yes

No

リタイア

投機の問題

Yes

ているか?

No

バックエンド

フロントエンド

依存

依存

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

"ハードウェア上のソフトウェア" のチューニング手順
各ホットスポットで
 効率を判断
 もし十分でなければ：– 主なボトルネックを特定– 非効率であるアーキテクチャー上の理由を見つけます– 問題を最適化します

繰り返します!

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
カテゴリーは階層的な測定基準に展開されます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
フロントエンド依存
ICache Misses (命令キャッシュミス)
説明:
命令キャッシュ (ICache) からの命令のフェッチミスは、パイプライン・ストールの原因となります。これは、頻繁に分岐するコードや、コンパイラーによる不適切な
コード配置の結果生じます式：
命令キャッシュミス =(FETCH_STALL.ICACHE_FILL_PENDING_CYCLES/INST_RETIRED.ANY)

しきい値：
0.1 より大きければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
投機の問題
Branch Mispredict (分岐予測ミス)
説明:
分岐ターゲットの予測ミスは、不適切なコードパスであるため、プロセッサーはリタイア
しない命令を実行することになります。これは無駄なワークであり、最小化すべきです式：
分岐予測ミス =(2 * NO_ALLOC_CYCLES.MISPREDICTS)/(2 * CPU_CLK_UNHALTED.THREAD)

しきい値：
0.05 より大きければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
バックエンド依存
L2 Hit Rate (L2 ヒット率)
説明:
L2 は、DRAM や MCDRAM メモリー階層の手前にある、最後の、そして最も長いレイ
テンシーのレベルです。この測定基準は、L2 へのすべてのロード要求に対して、L2にヒットして処理された要求の比率を示します。この測定基準には、命令のフェッチは含まれません式：
L2 率 =(MEM_UOPS_RETIRED.L2_HIT_LOADS_PS)/(MEM_UOPS_RETIRED.L2_HIT_LOADS_PS + MEM_UOPS_RETIRED.L2_MISS_LOADS_PS)

しきい値：
0.80 より小さければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
バックエンド依存
L2 Hit (L2 ヒット)
説明:
L2 は、DRAM や MCDRAM メモリー階層の手前にある、最後の、そして最も長いレ
イテンシーのレベルです。L2 にヒットすると DRAM にヒットするよりもはるかに高速に処理されますが、まだパフォーマンス上重要なペナルティーを被ります。この測定基準は、総サイクル数に対して ロード要求で L2 でヒットした処理に費やされたサイクル数の比率を示します

式：
L2 ヒット・ペナルティー = (17 * MEM_UOPS_RETIRED.L2_HIT_LOADS_PS /CPU_CLK_UNHALTED.THREAD )しきい値：
0.10 より大きければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
バックエンド依存
L2 Miss (L2 ミス)
説明:
L2 は、メインメモリー (DRAM) と MCDRAM メモリー階層の手前にある、最後の、そして最も長いレイテンシーのレベルです。この階層でのメモリー要求ミスは、レイテ
ンシーの長い DRAM や MCDRAM によって処理されます。L2 ミス測定基準は、総サイクル数に対して ロード要求で L2 でミスした処理に費やされたサイクル数の比率を示します式：
L2 ミス・ペナルティー = (230*MEM_UOPS_RETIRED.L2_MISS_LOADS_PS /CPU_CLK_UNHALTED.THREAD)

しきい値：
0.15 より大きければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
リタイア
VPU Utilization (VPU 使用率)
説明:
この測定基準は、すべてのベクトル長とマスクによるパックドのベクトル演算を実行する μops を計測します。VPU 使用率の測定基準は、VPU の使用率とコンパイ
ラーがコードをどのように判断したか理解するのに役立つコンパイラーのベクトル化レポートに関連しています。この測定基準には、整数のパックド SIMD μops が含
まれますが、ロードとストアはカウントされません。また、この測定基準は、マスク操作を伴う μop や μop のベクトル長を考慮しません

式：
ベクトル VPU 計算の比率 = (UOPS_RETIRED.PACKED_SIMD)/(UOPS_RETIRED.PACKED_SIMD + UOPS_RETIRED.SCALAR_SIMD)

しきい値：
0.5 より小さければ調査
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
リタイア
Divider (除算器)
説明:
すべての算術演算が同じ時間で完了するわけではありません。除算と平方根はDIV ユニットで実行され、整数や浮動小数点の加算、減算、または乗算よりも長い時間が掛かります。この測定基準は、DIV ユニットがアクティブであった総サイク
ルとの比率を計測します。この測定基準は、整数除算、x87 除算、divss、divsd、sqrtss、および sqrsd のみをカウントします式：
Divider = (CYCLES_DIV_BUSY.ALL)/ (CPU_CLK_UNHALTED.THREAD)

しきい値：
0.05 より大きければ調査

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

General Exploration 解析
リタイア
FP Assists (FP アシスト)
説明:
特定の浮動小数点命令は実行パイプラインで直接実行できないため、マイクロ
コードで実行する必要があります (小さなプログラムを実行ストリームへ投入します)。例えば、非常に小さな浮動小数点値を操作する場合 (デノーマルと呼ばれます)、浮動小数点ユニットはこの操作をネイティブで行うことができません。代わりに、デノーマル値の計算を行う命令のシーケンスが、パイプラインに投入されます。
これらのマイクロコード・シーケンスは数百の命令で構成されるため、マイクロコー
ド・アシストはパフォーマンス上有害です。この測定基準は、FP アシスト以外にゼロへのフラッシュ (FTZ) などをカウントします式：
FP アシスト = (MACHINE_CLEARS.FP_ASSIST)/ (INST_RETIRED.ANY)

しきい値：
0.05 より大きければ調査
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

その他のトピック:
Metric Reliability (測定基準の信頼性)

グレー表示された測定基準は、グリッド内の各値の信頼性が高くないことを示しています

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

メモリー・アクセス解析• MCDRAM と DDR の両方で個別の帯域幅に関する情報を提供します• インテル® VTune™ Amplifier XE は、クラスターモードとメモリーモードのシステム構成をまだ検出することができません。そのため、キャッシュとフラットモード両方の帯域幅が表示されます。ユーザーは、システムの構成に応じて適切なデータを選択する必要があります

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

メモリー・アクセス解析• フラットモード•

開発者は、データ構造を MCDRAM と DDR のどちらに格納するか、明示的に制御することができます•

これには、コードの変更が必要です。デフォルトでは DDR が選択されます• キャシュモード
•コード修正の必要なし。ハードウェアは、L1 と L2、そして MCDRAM をキャッシュとして使用します•MCDRAM キャッシュに格納されるデータは、頻繁に再利用されることでパフォー
マンスの利点が得られます•

MCDRAM キャッシュでミスが発生すると DDR を参照するため、平均 L2 ミスのレ
イテンシーは長くなります•

複数のページが MCDRAM キャッシュの同じラインにマッピングされていると、エイリアスの問題が生じます。非決定論的 (反復不可能)•

ストリーミング・ストアは悪影響を受けます。帯域幅は低下すると予測されます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

メモリー・アクセス解析 (2)MCDRAM がキャッシュとして設定されている場合、MCDRAM ヒット率が適用されます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

メモリー・アクセス解析 (3)

調査対象の領域にズームしてフィル
ター操作を行います

MCDRAM のフラット、もしくはキャッシュモードを選択します

ソースコード・レベ
ルのメモリー情報

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

MCDRAM へ配置されるオブジェクトを特定

MCDRAM の帯域幅使用率が最も高い領域にデータを配置します

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

KNL クラスターモードのパフォーマンス・チューニング
4 分割クラスターモード (Quadrant cluster mode)••

この構成は、4 分割境界を交差するトラフィックが少なくなる、メッシュ上で利用可能な帯域幅を向上させることが可能です。一般に全体全モードよりも優れたパフォーマンスが期待されますが、すべての DDR チャンネルを同じ構成にする必要があります
サブ NUMA クラスターモード (SNC4)••

このモードは、チップ上で実行されるスレッドをグループ化し、タイルの分割をアフィニティー制御して、固有のデータにアクセスすることを想定します。単一のデータ構造体や配列は、通常 MCDRAM
チャンネルのペア、もしくは DDR チャンネルの半分にマッピングされます。そのため、すべてのチャンネルに均一に分散されないため、構造体へのアクセス可能な帯域幅は 4 分割モードの帯域幅よりも小さくなります。これは望ましくないように思われますが、チップが複数の MPI ランクや複数のプロセスを実行する場合、このモードの総帯域幅が最も高くなる可能性があることに留意してください。
ローカル・クラスター・ノードで利用可能なメモリー容量を上回るメモリーを割り当てようとすると、上回るメモリーは別のクラスターに割り当てられることに注意してください。これは、予期されることであり、例外やエラーが発生することはありません

全対全 (ALL TO ALL) のクラスターモード••

このモードはパフォーマンスの観点で利用されることは稀です。これは、非対称もしくは不規則なシ
ステムのフォールバック・モードです

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

HPC パフォーマンス特性
2 つの特性に関する測定基準
 経過時間 GFLOPｓ の上限依存*
3 つのパフォーマンス
 CPU 使用率
 メモリー依存 FPU 使用率の上限** 完全なベクトル化を前提として、FLOP HW カウンターをベースに計算

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

HPC パフォーマンス特性
CPU 使用率 プロファイル中のアプリケーションによる、“有効な” な CPU 使用率の % (しきい値90%) アプリケーションがノード上で利用可能なすべてのコアを使用することを前提としています MPI やスレッド化ランタイム中で費やされるスピンやオーバーヘッド時間を差し引きます

CPU 使用率の測定基準
 平均 CPU 使用率 有効な CPU 使用率に影響する追加の MPIと OpenMP スケーラビリティー測定基準 CPU 使用率ヒストグラム

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

HPC パフォーマンス特性
メモリー依存の測定基準
 L2 ヒット依存
 L2 で処理される L1 ミスのコスト
 L2 ミス依存

 L2 ミスのコスト
 MCDRAM 帯域幅依存
 アプリケーションの経過時間で、髙い
MCDRAM 帯域幅を消費する割合 (%)
 MCDRAM 帯域幅依存
 アプリケーションの経過時間で、髙い
MCDRAM 帯域幅を消費する割合 (%)
 帯域幅使用率のヒストグラム

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

HPC パフォーマンス特性
FPU 使用率の上限
 FPU 負荷の比率 (%) (FPU に完全に負荷がかかっている場合は 100%、しきい値は 50%)

FPU 使用率の測定基準
 スカラーとパックドに GFLOPs を細分化
 FPU 使用率による上位 5 つのループ/関数 低い FPU 使用率に対して動的に生成された問題の説明は、その原因と次のステップを決定するのに役立ちます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE のヒント
• インテル® VTune™ Amplifier XE のファイナライズ:•

ファイナライズは、KNL では非常に低速です。 Xeon 上でファイナライズします•

自動ファイナライズを無効にします: -no-auto-finalize• 大量の生データが収集されます:•

次の方法により、アプリケーションの実行時間を正しく選択します:-target-duration-type=<veryshort/short/medium/long>•

必要であればデフォルトのデータの上限値を変更します• パワー・スロットリング:•

CPU の周波数比率に注目します。実行中にこの比率が大きく変化する場合、ス
ロットリングやターボによる影響があると考えられます

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® VTune™ Amplifier XE のヒント
(続き)
• イベントの多重化:•

KNC と同様に、KNL には汎用カウンターは 2 つしかありません。そのため、多くのイベントを収集する場合、データは統計的に正しくない可能性があります•

想定されるターゲットの実行時間 (duration estimate time) を変更するか、複数回実行を許可してください

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

インテル® Advisor でベクトル化を促進
インテル® Advisor には、既存のベクトル化済みコードを解析し、ベクトル化を改善するガイドを提供する新機能が追加されています
1.コンパイラーの診断 + パフォーマンス・デー
タ + SIMD の効率情報

2.ガイド: 問題を特定し、解決方法を推奨

3.“正確な” トリップカウント + FLOPs: 利用率、並列性の粒度とオーバーヘッドを理解する
4.ループ伝搬依存の解析
5.メモリー・アクセス・パターンの解析

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

Survey 解析• Sort – 最もホットなベクトル化済み
ループを参照• Efficiency – パフォーマンス計として使用• Recommendations – パフォーマンスを改善するヒントを取得

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

サマリー表示: 次の手順の計画得られるゲインの期待値

どこから始めるか

49
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

効率に影響する要因
1.A間接メモリーアクセス

3.ベクトル長の倍数ではない、小さなルー
プカウント
void doit(int *a, int *b, int
unknown_small_value){
for(int i = 0; i <unknown_small_value; i++)a[i] = z*b[i];}for (i=0; i<N; i++)A[B[i]] = C[i]*D[i]1.B メモリー・サブシステムのレイテンシー/
スループット4.分岐が多い、外部ループ対内部ループ

void scale(int *a, int *b){for (int i = 0; i < VERY_BIG; i++)c[i] = z * a[i][j];b[i] = z * a[i];}for(i = 0; i <= MAX; i++) {if ( D[i] < N)
do_this(D);else if (D[i] > M)
do_that();//...
}2.関数呼び出しをシリアル化するか部
分的に最適化for (i = 1; i < nx; i++) {sumx = sumx +serialized_func_call(x, y, xp);}

5.その他: スピルとフィル、FP 精度のトレードオフ、
FMA、DIV/SQRT、アンロールなど

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ベクトル化しても安全かチェックする
ループ伝搬依存性解析は正当性を検証

依存性解析を行うループを選択してボタンをクリック !

ベクトルの依存関係はベクトル化を妨げる !

51
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ベクトル化を改善
メモリー・アクセス・パターン解析

解析するループを選択

メモリー・アクセス・パターン解析を実行し、ループと呼び出す関数でどのようにメモリーがアクセスされているかをチェック

52
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

メモリーアクセスは重要
帯域幅やレイテンシーの問題の可能性を調査

53
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

KNL 固有の AVX-512
1. KNL 上のネイティブ AVX-512 プロファイル
2. 正確な FLOPS とマスク利用率プロファイラー
3. AVX-512 アドバイスと特性
4. AVX-512 ギャザー/スキャッター・プロファイラー

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

KNL、AVX-512 のベクトル化アドバイザー
KNL アプリケーションを解析する方法は、インテル® Advisor のチュー
トリアルとドキュメントを参照してください
AVX-512 ERI – インテル® Xeon Phi 固有

効率 (72%), スピードアップ (11.5x), ベクトル長 (16)

パフォーマンス最適化の問題と解決方法をアドバイス

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

ありがとうございます！
より詳しい情報について:インテル® VTune™ Amplifier XE 向けビデオ、フォーラムおよびリソース:
http://www.isus.jp/intel-vtune-amplifier-xe/
インテル® 64 アーキテクチャーおよび IA-32 アーキテクチャー・ソフトウェア開発者マニュアル:
http://www.intel.com/products/processor/manuals/index.htm
他のマイクロ・アーキテクチャー向けのインテル® VTune™ Amplifier XE のチューニ
ング・ガイド:http://software.intel.com/en-us/articles/processorspecific-performance-analysis-papers

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

法務的な免責事項
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商品適格性、あらゆる特許権、著作権、その他知的財産権の非侵害性への保証を含む) に関してもいかなる責任も負いません。

インテルによる書面での合意がない限り、インテル製品は、その欠陥や故障によって人身事故が発生するようなアプリケーションでの使用を想定した設計は行われていません。
インテル製品は、予告なく仕様や説明が変更されることがあります。機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。この情報は予告なく変更されることがあります。この情報だけに基づいて設計を最終的なものとしないでください。
本書で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
最新の仕様をご希望の場合や製品をご注文の場合は、お近くのインテルの営業所または販売代理店にお問い合わせください。
本資料で紹介されている資料番号付きのドキュメントや、インテルのその他の資料を入手するには、1-800-548-4725 (アメリカ合衆国) までご連絡いただく
か、インテルの Web サイトを参照してください。
インテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) には、インテル® HT テクノロジー対応のインテル® プロセッサー、チップセッ
ト、BIOS、およびオペレーティング・システム (OS) を搭載したコンピューター・システムが必要です。パフォーマンスは、ご使用のハードウェアおよびソフト
ウェアによって異なる場合があります。プロセッサーによってサポートされる HT テクノロジーの詳細を含む情報は、こちらをご覧ください。
インテル® バーチャリゼーション・テクノロジーには、インテル® プロセッサー、BIOS、仮想マシンモニター (VMM) が有効なコンピューター・システムが必要です。機能性、性能もしくはその他のバーチャライゼーション・テクノロジーの特長は、使用するハードウェアやソフトウェアの構成によって異なり、BIOS の更新が必要になる可能性があります。ご利用になる OS によっては、ソフトウェア・アプリケーションとの互換性がない場合があります。詳細については、アプリ
ケーションの開発元にお問い合わせください。
インテル・アーキテクチャー上の 64 ビット・コンピューティングには、インテル® 64 アーキテクチャー向けのプロセッサー、チップセット、BIOS、オペレーティ
ング・システム、デバイスドライバー、アプリケーションとコンピューター・システムが必要です。パフォーマンスは、使用するハードウェアおよびソフトウェアによって異なる場合があります。詳細については、システムベンダーにお問い合わせください。
インテル® ターボ・ブースト・テクノロジーを利用するには、同テクノロジーに対応したプロセッサーを搭載したシステムが必要です。インテル® ターボ・ブー
スト・テクノロジーのパフォーマンスは、ハードウェア、ソフトウェア、およびシステム全体の構成によって異なります。利用するシステムがインテル® ターボ・
ブースト・テクノロジーをサポートしているかどうかは、PC の製造元にお問い合わせください。詳細は、 http://www.intel.com/technology/turboboost を参照ください。
Intel、インテル、Intel ロゴ、Look Inside、Look Inside ロゴは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標または登録商標です。
*その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2014 Intel Corporation.
Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項

最適化に関する注意事項
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令
2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張
命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルは、他社
製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マ
イクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。
改訂 #20110804

Copyright © 2016, Intel Corporation.無断での引用、転載を禁じます。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項