【 ここから本文 】
- TOP
- > Topics : ストレージ革命
- >
ストレージ革命
ソーシャルブックマークに登録 :
印刷用ページの表示
【解説】
「GPUコンピューティング」の可能性――高速汎用計算に挑む
GPUの汎用的な計算処理への応用で、ベクトル型HPC市場を切り開くか
(2008年06月30日)
演算ユニットは128個──処理能力ではCPUをはるかに凌駕
GPUが行う処理は「ストリーム・プロセッシング」と言い表すことができる。入力されるストリーム(データ)は、データを処理するカーネルと呼ばれる演算処理機能に流れ込む。このカーネルで入力ストリームは演算処理された後、出力ストリームとして結果が出る。カーネルの機能は、入出力のストリームによって決められており、入出力機能を備えた逐次プロセスをプログラミングできるようになっている(図2)。
| 図2:GPUにおけるストリーム・プロセッシングのイメージ |
さらに、ストリームと呼ぶように基本的に動的なデータが処理対象であるため、カーネルでの演算処理過程においては、データをリアルタイムに解析し、高精度かつ高速処理が行える構造になっている。
カーネルがストリームの演算処理を行う際には、動的なデータの並列処理が可能なパイプライン処理が利用されている。GPUでは、こうした一連の処理が画像処理のみに使われているため、その性能(処理速度)がCPUに比べて格段に高速であることは当然のことだと言える。
GPUの性能をCPUと比較すると、CPUのコア数が現在2〜8コアであるのに対して、GPUは並列処理が可能な128個の演算ユニットを持つほど高性能化が実現されている。また、メモリ帯域幅は、CPUが20GB/秒であるのに対して、GPUは100GB/秒を誇る。ベクトル型HPCの雄であるNECのSXシリーズのメモリ帯域幅は256GB秒であり、それに対して実に約半分の帯域幅があるのである。まだ半分というよりも、むしろコモディティ製品の性能向上速度を考慮すれば、もう半分まで来たと言ったほうが当たっているかもしれない。
昨年、NVIDIAが発表したHPC向けのGPU「Tesla」のピーク性能は、518GFLOPSにも達する(写真1)。Teslaの開発環境は、OpenGLとはまったく異なり、「CUDA(Compute Unified Device Architecture)」と呼ばれる統合開発環境がNVIDIAより提供されている。現状では、このCUDAこそが、GPUコンピューティングを実現するカギとなる。
| 写真1:NVIDIAのHPC向けGPU「Tesla C870」 |
しかしながら、CUDAは、NECのSXシリーズのように、コンパイルするだけである程度自動ベクトル化されるものではなく、その開発環境はまだプリミティブなものである。CUDAを利用したプログラミングには、ハードウェア環境を考慮したコーディングが必要になる。また、CPU用のインテル・コンパイラなどと連携する必要があり、CPUとGPUで処理する2つのバイナリが生成されることになる。
GPUコンピューティングは、現状のGPUの処理性能が高いので、汎用計算にも使ってみようという一種の“トライアル”的側面を持つので、使い勝手がよくない点は否めない。しかし、昨今のGPUは、1つの命令で複数のデータを扱う処理方式「SIMD(Single Instruction/Multiple Data)」でストリームを処理する傾向にある。こうしたGPUを多数そろえるのであれば、旧来のベクトル型HPCに比べてかなり廉価にHPCを構築できることになる。メモリ環境も含めてそれを目指したのが、GPUコンピューティングなのである。


















