このページの本文へ

前へ 1 2 3 次へ

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

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

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

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

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

 今回のスーパーコンピューターの系譜はNVIDIAのGPUについてだ。ClearSpeedがグラフィックに見切りをつけて汎用の数値計算アクセラレーターに舵を切った2002年という年は、NVIDIAがNV30を発表した年でもある。

NV30コア搭載のGeForce FX 5800

 NV30については以前にGPU黒歴史で紹介したが、旧3dfxの設計チームが手がけた、色々な意味で意欲的過ぎた製品である。

 製品としての成功/失敗はとりあえずおいておき、ここでアーキテクチャー的に大きな転換を行なった(関連記事)のは重要なポイントである。もっともこのNV30のような実装は難しいということで、次の世代ではこのアーキテクチャーそのものが放棄されてしまったわけだが、その中でも捨てられなかったものがある。それはソフトウェアまわりだ。

ゲーム以外にも使えるよう設計した
描画エンジン「CineFX」

 NVIDIAは「GeForce FX 5800」に搭載された描画エンジンを「CineFX」と称した。GeForce FX 5800世代に搭載されたのが「CineFX 1.0」、次のGeForce FX 5900に搭載したのが「CineFX 2.0」、GeForce 6シリーズに搭載したのが「CineFX 3.0」、GeForce 7シリーズが「CineFX 4.0」となっており、ここでCineFXシリーズは終了している。

 以下の画像はNV30のリリース前に、NVIDIAがSIGGRAPH 2002で発表したCineFXのアーキテクチャーの解説である。そのCineFXとは、DirectX 8から導入されたバーテックス・シェーダー/ピクセル・シェーダーをより高機能化したものだ。

 下の画像はバーテックス・シェーダーの機能比較である。R300というのはATIのR300コア、つまりRadeon 9000シリーズの比較である。バーテックス・シェーダーは頂点計算などを行なうものだが、DirectX 8.0に実装されているバーテックス・シェーダー1.0/1.1は非常に機能が少なく、さらに128命令以内に収めないといけないため、扱えるプログラムサイズもごく限られる。

バーテックス・シェーダーの機能比較

 R300も内部的にこうした制限を拡張しているが、CineFXではこれを大幅に拡張しているのがわかる。また扱える命令に関しても、数値計算に役立ちそうな命令が各種追加されている。さらにデータ型も大幅に拡張された。このデータ型については説明が必要だろう。

数値計算に役立ちそうな命令が各種追加データ型も大幅に拡張された

 DirectX 8でサポートされるのは、RGB(+αチャネル)が各8bitの整数型で、合計すると32bitという勘定だ。同様にR300ではこれがRGB(+αチャネル)が各々24bitの浮動小数点、CineFXでは各々32bitの浮動小数点をサポートする。

 24bitという微妙な数字は、16bitでは精度が十分ではなく、32bitでは扱えるデータの範囲が大きくなりすぎてグラフィックの描画には無駄が多いというあたりからの判断だと思われる。

 CineFXは16bit FPと32bit FPの両方をサポートしている。というのも24bitはIEEEのデータフォーマットとしては標準化されておらず、GPUの中だけで使うならともかく外部とのデータ交換を考えると毎回フォーマット変換が必要になり、無駄が多いためだ。

 ただCineFXは、あくまで高性能な描画向けシェーダー言語であって、当時の放送業界向けCGですら32bit FPを使うことはマレだった。それもあってか、説明会で「一応32bit FPはサポートはしているが、実際に使うと遅い。メインは16bit FPになると考えている」といった説明があった。

 CineFXを利用するための言語としてNVIDIAが提供したのがCgである。こちらの見かけはDirectXのHLSL(High Level Shader Language)に良く似ている。というよりHLSLがマイクロソフトとNVIDIAの共同開発なので似ていて当然というべきだろう。

 この後CineFXはDirectX(シェーダーモデル)のバージョンアップにあわせて4.0までバージョンを上げていき、これにともないCgも対応のためにバージョンをあげ、最終的に1.2までバージョンを上げる。

 ただ、CineFX 4.0に対応するDirectX 9(シェーダーモデル3.0)の世代で、シェーダー側が十分高機能になってしまったため、当初ほどのCineFXの優位さはなくなってしまった。

→次のページヘ続く (DirectXにお株を奪われるCineFX

前へ 1 2 3 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

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

ピックアップ

ASCII.jp RSS2.0 配信中

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