インテル® VTune™ Amplifier XEを使用したストレージ向けのパフォーマンス最適化
2016 年 10 月 12 日
Day2 トラック D-2 (14:55 – 15:40)
すがわら きよふみ
iSUS 編集長

本日の内容 インテル® VTune™ Amplifier XE 2017 概要
 ストレージ解析向けのインテル® VTune™ Amplifier XE の新機能
 メモリー解析向けのインテル® VTune™ Amplifier XE の新機能

2

インテル® VTune™ Amplifier XE

チューニングの可能性を素早く特定

高速でスケーラブルなコードを迅速に開発

必要なデータを取得






必要な情報を素早く表示







hotspot (統計コールツリー)、呼び出しカウント (統計)スレッド・プロファイル - コンカレンシー解析およびロックと待機の解析
キャッシュミス、帯域幅解析1
GPU オフロードと OpenCL* カーネルトレース
ソース/アセンブリーで結果を表示
OpenMP* のスケーラビリティー解析、グラフィカル・フレーム解析
ビューポイントでデータをフィルターして関係のないデータを非表示
スレッドおよびタスク・アクティビティーをタイムライン表示

ソースコードで結果を表示

OpenMP* のスケーラビリティーをチューニング

簡単に使用可能

特別なコンパイラーは不要 - C、C++、C#、Fortran、Java*、ASM
Visual Studio® 統合環境またはスタンドアロン
グラフィカル・インターフェイスとコマンドライン
ローカルおよびリモート収集
OS X* で Windows® および Linux* データを解析2

1 プロセッサーによりイベントが異なります。

データの視覚化とフィルター

2 macOS* でデータ収集はできません。

3

新機能!

2017 の新機能: Python*、FLOPS、ストレージほか…
インテル® VTune™ Amplifier XE パフォーマンス・プロファイラー

Python* と Python*/C++/Fortran が混在したコードのプロファイル
最新のインテル® Xeon Phi™ プロセッサーをチューニング
HPC パフォーマンスにとって重要な 3 つのメトリックを素早く確認
メモリーアクセスを最適化
ストレージ解析: I/O 依存か、CPU 依存か?
OpenCL* および GPU プロファイルの拡張
簡単に使用できるリモートアクセス/コマンドライン
タイムラインにカスタムカウンターを追加可能
プレビュー: アプリケーションとストレージのパフォーマンス・スナップ
ショット (http://www.intel.com/application-snapshot (英語)) インテル® Advisor: インテル® AVX-512 向けにベクトル化を最適化 (ハードウェアの有無に関係なく実行可能)






4

新機能インテル® VTune™ Amplifier XE で Knights Landing✝ プロセッサーをチューニング
インテル® Xeon Phi™ プロセッサー向けの 4 つの重要な最適化
1) 高帯域メモリー

MCDRAM に配置するデータ構造の決定
パフォーマンスの問題をメモリー階層で表示
DRAM および MCDRAM の帯域幅を測定



シリアル時間と並列時間
インバランス、オーバーヘッド・コスト、並列ループ・パラメーター

コア・パイプラインにおけるコードの効率を確認
カスタム PMU イベントで絞り込み

2) MPI と OpenMP* のスケーラビリティー3) マイクロアーキテクチャーの効率

4) ベクトル化の効率: インテル® Advisor を使用インテル® AVX-512 対応ハードウェアの有無に関係なくインテル® AVX-512 向けに最適化✝ 開発コード名

5ストレージ向けのインテル® VTune™ Amplifier XEストレージデバイス解析 (HDD、SATA、NVMe SSD)

新機能!

インテル® VTune™ Amplifier XE

I/O 依存か、CPU 依存か?
 I/O 操作 (非同期/同期) と計算の間のインバランスを調査 ストレージアクセスをソースコードにマップ
 CPU が I/O を待機している個所を確認
 ストレージへのバス帯域幅を測定

スライダーで I/O
キューの深さのしきい値を設定
I/O の待機を伴う遅いタスク

レイテンシー解析 レイテンシー・ヒストグラムを利用してストレージアクセスをチューニング
 I/O を複数のデバイスに分散

7

インテル® VTune™ Amplifier XE によるディスク入出力解析
ディスク関連の問題に特化した解析タイプ“Disk Input Output Analysis”:
 次のパフォーマンスの問題を検出:– 利用率– キューの深さ– レイテンシー– 帯域幅8

I/O を伴うプログラムの例
infile = fopen(filename, "rb");
while ((bytes_read = fread (buffer, 1, BUFFER_SIZE, infile)) != 0) {MD5_Update(&context, buffer, bytes_read);}fclose(infile);

