GPGPUによる並列高速演算について解説します。
last update: 2017/05/17
コンピュータでの図形描画方法
たとえば、画面上に四角形を描きたいとします。 描画したい人は、四つの頂点の座標と、四角形内部の色を指定します。 すると、コンピュータ内部では、以下のような処理を行います。
- 画面上のどこに各頂点を表示すればよいのか
- 四角形の内側に含まれるピクセルはどれか
- 四角形内側の各ピクセルの色はどうなるか
この内部処理を担当するのが、グラフィックカード(ビデオカード)に搭載されている GPU です。
細かく区分すると:
- 1を担当するのが、頂点シェーダ [vertrx shader]
- 2を担当するのが、ラスタライザ [rasterizer]
- 3を担当するのが、ピクセルシェーダ [pixel shader]
となります。ピクセルシェーダは、フラグメントシェーダ [fragment shader] とも呼ばれます。 シェーダとは、陰影処理(shading)を行うプログラムをあらわす言葉です。
シェーダによる計算は、ひとつの図形を描画する間に多数実行されます。 下の図の四角形の例では、1の処理を頂点数分の4回、3の処理をピクセル数分の38回、行っています。
高速に描画するため、 GPU は、並列化が可能な処理である1と3を行う小さなプロセッサを、大量に積んでいます。その数は2017年現在で、4000ほどになります。 つまり、 GPU は、日頃から大規模な並列演算を行っているのです。
この強力な並列計算能力を、画面描画以外の計算に流用できないか? として2006年頃から始まったのが、 GPGPU です。
一方、コンピュータでの通常の計算は、 CPU で行われています。 並列化ももちろん可能ですが、その数はせいぜい数十個です。 そのため、計算をうまく並列化できれば、 GPGPU により今までとは比較にならないほどの高速化を達成することが可能です。 グラフィックカードはハイエンドでも10万円以内(一部を除く)ですので、コストパフォーマンスも非常に高くなります。
シェーダプロセッサの呼称と変遷について
最初は、頂点シェーダを行うプロセッサ[vertrx shader units] と ピクセルシェーダを行うプロセッサ[pixel shader units] が分かれていました。 それでは効率が悪いということで、2006-7年ごろに2つのプロセッサが統合され Stream Processing (SP) units となりました。 NVIDIA 社では2009年ごろから SP units のことを cuda cores と呼んでいます。
また、現在では、頂点シェーダとピクセルシェーダ以外に、ジオメトリシェーダ [Geometry Shader] とコンピュートシェーダ [Compute Shader] が追加され、より計算がしやすくなりました。
余談
弊社が2005年の創業時に購入したパソコンの GPU は Radeon X300 で、頂点シェーダプロセッサが2基、ピクセルシェーダプロセッサが4基積まれていました。2017年現在で使用している GPU は、NVIDIA TITAN X Pascal で、cuda core は 3584基です。およそ12年で600倍となりました。
3D技術解説シリーズ
データの種類:ピクセルとボクセルとポリゴン【3D技術解説①】
サーフェイスレンダリングとボリュームレンダリング【3D技術解説②】
マーチングキューブ法:ボクセルからポリゴンへの変換【3D技術解説③】
3Dプリンタで扱えるポリゴン数【3D技術解説④】
CTデータの領域分割:三次元画像への Watershed 法の適用【3D技術解説⑤】
CTデータの画像処理:平滑化によるノイズ除去【3D技術解説⑥】
CTデータの画像処理:モルフォロジー演算(膨張収縮)【3D技術解説⑦】
凸包の作成:Quickhull 法【3D技術解説⑧】
ポリゴン削減(ポリゴンリダクション):QEM(Quadratic Error Metrics)【3D技術解説⑨】
GPGPUとは:グラフィックカードによる高速化のしくみ【3D技術解説⑩】
サーフェイスレンダリングでの等値面の修正:CTデータを加工する【3D技術解説⑪】
弊社の主力製品です
X線CT画像などの3次元画像データを、計測・加工・解析するためのソフトウェアです。工業製品から生物標本まで、どんなものでも美しく、快適操作でおみせします。
*フリー版もあります:3D画像表示ソフトウェア Molcer