このページの本文へ

前へ 1 2 3 次へ

ロードマップでわかる!当世プロセッサー事情 第310回

スーパーコンピューターの系譜 アクセラレーターとしてのNVIDIA GPU

2015年06月29日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

GPUをグラフィック以外の処理に活用する
「CUDA」の誕生

 GPUをもっと汎用に、という動きは2003年頃から顕著になってきていた。例えば2003年7月に開催されたSIGGRAPH 2003には“Computation on GPUs”というセッションがあり、線形代数計算をGPUに実装したり、疎行列をGPUに解かせるといった発表がされていたし、当時のATIのCEOを勤めていたDave Orton氏もこの頃からGPUをグラフィック以外の汎用処理に向けて使うというアイディアを語るようになってきていた。

 これを後押ししたのは、当時のCPUの性能の上がらなさである。2003年といえばインテルがNorthwoodを発表した年であり、この頃はまだ「次のPrescottでは5GHz超えでさらに性能が上がる」などといわれていたが、ご存知の通り翌2004年に発表されたPrescottのお陰で、CPUの業界には急速に閉塞感が漂うことになった。

 冷静に考えれば「AMDもあるだろう?」という気もするのだが、この2003~2004年はAMDも130nm SOIプロセスの立ち上げに失敗しており、性能を上げる以前に製品が出ないと騒いでいた頃なので仕方ないともいえる。

 その一方で演算性能そのものはまだまだ足りないと認識されており、「だったらGPUを使えばいいのでは?」というのは誰しも考え付くことである。

 もちろん、いきなり転用しようとしても無理がある。先にも述べたが、グラフィック用途をメインにしている従来のGPUでは、扱えるデータ型が8bitの整数か16~24bit程度の浮動小数点演算であり、これは汎用に使うにはあまりに不便すぎる。

 32bitの整数や32/64bitの浮動小数点演算ができないとアプリケーションの移植は困難極めるだろうし、ある程度汎用で使えるようにするためには制御構造や演算命令などの見直しも必要である。

 このあたり、どの程度の命令や機能を搭載するか、あるいはどんな形で利用できるようにするかといった基本的な仕様の策定には相応に時間がかかる。

 そうしたこともあり、GPGPUの利用が可能となるシェーダーモデル4.0に対応したDirectX 10の発表は、Windows Vistaにあわせた2006年までずれ込んだ。

 グラフィックの観点から言えば、バーテックス・シェーダーとピクセル・シェーダーを統合したユニファイド・シェーダー構造になったことがよく取りざたされるが、GPGPU的に見ると以下の拡張により、かなり自由にプログラミングができるようになった。

  • 実行命令数の制限がなくなり、命令スロット数も非常に大きくなった
  • 一時レジスター(32→4096)や定数レジスター(224→65536)の数が大幅に増やされた
  • 動的なフロー制御の制約がなくなった
  • 整数演算あるいはビット演算が追加された

 またすべてのシェーダーが直接ローカルメモリー(つまりビデオカード上のメモリー)にアクセスして値を読み取ったり、あるいは結果を直接書き戻したりすることも可能になった。ようやく汎用プロセッサーとしてこれを使うための準備が整ったことになる。

 このDirectX 10(シェーダーモデル4.0)に先に対応したのはNVIDIAだった。2006年にG80コアのGeForce 8800シリーズをリリースし、翌2007年6月にはこれに対応したCUDA(Compute Unified Device Architecture)を発表、すぐにダウンロード開始される。

NVIDIA CUDAのロゴ

 CUDAはツールキットとして提供されるライブラリー(とツール群)であり、これを使ってNVIDIAのGPUで汎用計算をさせるものだ。要するにCgの汎用版と考えればよい。

 ATIはこれに先駆け、R500ベースのRadeon X1000シリーズをGPGPU的な使い方にできるATI Stream SDKと呼ばれるライブラリーを2006年9月に発表している。

ATI Streamのロゴ

 ただこのATI Stream SDKはR600コアへの対応がやや遅れたうえ、発表された時点では一般的なカードでは動かない(ATIのFireStreamシリーズ専用)ということもあり、普通にGeForce 8000シリーズカードを買えば使えたCUDAに比べると入手性が格段に落ちた。

 またStream SDKはスタンフォード大の開発したBrookという言語をベースに構築されており、Cベースで記述できたCUDAよりも取っ付きが悪かったことも否めない。

 結局2007年頃から、さまざまな研究機関は一斉にNVIDIAのグラフィックカードをまず少量購入、この上でCUDAを使ってアプリケーションの移植や性能の評価を始めることになる。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン