インテル® Xeon® プロセッサー上で要件の厳しいワークロードのパフォーマンスを向上する
iSUS 編集部
https://software.intel.com/en-us/videos/increase-performance-for-demanding-workloads-on-xeon-processors

ハードウェアの変化はソフトウェア開発に影響する
コア数の増加とベクトルレジスター幅の拡大は、より多くのスレッドとさらなるパフォーマンスを意味する!
… しかし、それらのコアとレジスターを利用するようにソフトウェアを記述する必要がある
より多くのスレッドはさらなるスピードアップの可能性を意味する

インテル®
Xeon®
プロセッサー

64 ビット

5100
番台

5500
番台

5600
番台

E5-2600

E5-2600
v2

E5-2600
v3

E5-2600
v4

Platinum
8180

コア

1

2

4

6

8

12

18

22

28

スレッド

2

2

8

12

16

24

36

44

56

SIMD 幅

128

128

128

128

256

256

256

256

512

© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

2

本日の内容最適化 101
スレッド化
パイプラインアーキテクチャー・チューニング
ベクトル化© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

3

最適化 101• 適切なオプションを指定してコンパイラーによる最適化を利用
Linux*

Windows*

説明-xCORE-AVX512/QxCORE-AVX512

インテル® Xeon® スケーラブル・プロセッサー向けに最適化 (インテル® AVX-512 を含む)

-xCOMMON-AVX512/QxCOMMON-AVX512

上記のオプションで期待したスピードアップが得られない場合に使用するオプション

-fma

/Qfma

FMA (Fused Multiply-Add) 命令を有効にする (注: 丸めに影響!)

-O2

/O2

速度を最適化 (デフォルトで有効)

-g

/Zi

パフォーマンス・プロファイル・ツールで使用するデバッグ情報を生成• インテル® マス・カーネル・ライブラリー (インテル® MKL) などの最適化されたライブラリーを使用
線形代数

高速フーリエ変換• BLAS• LAPACK• ScaLAPACK• スパース BLAS
• スパースソルバー• 反復法• PARDISO• クラスター・スパース・ソルバー• 多次元• FFTW インターフェイス• クラスター FFT

ベクトル演算• 三角関数
• 双曲線
• 指数
• 対数
• 累乗
• 累乗根
• ベクトル RNG

サマリー統計• 尖度• 変化係数• 順序統計量• 最小/最大• 分散/共分散

ディープ・ニューラ
ル・ネットワーク• 畳み込み• プーリング• 正規化• ReLU• ソフトマックス© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

その他• スプライン• 補間• 信頼領域• 高速ポアソンソルバー

4インテル® Advisor によるスレッド化• [サーベイ] で合計時間が大きいループ/関数に注目してスレッド化により大きな利点が得られる領域を見つける• コードにアノテーションを追加して、インテル® Advisor にスレッド化とロックのシミュレーションを指示する• スータビリティー解析 (適合性解析) でスレッド化のパフォーマンスを予測して、依存性解析でスレッド化により生じる可能性がある正当性の問題を特定する
期待されるプログラムのス
ピードアップ

各 CPU 数での並列領域のスケーリング© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

仮想環境の
詳細を設定

再度解析を
実行せずに並列
タスクの数や期間を変更して
その影響を
検証可能

5

インテル® VTune™ Amplifier によるスレッド化の最適化• インテル® VTune™ Amplifier のコンカレンシー
解析でプログラムがスレッドを効率良く使用しているか確認する

粗粒度のロック• 特にタイムラインでは、各スレッドがアクティビ
ティー別に色分けして表示される• 粗粒度のロックは、2 つのスレッドが同時に実行していないため、効率良いシングルスレッド・プ
ログラムであることを示している

スレッド・インバランス• スレッド・インバランスは、常にすべてのスレッドを使用していない状況を指す• ロック競合は、スレッドが実際の作業ではなくス
ワッピングに多くの時間を費やしていることを意味する

ロック競合が頻繁に発生• ロックと待機の解析によりさらに詳しく調査することができる© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

6

