2008年12月にOpenCL 1.0が正式発表されました。
※OpenCLとはヘテロジニアスな環境で並列プログラミングを行うためのオープンな規格
近年、コンピュータの性能向上は垂直方向よりも水平方向への動きが主になっています。
そのため、ソフトの性能向上のために処理を並列化することは必須の技術となってきています。
それはゲームといったものだけではなく、より一般的なソフトにも。。。
ということから、どれだけ簡単に対応できるのか、どれだけの向上が見込めるのかと興味がわき、昨年末に少し触ってみました。
ただし、いろいろと揃っているCUDAを利用。
※CUDAはNVIDIA GPUに特化したもの
そして計測するといえば『マンデルブロ』ということで、今回はそちらで比較してみました。
環境はMacBook。スペックは下記のとおり。
仕様
OS : Mac OS X 10.5.6
CPU : Intel Core 2 Duo 2.4GHz
Memory : 4GB
GPU : NVIDIA GeForce 9400M
結果はCPUのみと比べ、おおよそ7倍〜10倍程度の性能向上がみられました。
(CPU版はシングルスレッドのみ対応)
マンデルブロということで、並列化の恩恵が受けやすいこともあるでしょうが、まずまずな数値です。
GPUの性能が良くなれば、さらに良い結果が出るでしょう。
CUDA対応の実装部に関しても、(CUDAがC言語で記述できるため)マンデルブロのコアとなる部分はわりとそのまま利用できましたし、それに対して出た成果は満足できるものかなと思います。
用途ととしても、CGのレンダリング。動画のエンコード/デコード。暗号の符号/復号化。サーバ関係のソフトであれば、サーバ一台増やすよりもGPUの性能を上げることで、コストも抑えつつ期待の結果につなげることができるかも。など、いろいろ考えられそうです。
このOpenCLがデフォルトスタンダードとなるのか、別のものになるのかわかりませんが(OpenGLとDirectXのように)、基本的なところはあまり変わらないだろうと思います。
興味を持たれた方は触れてみてはいかがでしょうか。