GK110についてまとめとメモ(書きかけ)

  • GK104はグラフィックまたは単精度演算向けで、コンシューマ(ゲーマーなど)または石油探査などが対象。GTX680、K10などが相当する。それに続いて発表されたGK110はHPC用途も含まれる。K20が相当する。
    • K10はリリース済み。K20はこれから。
  • Fermiと違うのは、HPC向けから先に発表されたこと。Fermiではコンシューマ向けのGTX480から発売された。
    • NVIDIA Kepler GK110 Approximate Specs Leaked - Legit Reviewsこんな記事もあるが、GTX685を買えばGK110を手元に置けるのかな。GTX685はFermiにおけるGTX480的な立ち位置となるのだろうか。GTX480とHPC向けFermi(C2050とか)との違いは、ECCの有無と倍精度演算性能だけだった。GTX685も同じだとありがたいが、GTX685にK20と同等の機能を求めるの無理なのでないだろうか。
    • 北森瓦版 - GeForce GTX 780はGK110を搭載するとそのリンク先から、GTX780としてGK110採用のGeForceが出る様子。かなり期待。
    • 北森瓦版 - GK110搭載GeForceは登場するのか?GK110のGeForceが出るかは意見が割れている様子。ここで触れていることの他には、HPCの裾野にいるユーザがK20を買わなくなってしまうことに対するNVIDIAの懸念もあると思う。(2013-04-20追記)GTX Titanが上記のお話を全て吹っ飛ばしました。
  • GF110Keplerはコンピュート・ケイパビリティーが3.5(ずいぶん飛んだ)。GF104は3.0。ここからも差がわかる。
    • GF100ではGeForceとTeslaの間にはコンピュート・ケイパビリティーでの違いは無かった。K20とGTX685の間には違いが出るのかかなり気になる。
  • シェアードメモリの容量はGF100と同じく、48KB/SM。16/48, 48/16に加えて32/32の組み合わせが可能になった。
  • 読み込みのみのデータキャッシュが出来た。階層的にはL1、シェアードメモリと同列。48KBで結構大きい。これにより、プログラマの負担が減った。
  • L2が1536KBでFermiの倍。クロックあたりのバンド幅もFermiの倍。
  • ECC機能はFermiと同じく装備。
  • 192個のCUDAコアを一つの単位として扱う。これはGK104と同じ。Fermiでの32個のCUDAコアで一つのSMとしたものに相当。
  • GF100は、シェーダ・クロックの倍で動作。GK110は、プライマリGPUクロックで動作。結果、低い周波数で動作することに。電力効率を上げるためにおこなった処置。
    • 192コアに対して、4つのウォープスケジューラ。8つのウォープディスパッチャ。4つのウォープを並列に発行・実行できる。4つのウォープを選択し、1ウォープにつき1サイクルに独立した命令を2つ発行できる。
    • GF100Fermiでは32コアに対して2つのウォープスケジューラ、2つのウォープディスパッチャ。
    • GF104Fermiでは48コアに対して2つのウォープスケジューラ、4つのウォープディスパッチャ。
  • アーキテクチャ的にFermiとの違いは、GK110Keplerにて1スレッドあたりのレジスタ数が4倍になったこと。
  • B/Fは、GF100では1、GF104では0.67、GK110では32ビット幅(float一つに相当)でのアクセスの場合で0.33B/Flopに減少
    • B/Fの減少はレジスタ増加によって沢山スレッドを立てられることでカバーする方針?
  • GK104以降ではPCI Express Gen3対応。
  • Shuffle Instructionが実装された。これは、同ウォープ内で、他のスレッドが保有するデータ(レジスタ上)を他のスレッドから(シェアードメモリへのロードストアを用いずに)参照出来るというもの。
    • 便利なsubsetも用意されている。

dynamic parallelizm

  • GPUカーネルの実行中に、新しくスレッドとブロックを指定してGPUカーネルを呼び出して実行可能になる。
    • Fermiでは、いったんCPUに戻さないとスレッドとブロックを新しく指定して実行することは出来なかった。
    • GK110のみの機能。GK104では使えない。GTX685で使えるとうれしい。

Hyper-Q

  • CPUから最大32のコマンド列を受け入れる事が可能になった。例えば、MPI並列では、CPU側でプロセスが立つが、1つのGPUで受け入れられるプロセスは一つであったが、GK110では32プロセスを受け入れることが出来る。