Nvidia の Pascal 搭載 Tesla P100 の内部: 何がすごいのか?

Table of Contents

Nvidia の Pascal 搭載 Tesla P100 の内部: 何がすごいのか?

GTC16ついに、待望のNVIDIA PascalアーキテクチャGPUが登場しました。GP100は、高性能コンピューティング(気象や核燃料のシミュレーションを行うスーパーコンピューターなど)とディープラーニングによる人工知能システム向けに開発されたTesla P100に搭載されます。

カリフォルニア州サンノゼで開催されたNvidiaのGPU Tech Conferenceで本日発表されたP100は、150億個のトランジスタ(16GBのメモリを含めると1500億個)を搭載し、16nm FinFETで製造されています。このハードウェアを手に入れたい場合は、6月に出荷される12万9000ドルのDGX-1ボックスを購入するか、大手クラウドプロバイダーが今年後半にオンラインサービスとして提供するまで待つか、IBM、Cray、Hewlett Packard Enterprise、DellなどのPascal搭載サーバーを2017年初頭に購入するかのいずれかの選択肢があります。クラウド業界の巨人たちは、既にこの高機能チップを可能な限り買い漁っています。

つまり、これはゲーマーやデスクトップマシンを狙ったものではありません。科学者やソフトウェアエンジニアをNVIDIAのCUDA陣営に誘い込み、AIトレーニングシステムや粒子解析コードなどをGPU上で実行させるために利用されているのです。「ディープラーニングはあらゆるアプリケーションに浸透していくでしょう」と、NVIDIAの共同創業者兼CEOであるジェンスン・フアン氏はカンファレンスの聴衆に語りました。

とはいえ、NVIDIAがとんでもない驚きをもたらさない限り、これらのPascal設計は一般の人々のコンピューターの電子機器に組み込まれることになるだろう。このアーキテクチャには、まだご存知ないかもしれないが、いくつか巧妙な仕掛けが隠されている。その魅力を以下にまとめた。

度を越して寛大

CUDA 6以降、NVIDIAはプログラマー向けに「Unified Memory」と呼ばれる機能を提供しています。これは(その名の通り)ホストのGPUとCPUが共有する仮想アドレス空間を提供します。この手法により、開発者はGPUコアとCPUコア間で統一されたアクセスが可能になります。Unified Memory空間の最大サイズは、GPUメモリのサイズと同じです。

Pascal の採用により、GP100 は統合メモリでページフォールトをトリガーできるようになり、オンデマンドでデータを読み込むことができます。つまり、膨大な量のデータを GPU メモリに移動する時間を無駄にするのではなく、グラフィックスプロセッサ上で実行されるコードは、データが既に GPU メモリ内に存在すると想定し、必要に応じてアクセスします。メモリ内にデータが存在しない場合はフォールトが生成され、そのページのデータは本来あるべき場所から移行されます。

例えば、2GBの共有メモリ配列を割り当て、最新のオペレーティングシステムを実行しているCPUコアを使用してその内容を変更し始めると、CPUは未使用の割り当てへのアクセスでエラーを起こし、必要に応じて物理ページを仮想空間にマッピングします。その後、GPUは配列への書き込みを開始します。ページはCPUには物理的に存在しますが、GPUには存在しません。そのため、GPUは配列の内容をページごとに物理メモリに移行し、CPUには存在しないページとしてマークします。

CPUが次に配列を変更する際、フォールトを生成し、GPUからデータを引き出します。これはソフトウェア開発者には透過的に行われ、ユニファイドメモリにおけるデータの一貫性を確保します。また、データはオンデマンドでロードされるため、ユニファイドメモリ空間をGPUの物理メモリよりも大きくすることが可能です。そのため、ユニファイドメモリのアドレス幅は49ビットです。

このヘテロジニアスモデルは、主に大規模で複雑なデータを扱う科学技術やAIのワークロードを対象としていることを覚えておいてください。ゲームや低レイテンシのアプリでは、常にオンデマンドでページングすることは期待されません。ページフォールトの処理はコストが高く、特にPCIe経由でデータを移行する必要がある場合はなおさらです。しかし、これは技術者にとってフラットメモリモデルから得られるシンプルさと効率性が大幅に向上することを意味します。プログラマーは、新しいカーネルが起動された際に、ページフォールトの嵐を回避するためにGPUがどれだけのメモリをプリフェッチすべきかをコード内でシステムに指示することができます。GPUは、ページフォールトを一つずつ処理するのではなく、複数のページフォールトを並列処理することもできます。各ページは最大2MBのサイズです。

