コードの現代化(最適化) 1-2-3

２０１７ 年 7 月
iSUS 編集長 (isus.jp)
すがわら きよふみ本日の内容• はじめに – Code Modernization について
• 本日利用する開発ツールについて• コードの現代化と最適化

230 分
120 分

©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

Think Parallel or Perish

あれから 8 年 …

3©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

Vectorize or Die
Think Parallel or Perish

Code Modernization

4©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

Code Modernization (コードのモダン化)
マルチコア・プロセッサー

高帯域プロセッサー間通信

高速 I/O
高速メモリー

スレッド並列大きなキャッシュ

メニーコア・プロセッサー

5©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

マルチレベルの並列性を実装する 5 つのステップ
3: 並列化
ベクトル化
2:スカラーとシリアルの最適化
1:
最適化ツールとライブラリーの活用
ステージ 4:
5:
マルチコアからメニーコアへスケール

http://www.isus.jp/article/article-parallel/what-is-code-modernization/
6©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

パフォーマンス最適化 1-2-3
ステージ 1: 最適化ツールとライブラリーの活用
ステージ 2: スカラーとシリアルの最適化
ステージ 3: ベクトル化

ステージ 4: 並列化

1. 何をすればいいか ?
2. どこから始めるか ?
3. 改善の方法は ?
4. 効果を確認するには ?

ステージ 5: マルチコアからメニーコアへスケール

7©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

インテル® Parallel Studio XE – コンポーネント
コンパイラーはすべてのインテル® Parallel Studio XE に含まれます
インテル® C++ コンパイラー
インテル® Fortran コンパイラー
インテル® Distribution for Python*
インテル® マス・カーネル・ライブラリー
インテル® スレッディング・ビルディング・ブロック・ライブラリー
インテル® インテグレーテッド・パフォーマンス・プリミティブ
インテル® Cilk™ Plus 並列モデル
OpenMP*Composer Edition

Professional EditionCluster Edition☑
☑
☑
☑
☑

☑
☑
☑
☑
☑

☑
☑
☑
☑
☑

☑
☑
☑

☑
☑
☑
☑
☑
☑
☑

☑
☑
☑
☑
☑
☑
☑
☑

インテル® Advisor
インテル® Inspector XE
インテル® VTune™ Amplifier XE
インテル® Data Analytics Acceleration ライブラリー
インテル® MPI ライブラリー
インテル® Trace Analyzer and Collector （トレース・アナライザー/コレクター)
ローグウェーブ IMSL* ライブラリー

8© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

☑

評価版の入手とアップグレード• インテル® Parallel Studio XE 2017 Professional Edition• インテル® Advisor 2017 が含まれます• インテル® VTune™ Amplifier XE 2017が含まれます
https://www.xlsoft.com/jp/products/download/intelj.html• アップグレードに関する情報
https://www.xlsoft.com/jp/products/intel/studio_xe/upgrade.html

9© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

https://registrationcenter.intel.com/ja/から単体のコンポーネントのみを取得 (登録が必要)

10© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

インテル® Performance SnapshotNew!

未活用のパフォーマンスを素早く発見する 3 つの方法

アプリケーションがコンピューター・ハードウェアを有効利用できているか?
 テストケースを実行してみてください ハイレベルのサマリーは、コードの現代化と高速なストレージにより利点が得られるアプリケーションを表示

パフォーマンス・スナップショットを選択: アプリケーション: 非 MPI アプリケーション用
 MPI: MPI アプリケーション用 ストレージ: ストレージが取り付けられたシステム、サーバー、ワークステーション用New!

無料ダウンロード: http://www.intel.com/performance-snapshot (英語)インテル® Parallel Studio とインテル® VTune™ Amplifier XE にも含まれています。

11©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

12

インテル® VTune™ Amplifier XE

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

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

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

1)-(GPUOpenCL*
OpenMP* のスケーラビリティーをチューニング

/OpenMP*

簡単に使用可能- C C++ C# Fortran Java*

ASMVisual Studio®

データの視覚化とフィルター

13macOS*Windows®

Linux*2©2015 Intel Corporation.
1 プロセッサーによりイベントが異なります。
© 2017 iSUS.2無断での引用、転載を禁じます。Intel、インテル、Intel
ロゴは、アメリカ合衆国および / またはその他の国におけるmacOS* でデータ収集はできません。
Intel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*New!

2017 の新機能: Python*、FLOPS、ストレージほか…
インテル® VTune™ Amplifier XE パフォーマンス・プロファイラーPython* と Python*/C++/Fortran が混在したコードのプロファイル



最新のインテル® Xeon Phi™ プロセッサーをチューニング



HPC パフォーマンスにとって重要な 3 つのメトリックを素早く確認

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

ストレージ解析: I/O 依存か、CPU 依存か?

OpenCL* および GPU プロファイルの拡張

簡単に使用できるリモートアクセス/コマンドライン



タイムラインにカスタムカウンターを追加可能

プレビュー: アプリケーションとストレージのパフォーマンス・スナップショット

インテル® Advisor: インテル® AVX-512 向けにベクトル化を最適化 (ハードウェアの有無に関係なく実行可能)

14©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*New!

インテル® VTune™ Amplifier XE で Knights Landing✝ プロセッサーをチューニング
インテル® Xeon Phi™ プロセッサー向けの 4 つの重要な最適化
1) 高帯域メモリー MCDRAM に配置するデータ構造の決定
 パフォーマンスの問題をメモリー階層で表示
 DRAM および MCDRAM の帯域幅を測定

