CUDA技術を利用したGPUコンピューティングの実際(前編) ―― グラフィックス分野で磨かれた並列処理技術を汎用数値計算に応用

下馬場 朋禄,伊藤 智義

tag: 組み込み 半導体

技術解説 2008年6月18日

3Dグラフィックス処理の分野では,長年,並列処理技術が利用されてきた.こうしたグラフィックス分野で蓄積された並列処理技術の資産を汎用数値計算に応用しようというのが「GPU(Graphics Processing Unit)コンピューティング」と呼ばれる技術である.ここでは,NVIDIA社が提供しているCUDA(Compute Unified Device Architecture=クーダ)環境を例に,GPUコンピューティングの概要と開発環境の構築手順を紹介す.  (編集部)

 3D(3次元)グラフィックスを扱うゲームや3D CAD(Computer Aided Design)などの処理を高速に行うための専用LSIとして,GPU(Graphics Processing Unit)があります注1.GPUの描画性能は,半導体技術の進歩とともに急速に向上しています.GPUは,グラフィックス・ボードの形でパソコンに組み込まれたり,PLAYSTATION 3やWiiといった家庭用ゲーム機に搭載されたりしています.最新のGPUのグラフィックス処理能力は,毎秒100億テクセル(テクセルとは,ポリゴンに貼り付けるテクスチャを構成する各ピクセル.3Dグラフィックスでは,ポリゴンと呼ばれる多角形にテクスチャと呼ばれる一種の壁紙を貼り付けたものを組み合わせて物体を構成する)を超えます.汎用的な計算を得意とする一般のマイクロプロセッサ(CPU)で同じ処理を実行した場合,GPUほどのグラフィックス処理能力を得ることはできません.

注1;GPUはかつて,「3Dグラフィックス処理LSI」や「3Dグラフィックス・アクセラレータLSI」と呼ばれていた.

1.グラフィックス専用のGPUで汎用計算

 この潤沢な演算能力に着目し,GPUで3Dグラフィックス処理以外の汎用的な計算を行わせる「GPGPU(General Purpose Computation on Graphics Processing Unit)」,あるいは「GPUコンピューティング」と呼ばれる手法がここ数年,注目を集めています.GPGPUは,画像処理はもちろんのこと,流体計算,電磁波シミュレーション,天文シミュレーション,たんぱく質などの挙動を解析する数値シミュレーション,バイオ・インフォマティクス,金融工学など,幅広い分野への適用が行われています.一般のマイクロプロセッサに比べて数倍~数百倍の計算速度を達成した,とする研究報告例もあります.

 さて,本来,GPUは3Dグラフィックス処理専用のLSIでしたが,どのようにして汎用計算を行わせるのでしょう.本稿で解説を行うGPUは,後述する「統合シェーダ(Unified Shader)」と呼ばれる最新のアーキテクチャを採用しています.シェーダとは,GPU内に複数個搭載されている小型プロセッサ・コアのことを言います注2

注2;コアとはLSI内部に組み込まれている大規模な回路ブロックのこと.CPUコアやDSPコア,PCIコア,メモリ・コア,アナログ・コアなどがある.これらとI/Oブロックなどを1チップ上に集積することで,LSIができ上がっている.

● 従来のGPU構成ではグラフィックスの知識が必要

 ここでは便宜上,統合シェーダが登場する以前と以後のGPUを比較することで,その違いを見ていきます.

 初めに,統合シェーダが登場する以前のGPUアーキテクチャの概略を図1に示します.このタイプのGPUは,基本的に3Dグラフィックス処理に特化したアーキテクチャを採用しています.その構造は,ポリゴンの頂点座標を計算する「頂点シェーダ」と,テクスチャのピクセル値を計算する「ピクセル・シェーダ」に分かれています.

zu01_01.gif

出典:PC Watch 後藤弘茂のWeekly海外ニュース,NVIDIAからハイエンドGPU「G70」が登場
http://pc.watch.impress.co.jp/docs/2005/0622/kaigai193.htm
図1 統合シェーダ以前のGPUの構成
GeForce 7800 GTX(G70)のブロック図を示す.3Dグラフィックス処理に特化したアーキテクチャを採用している.ポリゴンの頂点座標を計算する「頂点シェーダ」と,テクスチャのピクセル値を計算する「ピクセル・シェーダ」が処理の中心になる.

 頂点シェーダとピクセル・シェーダは,3Dグラフィックス処理の多様化に伴い,シェーダ言語と呼ばれる専用の言語(CgやHLSLなど)によってプログラミングできる構造になっています.これまでは,このシェーダ言語を利用して,汎用計算をGPU上へマッピングする例がありました.しかし,あくまでも3Dグラフィックス処理の高速化に力点を置いた構造になっていたため,汎用計算を目的として使用するには,いろいろな問題点がありました.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日