スーパーコンピュータ(スパコン)の性能ランキング「Top500」で1位を獲得した「Titan」は、AMDの16コアOpteron CPUとNVIDIAのK20X GPUを使っているが、27.1PFlopsのピーク演算性能の80%以上がGPUが占めている。

今回NVIDIAが発表したグラフィックスボード「GeForce GTX Titan」は、このK20Xと同じKepler GK110というチップを搭載している。NVIDIAのキャッチフレーズの1つは、Gaming Supercomputerというもので、ハイエンドゲーマーを狙うGeForceシリーズの製品であるが、これまでのGTX 680などのようなナンバーではなく、スパコンにあやかったTitanという名称を付けている。

NVIDIAは、グラフィックス用はGeForce、科学技術計算用はTeslaというブランドを使っており、これまで同じチップを使っていてもGeForceはグラフィックスでは使用しない倍精度浮動小数点演算性能が低く抑えられており、科学技術計算用のTeslaは倍精度浮動小数点演算性能が高いという製品仕様になっていた。

しかし、このGTX Titanではグラフィックスで使う単精度(Single Precision:SP)浮動小数点演算性能は4.5TFlopsと高いのは当然であるが、倍精度(Double Precision:DP)浮動小数点演算性能も1.3TFlopsと1TFlopsを大きく超えている。Tesla製品は数千ドルするが、GeForce製品は1000ドル以下であり、GTX Titanはパーソナルスパコンとしてもコストパフォーマンスが高い製品となる。

GK110チップはSMXというブロックを15個搭載しているが、GTX Titanでは1個をスペアとして14個のSMXを使用している。SMXの内部構成は次の図のようになっており、Coreと書かれた箱がCUDAコアとも呼ばれるSP浮動小数点の積和演算器である。そして、DP Unitと書かれた箱がDP浮動小数点の積和演算器である。なお、LDSTはロードストアユニットで、SFUは三角関数などを計算する演算器である。

GK110 GPUのSMXブロックの構成(出典:NVIDIAのKepler GK110ホワイトペーパー)

この図に見られるように、1つのSMXにはSP演算を行うCoreは192個、DP演算を行うDP Unitは64個含まれている。 GTX TitanのGK110チップは、コア演算が積と和の演算を各1回行うのでコアあたり2演算(Flops)で、コアが192個でSMXを構成し、14SMXがある。そして、標準のコアクロックが837MHzであるので、2Flops×192×14×837MHz=4499.7GFlopsであり、4.5TFlopsという仕様と一致している。

DP UnitはCoreの1/3の個数であるので、DP性能はSP性能の1/3になるはずである。科学技術計算用のTesla K20Xの場合、SP性能は3.95TFlopsに対してDP性能は1.31TFlopsとなっており3対1の関係が成り立っている。

しかし、GTX Titanでは、DP性能は1.3TFlopsとなっている。なぜ、SP性能の1/3の1.5TFlopsではないのか?。SP性能では、科学技術計算用の最上位製品であるK20Xの3.95TFlopsに対してGTX Titanは4.5TFlopsと大きく上回っている。K20XのDP性能は1.31TFlopsであり、DP性能でもGTX Titanが上回ってしまうとバランスが取れなくなってしまうので、GTX Titanの性能をK20Xよりわずかに低い1.3TFlopsに抑えたのではないかと筆者は推測している。

GTX Titanは標準のコアクロックが837MHz、ブースト時には876MHzまでクロックアップできるという仕様になっている。しかし、ブーストテクノロジがGPU Boost 2.0となり、チップ温度に余裕がある場合には、さらにクロックを上げることができるようになった。また、水冷ブロックをGK110チップに付けることができるようになり、その気になれば、876MHzを超えてクロックアップすることもできるようである。そうするとK20XのDP性能を超えることも可能になる。

初稿掲載時にはKepler GPUの新機能であるDynamic ParallelismとHyper-Qという機能が省かれていると書いていたのだが、この情報は間違いで、これらの機能はGTX Titanでもサポートされていることが明らかとなったので、謹んで訂正させていただきたい。Kepler以前のGPUでは、GPUで動くカーネルプログラムはCPUからしか呼び出せなかったが、Dynamic Parallelismは、GPUのカーネルプログラムの中から他のカーネルプログラムを直接呼び出すことができる機能である。また、以前のGPUでは、CPUからGPUに仕事を依頼するキューは1本しかなく、キューに入れられた順に処理を行うしかなかったが、Hyper-Qは、このキューを32本にして、GPUを複数のコアグループに分割して複数のキューの仕事を並行して実行することができるという技術である。いずれもGPUの使用効率を上げる新技術であり、CUDA5ではプログラミング言語レベルでこれらの機能がサポートされている。これらの機能がサポートされることにより、GTX Titanを使って、K20Xを使うTitanスパコンのプログラム開発を行うことができるようになる。また、GPU対応のCAEソフトもK20X/K20とGTX Titanが同じコードで対応できることになり、開発、提供する側の負担が小さくなる。

一方、スパコンなどに大量に使うK20X/K20などでは信頼度が非常に重要であり、GDDR5メモリのECCやチップ内部のデータパスにもECCが付けられているが、 この機能はGTX Titanではサポートされていない。小規模使用が中心のGTX TitanではECCのサポートによる信頼性の向上よりも、消費電力の増加や性能の低下を避ける方が良いという判断であると思われる。

2/28追記:記事掲載当初、「GTX TitanではKepler GPUの新機能であるDynamic ParallelismとHyper-Qという機能が省かれている」と記載させていただいておりましたが、GTX Titanでもこれらの機能をサポートしていることが明らかとなりましたので、当該部分ならびにそこに付随する文章を修正させていただきました。

また、スパコンなどに大量に使うK20X/K20などでは信頼度が非常に重要であり、GDDR5メモリのECCやチップ内部のデータパスにもECCが付けられているが、これもGTX Titanではサポートされていない。ということで、大規模スパコン向けのTesla製品を代替する製品ではない。

GeForce GTX Titanは4.5TFlopsのSP性能を持つハイエンドグラフィックスボードというだけではなく、DP性能の高さから、小規模なパーソナルスパコンのアクセラレータとしても適している。GPUアクセラレータを利用して性能を大幅アップしたCADやCAEソフトも増えてきており、GTX Titanを搭載したワークステーションはコストパフォーマンスの高い解になると期待される。