3 つの異なるモード
 インテル® VTune™ Amplifier XE がサポートする OS を使用しているか?
 “Disk Input Output Analysis” メトリックを使用

 自身で専用コードを記述しているか?
 インストルメントとトレース (ITT) API を使用してインストルメント
 csv ファイルを作成しインテル® VTune™ Amplifier XE に統合
9(典型的な)ストレージ向けのインテル® VTune™ Amplifier XE のメトリック
OS とハードウェアのテレメトリーの相関 ftrace で収集した OS テレメトリー
 PMU (インテルのコレクター) で収集したハードウェア・テレメトリー
 ファイル操作 API は、PIN で追跡される(バイナリー・インストルメント)
 システムの動作を細粒度で追跡10

レイテンシー

I/O のストールと I/O API のインストルメント
コールスタック

デバイスの利用率

ページフォルト

異常値11ソースコードへドリルダウン

12独自の非カーネルモードのドライバーを使用する場合
ほかで取得した結果をインテル® VTune™ Amplifier XE へ容易に追加
 インテル® VTune™ Amplifier XE のインストルメントとトレース API の利用を推奨– 追加手順なしでフローを統合

 csv ファイルを作成してインテル® VTune™ Amplifier XE へインポート– フローを統合しないでほかのコレクターから結果をインポート

13

ITT API - インテル® VTune™ Amplifier XE へ簡単に統合
インストルメントとトレース・テクノロジー  特定のコードを実行中にマークを(ITT):
設定することが可能
 結果をインテル® VTune™ Amplifier  フレームとタスクをマークすること
XE へ統合が可能
 オープンソース
 ランタイムで生成されたコード(JIT コードとも呼ばれる) をプロ
 トレースの生成と制御ファイルすることが可能
 標準システム API なしで実装されたカスタム同期プリミティブを指定できる
14

コードにタスク API を追加 - 例
ドメインと名前を定義:
 __itt_domain_create( … ) __itt_string_handle_create( … )タスクの開始と終了をマーク:
 __itt_task_begin()fread() 呼び出しをインストルメント itt_fread ( … ){__itt_task_begin( … );bytes = fread( … );__itt_task_end( … );}

 __itt_task_end()15

インストルメントを追加したコード
infile = itt_fopen(filename, "rb");
while ((bytes_read = itt_fread (buffer, 1, BUFFER_SIZE, infile)) != 0) {MD5_Update(&context, buffer, bytes_read);}
itt_fclose(infile);

3 つのファイル操作を変更
 fread => itt_fread fopen => itt_fopen fclose => itt_fclose16

新しいホットスポット関数

ユーザータスク17

ソースと特定のタスクにドリルダウン

タスクとソースコード

18

独自のコレクターを持っているか?

インテル® VTune™ Amplifier XE へ結果をインポート
インテル® VTune™ Amplifier XEは、インストルメント結果をインポートする簡単な方法を提供
 開始時間と終了時間を含む間隔
データ
 カウンターのセットを含むサンプル
https://software.intel.com/enus/node/544116 (英語)19

独自のインストルメントを使用する場合• csv ファイルへ独自のインストルメ
ント情報を記録• インテル® VTune™ Amplifier XE へ
結果をインポート

fread() 呼び出しをインストルメント csv_fread ( … ){__csv_begin( … );bytes = fread( … );__csv_end( … );}name,start_tsc.TSC,end_tsc,pid,tidfunction1_task_type,419280823342846,419280876920231,12832,11644
function2_task_type,419280876920231,419281044717992,12832,11644
function1_task_type,419281044745822,419281102121452,12832,11644
function2_task_type,419281102121452,419281277898762,12832,11644
function1_task_type,419281277935812,419281342158661,12832,11644
function2_task_type,419281342158661,419281527040239,12832,11644

20

21

ホットスポット関数

インテル® VTune™
Amplifier XE の情報とユーザー csv の相関関係

22

メモリー向けのインテル® VTune™ Amplifier XE

メモリーアクセスを最適化

改善されました

メモリーアクセス解析: インテル® VTune™ Amplifier XE 2017
パフォーマンス向上のためデータ構造をチューニング
キャッシュミスを (コード行だけでなく) データ構造に紐付け
カスタム・メモリー・アロケーターのサポート

NUMA レイテンシーとスケーラビリティーの最適化

共有とフォルス・シェアリングのチューニング
最大システム帯域幅を自動検出
ソケット間の帯域幅のチューニングが容易

簡単にインストールでき、最新のプロセッサーに対応
Linux* では特別なドライバーは不要
インテル® Xeon Phi™ プロセッサーの MCDRAM(高帯域メモリー) 解析

24