μop パイプラインとは?
• 命令の実行は複数のステップから成る
μop
μop6
1
2
5
3
4
フェッチ

デコード

実行

メモリーアクセス

ライトバック• 近年の CPU は 1 つの命令のすべてのステップを実行してから次の命令を開始する代わりに、複数の命令をパイプラインで処理する
命令 1
命令 2
命令 3
命令 4
命令 5
命令 6

フェッチ

デコード
フェッチ

実行
デコード
フェッチ

サイクル 1サイクル 2サイクル 3

メモリーアクセス
ライトバック実行
メモリーアクセス
ライトバック
デコード
実行
メモリーアクセス
フェッチ
デコード
実行
フェッチ
デコード
フェッチ
サイクル 4サイクル 5サイクル 6• パイプラインは 2 つのセクションに分割することができる• フロントエンドは命令のフェッチ、デコード、割り当てを行う• バックエンドは μop を実行して、完了したらその μop は “リタイアした” と見なされる• パイプライン・スロットは μop の処理に必要なハードウェアの抽象的表現• 1 サイクルごとにフロントエンドが割り当て可能な μop とバックエンドがリタイアできる μop は限られており、これによりパイプライン・スロットの数が決まる (一般に 4 つ)© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

7

パイプライン・スロットの分類

μop は
割り当て
済みか?

• パイプライン・スロットは μop に対してどのような処理を行うかに基づいてサイクルごとに 4 つのカテゴリーに分類される
•
•

•
リタイア
不正なスペキュレーション •バックエンド依存
フロントエンド依存• 各カテゴリーには適切にチューニングされたアプリケーションにおいて想定される値の範囲がある
アプリケーション・
タイプ
カテゴリー

はい

いいえ

μop は
リタイア
したか?
はい
リタイア

バックエンド・
ストール?
いいえ

不正な
スペキュレー
ション

はい

いいえ

バックエンド依存

フロントエンド
依存

クライアント/デスクトップ

サーバー/データベース/
分散

ハイパフォーマンス・
コンピューティング

リタイア

20-50%

10-30%

30-70%

不正なスペキュレーション

5-10%

5-10%

1-5%

フロントエンド依存

5-10%10-25%

5-10%

バックエンド依存

20-40%

20-60%

20-40%© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

8

パイプライン・スロットの分類: リタイア
• できるだけ多くのスロットがこのカテゴリーになるようにする (ただし、このカテゴリーであってもさらに最適化できることがある)
フロントエンド

バックエンド実行ユニット

リタイアメント

命令の並べ替えと実行

結果をメモリーへ
書き込む

μop
μop
μop
μop
フェッチとデコード
命令、分岐予測© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

9パイプライン・スロットの分類: 不正なスペキュレーション• 分岐予測ミスによるキャンセルなどにより、μop がリタイアせずにバックエンドから削除 (キャンセル) された場合
フロントエンド

バックエンド実行ユニット

リタイアメント

命令の並べ替えと実行

結果をメモリーへ
書き込む

μop
μop
μop
μop
フェッチとデコード
命令、分岐予測© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

10パイプライン・スロットの分類: バックエンド依存• バックエンドにデータや長い実行を待機中の μop が含まれているため、フロントエンドが μop を供給しても、バックエンドがそれを受け取ることができない場合
フロントエンド

バックエンド実行ユニット

リタイアメント

命令の並べ替えと実行

結果をメモリーへ
書き込む

μop
μop
μop
μop
フェッチとデコード
命令、分岐予測© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

11パイプライン・スロットの分類: フロントエンド依存• バックエンドは μop を受け取る準備ができているが、コードのフェッチや命令のデーコードの遅延によりフロントエンドが μop を供給できない場合
フロントエンド

バックエンド実行ユニット

リタイアメント

命令の並べ替えと実行

結果をメモリーへ
書き込む

μop
μop
フェッチとデコード
命令、分岐予測© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

12チューニング・プロセス

Hotspot
ごとのHotspot を特定
hotspot 解析
高度な hotspot 解析

効率を特定

