表紙画像

インテルXeon Phiコプロセッサー
ハイパフォーマンス・プログラミング

2014年1月10日 初版第1刷発行

本文訂正情報(pdfファイル)

本書について

 インテルXeon Phiコプロセッサーは、これまでのIAプロセッサーとは異なるアプローチが必要であり、製品化に至るまでソフトウェア開発についてもいろいろ試行錯誤が行われました。プロトタイプは作られましたが、製品化には至らなかったものもあります。最終的に決まったことは、「新しい言語やプログラミング・モデルを習得することなく、容易に新しいハードウェアを利用できるようにする」ということでした。そのため、すでに並列プログラミングやベクトル化の経験がある開発者の方が本書をご覧になると、コプロセッサーを利用するために追加された機能をいち早くご理解いただけると思います。

 本書はすぐにプログラミングを始められるように構成されています。簡単な紹介に続いて、プログラミングに関する説明を行い、パフォーマンスを達成する方法を示すプログラミング例を通して皆さんの意欲を高めます。  本書の第1章から第5章では、関連するテクノロジーや製品の関係を整理、構築し、第6章から第14章はどの順番でもお読みいただけるように各章で完結しています。第6章以降は、プログラミング例を用いてシステムの個々の要素を詳しく説明し、読者が求める情報を探しやすいように構成しています。

