HPC版Keplerは動作効率を徹底的に強化する

Keplerアーキテクチャについて、「GeForce GTX 6xx」シリーズの名称で知られるプロフェッショナルユーザーやゲーミングユーザー向けGPUは「Kepler 1」(GK104)などと呼ばれているが、これにHPC向けの機能強化を行った「Kepler 2」(GK110)と呼ばれるGPUが今回の主題となる。Huang氏によれば、Kepler 2の特徴は「SMX」「Hyper-Q」「Dynamic Parallelism」の3つであり、これが性能向上における大きなポイントになっているとする。SMXはKeplerにおける演算処理ユニットの単位であり、FermiのSMよりも電力効率が高く、さらに搭載ユニット数でFermi時代の32コアから192コアまで増加しているという。これにより、単位パフォーマンスあたりの電力効率で従来の3倍の向上が見込めるとのこと。この点はKepler 1とほぼ共通のポイントだ。

HPC向けに提供されるKepler GPUは、「SMX」「Hyper-Q」「Dynamic Parallelism」という3つの特徴的な機能をもつ

SMXとはKeplerにおける演算処理ユニットの単位で、FermiのSMよりも電力効率が高く、さらに搭載ユニット数でFermi時代の32コアから192コアまで増加している。NVIDIAによれば、単位パフォーマンスあたりの電力効率で3倍の向上が見込めるという

そしてKepler 2において特に重要なのが「Hyper-Q」「Dynamic Parallelism」の2つだ。Hyper-QはGPUの利用効率を高めるための技術で、従来までCPUが1つのGPUに対して一度に与えられるMPIタスクの数が1つに制限されていたのに対し、Kepler 2では最大32タスクまで同時処理が可能となっている。これにより、従来まではすべてのコアが効率的に利用されず、一部がヒートスポット的に利用される傾向が強かった。Hyper-Qでは極力多くのコアを同時利用するようアーキテクチャが改良されており、単位時間あたりの処理効率が大幅に高まっている。これは適切な冷却機構さえあれば、単位時間あたりのより多くのGPU処理をこなすのが可能なことを意味する。

従来までは1つのGPUに対してCPUが一度に与えられるのは1つのMPIタスクのみだったのが、Keplerでは最大32のタスクまで同時に処理できる。これが「Hyper-Q」だ。そのため従来はコアの利用効率が低く、写真にあるようなヒートスポットが局所的にできる傾向があったのが、Keplerでは単位時間あたりの利用効率が向上し、より多くの処理を実行可能になる

Hyper-Qと並んでKeplerにおける性能向上に寄与しているのが「Dynamic Parallelism」だ。従来までGPUはCPUの演算ユニットの一部として扱われ、必要に応じて適時GPUが呼び出し処理を行う形態をとっていた。これをデータ処理の特性に応じて階層構造(ネスト)をGPUが判断し、CPUとの連携なしにGPU内部で処理を自動完結させる仕組みがDynamic Parallelismとなる。この応用例が2つめのシミュレーション画像で、例えば処理ブロックの粒度が低ければ演算結果は精度の低いものとなり、逆に粒度が高いと精度は高くなるものの演算に時間がかかり、かつ本来あまり計算が必要のない部分も高精度な処理が行われて効率が悪い。そこで演算結果を利用して処理ループの必要性の有無を適時判断するようにすれば、処理効率が一気に高まるというのがメリットだ。画面の例では、処理が必要な部分ほど粒度が高くなる傾向がある(つまり計算量が増える)、ことが確認できる

もう1つ興味深いのがDynamic Parallelismで、こちらはGPU内で演算結果の依存性を認識してループや再帰を自動処理し、ネスト(階層構造)を構成することができる。従来までであれば、CPUが必要なループ等の処理を認識して適時GPUに指示を出す形態だったが、これでは1処理ごとにCPUとの間に逐次通信が挟まるため効率が悪い。これを自動処理し、GPU内である程度処理を完了させるのがDynamic Parallelismの特徴となる。具体例は画像を見ていただいたほうがいいだろう。例えばシミュレーションを行う際、処理を分解するブロックの粒度が低ければ演算の精度が悪くなり、逆に粒度を高くすると精度が向上する一方で演算時間がより長くなる。また画面を見てもわかるように、実際にはほとんど演算を必要としない「黒」のようなエリアも多く存在するため、そのぶん無駄な計算処理が行われることになる。もし演算中に「より多くの演算が必要」だということを自動判断して分解率を上げることができれば、その演算効率は高くなるだろう。これがDynamic Parallelismの利用例だ。

アンドロメダ星雲の衝突シミュレーション。写真ではわかりにくいが、星雲を構成する膨大な量のパーティクルが存在している

なお、Kepler 2ベースのHPC向けGPUである「Tesla」には、「K10」と「K20」の2つのバリエーションが用意される。単精度演算を中心とした用途向けがK10で、こちらすでに提供が開始されている。倍精度演算に対応し、前述の「Hyper-Q」「Dynamic Parallelism」をサポートしたK20は今年2012年第4四半期の提供となる。

Keplerベースの「Tesla」は「K10」「K20」の2種類のバリエーションが用意される。特に今回ポイントとなるHyper-QやDynamic ParallelismをサポートしたK20は、今年2012年第4四半期での提供開始を予定している