読者です 読者をやめる 読者になる 読者になる

studylog/北の雲

chainer/python/nlp

次期GPUのGTX 1080正式発表(再追記:半精度アクセラレーション対応してなかった)

ついにPascalが正式に発表されました。

単精度8.5〜9TFOPS・メモリ8GB・180Wで価格は$599、北米発売は5/27です。
980Ti(5.6)はもちろんTitanX(6.2)よりもTFLOPS上回ってきました。しかも省電力。

これで$599は安いですね。
日本での実売は85,000〜90,000円ぐらいからでしょうか。
最近の円高を反映してもっと安くしてくれると嬉しいです。

ただ、一番気になっていた半精度のアクセラレーションについての発表は無い模様。
もしこれがついてて半精度18TLOPSとかだったら家にある全GPUを処分して買い替えたんですが…(対応していた模様 下に追記あり)。

ちなみに1070も同時に発表されて6.5TLOPSで$379と、これですらTitanXを上回っています。
現世代のGPUは中古市場でも一気に値崩れを起こしそう。

噂通りのハイスペックで登場したPascal世代。
ディープラーニング用途では一択となりそうです。

再追記(5/23)

残念ながらFP32:FP16の演算性能比は全世代と同じく1:1が確定したようです
一応残しておきますが以下の追記は間違いです。FP16への特別な対応はGP100のみでGP104を採用したGTX1080では未対応。いつか出るかもしれないGTX1080tiとTitanに期待します。

追記(5/8ぐらいに書いたの)

pc.watch.impress.co.jp
Pascalで導入された、FP16の2-way SIMD(Single Instruction, Multiple Data)仕様は、GP104でも引き継がれるだろう。

やった!対応してるっぽい。現世代まではFP32(単精度)でもFP16(半精度)でも計算スループットは同じだったのでFP16で計算するメリットはメモリの帯域以外は無かったはずですが、これが本当ならばFP16はFP32の2倍のスループットになるのでTFLOPSも単純に2倍になってくれるはずです。

FP16の2-way SIMDについてはこっちが少し詳しい。「各ブロック毎に16ユニット相当のFP64性能」の見出しの後からです。

【後藤弘茂のWeekly海外ニュース】倍精度浮動小数点演算性能を引き上げた新GPUアーキテクチャ「Pascal」 - PC Watch

また、Pascalでは、パックドFP16がサポートされた。従来は半精度(FP16)浮動小数点演算は、FP32 CUDAコアで実行され、FP32と同じスループットだった。Maxwell世代なら、1プロセッシングブロック当たり、FP32とFP16ともに、32エレメント/サイクルだった。しかし、Pascalでは、2-wayのSIMD(Single Instruction, Multiple Data)型のFP16がサポートされた。そのため、32個のCUDAコアで、各サイクル32エレメントのFP16演算が可能となっている。
(中略)
FP16は、GPUにとって新しくて古いフォーマットだ。グラフィックスで、整数から浮動小数点に移行する際に、データ量を抑えるためにFP16が導入され、盛んに使われた。グラフィックスでは現在も使われているが、同じくデータ量を抑える目的でディープラーニングにも採用が進んだことから、急に脚光を浴びている。FP16性能は、GPUアーキテクチャの新しい焦点となっている。NVIDIAPascal(パスカル)をディープラーニングに向けて作ったと主張する根拠の大きな部分は、このFP16のサポートにある。

FP32とFP16の学習結果の違い そもともFPって何か

自分はそこまで丁寧に調べた訳じゃないので間違った認識だったらすみません。

3.14159265358979323846264338327950288
こんな風な長い浮動小数点数をどこで打ち切るか。FPが低ければ低いほど桁数短いところで打ち切ります

3.14 (こっちの方がFPが低い)
3.141592653 (こっちの方が高い)

前者より後者の方が精度が高いです。だから半精度(FP16)、単精度(FP32)、倍精度(FP64)と呼ばれている。数字はbit数です。
倍精度は主にスパコンレベルで使われていてディープラーニングでは長らく単精度が主流でしたが、段々と「半精度で十分」という考えが主流になってきているようです。そこまで小数の精度を追求しなくても学習結果に影響は無く、半精度なぶん学習が早く進むのなら長い目で見れば結果的に単精度よりも学習精度は高まるというわけです。

しかし現世代の一般向けのGPUは半精度も単精度も計算速度が同じという致命的な構造のせいで半精度で学習するメリットが薄かったのです。それを次期Pascalさんが解決してくれて、半精度は単精度の2倍の速度で計算可能に。このアーキテクチャスパコン/ガチ向けのTeslaというGPUには既に実装済みでしたが一般向けのGTXには搭載されないんじゃないかと心配していたので一安心。今回発表された1080ではスルーしておそらく半年後ぐらいに出るであろう1080tiとTitanにしか搭載されないのかなあなんて失望してただけにめちゃくちゃ嬉しいです。

手持ちのGPUを全部売る準備を始めたいと思います。長い追記終わり。