全般解析

効率が悪い場合:
ボトルネックを診断

ベクトル化アドバイザー

全般解析
メモリーアクセス解析

ソリューションを実装© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

13

Hotspot を特定

Hotspot を特定

効率を特定

ボトルネックを診断

ソリューションを実装• hotspot 解析または高度な hotspot 解析を使用する• 高度な hotspot 解析は hotspot 解析に似ているが、ハードウェア・イベントを使用し、システム全体を対象にすることができる• 最適化により大きな効果が得られるようにプログ
ラムが多くの時間を費やしている場所を特定する• [Summary] タブでは重要なデータの高レベルの概要を確認できる• [Bottom-up] タブでは解析結果の詳細を確認できる• 関数で費やされた合計時間は、関数が実行中にアクティブ
だった CPU の数で割られる• 確実性が低いメトリックはグレーで表示される: インテル®
VTune™ Amplifier は統計サンプリングを使用しており、プログラムの非常に小さく高速な領域を適切に測定できない可能性がある© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

14

効率を特定Hotspot を特定

効率を特定

ボトルネックを診断

ソリューションを実装• 全般解析を使用する• アーキテクチャーの適切なイベントをサンプリングして、メトリックを計算するように事前に設定されている• ビルトインのアーキテクチャー固有のしきい値により潜在的な問題を特定できる (潜在的な問題はピンクでハイライト表示される!)• ここでも不確実なものはグレーで表示される• 必要な命令のリタイアが少なすぎることから非効率性を見つける• リタイアの数がそのアプリケーション・タイプの期待値よりも低い場合は非効率である可能性がある• リタイアの数が高い hotspot も非効率である可能性がある…

• 不必要な命令のリタイアが多すぎることから非効率性を見つける• アセンブリー・コードでインテル® AVX 命令が十分に活用されていない
ループ (zmm、ymm、xmm レジスターの使用状況から判断できる)、または(X*Y)+Z 形式の計算を実行する FMA (Fused-Multiply-Add) 命令 (名前の先頭が VFM または VFNM のもの) を探す© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

15

ボトルネックを診断

Hotspot を特定

効率を特定

ボトルネックを診断

ソリューションを実装• インテル® VTune™ Amplifier には 4 つのスロットタイプに分類された階層展開メトリックがある• 下の階層へ展開して hotspot のサブカテゴリーを絞り込むことで非効率性の原因を特定できる••

各レベルにおいてそのレベルのメトリックはピンクまたはグレーで表示される
列見出しをポイントすると説明とインテル® VTune™ Amplifier によって使用された式が表示される

各サブカテゴリーの詳細はチューニング・ガイドを参照:
https://www.isus.jp/products/vtune/processor-specific-performance-analysis-papers/© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

16

ソリューション・
サンプラー

Hotspot を特定

効率を特定

フロントエンド依存/O1 や /Os などのコードサイズを小さくするオプションを使用
コンパイラーによるプロファイルに基づく最適化 (PGO) を使用
動的に生成されるコードでは、ホットなコードを共有ロケーショ
ンに配置し、コードサイズを軽減し、間接呼び出しを回避

メモリー依存リモート・メモリー・アクセス••

不正なスペキュレーション
分岐予測ミスマシンクリア••••

不必要な分岐を回避
よく使用される分岐ターゲットをホイスト
コンパイラーによる PGO を使用

ロック競合または
4K エイリアシングを
チェック

リタイア
必要以上の作業を行っている••

ソリューションを実装

バックエンド依存

フロントエンド・レイテンシー•••

ボトルネックを診断

FMA を使用。–fma または /Qfma と適切な –x または /Qx
オプションでコンパイルインテル® アドバンスト・ベクトル・エクステンション 512(インテル® AVX-512) によるベクトル化を利用!

•

アフィニティー/ピニングによりスレッドをコアに関連付け
インテル® TBB またはインテル® Cilk™
Plus などの NUMA で効率良く動作する
スレッド・スケジューラーを使用
Sub-NUMA クラスターモードでパフォーマンスが向上するかテスト