Nvidia は、Linux ディストリビューション メーカーと協力して、統合メモリのサポートをシステムに組み込むとも言われています。将来的には、ソフトウェアは汎用関数を呼び出してmalloc()ポインタを GPU に渡すだけでよくなり、特別な CUDA 割り当て呼び出しを使用するのではなく、基盤となるオペレーティング システムが割り当てとページングを処理するようになります。

ページフォールトを使ってデータの一貫性を実装するというのは、ナッツとスレッジハンマーが出会い、ナッツがスレッジハンマーに恋をし、スレッジハンマーが自分の役割を果たす、というようなものです。時には、やらなければならないことをやらなければならないこともあります(例えば、Voltaを待つなど)。

核心まで

GP100は、GPUあたり3,584個の32ビット(単精度)CUDAコアと1,792個の64ビット(倍精度)CUDAコアを搭載しています。32ビットコアは16ビット(半精度)演算も実行できます。

L2キャッシュサイズは4MBで、14MBの共有レジスタを備え、内部で80TB/sの速度でデータをシフトできます。ベースクロック速度は1.3GHzで、ブーストすると1.4GHzまで上昇し、倍精度演算では5.304TFLOPS(半精度演算では21TFLOPS)の性能を発揮します。TDPは300Wです。コアは56個のSM(ストリーミングマルチプロセッサ)で構成されており、それぞれのSMは以下のようになっています。

一人で行くのは危険です、NVLink

GP100は、新しいNVLinkインターコネクトを使用して、PCIeではなく40GB/秒のリンクでGPUクラスターを接続します。これにより、グラフィックスプロセッサ間で高速にデータを転送できます。DGX-1に搭載されている8つのP100クラスターは、NVLinkを使用して1TB/秒をわずかに下回る速度でデータを転送します。

将来のコンピューティングコア(現時点ではIBMのOpenPOWERのみ)はNVLinkに直接接続できるため、低速バスを経由して情報を転送する必要がなくなります。Tesla P100は、メモリの読み書きに使用できる40GB/秒の双方向リンクを最大4つサポートします。これはパフォーマンスを大幅に向上させると聞いています。

口を挟むのは嫌ですが…

P100上で動作するソフトウェアは、描画呼び出しの終了時ではなく、命令の境界でプリエンプトされます。つまり、スレッドは、長時間かかる可能性のある描画操作の終了まで待つことなく、すぐに優先度の高いスレッドに交代できます。この余分な遅延(呼び出しの終了を待つこと)は、バーチャルリアリティヘッドセットなど、時間に対する感度が非常に高いアプリケーションに大きな負担をかける可能性があります。5ミリ秒の遅延は、垂直同期の欠落やリアルタイムレンダリングの目に見える不具合につながる可能性があり、一部の人々を苛立たせています。

命令レベルまで落とし込むことで、このレイテンシのペナルティは解消されるはずで、これはVRゲーマーにとって朗報です。命令ごとのプリエンプションにより、プログラマーはGPUコードをシングルステップ実行してバグを修正することもできます。

思い出をありがとう

P100 は、720GB/秒の速度でデータをシフトし、エラー訂正機能を無料で搭載した HBM2 (文字通り、高帯域幅メモリ) を使用しています。以前の Nvidia チップでは、ECC を実装するためにストレージ スペースをいくらか犠牲にしていました。

HBM2は、オフチップDDR5 RAMよりも大容量でありながら、消費電力も少ないと言われています。HBM2ストレージの各スタックは最大8GBまで収容可能です。P100では、HBM2を4スタック搭載し、合計16GBのストレージ容量を備えています。GPUとメモリを合わせたパッケージ全体のサイズは55mm×55mmです。ダイ自体の面積は600mm²です

GP100 には、グローバル メモリ内の値に対する倍精度浮動小数点アトミック加算という新しいアトミック命令も導​​入されています。

「フアン氏によると、数千人のエンジニアがPascal GPUアーキテクチャの開発に取り組んでいるとのことです」と、姉妹サイトThe Next Platformの共同編集者であるティム・プリケット・モーガン氏は指摘する。「NVIDIAが機械学習に『全力』を投じた3年前に始まったこの取り組みは、これまで30億ドル以上の投資を要しました。NVIDIAはこの資金を回収し、さらにそれ以上の利益を得たいと考えているのです。」

Pascal 設計の詳細については、Nvidia の技術者 Mark Harris によるこちらの記事をご覧ください。®

Discover More