COOL Chips XIにおいて、Skadron准教授は消費電力問題を乗り切る手段としての超並列のグラフィックプロセサに関する特別講演を行った。Skadron准教授は、本来の所属はバージニア大学であるが、今は、サバティカルでNVIDIAで超並列プロセサの研究を行っている。

現状の先端半導体プロセスでは、電源電圧は0.9~1.0V程度であり、ITRS(International Technology Roadmap for Semiconductor)では、世代ごとに2.5%程度の電源電圧低下を予想している。消費電力はC×V^2×fで表され、スイッチ容量Cは世代ごとに0.7倍、クロックfは向上しないとすると、電力は0.66倍となると計算される。しかし、世代ごとの微小化によりチップ占有面積は0.5倍になるので、電力密度は世代ごとに1.33倍に増加してしまう。しかし、これは甘い計算で、Cの減少はもう少し緩やかであり、クロックも緩やかに向上して行くので、世代ごとに電力密度は1.5~1.75倍になってしまうと予想される。つまり、マルチコア化で消費電力の問題が解決したと思ったら大間違いで、熱の壁はどんどんと近づいており、我々を押しつぶそうとしている。と述べて、Star Warsで、Luke SkywalkerとLeia姫がデススターのトラッシュコンパクターに押しつぶされようとしている画面の写真を見せ、映画ではR2D2が壁の動きを止めて主人公たちは救われたが、我々の所にはR2D2はいない。従って、どうするかと述べて話を始めた。

超並列グラフィックプロセサについて講演するSkadron准教授

汎用プロセサコアの電力効率を改善する努力が続けられているが、もうその努力も限界が見え始めてきている。この先、電力を抑えながら、更に性能を向上させていくには、SIMDや専用コプロセサなどのアーキテクチャを再評価する必要があるという。

目的とする処理に最適化したアーキテクチャのコプロセサをつける方法は、汎用プロセサに対して10倍~100倍高い電力効率を実現しうるが、汎用と専用というヘテロジニアスなプロセサ環境に対してプログラムを書く必要がある。また、専用のコプロセサごとにプログラムの書き方が変わってしまうと、流用性も無くなるし、プログラマにとっても色々と覚える必要が出てきて大変である。従って、ハイレベルのプログラミングモデルが必要である。

この候補が、NVIDIAがGPU用に開発したCUDA(Compute Unified Device Architecture)と呼ぶプログラミングモデルであるという。CUDAはC言語に並列処理機構を追加しており、並列に実行するスレッド階層のサポートし、それらのスレッド間の高速な同期機構、スレッド間で共用できるメモリをサポートしている。スレッドの階層としては、スレッドを複数含むスレッドブロックという概念を持ち、各スレッドブロックに含まれるスレッド数、そしてCUDAプログラムの実行に使用するスレッドブロック数を指定することができるが、この数は物理的にハードウェアがサポートしているコア数より大きな数を指定することが可能であり、その場合はCUDAコンパイラが自動的に複数回ハードウェアを動かすようなコードを生成してくれる。つまり、ハードウェアの違いはCUDAコンパイラが吸収しており、異なる規模のハードウェアで動かす場合にも、プログラムの修正は不要で、再コンパイルで済む。この機構はNVIDIAのGPUに特化したものではなく、汎用的に多数のスレッドを動かすハードウェア用のプログラミングモデルとして使えるという。

GPUは汎用プロセサと較べて10倍~100倍という高い性能を実現しており、今後も有用性を増す。また、ヘテロジニアスな環境でのプログラミングに関してもCUDAでかなりのことが出来るということが実績として積み上がってきており、電力問題の制約の中で、更に性能を改善してゆく有効な手法であると結んだ。