2) MPI* と OpenMP* のスケーラビリティー シリアル時間と並列時間
 インバランス、オーバーヘッド・コスト、並列ループ・パラメーター

3) マイクロアーキテクチャーの効率 コア・パイプラインにおけるコードの効率を確認
 カスタム PMU イベントで絞り込み

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

15©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

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

Improved!

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

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

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

©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

New!

ストレージデバイス解析 (HDD、SATA、NVMe SSD)
インテル® VTune™ Amplifier XE
I/O 依存か、CPU 依存か?
 I/O 操作 (非同期/同期) と計算の間のインバランスを調査 ストレージアクセスをソースコードにマップ

 CPU が I/O を待機している個所を確認

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

 ストレージへのバス帯域幅を測定

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

17©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

18

データに基づく設計で高速なコードを素早く開発
インテル® Advisor: ベクトル化の最適化とスレッドのプロトタイプ生成
ベクトル化の最適化をスピードアップ
 最も大きな利点が得られる個所をベクトル化
 ベクトル化を妨げているものを素早く特定
 効率良いベクトル化のためのヒント 安全にコンパイラーによるベクトル化を強制
 メモリーストライドを最適化
スレッド設計のブレークスルー
 複数の候補のプロトタイプを素早く生成 大規模なシステムにおけるスケーリングを予測 スレッド化する前に同期問題を発見
 開発を妨げることなく設計可能より少ない労力とリスクで、より大きな効果
19

インテル® Parallel Studio XE for Windows® および Linux* で利用可能©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

http://intel.ly/advisor-xe (英語)*ベクトル化およびスレッド化するか、パフォーマンスを諦めるかスレッド化とベクトル化の併用はどちらか一方よりも高速ベクトル化とスレッド化

187x

インテル® Xeon® 2007
プロセッサー: X5472
開発コード名: Harpertown

2009

2010

X5570
Nehalem

X5680
E5-2600
E5-2600 v2 E5-2600 v3 E5-2600 v4
Westmere Sandy Bridge Ivy Bridge
Haswell
Broadwell

2012

2013

2014

2016

ハードウェアが新しい世代になるほど違いが大きくなる

スレッド化
ベクトル化
シリアル

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

20©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

“自動” ベクトル化だけでは不十分
優れたコンパイラーはベクトル化を最適化することで大きな利点が得られる

コンパイラーは常にベクトル化するとは限らない インテル® Advisor でループ伝播の依存性を確認
 依存性がない場合はベクトル化を強制
C++: pragma simd、Fortran: SIMD ディレクティブ

すべてのベクトル化が効率的とは限らない ストライド 1 のほうがストライド 2 以上よりもキャッシュ効率が良い。インテル® Advisor で解析
 データレイアウトの変更を検討
SIMD Data Layout Templates (SDLT) が役立つ

21

前のスライドのベンチマークは、すべて “自動ベクトル化” したものではありません。コンパイラー・ディレ
クティブを使用してベクトル化を強制し、パフォーマンスを引き出しています
構造体配列 (AoS) は直感的にデータを扱うことができますが、配列構造体 (SoA) と比べると効率的ではありません。SIMD Data Layout
Templates (SDLT) を利用して、より効率良くベクトル化されるレイアウトにデータをマップできます©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*New!

2017 の新機能: インテル® AVX-512、FLOPS ほか…
インテル® Advisor: ベクトル化の最適化
 次世代のインテル® Xeon Phi™ プロセッサーをサポート
 インテル® AVX-512 対応ハードウェアの有無に関係なくインテル® AVX-512 向けのチューニングが可能

 メモリーアクセス解析を拡張

 影響の大きいループを簡単に選択
 バッチモードのワークフローにより時間短縮
 ループ解析により必要な情報を素早く確認 正確な FLOPS 計算

22©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

オンライン技術セミナーの案内

••

•
23
23

http://isus.jp

インテル® AVX-512 ハードウェアを使用することなくインテル® AVX-512 を最適化する
キャッシュを考慮したルーフライン解析を使用してベクトル化とメモリーの最適化を詳しく調査する

OpenMP* 4.x による新しいレベルの並列化©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*

速報
最新マニュアルの更新を再開しました•

Skylake、AVX2、Goldmont、およびKnights Landing 翻訳済み•

Skylake Server、サブ SNC、AVX-512 間もなく公開

https://www.isus.jp/technical-document/

24©2015 Intel Corporation.
© 2017 iSUS. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国におけるIntel Corporation の商標です。*その他の社名、製品名などは、一般に各社の商標または登録商標です。

*