メモリーアクセス
解析

キャッシュミス••キャッシュに収まるように
データをブ
ロック化
ソフトウェア・
プリフェッチを使用

アクセス競合/データ共有••

パディングにより変数をキャッシュライン境界でアライメント
してフォルス・シェアリングを解決
実際の共有要件を軽減

コア依存
除算器
•

可能な場合は逆数の乗算を使用© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

17

ベクトル化 101

17

53

37

4

• 最近のコンピューターにはベクトルレジスターと SIMD (Single Instruction
Multiple Data) 命令が備わっているため、1 つの CPU で同じ種類の複数の計算を同時に実行できる

63

-9

42

81

• /QxCORE-AVX512 または –xCORE-AVX512 コンパイラー・オプションを使用する

80

44

79

85

• パフォーマンスが向上しない場合は、CORE-AVX512 の代わりに COMMON-AVX512 を使用することでパフォーマンスが向上することがある

ベクトル化とスレッド化'自動' ベクトル化では不十分

多くの場合は明示的なプラグマと最適化が必要

130x
スレッド化

2010

2012

2013

2014

2016

インテル® Xeon® プロセッサー

インテル® Xeon® プロセッサー

インテル® Xeon® プロセッサー

インテル® Xeon® プロセッサー

インテル® Xeon® プロセッサー

開発コード名

開発コード名

開発コード名

開発コード名

開発コード名

X5680

WestmereE5-2600

Sandy Bridge

E5-2600 v2
Ivy Bridge

E5-2600 v3
Haswell

2017

ベクトル化
シリアル

インテル® Xeon® PlatinumE5-2600 v4

81xx プロセッサー

Broadwell

Skylake Server

開発コード名

性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、
ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。詳細については、http://www.intel.co.jp/jp/performance/resources/benchmark_limitations.htm を参照してください。

© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

このプレゼンテーションの最後にある2010 年～ 2017 年のベンチマークのシステム構成 を参照

18

インテル® Advisor• インテル® Advisor はスレッドのプロトタイプ生成およびベクトル化の最適化を支援するツール• 一部の情報はインテル® コンパイラーによって提供されるが、ほかのコンパイラーとも互換性がある• サーベイ (Survey) 解析から開始する
ループがベクトル化されているか?

ベクトル化されたループ
ベクトル化されなかったループ

パフォーマンスを妨げているものは?
次にすべきことは?

ループに
費やされた
時間

最新の命令セットを利用しているか?
ベクトル化を妨げているものは?

© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

ベクトル化の効率

19トリップカウント…
• トリップカウント (Trip Counts) 解析はループのトリップカウントとコールカウントを示す• スカラー・トリップ・カウントがベクトル長の倍数の場合に最も効率良くベクトル化され、そうでない場合はリマインダー・ループが生成される• コールカウントは、そのループのチューニングの重要性を示す

ピール/リマインダーを含む
ループは展開可能

各コンポーネント・ループの種類

このループのスカラー・トリップ・
カウント 1326 は 4 の倍数ではない
1326/4=331.5

非効率 + コールカウントが高い =大きなパフォーマンス・ペナルティー!

• これは、インテル® AVX-512 の幅広いベクトルレジスターではさらに重要!

• スカラー・リマインダーはベクトル化したほうが高速になることがある一方、非常に非効率なベクトル・リマインダーはスカラーのほうが高速なことがある• アライメントおよびパディングされていない配列 (特に 2 次元) は大きなピール/リマインダー・ループ (通常トリップカウントのシフトを伴う) につながる• 非効率なベクトル・リマインダーは多くの場合マスキングを過剰に使用する© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

20

