良書 「GPUを支える技術 超並列ハードウェアの快進撃[技術基礎]」を読む


目的

「GPUを支える技術 超並列ハードウェアの快進撃[技術基礎]」
(2017年7月13日 初版第1刷発行, 発行所 株式会社技術評論社)

この書籍は、かなりいい書籍だと思います。
しばらく、手元においておきたい書籍です。
パラパラと何度か眺めていて、気づいたこと、補足できることなどをここに記します。
また、発行(2017/7/13)以来、時間が経過しているので、その後の状況とかも記載したいと思います。

この記事で多少役立つ可能性がある項目は、以下。
 - p.207 『メモリアクセスを効率化する』

※構成の悪い記事だな。。。。(ため息)

この書籍の良いところ

この書籍の良いところは、以下。
 - 参照している文献が参考になる。
  → この書籍をキーとして、参照している文献等で、知識を広げられる。

意外と重要だと思う項

GPUの構造

p121の「4.2GPUの構造」にて、GPUの構造の説明がある。
GPUには、同じような構成要素が沢山あることが知られているが、まず、SM(Streaming Multiprocessor)というのが、基本となる構成要素である。これが、例えば、GP100の場合、56個ある。このSMの中に、更に、コア(CUDAコア)が各々64個ある。

(出典: https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf )

GPUの構成から演算性能を計算する

P130あたりに記載されている演算性能の計算方法を示す。単純です。

コアとDPユニットはA×B+という積和演算を実行するので積と和が各1演算で、ピーク演算性能は2演算/クロックということになります。

GP100チップの場合、

 32ビット単精度の積和演算機の数は、64CUDAコア×56個SMで、3,584個
 GPUのクロック周波数は、1,480MHz(ターボブースト時)なので、

→ ピーク演算性能は、
3,584 × 1,480 × 2 → 単位を換算して、 10.6 TFlops となります。

p.207 『メモリアクセスを効率化する』

p.207に『メモリアクセスを効率化する』という項がある。
CPUにしても、GPUにしても、これが重要であることは、理解できる。1演算あたりのメモリバンド幅の例が、以下のように示されている。この値の逆数、「Flop/Byte」で計算される算術強度(arithetic intensity ※)を横軸にしたルーフラインモデルの説明もされている。
※operational intensityという言葉も代わりによく使われる。

かなり飛躍するが、高いレベルでメモリ効率を上げるのためには、高度に完成されたライブラリ等の使用が必要だと思う。この書籍では、ライブラリの話はあまりでませんが。。。

装置 メモリバンド幅(Byte/Flop)
スパコン「京」 0.5
NVIDIA K80 GPU 0.165
NVIDIA P100 GPU 0.136

気づいたこと、補足できること、整理できること

処理速度と消費電力の情報

処理速度と消費電力の情報を本文から拾う

装置 処理速度 消費電力 記載ページ/備考
NVIDIA
Drive PX2
20TOPS 80W p.262
Pascal GPU他
NVIDIA
Xavier(エグゼビア)
20TOPS 20W p.262
ワンチップ

NVIDIA GPU

NVIDIA GPUの製品カテゴリ

製品カテゴリは、以下のとおり。

カテゴリ 説明
GeForce デスクトップパソコンやノートパソコン向け
Quadro プロフェッショナル向けでワークステーションに搭載
Tesla スーパーコンピュータ向けの演算専用プロセッサ ※1
Tegra 携帯電話やスマートフォン・タブレット端末向けのSoC(システム・オン・チップ)※2

