CUDAアーキテクチャの新しいラウンド

みなさんこんにちは!

4月初旬、新しい主要なインデックスコンピューティング機能3.0を備えたnVidiaからの新しいビデオカードの発表を見ました。 仕様を慎重に検討したところ、驚いたことに、分岐が最悪の結果、つまりパフォーマンスの大きな損失につながると思われました。 バージョンごとにブランチの役割はますます小さくなり、ケプラーはこの点で一歩後退したように思えました。 私の脳では、これがほとんど不可能であることに気づき、少し待つことにしました。

そして今週、新しいケプラーアーキテクチャグラインダーに関するホワイトペーパーを入手し、多くのことを明らかにしました。



始まり



最初は、この記事は対象者のみを対象に考案されましたが、念のため、CUDAの計算機能について説明します。

そのため、nVidiaは5年間、一般的なコンピューティング用のグラフィックスカードを開発しています。 それ以前はGPUを頼りにすることは不可能であったとは言わないが、それをすることは普通の人にとって非常に不快だった。 2007年に、ビデオカードに基づくコンピューティングデバイス(CUDA)のユニバーサルアーキテクチャが提案されました。 これにより、アーキテクチャの主な機能を維持しながら、デバイスの能力を大幅に向上させることができました。 つまり、プロセッサの数とメモリの量は絶えず増加していますが、共有/グローバル/テクスチャとレジスタへのメモリの分割は古代から保存されています(SS 2.0では表面といくつかのキャッシュも登場しましたが、これは別の歌です)。

ただし、何も静止しておらず、アーキテクチャとコマンドセットは時間とともに変化します。 ここでは、同じアーキテクチャのGPUファミリを表示するために、Compute Capability(CC)のバージョンが定義されました。 たとえば、CC 1.0のデバイスは一般にアトミック操作を行うことができませんでした。CC1.1ではグローバルメモリに、CC 1.2ではグローバルと共有の両方にできました。 従来、さまざまなSSの機能の完全なリストは、CUDA Cプログラミングガイドの最後に記載されています。



ケプラーは何をもたらしますか?



まず、巨大な新しいマルチプロセッサ。 以前のマルチプロセッサに8(CC 1.x)、32(CC 2.0)または48(CC 2.1)ストリームプロセッサがあった場合、Keplerは192プロセッサに新しいチップを使用します。 他の特徴も印象的です:

FERMI GF100 FERMI GF104 ケプラーGK104 ケプラーGK110
CCバージョン 2.0 2.1 3.0 3.5
Warp'eのストリーム 32 32 32 32
マルチプロセッサごとのワープの数 48 48 64 64
マルチプロセッサへのスレッド 1536 1536 2048 2048
マルチプロセッサブロック 8 8 16 16
マルチプロセッサあたり32ビットレジスタ 32768 32768 65536 65536
レジスタ/ストリームの最大数 63 63 63 255
共有メモリ構成 16K

48K
16K

48K
16K

32K

48K
16K

32K

48K
X軸の最大グリッドサイズ 2 ^ 16-1 2 ^ 16-1 2 ^ 16-1 2 ^ 32-1
ハイパー‐ Q いや いや いや あります
動的並行性 いや いや いや あります


このプレートからどのような結論を引き出すことができますか? ワープのサイズは同じままで、これは賑やかです。 私が恐れていた主なことは、ワープのサイズの増加でした。これは、分岐中の不必要なダウンタイムにつながります。 しかし、すべてがバラ色ではありません。 ここで、レジスタにさらに注意を払う必要があります-SMXの負荷を最大化するには(同時にロードされるブロック/スレッドの数によって)使用する必要はさらに少なくなります...保管するよりも、今ではそれほど単純ではありません。 したがって、最適化パスにもう1つの分岐があります。計算結果をストリームに保存できますが、SMXに収まるブロックが少なくなり、RAMの読み取り/書き込みのダウンタイムが発生する可能性が非常に高くなります。

その倍精度の計算と特別な処理に気付くことさえあります。 関数(sin、cosなど)がより高速に実行されるようになりました。

2番目の注目すべき革新は、新しいWarp Schedulerです。 各マルチプロセッサには4つのスケジューラがあり、それぞれがサイクルごとに2つのワープ命令を実行できます。 要するに、面白い小さなことです。 ブランチワープ内に最大2つのパスがあることを確認してください)

さらに理解できないもの:

動的並列処理 -ようやくそれがどのように機能するのか理解できませんでしたが、スレッドは新しいグリッドを起動できるようです...どうなるか見てみましょう。 すぐにI / Oのみがホストになり、カーネルの管理機能があるため、他のすべてをGPUで起動できるようになります。

GPUDirect-ホストなしで、あるGPUから別のGPUにデータを直接取得して転送できるようになりました。 そして、ネットワーク経由でも。 見るまで信じられません かっこいいですね。

あらゆる種類の素敵なこと:



そして最後に、非常にクール-nVidiaは数人のエンジニアの魂をエネルギーの神々に売りました。そして今、GTX 680はW / FLOPSの計算から、同様のフェルミよりも少ない量を食べることを約束します。 まあ、それはクールだよね? 少なくとも古い280ストーブは捨ててください。 そして、彼らは130度まで加熱され、彼らのために予備の1.5 kWを割り当てる必要がありました。



おわりに



要するに、私はあなたのことを知りませんが、新しいケプラーを待つのを楽しみにしています! GPU SS 3.5で2台のコンピューターにアクセスできるかどうかはわかりません。GPUDirectを感じることができます。 誰かがそれを持っている場合-私はそれに触れさせて、大丈夫?



All Articles