… FLOPS• トリップカウント解析で FLOP とマスクの使用状況を収集できる• FLOP は FLOPS (FLoating-point Operations Per Second) の計算に使用された浮動小数点演算• FLOPS は 1 命令あたりのサイクル数や 1 秒あたりの命令数に類似したパフォーマンス・メトリックで、浮動小数点演算固有のものである。アプリケーションで使用するデータが浮動小数点のみ、またはほどんどが浮動小数点である場合にほかのメトリックよりも役立つ可能性がある• FLOPS を収集することでルーフライン・グラフを描画できる• ルーフライン・グラフは、メモリー帯域幅や計算ピークを含むハードウェアの制限とアプリケーション・パフォーマンスの関係を視覚的に示す• 横軸は演算強度 (1 バイト・アクセスあたりのFLOPS) で、キャッシュを考慮したルーフラインではアルゴリズムの特性を示す。
縦軸はパフォーマンス
• 点はループ、線はハードウェアの制限を示す。
水平線は計算の制限、斜めの線はメモリーの制限を示す© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

21

ルーフラインルーフラインに関するビデオ:
https://www.isus.jp/products/advisor/roofline_webinar/
ルーフラインに関する記事:
https://www.isus.jp/products/advisor/pu27-05-intel-advisor-roofline-analysis/• ルーフライン・グラフは hotspot やボトルネックを特定して、最適なパフォーマンスを得るため、
どこを、どのように最適化すべきか判断するのに効果的• ただし、ルーフライン・グラフで次のことはできない…
• インテル® VTune™ Amplifier またはインテル® Advisor のその他の部分の代わりに使用すること• 単純な I/O グラフとして使用すること• 問題を解決するための特効薬として使用すること• ルーフライン・グラフは次のことを判断する
良い指標• パフォーマンス向上の可能性はどれくらいか?
• スペースが大きい = 向上の可能性が高い• 最も時間のかかるループは?
• 大きく赤い点 = より多くの時間がかかっている• 最適化すべきループは?
• 時間がかかっている + 向上の可能性が高い= 最適化の候補• パフォーマンス・ボトルネックの原因は?
• 次に何を調査すべきか?
© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

22

メモリー・アクセス・パターンと依存関係• メモリー・アクセス・パターン (MAP) と依存関係は、特定の種類の問題に特化した解析で、インテル®
Advisor は該当する問題を検出するとこれらの使用を推奨する• MAP 解析は非効率なストライドを特定する場合に推奨され、インテル® AVX-512 対応マシンでは、非効率なリマイン
ダー・ループの最適化に役立つマスクの使用状況に関する情報も生成する• 依存関係解析はベクトル依存性の存在が推定されるためベクトル化されなかったループで、実際に依存性が存在するかどうか結論付けるために推奨される。依存性が存在しない場合、プラグマを使用してコンパイラーにループのベクトル化を強制できる© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

23

まとめ
• インテル® Xeon® スケーラブル・プロセッサーはこれまでにないパフォーマンスを提供• 優れたスレッド処理能力• 幅広いベクトルレジスターとインテル® AVX-512 命令セットのサポート• これらは自動的に提供されないため、利点が得られるようにコードを記述する必要がある• 適切な基盤の構築• 適切なコンパイラー・オプションとライブラリーを使用する• アプリケーションをマルチスレッド化する• インテル® Advisor を使用してスレッド化する• インテル® VTune™ Amplifier のコンカレンシー解析とロックと待機の解析でスレッド化を最適化する• パフォーマンス・プロファイル・ツールでアーキテクチャー向けにチューニングする• インテル® VTune™ Amplifier の基本 hotspot 解析と高度な hotspot 解析で hotspot を特定する• 全般解析でボトルネックを診断する• メモリーアクセス解析またはインテル® Advisor で詳細を確認する• 解析結果を基にソリューションを実装する© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

24

法務上の注意書きと最適化に関する注意事項
本資料の情報は、現状のまま提供され、本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、
いかなる知的財産権のライセンスも許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions ofSale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の販売や使用に関する明示
または黙示の保証 (特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的財産権の侵害への保証を含む) をするものではありません。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。 SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェ
ア、操作、機能に基づいて行ったものです。 結果はこれらの要因によって異なります。 製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。
© 2017 Intel Corporation. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴ、Intel
Core、Xeon、Intel Xeon Phi、Cilk、VTune は、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。
最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® スト
リーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。
注意事項の改訂 #20110804© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

