SC12において、NVIDIAのGPU Accelerated Computingビジネス部門のCTOであるSteve Scott氏が「The Evolution of GPU Accelerated Computing」と題して招待講演を行った。
GPUは、以前は固定機能の描画用のパイプラインで構成されていたが、描画処理の高度化に伴ってプログラムが可能な構成に進化し、GeForce FXからはプログラマブルなシェーダーが取り入れられた。
当初は、GPUハードウェアの機能不足やグラフィックス用のOpenGL言語でのプログラムが必要など、科学技術計算への適用は難しかったが、ハードウェアの進化とCUDAの提供などで、環境が整備されてきた。
そして、Teslaで倍精度浮動小数点演算を取り入れ、Fermiでは倍精度浮動小数点演算性能を大幅に引き上げ、大規模なスパコンでは必須のECCも取り入れた。これにより2010年頃からTop500の中でGPUを搭載するシステム数が急増している。
2012年に発表したKepler GPUでは、192CUDAコアを持つSMXを採用してエネルギー効率を改善するとともに、Hyper-QとDynamic Parallelism機能を追加し、プログラム実行の柔軟性を増し、性能も向上させている。
GPUを分割して複数のカーネルを同時並列に実行するHyper-Q。CUDAコアの利用率を上げて2.5倍に性能が向上(CP2Kの例) |
業務フロー作成画面GPUで実行するカーネルから、直接他のカーネルの呼び出しを行うDynamic Parallelismにより、コードサイズが半減し、性能も2倍に向上(Quicksortの例) |
Xeon E5-2687 CPUに、もう1個CPUを付けた場合を1として、K20X、あるいはM2090 GPUを付けた場合の性能を比較したものが次のスライドである。5種のプログラムでK20Xを付加した場合は、デュアルCPUと比較して2.7倍~10.2倍の性能が得られている。
最新のスーパーコンピュータ(スパコン)であるNCSAの「BlueWaters」では、3000台以上のTesla(モデル名は公表されていないが、Kepler GPUを使うK20Xと思われる)GPU、Top500 1位の「Titan」では18,688台のK20X GPUを使用している。
プロセサのクロックの向上は止まり、コンピュータは速くはなっていない、幅が広がっただけであり、HPCのアプリケーションは多数のスレッドで並列に処理するスループットアプリにならなければならない。また、消費電力の観点からデータアクセスの局所性が重要であり、局所性を明示的に管理できるプログラミングモデルが必要である。さらに、それがハードウェア依存でなく移植性が高いものでなければならないという。
そして、その1つの解としてOpenACCを示した。
そして、GPUの将来の方向性として、NVIDIAがDARPAのUHPCプロジェクトで2018年をターゲットに開発を進めているEchelonを示した。EchelonチップはLOC0~7の8個の汎用高性能プロセサコアと256個のGPU風のStreaming Multiprocessor、1024個の256KB L2キャッシュとDRAM、インタコネクトのインタフェースなどを集積する。このチップ1個で16TFlopsの演算性能を持ち512+GBのDRAMメモリを接続する。
キャビネットにこのモジュールを256個収容すると、演算性能は4PFlops、メモリ量は128TBとなる。このキャビネットを並べ、システムインタコネクトで接続してExaFlopsのEchlonシステムを作るというプランである。
GPUによるアクセラレーションは短い期間に大きな発展を遂げ、プログラムも容易になり、より汎用処理ができるようになった。今後の進化は、より高度な集積、汎用性の向上、エネルギーやオーバヘッドを低減するという方向にファーカスする。これが将来のコンピュータの作り方であると結んだ。