2013-08-13

OpenCL 雑感

Deep Learning を GPU で動かすと CPU よりも速くなるというのを見かけたので、次のグラボを買ってみました。あと、CPU 内蔵ではない GPU で OpenCL も試したかったので。

ASUS HD7790-DC2OC-1GD5 ¥16,640

このグラボのスペックは次のとおりです。

GPU: AMD ATI RADEON HD 7790 (1075MHz)
メモリ: GDDR5 1GB (6400MHz)

こちらの性能表を見ると、この GPU は 1792 GFLOPS、CPU は Wikipedia から適当に推測すると 80 GFLOPS くらいでしょうか。

20倍?少なく見ても10倍?なんて淡い期待を抱きつつ、OpenCL のコードを組んでみました。

完成したプログラムを走らせてみると…あれ?あんまり速くなってない。むしろ、CPU から GPU へのデータ転送時間も含めると遅くなるかも、という結果に。しかも、C言語で組まないといけない、メモリの使用制限が厳しい等、OpenCL 対応するのが面倒くさい。

AMD の OpenCL ガイドを読んでみたり、GPU 関連の論文を少し読んでみたのですが、自分の計算処理では期待したほどの効果は得られませんでした。

まあ、GPU で爆速なんて謳っているのは、5~10万円くらいのグラボを2~3枚使ってますしね。

演算量が多ければ安い GPU でもそれなりの効果が得られるのかも知れませんが、作るコストや作り直すコストを考えると普通に CPU でいいかなと思いました。