25

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

システム構成WSM✝

プラットフォーム
インテル® Xeon™
プロセッサー X5680

スケーリング
されていないコアクロックの周波数

L1コア/
ソケット データ
L2
L3
ソケット
数
キャッシュ キャッシュ キャッシュ メモリー

メモリー
周波数

メモリー
アクセス

H/W
プリフェッチ有効

HT ターボC
有効 有効 ステート

OS

カーネル

コンパイラー

3.33GHz

6

2

32K

256K

12MB

48MB

1333MHz

NUMA

Y

Y

Y

無効

Fedora* 20

3.11.10-301.fc20

icc 17.0.2

SNB✝

インテル® Xeon®
プロセッサー E5 2690

2.90GHz

8

2

32K

256K

20MB

64GB

1600MHz

NUMA

Y

Y

Y

無効

Fedora* 20

3.11.10-301.fc20

icc 17.0.2

IVB✝

インテル® Xeon®
プロセッサー E5 2697 v2

2.70GHz

12

2

32K

256K

30MB

64GB

1867MHz

NUMA

Y

Y

Y

無効

RHEL 7.1

3.10.0-229.el7.x86_64

icc 17.0.2

HSW✝

インテル® Xeon®
プロセッサー E5 2600 v3

2.20GHz

18

2

32K

256K

46MB

128GB

2133MHz

NUMA

Y

Y

Y

無効

Fedora* 20 3.15.10-200.fc20.x86_64

icc 17.0.2

BDW✝

インテル® Xeon®
プロセッサー E5 2600 v4

2.30GHz

18

2

32K

256K

46MB

256GB

2400MHz

NUMA

Y

Y

Y

無効

RHEL 7.0

3.10.0-123. el7.x86_64

icc 17.0.2

BDW✝

インテル® Xeon®
プロセッサー E5 2600 v4

2.20GHz

22

2

32K

256K

56MB

128GB

2133MHz

NUMA

Y

Y

Y

無効

CentOS* 7.2 3.10.0-327. el7.x86_64

icc 17.0.2

インテル® Xeon® Platinum
81xx プロセッサー

2.50GHz

28

2

32K

1024K

40MB

192GB

2666MHz

NUMA

Y

Y

Y

無効

CentOS* 7.3

3.10.0514.10.2.el7.x86_64

icc 17.0.2

SKX✝

性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。詳細については、http://www.intel.co.jp/jp/performance/resources/benchmark_limitations.htm を参照してください。
✝開発コード名© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

26

参考資料© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

28

インテル® VTune™ Amplifier /OpenMP* 解析
開発者の次の問いに答えるメトリックと OpenMP* 解析の強化:• アプリケーションのシリアル時間はスケーリングに影響するほど長いか?
• OpenMP* 並列領域の効率は?
• ロード・インバランスとオーバーヘッドを軽減したらどれくらいのゲインを得られるか?
• 投資効果がより見込める領域は?
メトリックは経過時間に基づく
時間に直結する改善の可能性

アプリケーション・ウォールクロック© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

29

インテル® VTune™ Amplifier パフォーマンス解析• シリアル時間: パフォーマンス・データの収集中にマスタースレッドが OpenMP* 並列領域外でアプリケーションによって費やされた時間:
経過時間 - ∑[すべての並列領域の経過時間]

フォーク

領域インスタンスの経過時間

有効な CPU 時間• 並列領域のインスタンスの有効な CPU 時間:([CPU 時間] – [スピン時間] – [オーバーヘッド時
間])領域のインスタンスのスレッドで集約された、CPU、スピン、およびオーバーヘッド時間• 領域のインスタンスの理想的な時間の目安:[有効な CPU 時間 ] / [スレッド数]• 並列領域のインスタンスの潜在的なゲイン:[領域インスタンスの経過時間] – [領域インスタンスの理想的な時間の目安]• 領域の潜在的なゲイン: ∑[領域の全インスタン
スの潜在的なゲイン]

ジョイン

