関連サイト
本書の関連ページが用意されています。
内容紹介
CUDA Cプログラミングを本格的に理解して、プログラムの高速化を図るための技術解説書。本書では、CUDAプログラミングモデルから始め、カーネルレベルやグリッドレベルの並列化手法を解説。グローバルメモリ、シェアードメモリ、ストリームなどを徹底活用する方法を紹介します。さらに、GPUスループットの計測、CUDAアプリケーションへの効率的な移植、マルチGPUプログラミングについても説明。
◎本書は『Professional CUDA C Programming』の翻訳書です。
【本書の構成】
第1章 CUDAによるヘテロジニアス並列コンピューティング
第2章 CUDAプログラミングモデル
第3章 CUDAの実行モデル
第4章 グローバルメモリ
第5章 シェアードメモリとコンスタントメモリ
第6章 ストリームと並列処理
第7章 命令レベルのプリミティブの調整
第8章 CUDAのGPUアクセラレーションライブラリとOpenACC
第9章 マルチGPUプログラミング
第10章 実装上の注意点
書誌情報
- 著者: John Cheng, Max Grossman, Ty McKercher(著), 株式会社クイープ(訳), 森野慎也,成瀬 彰(監訳)
- ページ数: 584ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
C/C++プログラミング経験者。CG、科学技術、組み込み産業、データ分析などに関わるプログラマー。
著者について
John Cheng
計算知能の専門家として10年以上金融業界で働き、遺伝的アルゴリズムにデータマイニングや統計学習を掛け合わせた先進的なソリューションを提供。現在は、エネルギー産業に従事。東京工業大学で計算知能分野の博士号を取得。
Max Grossman
医療画像システムや機械学習、地球物理学でCUDAの適用経験があるGPUコンピューティングの専門家。
Ty McKercher
2008年からNVIDIA社に勤務し、GPUアクセラレーション技術のユーザーサポートを行っている。
株式会社クイープ
1995年、米国サンフランシスコに設立。コンピュータシステムの開発、ローカライズ、コンサルティングを手がけている。2001年に日本法人を設立。
森野慎也
2013年よりNVIDIAでCUDA担当のシニアソリューションアーキテクトとして勤務。本書では、監訳のほか、4、5、6、7、10章の日本語版コラムの執筆を担当。
目次
本書に寄せて
はじめに
謝辞
目次
第1章 CUDA によるヘテロジニアス並列コンピューティング
- 1.1 並列コンピューティング
- 1.2 ヘテロジニアスコンピューティング
- 1.3 Hello.World.from.GPU
- 1.4 CUDA.C プログラミングは難しい?
- 1.5 まとめ
第2章 CUDA プログラミングモデル
- 2.1 CUDA プログラミングモデルの概要
- 2.2 カーネルの所要時間の計測
- 2.3 並列スレッドの構成
- 2.4 デバイスの管理
- 2.5 まとめ
第3章 CUDA の実行モデル
- 3.1 CUDA の実行モデルの紹介
- 3.2 ワープ実行の特性
- 3.3 並列性の確保
- 3.4 分岐のダイバージェンスの回避
- 3.5 ループの展開
- 3.6 ダイナミックパラレリズム
- 3.7 まとめ
第4章 グローバルメモリ
- 4.1 CUDA のメモリモデルの紹介
- 4.2 メモリの管理
- 4.3 メモリアクセスパターン
- 4.4 カーネルの帯域幅の調整
- 4.5 ユニファイドメモリを使った行列の加算
- 4.6 まとめ
第5章 シェアードメモリとコンスタントメモリ
- 5.1 CUDA のシェアードメモリの紹介
- 5.2 シェアードメモリのデータレイアウトの確認
- 5.3 グローバルメモリへのアクセスの削減
- 5.4 グローバルメモリへのアクセスのコアレッシング
- 5.5 コンスタントメモリ
- 5.6 ワープシャッフル命令
- 5.7 まとめ
第6章 ストリームと並列処理
- 6.1 ストリームとイベントの紹介
- 6.2 カーネルの並列実行
- 6.3 カーネル実行とデータ転送のオーバーラップ
- 6.4 GPU と CPU の実行のオーバーラップ
- 6.5 ストリームのコールバック
- 6.6 まとめ
第7章 命令レベルのプリミティブの調整
- 7.1 CUDA 命令の概要
- 7.2 アプリケーションに合わせた命令の最適化
- 7.3 まとめ
第8章 CUDA の GPU アクセラレーションライブラリとOpenACC
- 8.1 CUDA ライブラリの紹介
- 8.2 cuSPARSE ライブラリ
- 8.3 cuBLAS ライブラリ
- 8.4 cuFFT ライブラリ
- 8.5 cuRAND ライブラリ
- 8.6 CUDA.6 で導入された CUDA ライブラリの機能
- 8.7 CUDA ライブラリのパフォーマンスの調査
- 8.8 OpenACC の使用
- 8.9 まとめ
第9章 マルチ GPU プログラミング
- 9.1 マルチ GPU への移行
- 9.2 複数の GPU の間で計算処理を分割する
- 9.3 複数の GPU でのピアツーピア通信
- 9.4 マルチ GPU での有限差分法
- 9.5 GPU クラスタでのアプリケーションのスケーリング
- 9.6 まとめ
第10章 実装上の注意点
- 10.1 CUDA.C の開発プロセス
- 10.2 プロファイルに基づく最適化
- 10.3 CUDA のデバッグ
- 10.4 ケーススタディ:CUDA.C への C プログラムの移植
- 10.5 まとめ