GPUやハイパフォーマンスコンピューティングに興味がないわけではないのだが、普段あまり触れる機会がない。 しかし、なかなか避けては通れない世界ではあるし、初心者だという自覚があるのならばしっかり勉強しなければと思い、ホワイトペーパーをダウンロードして読んでみることにした。
#ダウンロードには登録が必要
Pascal Architecture Whitepaper | NVIDIA
すべてを翻訳して掲載というわけにはいかないので、向学のために要点をまとめていこうと思う。図は、インターネット上で見つけられたものや、ホワイトペーパ上の画像を使用させて頂いています。それぞれの出展は各画像の引用を参照。
注意:GPU初心者が書いている文章のため、間違いが含まれている可能性があります。間違いがあれば、指摘いただければ嬉しいです。
Tesla P100とは
Tesla P100の特徴を列挙するならば、以下にまとめられる。
高パフォーマンス HPC向け、ディープラーニング向けを中心に、幅広い用途に対応する。
NVLink 高バンド幅のGPGPUのインターコネクトを採用している。
HBM2 高速かつバンド幅の大きいCoWoS(Chip-on-Wafer-on-Substrate)のメモリアーキテクチャを採用している。
Unified Memory, プリエンプション、新しいAIアルゴリズム AIソフトウェア向けに最適化されたPascalアーキテクチャを採用する。
16nm FinFET より高速かつ低消費電力なプロセスを利用している。
ディープラーニングに特化した、高い演算能力。
ホワイトペーパーには、頻繁にディープラーニングという言葉が出てくる。 FP64において5.3TFlops, FP16については21.2TFlopsという高い演算性能を持つ。 図を見てわかるとおり、過去のアーキテクチャと比較して突出した演算能力となっている。
ディープラーニングに最適なアーキテクチャとなっており、DNNなどのアプリケーションにおいて高い演算性能を発揮することができる。
PascalアーキテクチャではFP16を搭載し、FP32が必要のない範囲でも高い演算性能を発揮することができる。
NVLink : マルチGPU、GPU-CPU間を接続するためのリンク
マルチGPGPUを構成するにあたり、通常はInfiniBandや100Gb Ethernetなどが用いられるが、それよりも高速なネットワークを用意して柔軟な構成をとれるようにしないと、結局は通信速度がボトルネックになってしまう。
そのため、Tesla P100では最大で160GB/secの高速なインタフェースを用意する。 これはPCIExpress Gen3x16 の約5倍のバンド幅となる。 これにより、複数のGPU、CPUとの高速なインタフェースが可能になる。
図は8つのGPGPUと2つのCPUを用いたハイブリッドキューブメッシュのネットワーク。
画像はhttp://techreport.com/news/29946/pascal-makes-its-debut-on-nvidia-tesla-p100-hpc-card より引用。
[http://techreport.com/r.x/2016_4_5_Pascal_makes_its_debut_on_Nvidias_Tesla_P100_HPC_card/nvlink.png:image=http://techreport.com/r.x/2016_4_5_Pascal_makes_its_debut_on_Nvidias_Tesla_P100_HPC_card/nvlink.png]
NVLinkとは何なのか
具体的には、以前より掲載されているPascalの資料を調べるのが早い。
約2年前の記事だが、非常に分かりやすかった。当時はPCI Express Gen3x16より5倍~12倍といわれていたようだが、仕様としては5倍高速という結果に落ち着いている。
帯域は80GB/sec~200GB/secと非常に広く、PCI Express Gen3のx16に対して5~12倍の帯域を実現する。
以下はホワイトペーパーより。
GPU-to-GPU data transfers at up to 160Gigabytes/second of bidirectional bandwidth - 5x the bandwidth of PCIe Gen 3x16
あれ、なんか食い違ってるな。まあいいや。
より具体的な説明がホワイトペーパには付け加えられており、まず特徴として、他のGPUのメモリも自身のローカルメモリと同様のメモリアクセスとして実現可能であること。 最大で8つのコネクションを構成することができ、各コネクションは差動動作で最大20Gb/secとなっている。 これを8つ利用することで、最大160GB/secという帯域を実現する、ということか。 より具体的な構成としては、20GB/secが1つのコネクション(サブリンク:と呼んでいる、これは単方向である)を2つ構成して「リンク」を作り、リンク1つにつき最大で40GB/secだ。
具体的な例として8つのリンクを活用したHybrid Cube Mesh Architectureの説明がある。 一本のNVLinkが双方向の矢印となっており、40GB/sec、これを4つのGPUで1つのグループとし、 さらに隣のグループと接続する。 それぞれのGPUはPCIeスイッチと接続しており、これでCPUと通信する。 NVLinkはGPU-CPUとの接続にもりようできるという理解だったのだが、違うのかな。 それとも単純にリンク数が足りてない?
別の例として、P100を4つ使用して各GPU間を2リンクで接続して最大80GB/secのGPU間転送としている例である。
CPUとGPU間もNVLinkを通じて接続できるようだ。以下は極端な例として紹介されているが、NVLinkを4本CPU(IBM Power8としている)接続して160GB/secの転送を実現する例だ。
図はホワイトペーパー内より流用。
さらに、CPUとGPUを直接接続して、PCIeを除去するような構成も実現できるようだ。
図はホワイトペーパー内より流用。
NVLinkのシステム内でのインタフェース
NVLinkは、システム内ではHSHUBというものに接続されるらしい。 HSHUBはHigh-Speed Hubと呼ばれるもので、GPUのノードクラスタ、HSCE(High Speed Copy Engine)と呼ばれるDMA?のようなものやシステムコントローラとともに接続されている。
図はホワイトペーパーより引用。
次はHBM2メモリやその他の機能についてまとめていきたい。