スピン (ビジーウェイト –インバランス、ロック、競合)
パッシブウェイト (CPU を消費しない)領域のインスタンスの理想的な時間の目安:

オーバーヘッド (生成、
スケジュール、リダクション)[有効な CPU 時間 ] /[スレッド数]
潜在的なゲイン• プログラムの潜在的なゲイン: ∑[全領域の潜在的なゲイン]© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

30

インテル® VTune™ Amplifier /OpenMP* 解析
 OpenMP* のトレースは領域/ワークシェア・コンテキストの解析に使用される• インテル® OpenMP* ランタイムからインテル®
VTune™ Amplifier に提供される:• 並列領域とワークスレッドのフォークジョイン時
間ポイント• トレースのオーバーヘッドは、領域のフォークジョ
イン・ポイントで領域のインスタンスごとに生じる

 サンプリングはオーバーヘッド、同期スピンなどの種類を特定
インテル® VTune™ Amplifier の解析タイプは、CPU 時間の計算をサポート(hotspot、スタックトレースあり/なしの高度な hotspot)© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

31

インテル® VTune™ Amplifier /OpenMP* 解析
メトリックのサマリー

アプリケーションのシリアル時間はスケーリングを制限するか？

理想的な並列実行に対してアプリケーションはどれくらい効率的か？
インバランス/オーバーヘッドのチューニングへの投資からどれくらい潜在的なゲインを得られるか？

どの領域が投資に対してよりゲインがあるか ?
リンクをクリックしてグリッドビュー
でさらに詳しい情報を表示© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

32

インテル® VTune™ Amplifier /OpenMP* 解析
メトリックのグリッド

CPU 時間階層の改善

potential gain (潜在的なゲイン) メトリックは、時間を消費する領域の上位に焦点を当てず、チュー
ニングから最大限の結果を得られる領域に焦点を当てているため、CPU や経過時間よりも重要

OpenMP* 領域はタイムライン・ペインに示される© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

33

インテル® VTune™ Amplifier /OpenMP* 解析「Grouping」 グリッドの各行から領域のソースへドリルダウン© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

34

インテル® VTune™ Amplifier /OpenMP* 解析
OpenMP* 解析データの解釈
シリアルコードのシナリオ

マスタースレッドが計算中に、ほかの OMP ワーカースレッド
はスピンして待機

より並列性を高める、またはシリアル実行が避けられないように見えるアルゴリズムやマイクロアーキテクチャーをチューニングすることで、シリアル実行領域を最小化する方法を探す
コア数の多いマシンのシリアル領域は、潜在的なスケーリングに多大な影響を与えるため、可能な限り最小化すべき© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

35

インテル® VTune™ Amplifier /OpenMP* 解析
OpenMP* 解析データの解釈
同期オブジェクトと待機時間のシナリオ

大きな潜在的なゲイン

スピン時間: ロード・インバランスとロック
競合の両方

 可能であれば OpenMP* のリダクション、omp atomic 構文、またはスレッド・ローカル・ストレージを使用して、領域内での同期を排除することを検討する
 問題の原因となる特定の同期オブジェクトを検出するには、 “Locks and Waits (ロックとウェイト)” 解析を行う© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

36

インテル® VTune™ Amplifier /OpenMP* 解析
OpenMP* 解析データの解釈
ロード・インバランスのシナリオ

重要な潜在的ゲインに注目 - 全体で 5.561 秒から 1.061 秒のゲイン!!
改善の余地があることを意味する© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

37インテル® VTune™ Amplifier /OpenMP* 解析
OpenMP* 解析データの解釈
バランスのとれた並列領域のシナリオ

すべてのスレッドがビジーで、
オーバーヘッド
やスピンがない(赤色以外)

潜在的なゲインは小さい

CPU 時間のほとんどは効果的

これはすべてが完璧であることを意味するものではない。 OpenMP* スレッドベースの並列処理とロードバランスに問題はないが、マイクロアーキテクチャーの問題などは潜在する可能性がある© 2017 Intel Corporation. 無断での引用、転載を禁じます。 Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

38