インテル® VTune™ Amplifier XE による
NUMA メモリー解析
メモリーに関連した問題に注目した特殊な解析タイプ “Memory Access”:
 メモリー階層 (L1-、L2-、LLC-Bound、LLC Latency) によるパフォーマンスの問題
 帯域幅が制限されたアクセス– DRAM と QPI の帯域幅をカバー

 NUMA に関連する問題
 Remote/Local DRAM Ratio、Local DRAM、Remote DRAM、Remote cache メモリー・オブジェクト (データ構造) へのパフォーマンス・イベントの属性

25

データの収集
構成オプション: メモリー・オブジェクトの解析:
メモリーの割り当て/解放のインストルメントとメモリー・オブジェクトへのハードウェア・イベントのマップを可能にする– すべてのシステムメモリーの割り当て/解放をインストルメントするため、実行時にオーバーヘッドが生じる可能性がある

 最小限のメモリー・オブジェクト・サイズで追跡:解析に使用するメモリー割り当ての最小サイズを指定。このオプションは、インストルメントの実行時のオーバーヘッドを軽減するのに有効26

メモリー・オブジェクトでパフォーマンス・メトリックを表示
グリッドビューで、メモリー・オブジェクトまたはメモリー・オブジェクトの割り当てソースを含むグループ化のレベルの選択“lin_stream.cpp:100 (152 MB)” は、ソースファイル lin_stream.cpp の 100 行目のメモリー・オブジェクトの割り当てを意味する。 割り当てサイズは 152MB
27帯域幅の問題を時間経過で解析

28

NUMA の問題の特定次の階層で組織化されたメトリックに注目:






Memory Bound > DRAM Bound > Local DRAM
Memory Bound > DRAM Bound > Remote DRAM
Memory Bound > DRAM Bound > Remote Cache
LLC Miss Count > Local DRAM Access Count、
LLC Miss Count > Remote DRAM Access Count、
LLC Miss Count > Remote Cache Access Count
Average Latency (cycles)
計画: Apache Pass NUMA メトリックの拡張
29

NUMA の問題の特定2016 以降

インテル® QuickPath インターコネクト帯域幅ドメインと帯域幅利用率のヒストグラム:

参考文献：等方性 3 次元有限差分 (3DFD) 波動方程式コード向けの NUMA を理解する
30

まとめ• インテル® Parallel Studio XE Professional Edition を評価してください(インテル® VTune™ Amplifier XE を含む)
http://www.isus.jp/article/intel-software-dev-products/intel-system-studio/• 有用なサンプルコードを参照

31

法務上の注意書きと最適化に関する注意事項
インテル® テクノロジーの機能と利点はシステム構成によって異なり、対応するハードウェアやソフトウェア、またはサービスの有効化が必要となる場合があります。実際の性能はシステム構成によって異なります。絶対的なセキュリティーを提供できるコンピューター・システムはありません。詳細については、各システムメーカーまたは販売店にお問い合わせいただくか、http://www.intel.co.jp/ を参照してください。
本資料には、開発中の製品、サービスおよびプロセスについての情報が含まれています。ここに記載されているすべての情報は、予告なく変更されることがあります。インテルの最新の製品仕様およびロードマップをご希望の方は、インテルの担当者までお問い合わせください。
四半期、年度、および将来の計画と予想について言及している本資料内の記述は、多数のリスクや不確定要素を伴う将来の見通しです。インテルの業績および計画に影響を及ぼす可能性のある要素の詳
細については、Form 10-K の年次報告書を含む、インテルの SEC 提出資料に記載されています。
本資料で説明されている製品には、には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
本資料の情報は、現状のまま提供され、本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスも許諾するものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的財産権の侵害への保証を含む) をするものではありません。
インテルは、本資料で参照しているサードパーティーのベンチマーク・データまたは Web サイトについて管理や監査を行っていません。本資料で参照している Web サイトにアクセスし、本資料で参照しているデータが正確かどうかを確認してください。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。
© 2016 Intel Corporation. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴ、Intel Inside、Intel Inside ロゴ、Xeon、Intel Xeon Phi、VTune は、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。
Microsoft、Visual Studio、および Windows は、米国 Microsoft Corporation の、米国およびその他の国における登録商標または商標です。
Go は Google Inc. の登録商標または商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

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

32

インテル® VTune™ Amplifier XE とは?
なぜ注目する必要があるのか?
精度の高いデータと意味のある解析で高速なコードを素早く得る
以下の開発者を対象とする
 Linux* と Linux* デリバティブ
 FreeBSD*
 仮想化された環境– KVM / Xen / VMWare*インテル® アーキテクチャー・ベースのシステム向けの最良のオシロスコープ
 ソフトウェア・バイナリーのインストルメントとハードウェア・カウンターをミックス

34