(情報元(引用元):https://ja.wikipedia.org/wiki/NVIDIA)

※1
NVIDIA Tesla はNVIDIAのHPC向けGPU製品シリーズ。GeForceやQuadroをベースとしており、NVIDIA初のGPGPU専用製品である。
(出典:https://ja.wikipedia.org/wiki/NVIDIA_Tesla)
高性能計算、ハイ・パフォーマンス・コンピューティング(high-performance computing、HPC)は、計算科学のために必要な数理からコンピュータシステム技術までに及ぶ総合的な学問分野である。
(出典:https://ja.wikipedia.org/wiki/高性能計算)
※2
NVIDIA Tegra(エヌビディア テグラ)は、NVIDIAによるARM系の省電力統合型プロセッサのシリーズ。スマートフォンやタブレット型コンピュータ、Nintendo Switch、nVidia Shield TV、自動車のインフォテインメントシステムなどに使用されている。
(出典:https://ja.wikipedia.org/wiki/NVIDIA_Tegra)

NVIDIA GPUアーキテクチャ

GPUアーキテクチャの世代の呼び名は、以下のとおり。古い順。

Tesla
Fermi(2009年)
Kepler
Maxwell
Pascal
Volta(2017年)
Turing

※最初を、Teslaというかは、微妙。審議中。
※世代というレベルにしては、細々、速すぎるペースで次のものが定義されている。

CUDAの数学ライブラリ

p.183に『CUDAの数学ライブラリ』という項があります。ここで示されているNVIDIAのライブラリ等が、実際に、GPUの性能を出す上では重要となると思われます。

ライブラリ名 機能
cuBLAS マトリクスやベクトルの演算
cuSPARSE 疎行列の演算
cuFFT 高速フーリエ変換
cuDNN ディープラーニングの演算

OpenMP4.0規格

OpenMPに関して補足する。

OpenMPは、CPUでの並列化のイメージが強いが、以下の引用(p.215)のとおり、4.0ではGPU等も想定に入っている。

これに対してOpenMPは、GPUなどのアクセサリーが使えるように大幅な改修が加えたOpenMP4.0規格がリリースされたのは2013年7月になりました。

引用 https://en.wikipedia.org/wiki/OpenMP

Version 4.0 of the specification was released in July 2013. It adds or improves the following features: support for accelerators; atomics; error handling; thread affinity; tasking extensions; user defined reduction; SIMD support; Fortran 2003 support.

発行後の状況で補足できること

Microsoft BrainWave

GPUを説明する本書において、対抗する?FPGAの例として、Microsoftの取り込むが示されている。それに関連する、BrainWaveに関して補足する。

本書の注記で示されているMicrosoft Catapultをベースとしたもの。

引用 https://www.itmedia.co.jp/pcuser/articles/1708/29/news100.html

 Project BrainWaveについては、Microsoft Researchのブログで8月22日(米国時間)に紹介されている。もともとは同日に米カリフォルニア州クパチーノで開催された半導体業界の「Hot Chips」カンファレンスでの発表をベースとしており、ここではIntelの14nm製造プロセスを使った「(旧Alteraの)Stratix 10」というFPGA(Field Programmable Gate Array)によるBrainWaveのデモストレーションが披露されている。

引用 https://eventmarketing.blob.core.windows.net/mstechsummit2018-after/DA22_PDF_TS18.pdf

BrainWave(FPGA)の位置づけは、以下のように整理されている。


                  +------------------------------------+
  +----+  +----+  |     DNN Processing Unit            | +----+
  |CPU |  |GPU |  | +------------+    +--------------+ | |ASIC|      
  +----+  +----+  | |Soft DPU    |    | Hard DPU     | | +----+
                  | | (FPGA)     |    |              | |
                  | +------------+    +--------------+ |
                  +------------------------------------+
 ←←柔軟性                                   効率性→→
                    +------------+    +--------------+ 
                    |BrainWave   |    |Cerebras      |
                    |Baidu SDA   |    |Google TPU    |
                    |Deephi Tech |    |Graphcore     |
                    |ESE         |    |Grop          |
                    |Teradeep    |    |Intel Nervana |
                    |Etc         |    |Movidus       |
                    |            |    |Wave Computing|
                   |            |    |Etc           |
                    +-----------+     +--------------+


まとめ

この書籍は、気に入っています。

関連(本人)

文献『From Model to FPGA: Software-Hardware Co-Design for Efficient Neural Network Acceleration』を読む
文献『AN ANALYSIS OF DEEP NEURAL NETWORK MODELS FOR PRACTICAL APPLICATIONS』を読む。

今後

また、何か関連する検討ができれば。
コメントなどあれば、お願いします。