目 次

    • 訳者まえがき
    • 序 文
    • まえがき
    • 本書の構成
    • Lots-of-cores.com
    • 日本語翻訳版へのまえがき
    • 謝 辞
  • 第1章 概要
    • 傾向:より高い並列性
    • インテルXeon Phiコプロセッサーが必要とされる理由
    • コプロセッサーを持つプラットフォーム
    • 最初のインテルXeon Phiコプロセッサー
    • 「Ninjaギャップ」を上手く制御する
    • 変換とチューニングの2重の利点
    • インテルXeon Phiコプロセッサーを利用すべき状況
    • 最初にプロセッサー上のパフォーマンスを最大化する
    • 100スレッドを超えるスケーリングが重要な理由
    • 並列プログラムのパフォーマンスを最大化する
    • 高度な並列実行の準備ができているかを測定する
    • GPUに関して
    • パフォーマンス向上に対する容易な移植性
    • パフォーマンスの変換
    • ハイパースレッドとマルチスレッド
    • コプロセッサーの主要な利用モデル:MPIとオフロード
    • コンパイラーとプログラミング・モデル
    • キャッシュの最適化
    • 例と詳細
    • より詳しい情報について
  • 第2章 高性能なサーキットでの運転
    • ボンネットの内部:コプロセッサーの仕様
    • スポーツカーを始動する:コプロセッサーと通信する
    • 落ち着いて運転する:最初のコードを実行する
    • 加速する:複数のスレッドで実行する
    • 全速で運転する:すべてのコアを利用して最高速度を得る
    • 最初のコーナーに向かって減速する:メモリー帯域幅を考える
    • 高速バンクコーナー:メモリー帯域幅を最大化する
    • ピットへ戻る:まとめ
  • 第3章 のどかな田舎道でのレース
    • のどかな田舎道でのレースに向けた準備:本章の概要
    • コースの感触を掴む:9点ステンシルのアルゴリズム
    • スタートライン:9点ステンシルのベースライン実装
    • 凸凹道:ベースライン・ステンシル・コードの実行
    • 砂利道:スケーリングなしでベクトル化
    • 一般道での総力戦:ベクトル化に加えてスケーリング
    • グリースとスパナ:チューニング
    • まとめ
    • より詳しい情報について
  • 第4章 市街地の運転:現実的なコードサンプルの最適化
    • 道順の選択:基本拡散の計算
    • 曲がり角:境界効果を考慮する
    • 大通りを見つける:コードのスケーリング
    • サンダーロード:ベクトル化
    • 急発進:内側のループのピーリング
    • ハイオクを試す:データ局所性とタイリングによるスピードアップ
    • 高速ドライバー認定証:まとめ
  • 第5章 多くのデータ(ベクトル)
    • ベクトル化の目的
    • ベクトル化の方法
    • ベクトル化を達成する5つのアプローチ
    • 6つのステップによるベクトル化手法
    • キャッシュのストリーミング:データ形式、アライメント、プリフェッチ、その他
    • コンパイラーのヒント
    • コンパイラー・オプション
    • コンパイラー・プラグマと宣言子
    • 部分配列によるベクトル化の促進
    • コンパイラーが生成したものを調べる:アセンブリー・コードの調査
    • ベクトル化による結果の変化
    • まとめ
    • より詳しい情報について
  • 第6章 多くのタスク(スレッドではない)
    • OpenMP、Fortran 2008、インテルTBB、インテルCilk Plus、インテルMKL
    • OpenMP
    • Fortran 2008
    • インテルTBB 200
    • インテルCilk Plus
    • まとめ
    • より詳しい情報について
  • 第7章 オフロード
    • 2つのオフロード・モデル
    • オフロードとネイティブ実行の選択
    • オフロード言語拡張
    • プラグマ/宣言子を使用するオフロード
    • 仮想共有メモリーによるオフロードを使用する
    • 非同期計算について
    • 非同期データ転送について
    • 複数の宣言へtarget属性を適用する
    • コプロセッサーでファイルI/Oを実行する
    • オフロード・コードのstdoutおよびstderrを記録する
    • まとめ 282
    • より詳しい情報について
  • 第8章 コプロセッサー・アーキテクチャー
    • インテルXeon Phiコプロセッサー・ファミリー
    • コプロセッサー・カードの設計
    • インテルXeon Phiコプロセッサーのシリコンの概要
    • 個々のコプロセッサー・コア・アーキテクチャー
    • 命令とマルチスレッド処理
    • キャッシュ構成とメモリーアクセスの考察 294
    • プリフェッチ
    • ベクトル処理ユニットのアーキテクチャー
    • コプロセッサーのPCIeシステム・インターフェイスとDMA
    • コプロセッサーの電源管理機能
    • 信頼性(Reliability)、可用性(Availability)、
    • 保守性(Serviceability)−RAS
    • コプロセッサー・システム管理コントローラー(SMC)
    • ベンチマーク
    • まとめ
    • より詳しい情報について
  • 第9章 コプロセッサーのシステム・ソフトウェア
    • コプロセッサー・ソフトウェア・アーキテクチャーの概要
    • コプロセッサーのプログラミング・モデルとオプション
    • コプロセッサー・ソフトウェア・アーキテクチャーのコンポーネント
    • インテル・メニーコア・プラットフォーム・ソフトウェア・スタック
    • インテルXeon Phiコプロセッサー向けのLinuxサポート
    • メモリー割り当てのパフォーマンスのチューニング
    • まとめ
    • より詳しい情報について
  • 第10章 コプロセッサー上のLinux
    • コプロセッサーLinuxのベースライン
    • コプロセッサーLinuxのブートと設定の概要
    • コプロセッサーLinuxのデフォルト設定
    • コプロセッサーの設定を変更する
    • micctrlユーティリティー
    • ソフトウェアの追加
    • コプロセッサーLinuxのブート手順
    • Linuxクラスターの中のコプロセッサー
    • まとめ
    • より詳しい情報について
  • 第11章 算術ライブラリー
    • インテルMKLの概要
    • インテルMKLとインテル・コンパイラー
    • コプロセッサー・サポートの概要
    • ネイティブモードでコプロセッサーを使用する
    • 自動オフロード・モードでコプロセッサーを使用する
    • コンパイラーによるオフロード
    • 精度の種類とバリエーション
    • まとめ
    • より詳しい情報について
  • 第12章 MPI
    • MPIの概要
    • インテルXeon Phiコプロセッサー上でMPIを使用する
    • 必要条件
    • MPIランクからのオフロード
    • コプロセッサーでMPIをネイティブに使用する
    • まとめ
    • より詳しい情報について
  • 第13章 プロファイルとタイミング
    • コプロセッサーのイベント・モニタリング・レジスター
    • 効率性の評価基準
    • 潜在的なパフォーマンス問題
    • インテルVTune Amplifier XE
    • PAPI(Performance Application Programming Interface)
    • MPI解析:インテルTrace Analyzer & Collector
    • タイミング
    • まとめ
    • より詳しい情報について
  • 第14章 まとめ
    • アドバイス
    • その他のリソース
    • 関連書籍の出版予定
    • フィードバックをお待ちしています
    • 用語集